Password
使用 pam_exec 在某個點終止 pam 處理
我正在編寫自定義 pam 規則來限制/定義使用者如何通過串列控制台登錄到我的 linux 主機。
如果使用者guest登錄,我希望他的密碼由 驗證
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
確認這一點)時,上述配置按預期工作,但其他使用者失敗。如果
/usr/bin/custom-pam.sh
以 0 退出,我希望停止處理更多模組。據我了解,success=done
應該立即返回,但這並沒有發生。
你試過PAM
sufficient
控制嗎?每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 行來處理。