Linux 在macOS Sierra上禁用sh文件中单个命令的sudo

Linux 在macOS Sierra上禁用sh文件中单个命令的sudo,linux,bash,macos,sh,sudo,Linux,Bash,Macos,Sh,Sudo,我一直在到处寻找一些东西来禁用这个命令的sudo访问,同时为脚本的其余部分维护sudo使用sudo调用脚本,例如“sudo./install.sh”。有问题的代码段是这样的(我目前正试图让一个新用户调用该命令,但没有用): 我只希望第2行的命令以非root/no sudo运行。我是一个非常好的noob,所以任何不包括创建新用户的指导/替代方法都将非常感谢 如果脚本是使用sudo运行的,则可以使用$sudo\u USER获取原始用户名: echo >&2 "Installing Ho

我一直在到处寻找一些东西来禁用这个命令的sudo访问,同时为脚本的其余部分维护sudo使用sudo调用脚本,例如“sudo./install.sh”。有问题的代码段是这样的(我目前正试图让一个新用户调用该命令,但没有用):


我只希望第2行的命令以非root/no sudo运行。我是一个非常好的noob,所以任何不包括创建新用户的指导/替代方法都将非常感谢

如果脚本是使用
sudo
运行的,则可以使用
$sudo\u USER
获取原始用户名:

echo >&2 "Installing Homebrew"
sudo -u "$SUDO_USER" /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
(并且不要在脚本中的其他命令上使用
sudo
——如果脚本本身使用
sudo
运行,这是完全多余的。)

顺便说一句,如果脚本不是以
sudo
运行的话,这将完全失败——例如,如果有人以root用户身份登录并运行它,使用
su
切换到root用户并运行它,等等。最好先检查一下,如下所示:

if [ -n "$SUDO_USER" ]; then
    echo >&2 "Installing Homebrew"
    sudo -u "$SUDO_USER" /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
else
    echo "No original user found to install Homebrew under" >&2
fi

为什么不从第4行删除
sudo-u USERNAME
?对不起,我应该指定,但是脚本是使用sudo运行的,所以每一行都是sudo。HOBBURW的安装脚本禁止SUDO安装。考虑脚本实际上需要多少代码<代码> SUDO ,以及在需要的脚本中使用“<代码> SUDO < /C> >,而不是使用<代码> SUDO 运行整个脚本更合适。
if [ -n "$SUDO_USER" ]; then
    echo >&2 "Installing Homebrew"
    sudo -u "$SUDO_USER" /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
else
    echo "No original user found to install Homebrew under" >&2
fi