web-dev-qa-db-ja.com

rootとしてbashスクリプト全体を実行するか、それを必要とするコマンドでSudoを使用しますか?

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

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

4
SBF

Sudoを使用してスクリプトを実行しても害はないことがわかっている場合(たとえば、root特権を必要とする新しいファイルは作成されませんが、それ以外の場合は、Sudoで実行する必要があります。

いくつかの副作用があることがわかっている場合、または確信がない場合は、安全な方法でそれを行い、必要な場所でSudoを使用してください。

2
Iskustvo

スクリプトのヘッダーにこれを入れます:

#!/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