PAM 構成ファイル

/etc/pam.conf 構成ファイルは、各 PAM モジュール・タイプのサービス・エントリーで構成され、定義されたモジュール・パスを介してサービスをルーティングします。

ファイル内のエントリーは、次のようなスペース区切りのフィールドで構成されています。
service_name module_type control_flag module_path module_options
これらのフィールドについて、以下に説明します。
service_name
サービスの名前を示します。 キーワード OTHER は、エントリー内で指定されていないアプリケーションに使用するデフォルトのモジュールを定義する場合に使用します。
module_type
サービスのモジュール・タイプを示します。 有効なモジュール・タイプは、 authaccountsession、 または 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) モジュールが成功していなければなりません。 スタック内の他のモジュールが成功している場合、オプション・モジュール内の失敗は無視されます。
次の /etc/pam.conf サブセットは、ログイン・サービスの auth モジュール・タイプでのスタッキングの例です。
#
# 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_ckfilepam_aix が両方とも required として指定されているので、両方のモジュールが実行されます。結果全体が成功するためには、モジュールが両方とも正常に実行される必要があります。 架空の pam_test モジュールの 3 番目のエントリーはオプションであり、その成功または失敗はユーザーがログインできるかどうかには影響しません。 pam_test モジュールに対するオプション use_first_pass では、新規パスワードの入力を求めるプロンプトを出す代わりに、以前に入力したパスワードを使用する必要があります。

OTHER キーワードをサービス名として使用すると、構成ファイルに明示的に宣言されていない他のサービスのためのデフォルトを設定することが可能になります。 デフォルトを設定すると、 特定のモジュール・タイプのすべてのケースが少なくとも 1 つのモジュールによってカバーされることになります。 この例の場合、pam_prohibit モジュールはすべての呼び出しに対して PAM 障害を戻すため、ログイン以外のすべてのサービスは常に失敗します。