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