私は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