| 日本−日本語 |
|
|
|
![]() |
HP-UX リファレンス: セクション 3 : ライブラリ (N~Z) > ppam(3)HP-UX 11i Version 2: September 2004 |
|
名称PAM ― 組み込み可能認証モジュール 説明PAM により、システム管理者はシステムで使用できる任意の認証サービスを柔軟に選択して認証を実行できるようになります。また、アプリケーションを変更せずに、新しい認証サービスモジュールを組み込んで使用可能にすることもできるようになります。 PAM フレームワーク libpam は、インタフェースライブラリと複数の認証サービスモジュールで構成されます。PAM インタフェースライブラリは、アプリケーション プログラミング インタフェース (API) を実現する階層です。 認証サービスモジュールは、PAM API により呼び出される、ユーザー認証の個々のタイプを提供する動的ロード可能オブジェクトの集まりです。 インタフェース概要PAM ライブラリインタフェースは、5 つのカテゴリにまとめられる関数で構成されます。認証ライブラリ関数の名前はすべて pam_ で始まります。 第 1 のカテゴリには、認証アクティビティの確立と終了のための関数 pam_start(3) と pam_end(3))、 モジュール特定のデータを保持する関数 pam_[sg]et_data(3))、 状態情報を保持する関数 pam_[sg]et_item(3))、 エラーステータス情報を返す関数 pam_strerror(3)) があります。 第 2 のカテゴリには、個々のユーザーを認証する関数 pam_authenticate(3))、 そのユーザーの資格認定を設定する関数 pam_setcred(3)) があります。 第 3 のカテゴリには、アカウント管理を行う関数 pam_acct_mgmt(3)) があります。パスワードエージングやアクセス時間制限のためのチェックが含まれます。 第 4 のカテゴリには、システムへのアクセスが許可された後のセッション管理を行う関数 pam_open_session(3) と pam_close_session(3)) があります。 第 5 のカテゴリには、認証トークンを変更する関数 (pam_chauthtok(3)) があります。認証トークンはユーザー識別を検査するために使用するオブジェクトです。UNIX では、認証トークンはユーザーのパスワードです。スマートカードを使う場合でも、PAM フレームワークはスマートカードからパスワードを取り出すため、同様です。 すべての pam_*() インタフェースはライブラリ libpam により実現されます。前述のリストの各カテゴリには、第 1 のカテゴリ (pam_start(), pam_end(), pam_[sg]et_data(), pam_[sg]et_item(), pam_strerror()) を除き、要求に応じて適切なサービス階層機能を提供する動的ロード可能共有モジュールがあります。サービス階層の関数エントリーポイントは pam_sm_ 接頭辞で始まります。 pam_sm_*() インタフェースとこれに対応する pam_ インタフェースの違いは、すべての pam_sm_*() インタフェースが、サービス固有のオプションを共有モジュールに渡すための特別なパラメータを必要とすることだけです。PAM サービスモジュール API の概要については、 pam_sm(3) を参照してください。 状態にかかわるインタフェース共通の状態情報を共有する一連の呼び出しを認証トランザクションといいます。認証トランザクションは、 pam_start() への呼び出しで開始されます。 pam_start() はスペースを割り当て、さまざまな初期化アクティビティを実行し、以降のライブラリへの呼び出しで使用する PAM 認証ハンドルを割り当てます。 認証トランザクションの初期化後、アプリケーションは pam_authenticate() を呼び出して個々のユーザーを認証し、 pam_acct_mgmt() を呼び出してシステムエントリー管理を実行できます (アプリケーションでユーザーのパスワードが期限切れかどうか判別したい場合があります)。 ユーザーの認証が成功したら、アプリケーションは pam_setcred() を呼び出して、認証サービスに対応するすべてのユーザー資格認定を設定します。1 つの認証トランザクション内 (pam_start() から pam_end() の間) では、PAM インタフェースへの呼び出しは、すべて pam_start() から返された同一の認証ハンドルを使って行わなければなりません。これは、あるサービスモジュールが、他のモジュールが使用することを意図したモジュール特定のデータをハンドルに保存することがあるためです。たとえば、 pam_authenticate() への呼び出しの間、サービスモジュールは pam_setcred() が使用することを意図したデータをハンドルに保存することがあります。 セッション管理を実行するには、アプリケーションは pam_open_session() を呼び出します。たとえば、システムはセッション全体の時間を保存したい場合があります。関数 pam_close_session() は現在のセッションを閉じます。 必要であれば、アプリケーションは pam_get_item() と pam_set_item() を呼び出して、特定の認証情報のアクセスや更新を行えます。このような情報に現在のユーザー名が含まれる場合があります。 認証トランザクションを終了するには、アプリケーションは単に pam_end() を呼び出します。以前に割り当てた、認証情報の保存に使用したスペースが解放されます。 アプリケーション - 認証サービスの対話型インタフェースPAM の認証サービスはユーザーとは直接通信しません。代わりに、このような対話はすべてアプリケーションに依存して実行されます。アプリケーションは、認証トランザクションの初期化 (pam_start() への呼び出しによる) のときに、関数 conv() へのポインターを、関連したアプリケーションのデータポインターと一緒に pam_conv 構造体を通じて認証サービスに渡します。認証サービスは関数 conv() を使って、ユーザーにデータ入力を求めるプロンプトの表示、エラーメッセージの出力、テキスト情報の表示を行います。詳細は pam_start(3) を参照してください。 複数の方式のスタックPAM アーキテクチャは、 スタック することにより複数の認証サービスによる認証を可能にします。 login(1) などのシステムエントリー アプリケーションは、複数のサービスモジュールをスタックし、複数の認証サービスを使ってユーザーを認証します。認証サービスモジュールがスタックされる順序は、構成ファイル pam.conf(4) で指定します。システム管理者はこの順序を決定し、すべての認証サービスに同じパスワードを使えるかどうかも決定します。 アプリケーション使用法PAM フレームワーク libpam に実装されたすべての pam_*() インタフェースは、スレッドセーフです。スレッドがこれらのインタフェースを実行しているときに、キャンセルポイントに達する可能性があります。これらのインタフェースは、キャンセルセーフ、非同期キャンセルセーフ、非同期シグナルセーフのいずれでもありません。ただし、システム管理者は、 pam_authenticate()、 pam_open_session()、 pam_close_session()、 pam_chauthtok()、 pam_setcred()、 および pam_acct_mgmt() インタフェースが、構成ファイル pam.conf(4) に指定される動的ロード可能モジュールで実現される、これらのインタフェースに対応する pam_sm_*() インタフェースを起動することに注意する必要があります。 したがって、これらのインタフェースがスレッドセーフかどうかは、サービスモジュールの実装内容によって決まります。 この情報については、 pam_unix(5) などのモジュールごとのマンページを参照してください。 |
|||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||