语境
因此我建立了一个新的 Debian 服务器并添加了一些用户用于网络空间等,这是常见的做法。
180 天后,用户开始抱怨他们的登录无法正常工作。鉴于不止一个人提出这个问题,我检查了身份验证日志,结果……砰。由于密码过期导致登录失败。该死!
愚蠢的我没有考虑过这个特定服务器的密码过期策略。
请注意,这些用户没有 shell 权限,但可以通过 sftp 登录来管理他们的网络空间。因此,即使他们知道密码过期,他们也不会收到密码过期提醒,也无法更改密码。据我所知,该错误仅记录在服务器端。客户端是一般的身份验证错误。
问题
我如何才能轻松地查询服务器以获取所有用户的密码过期信息?
一旦我获得这些信息,我就可以轻松地看到哪些用户受到了影响以及哪些用户将来会受到影响。
答案1
像这样的命令应该会显示您在 中定义的所有帐户的到期状态/etc/passwd
。
cut -f 1 -d: /etc/passwd | xargs -n 1 -I {} bash -c " echo -e '\n{}' ; chage -l {}"
重要的命令是chage -l username
。该命令返回用户的到期状态。查格也是您用来修改过期规则的命令。您可能需要sudo
根据chage
系统设置添加。
答案2
您也可以使用这个简单的命令:
awk -F':' '{ system("echo " $1 " && chage -l " $1) }' /etc/passwd
使用awk
并system
使其更加简单。
1.
awk -F':'
这:
是以/etc/passwd
文件作为输入的字段分隔符。2.
system("echo " $1 " && chage -l " $1)
这将首先显示$1
用户的密码过期信息chage -l