web-dev-qa-db-ja.com

rootになっている間に別のユーザーとしてSudo Bashスクリプトを実行する

ルートとしてログインし、別のユーザーとして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

ここで何が間違っていますか?

1
Jaid

これは、2番目のSudoによりrootとして実行されているため、$(whoami)が「root」を返すことが予想されます。

また、$USERは "root"を返します。これは、Sudoが常にそのユーザーに変数を設定するためです(これも2番目のSudoのルートです)。

2番目のSudoの場合に「私」になるSudoを呼び出したユーザーを知りたい場合は、$Sudo_USER変数を見てください。これはSudoは、それを呼び出したユーザーに設定します。

Sudo manページの「Environment」セクションの Sudo_USERおよびUSER を参照してください。

0
filbranden