用户上次更改密码

Mis*_*123 6 password accounts

我目前正在尝试找出一个命令,该命令将显示 UNIX 系统上用户的最后一次密码更改。

我试过运行命令 passwd -Sa 并给出格式为 00/00/0000 的密码更改日期。但是我只想列出该命令中最后一个用户的日期。我已经尝试将命令传递给 grep,但我似乎无法使我的语法正确。

我正在寻找作为此命令结果的日期输出。

当前命令尝试:

grep $USER | passwd -Sa
Run Code Online (Sandbox Code Playgroud)

对我的错误的任何帮助表示赞赏!

Tho*_*key 5

提供更多信息可以获得更好的答案。随便,在 OpenSUSE 上,我看到了

passwd -S -a
Run Code Online (Sandbox Code Playgroud)

为 中的每个条目提供记录/etc/passwd,如下所示:

thomas PS 03/01/2013 0 99999 7 -1
Run Code Online (Sandbox Code Playgroud)

所以你可以用awk过滤它:

passwd -S -a | awk -v user=$USER '{ if ( $1 == user ) { printf  "%s\n",  $3; } }'
Run Code Online (Sandbox Code Playgroud)

但是,该passwd命令想要这样做root,因此您的脚本必须做一些比使用$USER变量更优雅的事情(这是针对当前用户的)。它想要的原因root是它正在读取 的内容/etc/shadow,该内容不是公开的。

您可以使用chage,它会显示不同的报告——但在快速检查中,它会提示输入用户的密码(这可能不是您想要的):

chage程序需要可用的影子密码文件。

chage命令仅限于root用户,但-l 选项除外,非特权用户可以使用该选项来确定他/她的密码或帐户何时到期。

进一步阅读:


l0b*_*0b0 1

这听起来像是一个家庭作业,所以:

  • sort可以对输入进行数字排序,并且可以根据需要按多个定义的列进行排序。
  • cut可以使用一组字符来定义列分隔符来打印输入列的子集。
  • a | b将 command 的输出发送a到 command b
  • headtail分别返回文件的第一行和最后一行。
  • 如果不是 root(即使用sudo),您通常无法查询其他用户。您可以通过简单地使用获取当前grep用户的状态来避免这种情况(以及任何ping)。passwd --status
  • 如果您想确保用户定期更改密码,我确信已经有完整的解决方案,因为 Linux 发行版已经拥有此功能很多年了。