Linux密码输错被锁,如何解锁账户?

当Linux系统用户连续输错密码次数过多时,系统会基于安全策略自动锁定该用户账户,防止暴力破解,这种锁定通常由PAM(Pluggable Authentication Modules)模块实现,如pam_tally2或pam_faillock,解决密码输错锁住的问题,需根据系统配置和发行版选择对应方法,以下是详细步骤:

linux密码输错锁住如何解决

查看账户锁定状态

解锁前需确认账户是否真的被锁定,避免误判,不同发行版使用的工具不同:

  • 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 模块但上述命令无效,可能是模块路径问题,可尝试完整路径:

linux密码输错锁住如何解决

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

linux密码输错锁住如何解决

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:可通过进入单用户模式或恢复模式解决:

  1. 重启系统,在GRUB引导界面按e进入编辑模式;
  2. 找到以linuxlinux16开头的行,在行尾添加init=/bin/bash(CentOS)或systemd.unit=rescue.target(Ubuntu);
  3. 按Ctrl+X启动,进入root shell(可能需要输入root密码,若忘记则需通过其他方式重置root密码,如chroot修复);
  4. 执行解锁命令(如pam_tally2 --user=用户名 --reset);
  5. 执行exec /sbin/initreboot重启系统,即可正常登录。

Q2:为什么解锁后很快又被锁住?
A:通常有两种原因:

  1. 策略配置过严格:例如deny值设为1(1次失败即锁定),或fail_interval时间过短(如1分钟内2次失败就锁定),需检查PAM配置文件(如/etc/pam.d/system-auth),适当调整denyunlock_time等参数;
  2. 其他服务触发锁定:如SSH、图形登录等不同模块均配置了锁定策略,可能导致重复锁定,需检查所有PAM配置文件(如/etc/pam.d/sshd/etc/pam.d/gdm-password),确保锁定逻辑一致,避免重复计数。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/22216.html

(0)
酷番叔酷番叔
上一篇 2025年9月9日 11:44
下一篇 2025年9月9日 11:54

相关推荐

  • 工程师如何高效调试Linux应用?

    高效调试Linux应用程序需掌握核心工具链(gdb/lldb),结合strace/ltrace动态追踪,利用Valgrind检测内存问题,并系统化分析日志与核心转储文件,快速定位根源。

    2025年7月30日
    12800
  • linux 如何ping网关

    Linux中,使用ping 命令即可ping网关,ping 192.

    2025年8月14日
    13100
  • Linux如何访问命令行?TTY和终端模拟器选哪种?

    访问虚拟控制台(TTY)虚拟控制台是Linux内核提供的原生命令行界面,无需图形界面即可操作,操作步骤:键盘快捷键切换按下 Ctrl + Alt + F1 到 F6 中的任意键(如 F3),进入纯命令行控制台(TTY3),返回图形界面按 Ctrl + Alt + F2 或 F7/F8(取决于发行版),提示: F……

    2025年8月8日
    9200
  • Linux下如何编写DLL动态链接库文件?

    在Linux操作系统中,并没有Windows环境下的动态链接库(DLL)文件格式,但Linux提供了功能类似的共享库(Shared Object,文件后缀为.so),它允许程序在运行时动态加载和链接,实现代码复用和模块化开发,编写Linux下的共享库(即“Linux DLL”)需要遵循特定的编译和链接流程,本文……

    2025年10月1日
    7300
  • Linux如何连接SMB共享文件夹?

    在Linux系统中连接SMB(Server Message Block)共享资源是常见的跨平台文件共享需求,SMB协议主要用于Windows系统间的文件共享,但通过Linux工具也能方便地访问这类共享,本文将详细介绍Linux连接SMB的多种方法,包括命令行和图形界面操作,涵盖安装工具、配置参数、权限管理等关键……

    2025年9月25日
    9700

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信