PAM (Pluggable Authentication Modules) 是一套方便管理驗證方式的系統。
他把各種驗證方式做模組化,讓各個軟體 (例如 sshd、系統的登入等等) 可以用統一的介面去管理驗證方式。
(Linux PAM — How to create an authentication module | by Avi Rzayev | Medium)
PAM 的設定檔會放在 /etc/pam.d
裡面。
一條 PAM 規則由以下四個區塊組成:
type
account
auth
session
password
control
required
requisite
sufficient
optional
[action=value ...]
required
其實就是 [success=ok new_authtok_reqd=ok ignore=ignore default=bad]
success=ok
success
代表 module 說 passok
代表回傳說 passnew_authtok_reqd=ok
ignore=ignore
default=bad
die
(直接退出)module
.so
arguments
以下是 Debian 系統裡面的 /etc/pam.d/common-auth
,也就是負責系統本身使用者驗證的 PAM 設定:
# here are the per-package modules (the "Primary" block)
auth [success=2 default=ignore] pam_unix.so nullok
auth [success=1 default=ignore] pam_sss.so use_first_pass
# here's the fallback if no module succeeds
auth requisite pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
auth required pam_permit.so
# and here are more per-package modules (the "Additional" block)
auth optional pam_cap.so
# end of pam-auth-update config
auth [success=2 default=ignore] pam_unix.so nullok
success=2
代表如果 pass 的話,要跳過後面兩行 (剛好跳過 pam_deny.so
那行)nullok
代表允許空密碼auth [success=1 default=ignore] pam_sss.so use_first_pass
pam_deny.so
那行)auth requisite pam_deny.so
requisite
)auth required pam_permit.so
required
)auth optional pam_cap.so