![列出过去 30 天内通过“su”成为 root 的用户](https://linux22.com/image/15215/%E5%88%97%E5%87%BA%E8%BF%87%E5%8E%BB%2030%20%E5%A4%A9%E5%86%85%E9%80%9A%E8%BF%87%E2%80%9Csu%E2%80%9D%E6%88%90%E4%B8%BA%20root%20%E7%9A%84%E7%94%A8%E6%88%B7.png)
如何获取在 Linux 中使用su
命令的用户的历史记录root
(在我的具体情况是 SuSe)?
答案1
@Eduardo Trapani 的评论是正确的。搜索/var/log/auth.log
的整个单词出现次数su(1)
:
# grep -w su /var/log/auth.log
Jun 9 23:33:47 <auth.notice> jimsdesk su[30048]: jim to root on /dev/pts/0
上面的示例表明用户于 6 月 9 日 23:33:47jim
进入。root
如果您想知道执行了哪些实际命令,您应该实现 @waltinator 的使用建议,sudo(8)
或者希望该/root/.history
或类似的历史文件没有被覆盖或绕过。无论如何,在不使用root
where 的情况下,历史文件不会帮助弄清楚谁做了什么(如果这是一个问题) 。sudo
答案2
@吉姆·L。是在正确的轨道上:)
不过,在现代 Linux 上,您通常不会主动保留 /var/log/auth.log。相反,同样的想法,但是journalctl
:
journalctl --since=2021-05-09
您需要使journalctl安静(-q)并使其仅打印su的成功身份验证:
journalctl --since=2021-05-09 -q -g 'pam_unix\(su:session\): session opened for user root'
如果我们只关心这些的数量:
journalctl --since=2021-05-09 -q -g 'pam_unix\(su:session\): session opened for user root' | wc -l