ユーザーがシリアルコンソールを介してLinuxホストにログインできる方法を制限/定義するためのカスタムpamルールを作成しています。
ユーザーゲストログイン後、他のユーザーが自分のパスワードを確認し、pam_unix.so
私のカスタム認証者が同じことをします。身元確認の最終決定つまり、後続のpamモジュールがまったく呼び出されたくありません。
これは私の最小作業/etc/pam.d/login
ファイルです。
# On success skip the next rule
auth [success=1 default=ignore] pam_succeed_if.so user in guest
auth [success=done default=ignore] pam_exec.so expose_authtok /usr/bin/custom-pam.sh
auth [success=1 default=ignore] pam_unix.so nullok
auth requisite pam_deny.so
auth required pam_permit.so
上記の設定は、ゲストとしてログインすると期待どおりに機能しますが(/var/log/journal
これも確認しました)、他のユーザーには失敗します。
0 で終了すると、/usr/bin/custom-pam.sh
後続のモジュールの処理が停止すると予想されます。私が理解したものはsuccess=done
すぐに返されるべきですが、そうではありません。
答え1
PAMsufficient
コントロールを使ってみましたか?すべてpam.conf(5)
sufficient
if such a module succeeds and no prior required module has failed
the PAM framework returns success to the application or to the
superior PAM stack immediately without calling any further modules
in the stack. A failure of a sufficient module is ignored and
processing of the PAM module stack continues unaffected.
これにより、カスタム行の処理が停止します。
auth sufficient pam_exec.so expose_authtok /usr/bin/custom-pam.sh
失敗しない限り、これは後続のnope-denying-you-here行で処理できます。