tink Asked: 2024-03-28 03:36:51 +0800 CST2024-03-28 03:36:51 +0800 CST 2024-03-28 03:36:51 +0800 CST 是否可以查出用户何时更改了密码? 772 或者查看哪个用户导致安全通知发生/etc/spwd.db更改? security 1 个回答 Voted Best Answer aviro 2024-03-28T23:51:38+08:002024-03-28T23:51:38+08:00 在 OpenBSD 上,您需要使用以下accton命令启动进程记帐: touch /var/account/acct # The file has to exist before accton accton /var/account/acct 要在启动时启用 accton,请使用: rcctl enable accounting 设定accounting=YES在/etc/rc.conf.local. 无论如何,现在您已经启用了进程记帐,您可以使用lastcomm查看已执行命令的列表,并搜索名为passwd和 的进程pwd_mkdb。输出将反向显示,其中首先显示最新进程(根据它们的终止时间,而不是它们的启动时间): $ lastcomm passwd pwd_mkdb passwd[18349] - root ttyC1 0.28 secs Thu Mar 28 11:02 (0:00:17.39) pwd_mkdb[27720] - root ttyC1 0.00 secs Thu Mar 28 11:02 (0:00:00.00) passwd[58119] -F aviro ttyC1 0.00 secs Thu Mar 28 11:02 (0:00:00.00) passwd[1586] - root ttyC0 0.22 secs Thu Mar 28 10:11 (0:00:10.02) pwd_mkdb[27986] - root ttyC0 0.00 secs Thu Mar 28 10:11 (0:00:00.00) passwd[64663] -F aviro ttyC0 0.00 secs Thu Mar 28 10:11 (0:00:00.00) 每次成功的密码更改都会在历史记录中显示至少三个进程(或多或少在同一时间,并且也在同一 tty: passwdroot 拥有的进程。该命令必须以提升的权限运行,因此可执行文件设置了 setuid 位,因此它具有 root 的有效 uid。 pwd_mkdb命令也归 root 所有。这是不言自明的。 另一个passwd,这次是在以所有者身份更改密码的用户下。这是一个从原始passwd命令派生出来的过程,用于检查密码是否足够强,并将权限恢复到真实的 uid。这是幸运的,因为如果不是这个具有原始 uid 的低权限子进程,您将无法知道是谁运行了该命令。如果用户提供的密码不符合要求并且必须提供不同的密码,则此过程可能会出现多次。
在 OpenBSD 上,您需要使用以下
accton
命令启动进程记帐:要在启动时启用 accton,请使用:
设定
accounting=YES
在/etc/rc.conf.local
.无论如何,现在您已经启用了进程记帐,您可以使用
lastcomm
查看已执行命令的列表,并搜索名为passwd
和 的进程pwd_mkdb
。输出将反向显示,其中首先显示最新进程(根据它们的终止时间,而不是它们的启动时间):每次成功的密码更改都会在历史记录中显示至少三个进程(或多或少在同一时间,并且也在同一 tty:
passwd
root 拥有的进程。该命令必须以提升的权限运行,因此可执行文件设置了 setuid 位,因此它具有 root 的有效 uid。pwd_mkdb
命令也归 root 所有。这是不言自明的。passwd
,这次是在以所有者身份更改密码的用户下。这是一个从原始passwd
命令派生出来的过程,用于检查密码是否足够强,并将权限恢复到真实的 uid。这是幸运的,因为如果不是这个具有原始 uid 的低权限子进程,您将无法知道是谁运行了该命令。如果用户提供的密码不符合要求并且必须提供不同的密码,则此过程可能会出现多次。