在Linux系统管理中,用户账号锁定是常见的安全管控手段,当我们需要确认某个用户是否可以正常登录,或者排查登录失败问题时,首先需要查看该用户是否处于锁定状态。不同场景下可以使用不同的方式来判断,下面逐一介绍常用的方法。

方法一:使用passwd命令查看
passwd命令除了修改用户密码,也可以用来查看用户的锁定状态,执行以下命令即可:
# 查看指定用户锁定状态,替换username为目标用户名 passwd -S username
命令输出会包含多个字段,第一个字段是用户名,第二个字段就是状态标识:
- 如果第二个字段是
L,表示用户账号已被锁定 - 如果第二个字段是
P,表示用户有可用的密码,账号正常 - 如果第二个字段是
NP,表示用户没有设置密码,账号无密码状态
方法二:查看/etc/shadow文件
Linux系统的用户密码及锁定信息存储在/etc/shadow文件中,该文件只有root用户有权限读取。文件每行对应一个用户,格式为用冒号分隔的9个字段,其中第二个字段是密码字段,通过它的内容可以判断用户是否锁定。
使用以下命令查看目标用户的shadow记录:
# 查看目标用户的shadow记录,替换username为实际用户名 grep "^username:" /etc/shadow
密码字段的常见情况如下:
- 如果密码字段以
!或者!!开头,说明用户账号被锁定,这两个符号是锁定的标识 - 如果密码字段是普通加密字符串,没有特殊前缀,说明账号正常,密码可用
- 如果密码字段是
*,表示账号被禁用,无法登录
方法三:使用chage命令查看
chage命令用来查看和修改用户密码的过期信息,也可以间接判断用户是否锁定,执行命令如下:
# 查看用户密码过期信息,替换username为目标用户名 chage -l username
如果输出中密码过期时间显示为已经过期,且密码失效时间也已经到达,同时账号没有其他可用登录方式,可能说明账号被锁定。不过该方法不如前两种直接,更适合结合密码策略一起排查问题。
方法四:查看登录失败计数(PAM相关场景)
如果系统配置了PAM的pam_tally2或者pam_faillock模块,用户多次登录失败会被自动锁定,此时可以用对应模块的命令查看锁定状态。
如果是pam_tally2模块,执行以下命令:
# 查看用户登录失败计数,替换username为目标用户名 pam_tally2 --user username
如果输出中失败次数不为0,且超过了系统设置的阈值,说明用户被临时锁定。如果是pam_faillock模块,执行:
# 查看用户faillock状态,替换username为目标用户名 faillock --user username
用户锁定的常见操作
如果需要锁定用户,可以使用以下命令:
# 锁定用户,替换username为目标用户名 passwd -l username
如果需要解锁用户,使用以下命令:
# 解锁用户,替换username为目标用户名 passwd -u username
需要注意的是,解锁用户后需要确保用户密码处于正常状态,否则解锁后依然无法登录。
不同方法的适用场景
| 方法 | 适用场景 | 优势 |
|---|---|---|
| passwd -S | 快速查看单个用户状态 | 输出直观,状态标识清晰 |
| 查看/etc/shadow | 批量检查用户状态、深入排查问题 | 可以直接看到底层存储的锁定标识 |
| chage -l | 结合密码过期策略排查问题 | 可以同步看到密码相关的所有策略信息 |
| PAM相关命令 | 排查登录失败导致的自动锁定 | 可以看到登录失败次数和锁定原因 |
实际使用中可以根据具体需求选择合适的方法,大多时候使用passwd -S或者查看/etc/shadow文件就可以快速确认用户是否被锁定。