| 日本−日本語 |
|
|
|
![]() |
HP-UX リファレンス: セクション 3 : ライブラリ (N~Z) > ppam_sm(3)HP-UX 11i Version 2: September 2004 |
|
名称pam_sm ― PAM サービスモジュール API 構文#include <security/pam_appl.h> #include <security/pam_modules.h> cc [ flag ... ] file ... -lpam [ library ... ] 説明PAM により、システム管理者はシステムで使用できる任意の認証サービスを柔軟に選択して認証を実行できるようになります。また、アプリケーションを変更せずに、新しい認証サービスモジュールを組み込んで使用可能にすることもできるようになります。 PAM フレームワーク libpam は、インタフェースライブラリと複数の認証サービスモジュールで構成されます。PAM インタフェースライブラリは、アプリケーション プログラミング インタフェース (API) を実現する階層です。認証サービスモジュールは、PAM API により呼び出される、ユーザー認証の個々のタイプを提供する動的ロード可能オブジェクトの集まりです。 このマンページではサービスモジュールのための PAM API の概要を説明します。 インタフェース概要PAM サービスモジュール インタフェースは、4 つのカテゴリにまとめられる関数で構成されます。認証ライブラリ関数の名前はすべて pam_sm で始まります。 pam_*() インタフェースとこれに対応する pam_sm_*() インタフェースの違いは、すべての pam_sm_*() インタフェースが、サービス固有のオプションを共有モジュールに渡すための特別なパラメータを必要とすることだけです。それ以外はすべて同じです。 第 1 のカテゴリには、個々のユーザーを認証する関数 pam_sm_authenticate(3))、 そのユーザーの資格を設定する関数 pam_sm_setcred(3)) があります。これらのバックエンド関数は、それぞれ pam_authenticate(3) と pam_setcred(3) の機能を実現します。 第 2 のカテゴリには、アカウント管理を行う関数 pam_sm_acct_mgmt(3)) があります。パスワードエージングやアクセス時間制限のためのチェックが含まれます。このバックエンド関数は、 pam_acct_mgmt(3) の機能を実現します。 第 3 のカテゴリには、システムへのアクセスが許可された後のセッション管理を行う関数 pam_sm_open_session(3) と pam_sm_close_session(3)) があります。これらのバックエンド関数は、それぞれ pam_open_session(3) と pam_close_session(3) の機能を実現します。 第 4 のカテゴリには、認証トークンを変更する関数 pam_sm_chauthtok(3)) があります。このバックエンド関数は、 pam_chauthtok(3) の機能を実現します。 状態にかかわるインタフェース共通の状態情報を共有する一連の呼び出しを認証トランザクションといいます。認証トランザクションは、 pam_start() への呼び出しで開始されます。 pam_start() はスペースを割り当て、さまざまな初期化アクティビティを実行し、以降のライブラリへの呼び出しで使用する認証ハンドルを割り当てます。サービスモジュールは、 pam_start() の呼び出し時に呼び出されたり初期化されたりしないことに注意してください。モジュールはその関数が初めて使用されるときにロードされ、シンボルが解決されます。 PAM ハンドルは、 pam_get_item() API によりアクセスできる、トランザクションについての一定の情報を保持します。モジュールは、 pam_set_item() を使って任意の項目情報の変更もできますが、 PAM_AUTHTOK と PAM_OLDAUTHTOK 以外は変更しないことをお勧めします。 モジュールがモジュール特定の状態情報を保存したい場合、 pam_set_data(3) 関数を使って PAM ハンドルと一緒にその情報を保存できます。このデータは、すべてのモジュールおよびモジュールタイプの中で固有の名前を使って保存しなければなりません。一部のモジュールでは、この方法を使って 2 つの異なるモジュールタイプでデータを共有します。 たとえば、 pam_authenticate() への呼び出しの間、UNIX モジュールは固有の名前を使ってハンドルに認証ステータス (成功、または失敗の原因) を保存することがあります。この情報は、 pam_setcred() が使用することを意図しています。 pam_acct_mgmt() への呼び出しの間、アカウントモジュールは古くなったパスワードを示すデータをハンドルに保存することがあります。この情報は、 pam_chauthtok() が使用することを意図しています。 モジュールは、データと関連付けたクリーンアップ関数も保存できます。PAM フレームワークは、アプリケーションが pam_end() を呼び出してトランザクションを閉じるときにこのクリーンアップ関数を呼び出します。 ユーザーとの対話PAM サービスモジュールはユーザーとは直接通信しません。代わりに、このような対話はすべてアプリケーションに依存して実行されます。アプリケーションは、認証トランザクションの初期化 (pam_start() への呼び出しによる) のときに、関数 conv() へのポインターを、関連したアプリケーションのデータポインターと一緒に、 pam_conv 構造体を通じて認証サービスに渡します。サービスモジュールは関数 conv() を使って、ユーザーにデータ入力を求めるプロンプトの表示、エラーメッセージの出力、テキスト情報の表示を行います。詳細は pam_start(3) を参照してください。ユーザーへのすべてのメッセージのローカライズはモジュールが行います。 規約規約によれば、ユーザー名の入力を求めるプロンプトを表示する必要があるアプリケーションは、 pam_authenticate() を呼び出す前に、 pam_set_item() を呼び出して PAM_USER_PROMPT の値を設定しなければなりません。その後、このサービスモジュールの pam_sm_authenticate() 関数は pam_get_user() を呼び出し、ユーザー名の入力を求めるプロンプトを表示します。ある一定の PAM サービスモジュール (スマートカード モジュールなど) は、 PAM_USER_PROMPT の値を変更して固有のプロンプトを渡すことがあることに注意してください。 PAM フレームワークでは、モジュール名、位置、オプションなどについての規則は何も強制されませんが、すべてのモジュールプロバイダが従うことが望まれる一定の規約があります。 規約によれば、モジュールは /usr/lib/security ディレクトリになければなりません。 モジュールは libpam_service_name.1 という名前が付けられます (たとえば libpam_unix.1 モジュール)。 このようなモジュールのすべてについて、モジュールがサポートする service_name やモジュールの機能を、サポートするオプションと一緒に説明した、対応するマンページがセクション 5 になければなりません。制約は、システム管理者に明確に識別されなければなりません。たとえば、このモジュールが独立したモジュールなのか、それとも他のモジュールの存在に依存しているのかが明らかにされていなければなりません。このモジュールがスタックの他のモジュールの前後どちらにあるべきかも指定できなければなりません。 規約によれば、モジュールは以下のオプションをサポートしなければなりません。
また、認証モジュールおよびパスワードモジュールは以下のオプションをサポートすることをお勧めします。
サポートされていないオプションがモジュールに渡された場合、syslog により、 LOG_ERR レベルでエラーを記録しなければなりません。 サービスモジュールのパーミッションビットの設定は、「グループ」および「その他」のどちらからも書き込み可能であってはなりません。このパーミッション規則が守られていない場合、PAM フレームワークはモジュールをロードしません。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||