web-dev-qa-db-ja.com

`Nohup Sudo <command>`と `Sudo Nohup <command>`のどちらが推奨され、その理由は何ですか?

それらの間に何か違いはありますか?それらのうちの1つを他のものよりも好ましいものにするいくつかの特別なユースケース?

3
glarry

一般に、コマンドがroot特権を必要としない場合は、ユーザーrootとして実行しません。

常に最小の特権で実行してください。 <command>にバグがあり、攻撃者が<command>を呼び出したユーザーの権限で実行されるコードを挿入できると想像してください。

誤り:ただし、この特定のケースでは、Nohup Sudo <command><command>ではなくSudoでのハングアップを防止すると思います。だから私はSudo Nohup <command>に行きます。

編集:実際、man forkによると、子プロセスのシグナルは親プロセスに継承され、これはNohupにも影響を与えるようです。これについて言及してくれたStephen Kittに感謝します。

したがって、Nohup Sudo <command>を楽しく実行できます。

編集:実際には、私は次のテストケースを作成しました:

$ cat /tmp/test1.sh /tmp/test2.sh
#!/bin/sh

/tmp/test2.sh &
sleep 5

#!/bin/sh

echo "test"

kill -HUP $$

Nohup /tmp/test1.shを実行すると、出力(Nohup.outに格納)は次のようになります。

test

これは、kill -HUP $$がNohupによってインターセプトされたことを意味します。

1
thecarpy