PAMでオプションが無視されるにもかかわらず、なぜ使用するのですか?

PAMでオプションが無視されるにもかかわらず、なぜ使用するのですか?

私たちはoptionalPAM設定ファイルの制御値の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を使用すると、optionalcryptsetupは終了コードとして0を返すため、最初のログインは成功しますが、ユーザーがログアウトしてから再度ログインすると、デバイスがオンになっていてcryptsetupが返されるため、ログインは失敗します。ゼロ以外の終了コード。ただし、この場合でもログインが成功したいと思います。

これは実際に使用してから思い出させる例です。つまり、理論的な状況ではありませんが、失敗したモジュールが認証プロセスを中断しないことを望む多くの状況の1つです。

おすすめ記事