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中,通常在开机后通过登录界面输入用户名和密码,或在启动引导界面

    2025年8月10日
    4000
  • 如何修改linux path变量值

    Linux系统中的PATH环境变量是一个重要的配置,它定义了系统在执行命令时会搜索可执行文件的路径列表,当用户在终端输入一个命令时,系统会按照PATH变量中指定的路径顺序依次查找对应的可执行文件,若找到则执行,否则提示“命令未找到”,合理配置PATH变量可以方便地使用自定义工具或第三方程序,提升工作效率,以下是……

    2025年9月9日
    2400
  • Linux如何实现网上翻页操作?

    在Linux环境下,“网上翻页”根据场景不同可分为多种实现方式,涵盖命令行工具、图形界面浏览器及脚本自动化等,无论是日常网页浏览还是数据抓取,Linux都提供了灵活高效的解决方案,以下从不同场景出发,详细说明具体操作方法,命令行文本浏览器交互式翻页Linux命令行下,文本浏览器(如lynx、links、w3m……

    2025年10月5日
    1300
  • Linux管理员如何运行命令行窗口?

    在Linux系统中,命令行窗口(终端)是管理员进行系统管理、配置、故障排查的核心工具,其灵活性和效率远高于图形界面,Linux管理员运行命令行窗口的方式多样,涵盖本地操作、远程访问及高级场景,以下是具体操作方法和注意事项,本地终端窗口的打开方式本地终端窗口指直接在当前Linux系统中启动的命令行界面,根据不同桌……

    2025年9月18日
    2400
  • Linux系统如何查看当前PHP版本?

    在Linux系统中查看PHP版本是开发运维中的常见需求,无论是排查兼容性问题、确认环境配置,还是升级PHP版本,准确获取当前PHP版本信息都是基础步骤,本文将详细介绍多种查看PHP版本的方法,涵盖命令行、Web环境、包管理器等不同场景,并对比各方法的适用性和注意事项,命令行直接查看(最常用)在Linux终端中……

    2025年8月25日
    3900

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信