ログインシェルを使用してrootとしてログインすると、「who」または「users」コマンドで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
最後にあるは、元のユーザーの1つです。
su
それ以外の場合は、コマンドを実行したシェルを検索して、所有者を確認できます。
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 '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'