ルートとしてログインし、別のユーザーとしてSudo権限でBashスクリプトを実行したい。
これは、/home/me/Sudo.bash
のテストBashスクリプトです。
mkdir -p /etc/test # Creating an /etc directory to test permissions
echo "test $(whoami) $USER $HOME" > /etc/test/a.txt
私が現在持っているコマンド(ルートから実行、私のために実行):
Sudo --non-interactive --login --set-home --user=me \
Sudo --non-interactive bash /home/me/Sudo.bash
/etc/test/a.txt
の内容:
test root root /home/me
私が期待したこと:
test me me /home/me
ここで何が間違っていますか?
これは、2番目のSudo
によりrootとして実行されているため、$(whoami)
が「root」を返すことが予想されます。
また、$USER
は "root"を返します。これは、Sudo
が常にそのユーザーに変数を設定するためです(これも2番目のSudoのルートです)。
2番目のSudo
の場合に「私」になるSudo
を呼び出したユーザーを知りたい場合は、$Sudo_USER
変数を見てください。これはSudo
は、それを呼び出したユーザーに設定します。
Sudo
manページの「Environment」セクションの Sudo_USERおよびUSER を参照してください。