2016-10-07 26 views
1

我一直在寻找无处不在的东西来禁用此命令的sudo访问,同时为脚本保留其余的sudo。 该脚本使用sudo调用,例如“sudo ./install.sh”。有问题的片段是这样的(我目前正在努力使新用户调用命令,但没有用):在macOS的sh文件中为单个命令禁用sudo Sierra

echo >&2 "Installing Homebrew" 
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 

我只想要2号线的命令来运行不根/没有sudo的。我是一个小菜鸟,所以任何指导/替代方法,不包括一个新用户,将不胜感激。

+0

为什么不从第4行删除'sudo -u USERNAME'? –

+0

对不起,我应该指定,但脚本使用sudo运行,所以每一行都是sudo。而Homebrew的安装脚本禁止安装sudo。 – user3338275

+0

考虑脚本实际*需要多少*'sudo',以及在需要的脚本中使用'sudo' *是否更合适,而不是使用'sudo'运行整个脚本。 – chepner

回答

0

如果脚本与sudo运行,那么你可以使用$SUDO_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运行,这将完全失败 - 例如,如果有人登录为根和运行它,使用su切换到root和运行它等。对c来说可能更好首先,像这样:

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