전체 bash 스크립트를 루트로 실행하거나 필요한 명령에 sudo를 사용하시겠습니까?

전체 bash 스크립트를 루트로 실행하거나 필요한 명령에 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

관련 정보