2013-02-06 28 views
0

如果我使用登錄shell作爲根登錄 ,那麼'who'或'users'命令將顯示一個用於root用戶的條目。 但是如果我登錄使用user1和再使用:如何查看已使用'su'的登錄用戶

'su - root' 

那麼「誰」和「用戶」命令將不會顯示一個根。

有沒有辦法找出我的系統中是否有登錄用戶當前已切換到root用戶(或任何其他帳戶)?

回答

1

感謝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' 
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 

結果將是誰的UID正在運行su

我敢肯定有一個更優雅的方法,但沒有更好的在我腦海現在。

+0

更新@MarinosAn先生 –

+0

謝謝你這個答案。這與我想要的非常接近。如果我能找到他們切換到的帳戶(使用su),那就太棒了。 –

相關問題