HCRM博客

CentOS root账号被锁定,PAM faillock模块解锁教程

CentOS root被锁定,PAM模块faillock解锁命令

输完密码屏幕一闪,提示“Permission denied”,再试一次直接连提示都没了,心跳瞬间飙高——root被锁了。别急着拔电源,CentOS用PAM的faillock把你关进小黑屋,也能用同一条链子把你放出来,只要敲对命令。

CentOS root账号被锁定,PAM faillock模块解锁教程-图1

一分钟判断是不是faillock搞的鬼

先别乱翻日志,直接看/var/run/faillock目录。下面如果躺着root文件,基本坐实:连续输错密码触发阈值,账户被硬锁。cat一下,里面有时间戳、TTY、远程IP,证据确凿。文件存在=锁,文件消失=放人,比/var/log/secure翻页快十倍。

faillock参数速查,别背整本man

记不住拼写没关系,常用就三条:

faillock --user root --reset 立刻清零失败计数,锁自动解除

faillock --user root 查看当前失败记录,还剩几次机会一目了然

CentOS root账号被锁定,PAM faillock模块解锁教程-图2

faillock --user root --lock 手动上锁,测试演练时用的多

敲完reset没有回显就是成功,再ssh root,熟悉的提示符瞬间回来。

现场没root,怎么拿到解锁权限

很多人卡在“账户被锁→只能用root解锁→root被锁”死循环。CentOS留了两条后路:

1. 控制台物理机直接插显示器,single模式进系统,不需要密码就能拿到shell,再执行faillock --reset。

2. 云主机用“救援模式”挂载原盘,chroot进去后同样一条命令;各大云平台叫法不同,入口都在控制台“救援/Recovery”按钮。

CentOS root账号被锁定,PAM faillock模块解锁教程-图3

两条路共同点:本地操作绕过PAM认证栈,faillock不会拦你。

改配置,别让下次再被锁

锁一次长记性,改完参数就算手滑也不怕。打开/etc/security/faillock.conf,把下面三行调到舒服数值:

deny = 5 连续错五次才锁,给运维留点手滑空间

unlock_time = 900 900秒=15分钟自动解,比打电话叫醒同事快

fail_interval = 900 900秒内累计五次才算,防止暴力遍历

改完保存,立即生效,不需要重启。保险起见再开一终端,主动faillock --user root确认计数归零。

Ansible批量救场脚本

机器一多,逐台敲命令会疯。把下面片段存成unlock_root.yml,一键跑完上百台:

• hosts: all

become: yes

tasks:

• name: check if root is locked

shell: test -f /var/run/faillock/root && echo locked || echo ok

register: lock_status

changed_when: false

• name: reset faillock for root

command: faillock --user root --reset

when: "'locked' in lock_status.stdout"

跑完看okchanged统计,changed>0说明真有机器被锁,清单自动生成,下次还能复用。

日志留痕,别让黑锅自己背

解锁后顺手把记录写进工单:执行时间、失败来源IP、是否reset。这样下次有人再问“为什么root登不上”,直接甩日志,避免反复排查。faillock动作本身会写authpriv,用ausearch -m USER_AUTH -ts recent能一键拉出时间线,比手工截图靠谱。

常见坑合集

坑1:把deny设成0想关闭功能,结果PAM解析失败,所有用户直接无法登录。正确姿势是注释掉faillock行或把deny改成超大值,千万别写0。

坑2:只改faillock.conf,却没检查/etc/pam.d/system-auth里有没有silent参数,导致失败次数不记录,以为配置失效。保持模块参数一致才能生效。

坑3:云主机开了SELinux,chroot后忘记restorecon,结果重置成功却仍旧无法登录。随手restorecon -Rv /var/run/faillock保平安。

CentOS root被锁定,先瞄/var/run/faillock,确认后一条faillock --user root --reset秒解;改/etc/security/faillock.conf把阈值调到顺手,再用Ansible批量检查,以后就算全员手滑也能淡定喝茶。

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/41699.html

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
请登录后评论...
游客游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~