最近,安裝pam和登錄過程,一些經驗總結如下:
Linux系統登錄過程簡述如下:
read /etc/inittab get username in tty get password
init ---------------------> mingetty ---------------------------> login ------------------
/etc/pam.d
-----> call PAM modules -------------> act/rej
Linux PAM 是一個通用認證機制。為庫的形式。
配置文件放在/etc/pam.conf或/etc/pam.d/ . 配置文件可以使用include指令包含其它配置文件。當支持Linux-PAM的客戶程序調用PAM api. PAM首先根據客戶程序的類別,檢查配置文件中的PAM在此類別中的堆疊模塊數以及相應的堆疊模塊名。依次調用這些模塊進行認證檢查。對於每一種模塊的所需的配置文件放在/etc/security/目錄中。
一般包括4種類別
auth 驗證類,用於登錄驗證
account 帳號類,用於非驗證的帳號管理,如限制/允許訪問基於,時間,允許的最大用戶數,用戶名
password 口令維護類,用於修改口令
session 會話類,用於用戶在使用某項服務前或後必須先做某件事的檢查。
模塊後的域,一般是該模塊的參數。
所以,要保證login,passwd正常工作必須保證PAM模塊被正確安裝和配置(配置文件必須存在),一般的安裝目錄為:
PAM全局文件:/etc/pam.conf 或 /etc/pam.d/* ; pam.d目錄的存在會引起pam.conf被忽略。
PAM模塊:/lib/security
PAM模塊配置文件:/etc/security
系統登錄(auth)修改(password)常用的模塊是:
pam_unix :提供傳統unix登錄密碼檢查(從/etc/passwd和,或/etc/shadow)。
pam_cracklib:提供基於字典的密碼復雜度和安全性檢查。一般作為pam_unix的first pass(及上層堆疊模塊)進行檢查。pam_cracklib.so由PAM包提供。但它需要cracklib庫(libcrack.so)。cracklib的字典文件一般位於:/usr/lib/cracklib_dict.*文件中,或/usr/share/cracklib/pw_dict.*文件中
典型的PAM配置文件如下:
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth required pam_env.so
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 500 quiet
auth required pam_deny.so
account required pam_unix.so
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 500 quiet
account required pam_permit.so
password requisite pam_cracklib.so try_first_pass retry=3
password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so