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
ファイルに報告します。