linux账户锁定需通过pam模块实现,主流用pam_tally2(旧系统)或pam_faillock(新系统),配置deny、unlock_time等参数并添加对应auth/account规则,再用faillock或pam_tally2命令管理状态。

核心思路:通过 PAM 模块控制失败计数与自动解锁
Linux 不自带“输错几次就锁 X 分钟”的默认机制,必须借助 PAM(Pluggable Authentication Modules)模块实现。主流用 pam_tally2(较新系统)或 pam_faillock(RHEL/CentOS 7+、Arch 等现代发行版),二者配置方式不同但目标一致:统计错误次数、达到阈值后拒绝认证、到期自动恢复。
方法一:使用 pam_tally2(兼容多数 Ubuntu/Debian/CentOS)
适用于支持该模块的老中版本系统(注意部分新版 Ubuntu 已弃用,优先试 pam_faillock):
- 编辑 SSH 远程登录限制:
sudo nano /etc/pam.d/sshd在第二行插入(位置关键,不能靠后):auth required pam_tally2.so deny=3 unlock_time=300 even_deny_root root_unlock_time=600 - 如需同时限制本地终端(tty)登录,再改:
sudo nano /etc/pam.d/login同样在第二行添加相同行 - 参数含义: deny=3 → 连续输错 3 次即锁定; unlock_time=300 → 普通用户锁 5 分钟(单位秒); even_deny_root → root 用户也受限制; root_unlock_time=600 → root 锁 10 分钟
方法二:使用 pam_faillock(推荐用于 CentOS 7+/RHEL 8+/Arch/新版 Ubuntu)
更现代、更安全,且默认启用 faillock 的系统(如 CentOS 7)只需调整配置文件:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 直接编辑主策略文件:
sudo nano /etc/security/faillock.conf - 修改关键项(取消注释并设值):
deny = 3fail_interval = 900(15 分钟内累计达限才触发)unlock_time = 300(锁 5 分钟) - 确保 PAM 调用已启用:检查
/etc/pam.d/system-auth中是否含类似行(通常默认存在):auth [default=die] pam_faillock.so authfail silent deny=3 unlock_time=300
验证与管理锁定状态
设置完务必测试,并掌握排查手段:
- 查看某用户失败记录:
sudo faillock --user username(pam_faillock) 或sudo pam_tally2 --user username(pam_tally2) - 手动解锁指定用户:
sudo faillock --reset --user username或sudo pam_tally2 -r -u username - 若被锁且无其他登录通道,可进单用户模式或 GRUB 加
systemd.debug-shell=1启用调试 shell,再执行重置命令
注意事项
配置生效无需重启服务,但需新会话才应用。SSH 登录失败时不会实时提示“已被锁定”,只显示密码错误;只有达到阈值后,即使输对密码也无法登录,必须等待解锁时间结束或手动重置。建议先在测试账户上验证,避免锁死管理员账号。










