以下を含むスクリプトを作成する場合/root/bin/whoami.sh
:
#!/bin/bash
whoami
このスクリプトは、適切に構成されたsudoを使用してユーザーによって呼び出され、
root
スクリプトで実際のユーザーを取得するための迅速な方法はありますか、それともこのユーザー名を渡すパラメーターに頼る必要がありますか?
を使用している場合、 $SUDO_USER は機能しませんsudo su -
。
また、複数のチェックが必要です - if $USER == 'root'
then get $SUDO_USER
。
コマンドの代わりwhoami
にwho am i
. これによりwho
、現在のセッション用にフィルター処理されたコマンドが実行されます。必要以上の情報を提供します。したがって、これを実行してユーザーだけを取得します。
who am i | awk '{print $1}'
代わりに (そしてより簡単に) を使用できますlogname
。上記のステートメントと同じことを行います。
これにより、セッションにログインしたユーザー名が得られます。
これらは、sudo
またはに関係なく機能しsudo su [whatever]
ます。また、何度呼び出されsu
ても機能します。sudo
$SUDO_USERは有効だと思います。
#!/bin/bash
echo $SUDO_USER
whoami
sudo かどうかに関係なく、スクリプトを呼び出した人のユーザー名を取得する方法は次のとおりです。
if [ $SUDO_USER ]; then user=$SUDO_USER; else user=`whoami`; fi
または短いバージョン
[ $SUDO_USER ] && user=$SUDO_USER || user=`whoami`
奇妙なことに、システムは実際の UID と有効な UID を区別しますが、これをシェル レベルでエクスポートするプログラムは見つかりません。