sudo suを使用すると、SUDO_*環境変数は設定されません。

sudo suを使用すると、SUDO_*環境変数は設定されません。

sudo su - user1特定のユーザーが欲しく、スクリプトを実行してから取得したいスクリプト内で使用することがありますSUDO_USER。ただし、代わりに使用すると、SUDO_*環境変数は設定されません。sudo su - user1sudo su app

sudo su user1
[sudo] password for rbhanot:
$ env | grep -i sudo
SUDO_COMMAND=/bin/su user1
SUDO_GID=4361
SUDO_UID=4361
SUDO_USER=rbhanot 

suログインシェルを使用して呼び出すと、これらの変数は設定されません。

sudo su - user1
$ env|grep -i sudo
$

少し異なるコマンドを使用すると動作します。sudo -i

sudo -i -u user1
$ env|grep -i sudo
SUDO_COMMAND=/bin/ksh
SUDO_GID=4361
SUDO_UID=4361
SUDO_USER=rbhanot

SUDO_*それでは、これらの変数が具体的su - user1に得られないのはなぜですか?

答え1

-iなしで試すと、変数は機能します。

それでも機能しない場合は、コマンドラインで変数を指定することをお勧めします。理想的ではないかもしれませんが、ユーザーに希望の柔軟性を提供します。

ie.  sudo -i -u joe SUDO_GID=4361 SUDO_UID=4361 SUDO_USER=rbhanot /bin/ksh

ユーザーが覚えておく必要がある場合は、.bash_profileにエイリアスを追加できます。

ie.  alias myroot="sudo -i -u joe SUDO_GID=4361 SUDO_UID=4361 SUDO_USER=rbhanot /bin/ksh"

その後、「myroot」と入力すると、作成したとおりにsudoコマンドが実行されます。

関連情報