Linux账户锁定分三类:PAM失败计数锁(pam_faillock/pam_tally2)、密码禁用(passwd -l)和账户过期(chage),需用grep查模块、faillock --show查计数、passwd -S和chage -l分别验证状态。

Linux 账户不会“死锁”,但会因连续输错密码被 PAM 模块锁定 —— 这是策略性拒绝登录,不是内核级死锁。排查核心是确认锁定来源、定位计数状态、区分 PAM 锁定 vs 密码禁用 vs 账户过期。
怎么快速判断是 pam_faillock 还是 pam_tally2 在起作用
新系统(RHEL/CentOS 7+、Ubuntu 18.04+)默认用 pam_faillock;老系统(CentOS 6、部分 Debian 9 以前)可能还在用 pam_tally2。别猜,直接查:
- 运行
grep -r "pam_faillock\.so\|pam_tally2\.so" /etc/pam.d/,看哪些文件里启用了哪个模块 - 检查
/etc/pam.d/common-auth(Debian/Ubuntu)或/etc/pam.d/system-auth(RHEL/CentOS),找含auth [default=die] pam_faillock.so或auth required pam_tally2.so的行 - 如果两者都存在,优先以
faillock --user username --show输出为准 ——pam_tally2在启用pam_faillock后通常会被忽略
faillock --show 显示 Failures count: 0 却仍登不上
说明问题不在失败计数上,得继续往下查。常见干扰项有:
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
-
/etc/shadow中该用户密码字段为!!或*:表示密码被passwd -l禁用,需用sudo passwd -u username解锁 -
chage -l username显示Account expires是过去日期,或Password locked为yes:说明账户已过期或被显式锁定,用sudo chage -E -1 username取消过期 -
/etc/passwd末字段是/sbin/nologin或/bin/false:shell 不允许交互登录,改回/bin/bash(sudo chsh -s /bin/bash username)
reset 后还是登不进,auth.log 里反复出现 “Authentication failure”
重置命令执行成功,但登录仍失败,大概率是 PAM 配置没生效或服务未重载:
- 确认 reset 命令是否带了
--user参数且用户名拼写完全一致(区分大小写) - 检查
/etc/pam.d/sshd(SSH 登录)或/etc/pam.d/login(本地终端)是否也引用了pam_faillock.so—— 如果只在system-auth里 reset,但sshd绕过了它,锁定依然有效 - 修改过 PAM 配置后,SSH 登录需重启
sshd(sudo systemctl restart sshd),控制台登录则需重启getty@tty1或直接 reboot - 某些发行版(如 Ubuntu 22.04+)默认启用
faillock的even_deny_root选项,root 也会被锁 —— 若 root 被锁,必须进单用户模式或用其他管理员账号操作
单用户模式下 pam_tally2 --reset 不生效
单用户模式下,PAM 模块可能根本没加载,pam_tally2 命令只是读取计数文件(如 /var/log/tallylog),但若该文件被 SELinux 标签保护或权限异常,命令会静默失败:
- 先运行
ls -lZ /var/log/tallylog(RHEL/CentOS)或ls -l /var/log/tallylog(Ubuntu),确认文件存在且权限为600 - 若不存在,说明系统实际用的是
faillock,计数存在/var/run/faillock/下,该目录在单用户模式下可能未挂载或不可写 - 最稳妥做法:进单用户后直接
passwd username改密,或usermod -U username解锁,绕过所有 PAM 计数逻辑
真正容易被忽略的点是:PAM 锁定策略对不同登录方式(SSH、图形界面、控制台)可能分别配置,faillock --reset 只清计数,不改策略本身;而 passwd -u 和 chage -E 解决的是完全不同的锁定类型 —— 混用或漏查其中一种,问题就会反复出现。

















