回答:
スクリプトでsudoコマンドを使用します。
フォーム内:
sudo -u username command
sudoコマンドの実行にはコマンドのユーザーとしてユーザー名。
スクリプトがルートとして実行されている場合、パスワードの入力を求められるとは思わない。それ以外の場合、この記事では1つのコマンドラインでパスワード付きのsudoを使用する方法について説明しますか?、この記事ではパスワードなしでsudoを使用する方法について説明していますか?
chmod +x script.sh
から、ちょうどsudo -u username script.sh
i
ユーザーの環境を取得したい場合はオプションも含めてください
この答えは良いですが、serverfaultアドバイスは少し危険です-だれでもルートとして何でも実行できるようになります!コメントをフォーマットできないため、ここに投稿しています。
visudoを使用して、必要な権限をできるだけ正確に付与することをお勧めします。次のvisudo
ような行を入力して追加します。
username hostname = NOPASSWD: /full/path/to/command1, full/path/to/command2
この同じことを多くのホストで実行する必要がある場合は、次の方法で開くことができます。
username ALL = NOPASSWD: /full/path/to/command1, full/path/to/command2
しかし、私はどちらも使用しません**:
username ALL=(ALL) NOPASSWD: ALL
またはユーザー名hostname = ALL
sudoerのmanページには、血みどろの詳細の多くを持っています
username
、コマンドを実行できるユーザー名に置き換えます)。実行する実行可能ファイルが特定の1人のユーザーのみが実行できる場合も、それで問題ありませんsudo -u username commandline
。そのユーザー名をスクリプトの行に渡すだけです。
#I = like:
#test if running bash as a different user works
sudo -u nobody bash -c : && RUNAS="sudo -u nobody"
echo 1: $USER
#Runs bash with commands between '_' as nobody if possible
$RUNAS bash<<_
echo 2: \$USER
_
echo 3: $USER
#./run
1: root
2: nobody
3: root