Menu Close

Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

10.2. PAM 設定ファイルについて

PAM 対応の アプリケーションまたは サービス には、/etc/pam.d/ ディレクトリーにファイルがあります。このディレクトリーの各ファイルは、アクセスを制御するサービスと同じ名前を持ちます。たとえば、login プログラムは、login としてサービス名を定義し、/etc/pam.d/login の PAM 設定ファイルをインストールします。
警告
PAM 設定ファイルを手動で編集するのではなく、authconfig ツールを使用して PAM を設定することを強くお勧めします。

10.2.1. PAM 設定ファイル形式

各 PAM 設定ファイルには、モジュール(認証設定領域)とその制御または引数を定義するディレクティブが含まれます。
ディレクティブの構文はすべて簡単なもので、モジュールの目的 (インターフェース) とモジュールの設定を特定します。
module_interface	control_flag	module_name module_arguments
PAM 設定ファイルでは、モジュールインターフェースは以下のように最初のフィールドで定義されます。例:
auth	required	pam_unix.so
PAM インターフェース は、基本的に特定のモジュールを実行できる認証アクションのタイプです。4 種類の PAM モジュールインターフェースが利用できます。それぞれは、認証および承認プロセスのさまざまな側面に対応します。
  • auth: このモジュールインターフェースはユーザーを認証します。たとえば、パスワードの有効性を要求し、検証します。このインターフェースを持つモジュールは、グループメンバーシップなどの認証情報を設定することもできます。
  • account: このモジュールインターフェースは、アクセスが許可されることを確認します。たとえば、ユーザーアカウントの有効期限が切れたか、または特定の時間にユーザーがログインできるかどうかを確認します。
  • password: このモジュールインターフェースは、ユーザーパスワードの変更に使用されます。
  • session: このモジュールインターフェースは、ユーザーセッションを設定および管理します。このインターフェースのあるモジュールは、ユーザーのホームディレクトリーをマウントしたり、ユーザーのメールボックスを利用可能にするなど、アクセスを許可するために必要な追加のタスクも実行できます。
個別のモジュールは、いずれかのインターフェースまたはすべてのモジュールインターフェースを提供できます。たとえば、pam_unix.so は 4 つのモジュールインターフェースをすべて提供します。
pam_unix.so などのモジュール名は、指定したモジュールインターフェースを含むライブラリー名に PAM を提供します。アプリケーションが適切なバージョンの libpam にリンクされているため、ディレクトリー名は省略されています。これにより、モジュールの正しいバージョンを見つけることができます。
すべての PAM モジュールは、呼び出されると成功または失敗の結果を生成します。制御フラグ は、結果をどう処理するかを PAM に指示します。モジュールは特定の順序で一覧表示 (スタック) でき、制御フラグは特定モジュールの成功または失敗の重要性を判断し、ユーザーをサービスに対して認証する際の全体的な目標を決定します。
単純なフラグがいくつかあります。[2]設定にはキーワードのみを使用します。
  • required: 認証を継続するには、モジュール結果が成功する必要があります。この時点でテストが失敗すると、そのインターフェースを参照するすべてのモジュールテストの結果が完了するまでユーザーには通知されません。
  • requisite: 認証を継続するには、モジュール結果が成功する必要があります。ただし、この時点でテストが失敗すると、最初に失敗した required または requisite モジュールテストを反映したメッセージとともに、すぐにユーザーに通知されます。
  • sufficient: モジュール結果は、失敗すると無視されます。ただし、モジュールフラグ付きの sufficient の結果が成功で、かつ、以前のモジュールフラグ付きの required が失敗していない場合、その他の結果は不要で、ユーザーはサービスに認証されます。
  • optional: モジュール結果は無視されます。その他のモジュールがインターフェースを参照しない場合に認証成功に必要となるのは、optional としてフラグが付いたモジュールです。
  • include: 他のコントロールとは異なり、モジュールの結果の処理方法とは関係ありません。このフラグは、指定のパラメーターに一致する設定ファイルのすべての行でプルし、それらをモジュールに引数として追加します。
モジュールインターフェースのディレクティブは、重ねて配置することでスタック化 が可能なので、複数のモジュールをまとめて 1 つの目的に使用することができます。
注記
モジュールの制御フラグで sufficient 値または requisite 値が使用される場合、モジュールを一覧表示する順序は認証プロセスで重要になります。
管理者は、スタッキングを使用して、ユーザーが認証を許可される前に、特定の条件が存在することを要求できます。たとえば、setup ユーティリティーは、通常 PAM 設定ファイルにあるように、いくつかのスタックされたモジュールを使用します。
[root@MyServer ~]# cat /etc/pam.d/setup

auth       sufficient	pam_rootok.so
auth       include	system-auth
account    required	pam_permit.so
session	   required	pam_permit.so
  • auth sufficient pam_rootok.so: この行は、UID が 0 であることを確認し、pam_rootok.so モジュールを使用して、現在のユーザーが root かどうかを確認します。このテストに成功すると、他のモジュールは参照されず、コマンドが実行されます。このテストが失敗すると、次のモジュールが参照されます。
  • auth include system-auth: この行には、/etc/pam.d/system-auth モジュールのコンテンツが含まれ、認証のためにこのコンテンツを処理します。
  • account required pam_permit.so: この行は、pam_permit.so モジュールを使用して、root ユーザーまたはコンソールにログインしているすべてのユーザーがシステムを再起動します。
  • session required pam_permit.so: この行はセッション設定に関連します。pam_permit.so を使用すると、setup ユーティリティーが失敗しなくなりました。
PAM はいくつかのモジュール向けの認証中に 引数 を使って情報をプラグ可能なモジュールに渡します。
たとえば、pam_pwquality.so モジュールはパスワードの強度を確認して、いくつかの引数を取ることができます。以下の例では、enforce_for_root は、root ユーザーのパスワードでも強度チェックに合格する必要があることを指定し、retry は、ユーザーが強力なパスワードを入力する3 つの機会を受け取ることを定義します。
password	requisite	pam_pwquality.so enforce_for_root retry=3
無効な引数は通常無視され、PAM モジュールの成功や失敗には影響を及ぼしません。ただし、一部のモジュールは無効な引数で失敗する可能性があります。ほとんどのモジュールは、エラーを journald サービスに報告します。journald および関連する journalctl ツールの使用方法は、System Administrator's Guideを参照してください。
注記
journald サービスは、Red Hat Enterprise Linux 7.1 で導入されました。Red Hat Enterprise Linux の以前のバージョンでは、ほとんどのモジュールはエラーを /var/log/secure ファイルに報告します。


[2] 設定可能な制御フラグは数多くあります。これらは attribute=value のペアで設定されます。属性の全リストは pam.d の man ページで確認できます。