如果我使用登录 shell 以 root 身份登录 然后是“谁”或“用户”命令 将显示 root 用户的条目。 但是如果我使用 user1 登录然后使用:
'su - root'
那么“who”和“users”命令将不会显示 root 的条目。
有没有办法查明我的系统中是否有登录用户当前已切换到root(或任何其他帐户)?
查看
/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
我确信有一种更优雅的方法,但我现在想不出更好的方法。
感谢 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 'su - root'
pts/5 user1 2013-02-06 16:51 (:0.0) su #logged in as user1 executed 'su'
tty2 root 2013-02-06 17:07 su - user1 #logged in as root and executed 'su - user1'