Pam

了解 PAM 和 PAM 感知守護程序之間的通信

  • January 19, 2018

假設我已配置sshd(連結到libpam.so.0共享庫)以使用 PAM,並且我有以下/etc/pam.d/sshd內容:

auth        requisite   pam_nologin.so
auth    required        pam_env.so
auth    required        pam_unix.so     try_first_pass 
auth    required        pam_google_authenticator.so
account     requisite   pam_nologin.so
account required        pam_unix.so     try_first_pass
password        requisite       pam_cracklib.so
password        required        pam_unix.so     use_authtok nullok shadow try_first_pass 
session     required    pam_loginuid.so
session required        pam_limits.so
session required        pam_unix.so     try_first_pass 
session optional        pam_umask.so
session optional        pam_systemd.so
session optional        pam_env.so
session  optional       pam_lastlog.so   silent noupdate showfailed

我是否正確 PAMsshd在每個堆棧結束時通知成功或失敗?那麼首先auth處理設施,然後將結果返回到sshd,然後account處理設施並將account堆棧的結果返回到sshd,等等?當認證會話結束時,PAM 是否由守護程序通知?

從某種意義上說,這就是正在發生的事情,但我不會那樣說。因為 PAM 不會主動通知 sshd,而是 sshd 通過函式呼叫(如 , 等)詢問 PAMpam_authenticatepam_acct_mgmt根據結果進行操作。PAM 也不會自動知道何時關閉會話,但必須通過通知pam_close_session(因為可以從另一個應用程序關閉會話)。

您可以查看 openssh 的原始碼,以了解 sshd 在何處以及如何使用 PAM。如果您對詳細資訊感興趣,我也會推薦Linux-PAM 應用程序開發人員指南。

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