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

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

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

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

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

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

注記注記
 

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

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

auth      required  pam_unix.so

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

16.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 の認証が失敗した場合は、通常のパスワード認証が実行されます。

16.3.2. 制御フラグ

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

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

重要重要
 

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

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

16.3.3. モジュール名

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

16.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ファイルに報告されます。