私が書くスクリプトに「sudo」を使うべきですか?

私が書くスクリプトに「sudo」を使うべきですか?

私は新しいコンピュータ(実際にはUbuntu VM)を設定し、これを実行するために使用するいくつかの一般的な機能(Git、Cal、vim + janus)を設定するためのスクリプトを作成しようとしています。

だから私のスクリプトは次のようになります。

#setup
#!/bin/sh
sudo apt-get install git
sudo apt-get install curl
...

私の命令に「sudo」を混ぜるのは良くないようです。ただセキュリティ上の問題に過ぎません。次のようなものも動作できるようです。

sudo setup

もっと良い方法がありますか?スクリプトを作成し、権限を高める必要があるときに経験的に適用されるルールは何ですか?

答え1

スクリプトで複数の「sudo」呼び出しを使用しても問題ありません。

スクリプト全体をrootとして実行するよりも優れていると思います。これは、必要なコマンドで権限のエスカレーションを制限することでリスクが制限されるためです。

答え2

私は両方の方法でやった。セキュリティリスクは同じだと思います。誰かがスクリプトを編集すると、不要なコマンドが実行されます。したがって、書き込み権限が制限されていることを確認してください。

sudoスクリプト全体をrootとして実行したくない場合は、スクリプトを入れる傾向があります。スクリプトが長時間実行されている場合(gccや他の大規模プロジェクトを構築するためのスクリプトを作成する)、複数の呼び出しがsudoユーザーに何度もメッセージを表示する可能性があります。

答え3

いいえと言います。妥当な理由がない限り、そうではありません。私はセキュリティが非常に厳しい大規模な金融会社で働いているので、私たちがすることの1つは、誰もからsudoを削除してから選択的に再付与することです。

削除したIDの1つはルートでした。つまり、「sudo rpm ...」を使用してRPMをインストールするとrootとしてインストールされるため、問題はありませんが、そのRPMがスクリプトでsudoを試みると失敗します。グローバル sudo でルートがロックされました。

特定のコマンドにオプションでsudoを付与する場合は、rootでRPM sudo呼び出しの100%を付与することで機能します。しかし、これはほとんど不可能です。

RPMスクリプトでsudoを使用する際に問題があります。使わない方がいいと思います。あるいは、少なくとも私のようないくつかの会社では、誰が何のためにsudoを使用しているのか、ルートも知らないかもしれないことに注意してください。

関連情報