スクリプトで sudo コマンドを使用します。
形式:
sudo -u username command
sudo コマンドは command を実行します ユーザー username として .
スクリプトがルートとして実行されている場合、パスワードの入力を求めるプロンプトは表示されないと思います。それ以外の場合、この記事では 1 つのコマンド ラインでパスワード付きの sudo を使用する方法について説明し、この記事ではパスワードなしで sudo を使用する方法について説明します。
この回答は良いですが、serverfault のアドバイスは少し危険です。誰でも root として何でも実行できるようになります。コメントの書式を設定できないため、ここに投稿します。
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
orusername ホスト名 =ALL
sudoer の man ページには、多くの悲惨な詳細があります
# 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
# ./実行
1: root
2: nobody
3: root