このドキュメントで説明するソフトウェアは、Extended SupportまたはSustaining Supportのいずれかにあります。 詳細は、https://www.oracle.com/us/support/library/enterprise-linux-support-policies-069172.pdfを参照してください。
Oracleでは、このドキュメントに記載されているソフトウェアをできるだけ早くアップグレードすることをお薦めします。

機械翻訳について

9.2 アプリケーションでのPAMの動作について

アプリケーションは通常、標準的なPAMセッションの起動時に、次のステップを実行します。

  1. pam_start()をコールしてPAMライブラリを初期化し、そのサービス名とターゲット・アカウントを指定して、適した会話関数を登録します。

    #include <security/pam_appl.h>
    
    int pam_start(const char *service, const char *user, const struct pam_conv *pam_conv,
                  pam_handle_t **pamh); 

    pam_start()はPAMセッション・ハンドルpamhを返し、それを後続の関数コールで使用します。

  2. トランザクションに関する情報(申請者のユーザー名やクライアントが稼働しているホストの名前など)を取得し、pam_set_item()を使用してPAMに送信します。

    int pam_set_item(pam_handle_t *pamh, int item_type, const void *item);
  3. pam_authenticate()をコールして申請者を認証します。

    int pam_authenticate(pam_handle_t *pamh, int flags);
  4. ユーザーが認証されると、pam_acct_mgmt()をコールして、この時点でアカウントが有効であるか、およびユーザーのログインが許可されるかどうかを特定します。 オプションで、アカウント管理型のモジュールを使用すると、1日または1週間のうちの特定の時間帯にユーザーのログインを制限したり、パスワードを強制的に失効させたりできます。 その場合は、pam_chauthtok()関数を使用してパスワードを正しく更新しないかぎり、ユーザーはシステムにアクセスできません。

    int pam_acct_mgmt(pam_handle_t *pamh, int flags);

    パスワードが正しくても失効している場合は、PAM_SUCCESSのかわりにPAM_NEW_AUTHTOK_REQDpam_acct_mgmt()から返されます。

    この関数からPAM_NEW_AUTHTOK_REQDが返された場合は、pam_chauthtok()をコールして、要求されたアカウントの認証トークンを変更するようクライアントに指示します。

    int pam_chauthtok(pam_handle_t *pamh, const int flags);
  5. pam_setcred()をコールしてユーザーIDを確立します(このIDには、アクセス・チケットや補完的なグループ・メンバーシップなどの資格証明を含めることができます)。

    int pam_setcred(pam_handle_t *pamh, int flags);
  6. 資格証明が確立されたら、pam_open_session()をコールしてセッションの開始と構成を行いますが、これには通常、システム・リソースを使用可能にするタスク(ユーザーのホーム・ディレクトリのマウントなど)の実行や監査証跡の設定などが含まれます。

    int pam_open_session(pam_handle_t *pamh, int flags);
  7. セッションを閉じるには、pam_close_session()をコールします。

    int pam_close_session(pam_handle_t *pamh, int flags);
  8. pam_end()をコールして、アプリケーションがトランザクションの処理を終了したことと、トランザクションの実行中に割り当てられたすべてのリソースを解放できることをPAMライブラリに通知します。

    int pam_end(pam_handle_t *pamh, int status);