用户的最后一次密码更改

用户的最后一次密码更改

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

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

我正在寻找该命令的结果的日期输出。

当前尝试的命令:

grep $USER | passwd -Sa

任何对我的错误的帮助都是值得赞赏的!

答案1

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

passwd -S -a

给出 中每个条目的记录/etc/passwd,如下所示:

thomas PS 03/01/2013 0 99999 7 -1

所以你可以用 awk 过滤它:

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

但是,该passwd命令希望将其执行为root,因此您的脚本必须执行比使用$USER变量更优雅的操作(即当前的用户)。它想要的原因是它正在阅读不公开root的内容。/etc/shadow

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

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

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

进一步阅读:

答案2

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

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

相关内容