有关所有用户执行的 sudo 命令的详细信息

有关所有用户执行的 sudo 命令的详细信息

从哪个日志中我可以获取有关任何用户执行的 sudo 命令的详细信息。它应该包含工作目录、命令、用户。如果您能为我提供一个 shell 脚本来执行此操作,将会很有帮助

答案1

取决于您的发行版;简单地:

$ sudo grep sudo /var/log/secure

或者

$ sudo grep sudo /var/log/auth.log

这使:

Nov 14 09:07:31 vm1 sudo: pam_unix(sudo:auth): authentication failure; logname=gareth uid=1000 euid=0 tty=/dev/pts/19 ruser=gareth rhost=  user=gareth
Nov 14 09:07:37 vm1 sudo: gareth : TTY=pts/19 ; PWD=/home/gareth ; USER=root ; COMMAND=/bin/yum update
Nov 14 09:07:53 vm1 sudo: gareth : TTY=pts/19 ; PWD=/home/gareth ; USER=root ; COMMAND=/bin/grep sudo /var/log/secure

在本例中,运行命令的用户位于sudo:-之后。gareth

PWD是目录。

USER是本示例中gareth运行为 -的用户。root

COMMAND是命令运行。

因此,在上面的例子中,gareth用来sudo运行yum update然后运行这个例子。在此之前,他输入了错误的密码。

另请注意,可能存在滚动日志文件,例如/var/log/secure*

在较新的系统上:

$ sudo journalctl _COMM=sudo

给出了非常相似的输出。

答案2

Gareth 解决方案的“结果过滤器”。 (对于那些通过帖子标题而不是描述到达的人)

为您提供所有用户以 sudo 身份运行的仅命令的干净列表。

$sudo journalctl _COMM=sudo  | sed -e '/COMMAND/!d' -e 's/.*COMMAND=//' -e 's/.*bin\///'

sed 不可用时的解决方法

$sudo journalctl _COMM=sudo | grep COMMAND

C&P 结果存入 Google 表格

在单元格 B1 C&P 中此公式

=arrayformula(REGEXREPLACE(A1:A,".*AND=/usr/bin/(.*)","$1"))

相关内容