root 権限を必要とするコマンドを実行する bash スクリプトがあります。スクリプトの開始時に「su root」を設定するか、「sudo」で始まる各コマンドを実行するかを決定しようとしています。これらの方法の長所と短所は何ですか。どちらがより安全ですか? または、より良い使用方法はありますか?ありがとう!
3 に答える
sudo
セキュリティに優れています。スクリプトに脆弱性がある場合、root として実行している場合、それらを悪用される可能性があります。を使用sudo
することで、呼び出したスクリプトのみに穴を制限できます。したがって、呼び出すスクリプトが安全であると仮定すると、スクリプトでの使用sudo
も安全になります。
sudo がそれを行うための最良の方法であるというトレニンに同意しますが、すべてのコマンドの前に sudo を入力するのは面倒かもしれません。あなたもそうかもしれません
do stuff
change to root
do super user stuff
change back to regular user
また、root としてスクリプトを実行している場合、スクリプトの一部が失敗すると、予期しない動作が発生する可能性があります。コマンドがゼロ以外で終了するとbashがすぐに終了するため、「set -e」フラグを追加することをお勧めします。この効果は「set +e」で元に戻すことができます。
もう 1 つの方法は、スクリプト全体をルート (su) として実行しますが、ここで DaveParilloが説明しているように、特定のユーザーにのみアクセスを許可します。
それが役に立ったことを願っています
使用する最善かつ最も安全な方法は、実際にスクリプトを sudo で呼び出すことです。例えば。sudo scriptName
. 置くsu root
かsudo commandInScript
、本質的に同じことをしています。スクリプトで root アクセスを呼び出します。スクリプトを呼び出すときにスクリプトをルートとして実行するのではなく。