0

0

Linux系统账户锁定解锁命令及批量处理自动化

舞夢輝影

舞夢輝影

发布时间:2026-03-15 09:02:02

|

369人浏览过

|

来源于php中文网

原创

账户被锁后立刻解封的命令是:faillock --user --reset(新版)或 pam_tally2 --user --reset(旧版),需root权限;先用faillock --user确认计数,再检查是否为passwd -l锁定(/etc/shadow第二字段含!),对应用passwd -u恢复。

linux系统账户锁定解锁命令及批量处理自动化

账户被锁后怎么立刻解封

Linux账户被锁定,最常见原因是连续输错密码触发了 pam_faillockpam_tally2 机制。直接生效的解封命令是:faillock --user <username> --reset</username>(新版系统)或 pam_tally2 --user <username> --reset</username>(旧版)。注意:必须用 root 权限执行,普通用户即使知道命令也无权操作。

常见错误现象:Authentication failure 持续出现,但密码确认无误;ssh 登录时提示 Account locked due to 3 failed loginslastb 显示大量失败记录但账户仍无法登录。

  • 先确认锁定机制:grep -r "pam_faillock\|pam_tally" /etc/pam.d/,看系统实际启用的是哪个模块
  • faillock --user <username></username> 查当前计数,比盲目重置更稳妥
  • 如果系统没装 libpam-faillock(如某些 CentOS 7 最小安装),faillock 命令根本不存在,得换用 pam_tally2

批量解锁多个账户的脚本写法

运维中常需批量处理被锁账户,比如全员密码策略变更后集中解封。核心思路是把用户名列表喂给循环,逐个调用重置命令,但要注意命令可用性判断和错误跳过。

使用场景:AD 同步后批量锁定、安全扫描触发误锁、临时禁用策略回滚。

  • 安全起见,先生成待处理名单:faillock --list | awk '/^Login/ {print $2}' | sort -u > users-to-unlock.txt
  • 脚本里必须检查命令是否存在:if command -v faillock &> /dev/null; then ... else ...
  • 逐行处理时加 || true 防止单个用户失败中断整个循环,例如:faillock --user "$u" --reset || true
  • 别用 for u in $(cat ...) 处理含空格用户名——虽然极少,但一旦有就出问题;改用 while IFS= read -r u

/etc/shadow 中的 ! 和 * 密码字段含义

账户“锁住”不等于被 faillock 计数锁定,也可能是管理员手动禁用密码。这时要看 /etc/shadow 第二字段:开头是 ! 表示密码被禁用(passwd -l),开头是 * 通常表示无密码且禁止登录(如某些服务账户)。

Giiso写作机器人
Giiso写作机器人

Giiso写作机器人,让写作更简单

下载

性能与兼容性影响:这种锁定方式不依赖 PAM 模块,所有 Linux 发行版都生效,但无法用 faillock 解除——它压根没记录在 /var/run/faillock/ 里。

  • 查是否被 passwd -l 锁定:getent shadow <username> | cut -d: -f2 | grep '^!'</username>
  • 恢复方法只能是 passwd -u <username></username>,不是 --reset
  • usermod -p '' <username></username> 是危险操作,会清空密码哈希导致无法登录,不要用

自动化时为什么不能只依赖 lastb 或 auth.log

lastb 只记录失败登录,/var/log/auth.log(或 /var/log/secure)内容格式不统一,且日志可能轮转、权限受限、甚至被关闭。靠它们反推“谁该解锁”容易漏判或误判。

真实运维中,锁定状态应以 PAM 实际计数为准,而不是日志推测。

  • faillock --user <username> --list</username> 返回的是内存+磁盘双重状态,最权威
  • 脚本中若用 grep "Failed password" /var/log/auth.log | wc -l 统计,会漏掉 telnet、ftp 等非 SSH 尝试,也不反映是否已自动解锁
  • 日志路径因发行版而异:/var/log/secure(RHEL/CentOS),/var/log/auth.log(Debian/Ubuntu),硬编码路径必然翻车

事情说清了就结束。真正麻烦的从来不是命令本身,而是你不确定系统到底用哪套机制锁的账户——faillockpam_tally2passwd -l、SELinux 约束、甚至 sshd 的 AllowUsers 配置,都可能表现为“无法登录”。动手前,先花三十秒确认锁定来源。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

193

2023.09.27

python print用法与作用
python print用法与作用

本专题整合了python print的用法、作用、函数功能相关内容,阅读专题下面的文章了解更多详细教程。

19

2026.02.03

c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

254

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

1110

2024.03.01

if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

847

2023.08.22

sort排序函数用法
sort排序函数用法

sort排序函数的用法:1、对列表进行排序,默认情况下,sort函数按升序排序,因此最终输出的结果是按从小到大的顺序排列的;2、对元组进行排序,默认情况下,sort函数按元素的大小进行排序,因此最终输出的结果是按从小到大的顺序排列的;3、对字典进行排序,由于字典是无序的,因此排序后的结果仍然是原来的字典,使用一个lambda表达式作为key参数的值,用于指定排序的依据。

409

2023.09.04

while的用法
while的用法

while的用法是“while 条件: 代码块”,条件是一个表达式,当条件为真时,执行代码块,然后再次判断条件是否为真,如果为真则继续执行代码块,直到条件为假为止。本专题为大家提供while相关的文章、下载、课程内容,供大家免费下载体验。

107

2023.09.25

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1564

2023.06.21

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

49

2026.03.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号