Linux中锁定用户需按登录方式选择方法:passwd -l/-u禁用密码登录但不影响密钥;usermod -s /sbin/nologin禁止交互式登录并可提示;pam_tally2实现失败次数自动锁定,仅限密码认证。

在 Linux 系统中,锁定或解锁用户登录权限不是单一操作,而是取决于你想阻断哪种登录方式、保留哪些账户功能,以及是否需要自动化响应。核心原则是:不同方法作用机制不同,互不兼容,必须按方式匹配解锁操作。
用 passwd -l / -u 快速禁用密码登录
这是最常用、最直接的方式,适用于临时封禁可疑账户或员工离岗场景:
-
锁定:运行
sudo passwd -l username,系统会在/etc/shadow中该用户密码哈希前加!!,使其所有基于密码的认证(SSH 密码登录、su、控制台登录)立即失败 -
解锁:运行
sudo passwd -u username,移除!!前缀,原密码恢复可用 -
验证状态:执行
sudo passwd -S username,输出第二列为LK表示已锁定,PS表示正常 -
注意:此操作不影响 SSH 密钥登录、
sudo -u执行命令,也不影响 root 切换到该用户
用 usermod -s /sbin/nologin 彻底禁止交互式登录
适合长期停用账户(如服务账号、离职人员),且希望登录时给出友好提示:
-
锁定:运行
sudo usermod -s /sbin/nologin username,修改/etc/passwd中 shell 字段。用户尝试 SSH 或终端登录时,会直接退出,并可显示/etc/nologin.txt中的提示信息 -
解锁:运行
sudo usermod -s /bin/bash username(或其他原 shell,如/bin/sh),改回即可 -
优势:不依赖密码状态,对密钥登录、
su、sudo、cron 任务均无影响,仅拦截交互式 shell 启动
用 pam_tally2 实现失败次数自动锁定
用于防御暴力破解,由 PAM 模块动态管理,和 passwd 锁定无关:
-
启用策略:在
/etc/pam.d/sshd或/etc/pam.d/system-auth中添加:auth [default=die] pam_tally2.so deny=5 unlock_time=300
表示连续输错 5 次密码后锁定 5 分钟 -
查看状态:运行
sudo pam_tally2 --user=username -
手动解锁:运行
sudo pam_tally2 --user=username --reset -
注意:此机制只限制密码认证,若用户配置了 SSH 密钥,仍可正常登录;解锁不能用
passwd -u
其他辅助方式:按需组合使用
单一手段常有盲区,实际中建议组合增强防护:
-
立即阻断 + 长期隔离:先
passwd -l防止当前攻击,再usermod -s /sbin/nologin彻底关闭登录入口 -
账户过期控制:用
sudo chage -E 0 username设置账户立即过期,适合临时外包账号到期停用 -
密钥同步清理:若用户曾配置 SSH 密钥,锁定后应检查并删除
~username/.ssh/authorized_keys中对应公钥,否则密钥登录仍有效











