Pam
了解 PAM 和 PAM 感知守護程序之間的通信
假設我已配置
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
我是否正確 PAM
sshd
在每個堆棧結束時通知成功或失敗?那麼首先auth
處理設施,然後將結果返回到sshd
,然後account
處理設施並將account
堆棧的結果返回到sshd
,等等?當認證會話結束時,PAM 是否由守護程序通知?
從某種意義上說,這就是正在發生的事情,但我不會那樣說。因為 PAM 不會主動通知 sshd,而是 sshd 通過函式呼叫(如 , 等)詢問 PAM
pam_authenticate
並pam_acct_mgmt
根據結果進行操作。PAM 也不會自動知道何時關閉會話,但必須通過通知pam_close_session
(因為可以從另一個應用程序關閉會話)。您可以查看 openssh 的原始碼,以了解 sshd 在何處以及如何使用 PAM。如果您對詳細資訊感興趣,我也會推薦Linux-PAM 應用程序開發人員指南。