linux用户锁定与解锁分三类:密码级(passwd -l/-u)、失败计数级(faillock/pam_tally2 --reset)、shell拦截级(usermod -s /sbin/nologin/-s /bin/bash),须先用passwd -s识别状态(lk为密码锁,ps需查faillock),方法错则无法解锁。

用户锁定与解锁不是单一操作,而是对应不同机制的三类独立方案:密码级锁定、失败计数锁定、Shell拦截锁定。用错方法就解不开——比如对 pam_tally2 锁定的账户执行 passwd -u,完全无效。
看状态,先分清是哪一种锁
执行这条命令,一眼识别锁定类型:
sudo passwd -S username
输出第二列含义:
-
LK:密码被
passwd -l或usermod -L手动加了!!前缀 -
PS:密码正常,但可能被 PAM 失败计数锁住(
passwd -S不显示此状态) - 若无输出或报错,说明用户不存在或权限不足
进一步确认 PAM 锁定需单独查:
sudo faillock --user username(较新系统)
sudo pam_tally2 --user=username(旧系统或 RHEL/CentOS)
手动锁/解锁:改 shadow 密码字段
适用于管理员主动封禁,不依赖失败次数,效果立竿见影:
- 锁定:sudo passwd -l username(等价于
sudo usermod -L username) - 解锁:sudo passwd -u username(等价于
sudo usermod -U username)
注意:该操作只禁密码登录,不影响 SSH 密钥、su - username(root 切换)、cron 或服务调用。
PAM 自动锁/解锁:靠失败次数触发
由 pam_faillock.so(新)或 pam_tally2.so(旧)控制,配置在 /etc/pam.d/sshd 或 /etc/pam.d/system-auth 中:
- 查看当前失败次数:sudo faillock --user username
- 清空计数并解锁:sudo faillock --user username --reset
- 旧系统用:sudo pam_tally2 --user=username --reset
该机制对密钥登录无效——若用户已配密钥,PAM 锁定形同虚设。
静默拦截:改 shell 为 /sbin/nologin
适合长期停用的服务账户或离职人员,登录流程在认证前就退出:
- 锁定:sudo usermod -s /sbin/nologin username
- 解锁:sudo usermod -s /bin/bash username(或原 shell)
此方式不影响 sudo -u username cmd、systemd 服务、crontab 等非交互式调用。











