以 root 身份运行整个 bash 脚本还是在需要它的命令上使用 sudo?

以 root 身份运行整个 bash 脚本还是在需要它的命令上使用 sudo?

我正在 bash 中编写一些安装脚本(在运行 Stretch 的 Raspberry Pi 上)。它将文件复制到/usr/local/bin我的用户配置文件中,并根据需要安装一些软件包。该脚本有近 2000 行,其中 20-30 个命令需要 root。

现在我的问题是:我应该使用标准用户运行整个脚本还是仅以标准用户身份运行整个脚本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

相关内容