0

ログインシェルを使用してrootとしてログインすると、「who」または「users」コマンドでrootユーザーのエントリが表示されます。ただし、user1でログインしてから、次を使用する場合:

'su - root'

その場合、「who」および「users」コマンドはrootのエントリを表示しません。

現在root(または他のアカウント)に切り替えているログインユーザーがシステムにいるかどうかを確認する方法はありますか?

4

2 に答える 2

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最後にあるは、元のユーザーの1つです。

suそれ以外の場合は、コマンドを実行したシェルを検索して、所有者を確認できます。

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

結果は、現在実行している人のuidになりますsu

もっとエレガントな方法があると確信していますが、今のところ、これ以上の方法は思い浮かびません。

于 2013-02-06T12:56:10.503 に答える
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'
于 2013-02-06T15:20:03.440 に答える