一、故障現象
SUSE Linux Enterprise Server 11 SP3 系統中,普通用戶無法修改密碼,但root用戶可以正常修改。錯誤日志如下:
系統日志顯示:
Jun 16 11:35:47 ZJHZ-CMREAD-CGTEST17 passwd[16285]: password change failed, pam Error 21 - account=bcwap, uid=3954, by=3954 Jun 16 11:36:29 ZJHZ-CMREAD-CGTEST17 su: (to zabbix) zabbix on /dev/pts/2 Jun 16 11:36:37 ZJHZ-CMREAD-CGTEST17 passwd[16712]: User zabbix: Authentication information cannot be recovered Jun 16 11:36:37 ZJHZ-CMREAD-CGTEST17 passwd[16712]: password change failed, pam error 21 - account=zabbix, uid=6606, by=6606
二、故障分析
初步懷疑原因如下:
- /etc/passwd 和 /etc/shadow 文件權限問題:與其他正常主機對比后排除。
- passwd 命令權限或文件被修改:同類主機對比后排除。
- 動態鏈接庫異常:使用 ldd 命令檢查,所有鏈接庫文件均正常,且版本一致。root用戶可正常修改密碼,此可能性較小。
- 新建用戶測試:新建用戶也無法修改密碼,排除用戶配置文件問題。
- PAM 配置文件問題:日志中 pam error 21 提示,可能性最大。 common-auth、common-password、common-account、common-Session、su、sshd 等文件均可能存在問題。第三方安全加固軟件可能修改了 common-auth 和 common-password 文件。
聯系SUSE原廠技術支持尋求幫助。
三、故障解決
SUSE原廠工程師的排查步驟:
- 檢查PAM配置文件,未發現明顯問題。注釋部分規則后問題依舊。
- 使用 strace 命令跟蹤 passwd 命令執行過程:
strace -o /tmp/pw.log -ft su - testuser -c "passwd"
日志分析未發現異常。
- 再次檢查 common-password 文件:將所有規則還原至初始設置后,問題解決。 common-password 文件加固后和初始配置對比如下:
加固后: auth required pam_unix2.so nullok account required pam_unix2.so session required pam_unix2.so password required pam_pwcheck.so nullok password required pam_unix2.so nullok use_first_pass use_authtok password required pam_unix.so remember=5 use_authtok md5 shadow password required pam_cracklib.so min=disabled,12,8,6,5 max=40 passphrase=3 match=4 similar=deny random=42 enforce=everyone retry=3 初始值: password required pam_pwcheck.so nullok cracklib password required pam_unix2.so nullok use_authtok
四、總結
問題最終得到解決。SUSE工程師建議:common-auth、common-password、common-account、common-session 四個文件應分別只包含與其對應策略相關的配置(auth, password, account, session)。安全加固廠商將auth和session相關配置寫入common-password文件導致配置混亂,某些模塊重復加載。