PAM 構成ファイル
/etc/pam.conf 構成ファイルは、各 PAM モジュール・タイプのサービス・エントリーで構成され、定義されたモジュール・パスを介してサービスをルーティングします。
service_name module_type control_flag module_path module_options
これらのフィールドについて、以下に説明します。service_name- サービスの名前を示します。 キーワード OTHER は、エントリー内で指定されていないアプリケーションに使用するデフォルトのモジュールを定義する場合に使用します。
module_type- サービスのモジュール・タイプを示します。 有効なモジュール・タイプは、 auth、 account、 session、 または password。 1 つのモジュールが、1 つ以上の複数のモジュール・タイプに対してサポートを提供します。
control_flag- モジュールのスタッキング動作を示します。 サポートされている制御フラグは、 required、requisite、sufficient、または optional です。
module_pathサービスのためにロードするモジュールを指定します。
module_pathの有効値は、モジュールの絶対パスとして指定でき、またモジュール名のみとしても指定できます。 モジュールの絶対パスを指定する場合、PAM ライブラリーは、32 ビット・サービスの場合はそのmodule_pathをロードに使用し、64 ビット・サービスの場合は 64 サブディレクトリーを使用します。 モジュールの絶対パスを指定しない場合、PAM ライブラリーは /usr/lib/security (32 ビット・サービスの場合) または /usr/lib/security/64 (64 ビット・サービスの場合) をモジュール名の前に付加します。module_options- サービス・モジュールに渡すことができるオプションのスペース限定リストを指定します。 このフィールドの値は、
module_pathフィールドで定義されているモジュールがサポートするオプションに依存します。 このフィールドはオプションです。
誤った形式のエントリーや、module_type フィールドまたは control_flag フィールドの値が正しくないエントリーは、PAM ライブラリーでは無視されます。 行の開始が番号記号 (#) 文字で始まるエントリーはコメントを表すので、 これも無視されます。
PAM は、一般に「スタッキング」と呼ばれる概念をサポートします。これにより、各サービスに複数のメカニズムを使用することが可能となります。 スタッキングは、1 つのサービスに、同一の module_type フィールドを持つエントリーを複数個作成することによって、構成ファイル内に実装されます。 モジュールは、所定のサービスのファイルにリストされている順序で呼び出され、最終的な結果は、各エントリーに対して指定されている control_flag フィールドによって決定されます。 control_flag フィールドの有効値と、対応するスタック内の動作は以下のとおりです。
| control_flag フィールドの値 | 動作 |
|---|---|
| 必須 | 結果が成功となるためには、スタック内のすべての必須 (required) モジュールが渡されなければなりません。 1 つ以上の必須モジュールが失敗した場合、スタック内のすべての必須モジュールが試行されますが、 最初に失敗した必須モジュールからエラーが戻されます。 |
| requisite | 必須 (required) と似ていますが、必要 (requisite) モジュールが失敗した場合は、 スタック内のそれ以降のモジュールは処理されず、必須または必要モジュールからの最初の障害コードを直ちに戻します。 |
| sufficient | sufficient のフラグが立てられたモジュールが成功し、 その前の必須 (required) または十分 (sufficient) モジュールが失敗していなければ、 スタック内の残りのモジュールはすべて無視され、成功が戻されます。 |
| オプション | スタック内のモジュールがどれも必須 (required) ではなく、 十分 (sufficient) モジュールが 1 つも成功していない場合は、 サービスの少なくとも 1 つのオプション (optional) モジュールが成功していなければなりません。 スタック内の他のモジュールが成功している場合、オプション・モジュール内の失敗は無視されます。 |
#
# PAM configuration file /etc/pam.conf
#
# Authentication Management
login auth required /usr/lib/security/pam_ckfile file=/etc/nologin
login auth required /usr/lib/security/pam_aix
login auth optional /usr/lib/security/pam_test use_first_pass
OTHER auth required /usr/lib/security/pam_prohibit
この例としての構成ファイルには、
ログイン・サービス用として 3 つのエントリーが含まれています。 pam_ckfile と pam_aix が両方とも required として指定されているので、両方のモジュールが実行されます。結果全体が成功するためには、モジュールが両方とも正常に実行される必要があります。 架空の pam_test モジュールの 3 番目のエントリーはオプションであり、その成功または失敗はユーザーがログインできるかどうかには影響しません。 pam_test モジュールに対するオプション use_first_pass では、新規パスワードの入力を求めるプロンプトを出す代わりに、以前に入力したパスワードを使用する必要があります。OTHER キーワードをサービス名として使用すると、構成ファイルに明示的に宣言されていない他のサービスのためのデフォルトを設定することが可能になります。 デフォルトを設定すると、 特定のモジュール・タイプのすべてのケースが少なくとも 1 つのモジュールによってカバーされることになります。 この例の場合、pam_prohibit モジュールはすべての呼び出しに対して PAM 障害を戻すため、ログイン以外のすべてのサービスは常に失敗します。