2016-10-07 25 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