2011-07-11 21:44:59 +0000 2011-07-11 21:44:59 +0000
30
30

如何在Linux中查看其他用户的命令历史记录?

如何查看其他用户的命令历史记录?

我是我机器上的管理员。我可以通过查看/home/user_name/.bash_history看到正常的历史记录,但我无法看到该user_name在执行sudo时的命令。

有没有办法查看一个用户执行的所有命令?

Risposte (6)

23
23
23
2011-07-11 21:51:46 +0000

在基于Debian的操作系统上,做tail /var/log/auth.log | grep username应该可以得到用户的sudo历史记录。我不相信有办法获得一个用户的普通+sudo命令的统一命令历史。

在基于RHEL的操作系统上,你需要检查/var/log/secure而不是/var/log/auth.log

5
5
5
2015-11-04 21:51:20 +0000

刚刚测试了以下内容,效果很好。

sudo vim /home/USER_YOU_WANT_TO_VIEW/.bash_history
2
2
2
2011-07-11 21:52:18 +0000

如果用户发布了一个命令,如sudo somecommand,该命令将出现在系统日志中。

如果用户生成了一个带有eg、sudo -ssudo susudo sh等字样的shell,那么该命令可能会出现在根用户的历史记录中,也就是`/root/.bashhistory`或类似的字样。

1
1
1
2019-01-16 07:16:45 +0000

使用下面的命令

sysdig -c spy_users

如果 sysdig 没有安装,安装 这里

1
1
1
2016-01-03 19:43:19 +0000

# zless /var/log/auth*是你的朋友。它甚至可以打开gzipped文件。你可以用:n向前或者:p向后跳转这些文件。

或者,你可以使用 # journalctl -f -l SYSLOG_FACILITY=10。在 Arch Linux wiki 阅读更多信息。

-1
-1
-1
2018-09-30 16:38:21 +0000

这个逻辑适用于很多其他目标。
那如何从/home/文件系统中读取每个用户的.sh/history呢?如果有成千上万的用户怎么办?

#!/bin/ksh
last |head -10|awk '{print $1}'|
 while IFS= read -r line
 do
su - "$line" -c 'tail .sh_history'
 done

这里 是脚本。