当Linux系统用户连续输错密码次数过多时,系统会基于安全策略自动锁定该用户账户,防止暴力破解,这种锁定通常由PAM(Pluggable Authentication Modules)模块实现,如pam_tally2或pam_faillock,解决密码输错锁住的问题,需根据系统配置和发行版选择对应方法,以下是详细步骤:
查看账户锁定状态
解锁前需确认账户是否真的被锁定,避免误判,不同发行版使用的工具不同:
-
CentOS/RHEL系统(使用pam_tally2模块):
执行命令pam_tally2 --user=用户名
,若返回“Login failures”大于0,则说明账户被锁定。pam_tally2 --user=test
输出示例:
Login Failures Latest failure From test 3 2023-10-01 10:30:00 pts/0
,表示test账户因3次失败被锁定。 -
Ubuntu/Debian系统(使用pam_faillock模块):
执行命令faillog -u 用户名
,若显示“Lock time”或“Failures”大于0,则被锁定。faillog -u=test
输出示例:
Login Failures Latest failure Maximum test 2 2023-10-01 11:00:00 pts/1 3
,表示test账户因2次失败触发锁定(最大失败次数为3)。
解锁账户的方法
方法1:使用pam_tally2解锁(CentOS/RHEL默认)
需root权限,通过重置登录失败次数解锁:
sudo pam_tally2 --user=用户名 --reset
执行后再次查看 pam_tally2 --user=用户名
,若“Login Failures”变为0,则解锁成功。
注意:若系统使用 pam_tally2.so
模块但上述命令无效,可能是模块路径问题,可尝试完整路径:
sudo /usr/sbin/pam_tally2 --user=用户名 --reset
方法2:使用pam_faillock解锁(Ubuntu/Debian默认)
需root权限,通过重置失败计数解锁:
sudo faillock --user=用户名 --reset
执行后通过 faillog -u=用户名
确认“Failures”是否归零。
注意:若系统中无 faillock
命令,可能是未安装 libpam-modules
包,需先安装:
sudo apt update && sudo apt install libpam-modules
方法3:直接修改用户密码(适用于已知root密码)
若能通过root或其他管理员账户登录,可直接重置目标用户密码,部分系统会自动解除锁定:
sudo passwd 用户名 # 按提示输入新密码两次
例如重置test用户密码后,再次登录即可,无需手动解锁。
调整密码错误锁定策略(避免频繁锁定)
若希望修改系统默认的锁定规则(如最大失败次数、锁定时间),需编辑PAM配置文件。
CentOS/RHEL(修改/etc/pam.d/system-auth)
找到包含 pam_tally2.so
的行,调整参数:
auth required pam_tally2.so onerr=fail deny=5 unlock_time=300
deny=5
:最大允许5次失败,超过则锁定;unlock_time=300
:锁定5分钟后自动解锁(单位:秒,设为0则需手动解锁)。
修改后保存,重启sshd服务(若为远程登录):sudo systemctl restart sshd
。
Ubuntu/Debian(修改/etc/pam.d/common-auth)
找到包含 pam_faillock.so
的行,调整参数:
auth [success=1 default=ignore] pam_unix.so auth [default=die] pam_faillock.so preauth audit silent deny=3 unlock_time=600 fail_interval=300
deny=3
:最大允许3次失败;unlock_time=600
:锁定10分钟后自动解锁;fail_interval=300
:5分钟内连续失败才触发锁定。
修改后保存,重启sshd服务:sudo systemctl restart sshd
。
参数说明表:
| 参数 | 含义 | 示例值 |
|—————|——————————-|——–|
| deny
| 最大失败次数 | 3 |
| unlock_time
| 锁定时间(秒),0为手动解锁 | 300 |
| fail_interval
| 触发锁定的失败时间窗口(秒)| 300 |
FAQs
Q1:忘记root密码,如何解锁被锁定的普通用户账户?
A:可通过进入单用户模式或恢复模式解决:
- 重启系统,在GRUB引导界面按
e
进入编辑模式; - 找到以
linux
或linux16
开头的行,在行尾添加init=/bin/bash
(CentOS)或systemd.unit=rescue.target
(Ubuntu); - 按Ctrl+X启动,进入root shell(可能需要输入root密码,若忘记则需通过其他方式重置root密码,如chroot修复);
- 执行解锁命令(如
pam_tally2 --user=用户名 --reset
); - 执行
exec /sbin/init
或reboot
重启系统,即可正常登录。
Q2:为什么解锁后很快又被锁住?
A:通常有两种原因:
- 策略配置过严格:例如
deny
值设为1(1次失败即锁定),或fail_interval
时间过短(如1分钟内2次失败就锁定),需检查PAM配置文件(如/etc/pam.d/system-auth
),适当调整deny
、unlock_time
等参数; - 其他服务触发锁定:如SSH、图形登录等不同模块均配置了锁定策略,可能导致重复锁定,需检查所有PAM配置文件(如
/etc/pam.d/sshd
、/etc/pam.d/gdm-password
),确保锁定逻辑一致,避免重复计数。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/22216.html