15.3. PAM設定ファイルの形式

各PAM設定ファイルには、次のようなフォーマットされたディレクティブのグループが 含まれています:

<module interface>  <control flag>   <module name>   <module arguments>

これらの各構成要素はそれぞれ次のセクションで説明してあります。

15.3.1. モジュールインターフェース

4つのタイプのPAMモジュールインターフェースがあり、それぞれ認証プロセスの異なる側面に 関連しています:

注意注記
 

個々のモジュールはすべてのモジュールインターフェースあるいはそのいずれかを提供することができます。例えば、pam_unix.so は4つのモジュールインターフェースをすべて提供できます。

PAM設定ファイルでは、モジュールインターフェースは最初に定義されるフィールドです。 例えば、設定の標準的な行は次のようになります:

auth      required  pam_unix.so

これは PAMに対してpam_unix.soモジュールのauthインターフェースを 使用するように指示しています。

15.3.1.1. モジュールインターフェースのスタック

モジュールインターフェースディレクティブは、スタックできます、つまり次々に積み重ねることができるので 1つの目的の為に複数のモジュールが一緒に使用できます。従って、認証プロセスにおいて、 モジュールのスタック順は非常に重要です。

スタックにより、管理者がユーザーに認証を与える前に存在すべき特定の条件を要求することが 容易になります。例えば、rloginは、以下のPAM設定ファイルで示してある ように、通常、5つのスタックされたauthモジュールを使用します:

auth       required     pam_nologin.so
auth       required     pam_securetty.so
auth       required     pam_env.so
auth       sufficient   pam_rhosts_auth.so
auth       required     pam_stack.so service=system-auth

rloginの使用が認可される前に、PAMは/etc/nologinが存在しないこと、ネットワーク接続を通じて rootとして遠隔操作でログインしようとしていないこと、どの環境変数でもロードできることを確認します。それから、rhostsの認証の実行が成功した場合、その接続が許可されます。rhosts の認証が失敗した場合は、通常のパスワード認証が実行されます。

15.3.2. 制御フラグ

すべてのPAMモジュールは、コールがあると成功又は失敗の結果を生成します。制御フラグは、その結果に対する 処理方法をPAMに提供します。モジュールは特定の順序でスタックされるので、制御フラグは、ユーザーにその サービスへの認証をすることの全体的目的に対して、この特定のモジュールの成功あるいは失敗の重要度を判定 します。

4つのタイプの制御フラグが定義されています:

誓要項目重要
 

requiredモジュールがコールされる順序は重要ではありません。 sufficientrequisiteの制御フラグでは その順序が重要になります。

より正確な制御の為の新しい制御フラグの構文が現在PAM用に利用可能です。この新しい構文に関する 詳細は/usr/share/doc/pam-<version-number>/ ディレクトリ内にあるPAMドキュメントをお読み下さい。(<version-number>は PAMのバージョン番号です)。

15.3.3. モジュール名

モジュール名は、特定のモジュールインターフェースを含むプラグイン可能なモジュール名を PAMに提供します。Red Hat Enterprise Linux の旧バージョンでは、/lib/security/pam_stack.so などのモジュールへのフルパスがPAM設定ファイル内に提供されていました。 しかし、/lib64/security/ディレクトリ配下に 64ビットPAMモジュール を保存するマルチライブラリシステムの出現により、アプリケーションがモジュールの正しいバージョン を検索する適切なlibpamバージョンをリンクされるため、 そのディレクトリ名は省略されています。

15.3.4. モジュールの引数

PAMは、幾つかのモジュール用に認証をしている間、プラグ可能なモジュールへ情報を渡すために引数を使用します。

たとえば、pam_userdb.soモジュールは、Berkeley DBファイルに保存された 秘密鍵を使ってユーザーを認証します。 Berkeley DBは、多くのアプリケーションに組み込まれている オープンソースのデータベースシステムです。モジュールがdb引数を使用する ことによってBerkeley DBは要求されたサービスに使用するデータベースを判断できます。

PAM設定ファイルの中の標準的なpam_userdb.soの行は、以下のようになります:

auth      required  pam_userdb.so db=<path-to-file>

直前の例では、<path-to-file>をBerkeley DBデータベースファイルの 完全パス名で入れ換えます。

無効な引数は無視され、PAMモジュールの成功あるいは失敗のどちらにも影響しません。 但し、殆どのモジュールではエラーが/var/log/messagesファイルに 表示されます。