Linux锁定用户账号有三种主流方式:一是passwd -l/-u修改shadow密码字段加!!,阻断密码认证但不影响密钥登录;二是usermod -s /sbin/nologin禁用交互式shell,适用于服务账户;三是pam_tally2自动锁定,需用--reset解锁,与密码命令无关。

Linux 锁定用户账号不是“删掉”或“禁用密码”,而是阻断登录能力;解锁必须先确认锁定方式,否则命令可能完全无效。
用 passwd -l 和 -u 快速锁定/解锁(最常用)
这是最直接的方式,修改 /etc/shadow 中密码字段,在哈希前加 !!,使所有基于密码的认证(SSH 密码登录、su、login)失败:
- 锁定:sudo passwd -l username
- 解锁:sudo passwd -u username
- 验证状态:sudo passwd -S username → 输出第二列为 LK 表示已锁定,PS 表示正常
注意:该方式不影响 SSH 密钥登录,也不阻止 root 执行 su - username(无需密码)。
用 usermod 修改 shell 彻底禁止交互式登录
把用户默认 shell 改为 /sbin/nologin(RHEL/CentOS)或 /bin/false(Debian/Ubuntu),系统在登录流程早期就退出,不进入认证环节:
- 锁定:sudo usermod -s /sbin/nologin username
- 解锁:sudo usermod -s /bin/bash username(恢复原 shell 即可)
- 该方式不影响 cron 任务、sudo -u username command 等非交互式操作
适合长期停用但需保留文件归属的服务账户。
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
用 pam_tally2 处理失败次数触发的自动锁定
这不是管理员手动锁的,而是系统根据 PAM 配置(如连续输错 3 次)自动记录并拒绝登录,常见于企业加固环境:
- 查看失败次数:sudo pam_tally2 --user=username
- 解锁(必须):sudo pam_tally2 --user=username --reset
- passwd -u 或 usermod -U 对此无效 —— 它和密码字段无关
配置通常位于 /etc/pam.d/system-auth 或 /etc/pam.d/password-auth,含类似 auth [default=die] pam_tally2.so deny=3 unlock_time=300 的行。
其他辅助方式与注意事项
还有几种补充手段,常配合使用:
- chage -E 0 username:设置账户立即过期,通过有效期机制阻止登录
- touch /etc/nologin:全局禁止所有普通用户登录(root 不受影响),适合系统维护窗口
- 若需彻底禁用,建议组合操作:passwd -l + usermod -s /sbin/nologin + 清理 ~/.ssh/authorized_keys
单一方式都可能存在绕过路径,安全要求高时应分层控制。










