私たちはoptional
PAM設定ファイルの制御値の1つであることを知っています。
~からlinux-pam.org:
任意に選択できる:
このモジュールの成功または失敗は、このサービス+タイプに関連付けられているスタックの唯一のモジュールである場合にのみ重要です。
混乱しています。
これは/etc/pam.d/login
:
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
optional
私は制御と公正な行動の2つの規則を見ます。
私たちは、optional
認証されていない目的でのみルールを使用していると仮定します。そうなんですか?
ベストアンサー1
重要:オプションのモジュールは無視されず、処理されます。結果無視されます。つまり、失敗しても認証プロセスは中断されません。
多くの場合、認証中に特定のタスク(実行するモジュール)を実行したいが、認証プロセスが失敗しても認証プロセスを中断したくない場合があります。
実際の例は、pamを使用してユーザーパスワードと同じパスワードを使用してログイン中にdm-crypt暗号化デバイスを自動的に開く場合です。
auth optional pam_exec.so expose_authtok quiet /usr/sbin/cryptsetup --allow-discards open UUID=... /home/username
required
ここで代わりにifを使用すると、optional
cryptsetupは終了コードとして0を返すため、最初のログインは成功しますが、ユーザーがログアウトしてから再度ログインすると、デバイスがオンになっていてcryptsetupが返されるため、ログインは失敗します。ゼロ以外の終了コード。ただし、この場合でもログインが成功したいと思います。
これは実際に使用してから思い出させる例です。つまり、理論的な状況ではありませんが、失敗したモジュールが認証プロセスを中断しないことを望む多くの状況の1つです。