完全なbashスクリプトをrootとして実行するか、必要なコマンドにsudoを使用しますか?

完全なbashスクリプトをrootとして実行するか、必要なコマンドにsudoを使用しますか?

私はBash(Stretchを実行するRaspberry Pi)でいくつかのインストールスクリプトを書いています。ファイルを/usr/local/bin自分のユーザープロファイルにコピーし、必要に応じていくつかのパッケージをインストールします。スクリプトには約2000行があり、そのうち20〜30個のコマンドにはルートが必要です。

今私の質問は:スクリプト全体を標準ユーザーとして実行する必要がありますか、それとも標準ユーザーとしてスクリプト全体を実行し、sudo管理者権限を必要とするスクリプトのコマンドのみをsudoする必要がありますか?

答え1

スクリプトを実行してもsudo害がないと確信している場合(たとえば、現在の権限を必要とする新しいファイルは作成されませんが、rootそうでない場合は発生しません)を使用する必要がありますsudo

副作用があることがわかっているかわからない場合は、安全な方法で進めてsudo必要な場所に使用してください。

答え2

スクリプトヘッダーに次のように入力します。

#!/bin/bash

#Detects if script are not running as root... 
if [ "$UID" != "0" ]; then
   #$0 is the script itself (or the command used to call it)...
   #$* parameters...
   if whereis sudo &>/dev/null; then
     echo "Please type the sudo password for the user $USER"
     sudo $0 $*
     exit
   else
     echo "Sudo not found. You will need to run this script as root."
     exit
   fi 
fi

関連情報