Pluggable Authentication Moduleについて
Pluggable Authentication Modules (PAM)機能は、sssdプロファイルで使用される認証メカニズムで、アプリケーションで認証を使用してユーザーのアイデンティティを検証する方法を構成できます。 /etc/pam.dディレクトリにあるPAM構成ファイルでは、アプリケーションの認証手順について説明します。 各構成ファイルの名前は、モジュールが認証を行うアプリケーションの名前と同じか、それに類似しています。 たとえば、passwdおよびsudoの構成ファイルの名前は、passwdおよびsudoです。
各PAM構成ファイルには、認証モジュールに対するコールのリストまたはスタックが含まれます。 たとえば、次のリストでは、login構成ファイルのデフォルト・コンテンツを示します。
#%PAM-1.0
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
auth include system-auth
auth include postlogin
account required pam_nologin.so
account include system-auth
password include system-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session required pam_loginuid.so
session optional pam_console.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open
session required pam_namespace.so
session optional pam_keyinit.so force revoke
session include system-auth
session include postlogin
-session optional pam_ck_connector.so
ファイル内のコメントは、#文字で始まります。 残りの各行で、操作タイプ、制御フラグ、pam_rootok.soなどのモジュール名またはsystem-authなどの含まれている構成ファイル名、およびモジュールに対する引数を定義しています。 PAMは/usr/lib64/securityの共有ライブラリとしての認証モジュールを提供します。
特定の操作タイプの場合、PAMは上から下にスタックを読み取って、構成ファイルに表示されているモジュールをコールします。 各モジュールはコールされると、結果(成功または失敗)を生成します。
次の操作タイプを使用できます。
-
auth -
モジュールは、サービスまたはアプリケーションを使用するために、ユーザーが認証または認可されているかどうかをテストします。 たとえば、モジュールはパスワードをリクエストおよび検証できます。 こうしたモジュールは、グループ・メンバーシップやKerberosチケットなどの資格証明を設定することもできます。
-
account -
モジュールは、認証されたユーザーがサービスまたはアプリケーションへのアクセスを許可されているかどうかをテストします。 たとえば、モジュールは、ユーザー・アカウントが期限切れかどうか、またはユーザーが特定の時間にのみサービスを使用できるかどうかをチェックできます。
-
password -
モジュールは、認証トークンへの更新を処理します。
-
session -
モジュールは、ユーザーのホーム・ディレクトリのマウントやアンマウントなどの作業を実行して、ユーザー・セッションを構成および管理します。
操作タイプの前にダッシュ( -)が付いている場合、モジュールが欠落していても、PAMはシステム・ログ・エントリを作成しません。
include以外の制御フラグは、PAMにモジュールの実行結果に対して行う動作を通知します。 使用する制御フラグとして、次のフラグが定義されています。
optional-
それがサービスにリストされている唯一のモジュールである場合、認証にはそのモジュールが必要です。
required-
アクセスを付与するには、モジュールが成功する必要があります。 PAMは、モジュールが成功するか失敗するかに関係なく、スタック内の残りのモジュールを引き続き処理します。 PAMは、失敗をただちにユーザーに通知しません。
requisite-
アクセスを付与するには、モジュールが成功する必要があります。 モジュールが成功した場合、PAMはスタック内の残りのモジュールの実行を継続します。 ただし、モジュールが失敗した場合、PAMはただちにユーザーに通知して、スタック内の残りのモジュールの処理を続行しません。
sufficient-
モジュールが成功した場合、PAMは同じ操作タイプの残りのモジュールを処理しません。 モジュールに障害が発生した場合、PAMは同じ操作タイプの残りのモジュールを処理して、全体的な成功または失敗を決定します。
制御フラグ・フィールドでは、モジュールから返された値に応じてPAMが実行するアクションを指定する1つ以上のルールも指定できます。 各ルールは、value=actionという形式をとり、次のように大カッコで囲みます:
[user_unknown=ignore success=ok ignore=ignore default=bad]
モジュールから返された結果が値と一致する場合、PAMは対応するアクションを使用するか、一致がない場合はデフォルトのアクションを使用します。
includeフラグは、PAMが引数として指定されたPAM構成ファイルも参照すべきであることを示します。
詳細は、pam(8)マニュアル・ページを参照してください。 また、それぞれのPAMモジュールには、pam_unix(8)、postlogin(5)、system-auth(5)など独自のマニュアル・ページがあります。