125

以下を含むスクリプトを作成する場合/root/bin/whoami.sh

#!/bin/bash
whoami

このスクリプトは、適切に構成されたsudoを使用してユーザーによって呼び出され、

root

スクリプトで実際のユーザーを取得するための迅速な方法はありますか、それともこのユーザー名を渡すパラメーターに頼る必要がありますか?

4

7 に答える 7

156

を使用している場合、 $SUDO_USER は機能しませんsudo su -
また、複数のチェックが必要です - if $USER == 'root'then get $SUDO_USER

コマンドの代わりwhoamiwho am i. これによりwho、現在のセッション用にフィルター処理されたコマンドが実行されます。必要以上の情報を提供します。したがって、これを実行してユーザーだけを取得します。

who am i | awk '{print $1}'

代わりに (そしてより簡単に) を使用できますlogname。上記のステートメントと同じことを行います。

これにより、セッションにログインしたユーザー名が得られます。

これらは、sudoまたはに関係なく機能しsudo su [whatever]ます。また、何度呼び出されsuても機能します。sudo

于 2011-01-04T20:10:02.917 に答える
62

$SUDO_USERは有効だと思います。

#!/bin/bash
echo $SUDO_USER
whoami
于 2010-08-19T13:45:27.627 に答える
15

sudo かどうかに関係なく、スクリプトを呼び出した人のユーザー名を取得する方法は次のとおりです。

if [ $SUDO_USER ]; then user=$SUDO_USER; else user=`whoami`; fi

または短いバージョン

[ $SUDO_USER ] && user=$SUDO_USER || user=`whoami`
于 2013-01-20T21:09:26.980 に答える
1

奇妙なことに、システムは実際の UID と有効な UID を区別しますが、これをシェル レベルでエクスポートするプログラムは見つかりません。

于 2010-08-19T13:49:06.573 に答える