如何查看已使用“su”的已登录用户

时间:2013-02-06 12:39:17

标签: linux su

如果我使用登录shell以root身份登录 那么'谁'或'用户'命令 将显示root用户的条目。 但是,如果我使用user1登录,然后使用:

'su - root'

然后'who'和'users'命令不会显示root的条目。

有没有办法确定我的系统中是否有登录用户当前已切换到root(或任何其他帐户)?

2 个答案:

答案 0 :(得分:1)

查看/var/log/secure文件。

搜索这样的行:

Feb  6 14:12:09 myhost su: pam_unix(su-l:session): session opened for user root by root(uid=999)

字符串末尾的uid是原始用户之一。

否则,您可以搜索执行su命令的shell,并检查所有者是谁。

pgrep su | \
xargs -i sh -c "ps -p {} -o ppid=" | \
xargs -i ps -p {} -f

结果将是谁当前正在运行的su

我确定这是一种更优雅的方法,但现在我脑子里还没有更好的方法。

答案 1 :(得分:1)

Thanx对Davide Berra的回答,我想我找到了我想要的东西。

> who | sort -k2 > /tmp/whoresult
> pgrep -x su | xargs -i ps hu -p{} | awk '{printf $7 " ";for (i=11; i<=NF; i++) printf $i " "; printf "\n"}' | sort -k1 | join -1 2 -2 1 /tmp/whoresult -

输出类似于:

pts/3 user1 2013-02-06 16:35 (:0.0) su - root    #logged in as user1 and executed 'sudo - root'
pts/5 user1 2013-02-06 16:51 (:0.0) su           #logged in as user1 executed 'sudo su'
tty2 root 2013-02-06 17:07 su - user1            #logged in as root and executed 'sudo - user1'