それらの間にどのような違いがありますか?そのうちの1つが他のものよりも優れている特別なユースケースは何ですか?
ベストアンサー1
通常、コマンドにroot
権限が必要ない場合は、ユーザーとして実行されませんroot
。
常に最小限の権限で実行してみてください。<command>
攻撃者がコードを挿入して呼び出すユーザーの権限で実行できるようにするバグがあると想像してください<command>
。
エラー:しかし、この特別なケースではnohup sudo <command>
。だから私はを選択します。sudo
<command>
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によってブロックされたことを意味します。