Password

使用 pam_exec 在某個點終止 pam 處理

  • September 25, 2017

我正在編寫自定義 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應該立即返回,但這並沒有發生。

你試過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 行來處理。

引用自:https://unix.stackexchange.com/questions/394425