CentOS修改密碼不生效:排查與修復指南
問題現(xiàn)象描述
在CentOS系統(tǒng)中使用passwd
命令修改用戶密碼后,新密碼無法通過SSH登錄或本地驗證,系統(tǒng)仍然要求輸入舊密碼。
常見原因及解決方法
1. 密碼策略限制
檢查/etc/login.defs
和/etc/security/pwquality.conf
文件:
# 查看最小密碼長度
grep PASS_MIN_LEN /etc/login.defs
# 驗證密碼復雜度規(guī)則
cat /etc/security/pwquality.conf
若密碼不符合策略要求,需調整參數(shù)或設置更高強度的密碼。
2. PAM模塊配置異常
檢查/etc/pam.d/passwd
文件配置:
# 查看PAM驗證鏈
cat /etc/pam.d/passwd
# 典型有效配置示例:
# password sufficient pam_unix.so sha512 shadow nullok try_first_pass
若存在pam_deny.so
或錯誤模塊引用,需修正配置后執(zhí)行systemctl daemon-reload
。
3. SELinux安全策略攔截
# 臨時禁用SELinux排查問題
setenforce 0
# 檢查SELinux日志
grep AVC /var/log/audit/audit.log | audit2allow
若問題消失,需通過semanage
調整策略或恢復默認文件上下文。
4. 文件權限異常
# 驗證shadow文件權限
ls -l /etc/shadow
# 正確權限應為640且屬主root
chmod 640 /etc/shadow
chown root:shadow /etc/shadow
# 檢查文件鎖定屬性
lsattr /etc/shadow
chattr -i /etc/shadow
操作驗證步驟
- 執(zhí)行
passwd [username]
后立即檢查/var/log/secure
日志 - 通過
su - [username]
本地驗證密碼變更 - 重啟SSH服務后測試遠程登錄:
systemctl restart sshd
深度排查建議
- 使用
strace -f passwd [username]
跟蹤系統(tǒng)調用 - 檢查
/etc/nsswitch.conf
認證源配置 - 確認未啟用LDAP/AD等外部認證服務