2016-10-07 3 views
1

この1つのコマンドでsudoアクセスを無効にしている間、スクリプトの残りの部分でsudoを維持しています。 このスクリプトはsudoを使用して呼び出されます。 "sudo ./install.sh"。問題のスニペットは、この(私は現在のコマンドを呼び出すために、新しいユーザーを作成しようとしている、ない使用していた)である。macOS上のshファイル内の1つのコマンドに対してsudoを無効にするSierra

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

は、私が唯一の2行目のコマンドがないよう、ルート/なしsudoを実行したいです。私は非常に騒ぎであるので、新しいユーザーを作ることを含めないあらゆる指導/代替方法は非常に高く評価されるだろう。 - スクリプト自体場合

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

(そして、スクリプト内の他のコマンドでsudoを使用しないでください:スクリプトはsudoで実行された場合

+0

なぜなら、 'sudo -u USERNAME'を4行目から削除してみませんか? –

+0

申し訳ありませんが、指定する必要がありますが、スクリプトはsudoを使用して実行されるので、すべての行はsudoです。そしてHomebrewのインストールスクリプトはsudoのインストールを禁じています。 – user3338275

+0

実際に* su *が必要なスクリプトの量と、 'sudo'でスクリプト全体を実行するのではなく、必要に応じてスクリプトで' sudo' *を使う方が適切かどうかを考えてください。 – chepner

答えて

0

、あなたは、元のユーザー名を取得するために$SUDO_USERを使用することができます。それは完全に冗長だ、sudoで実行される)ところで

スクリプトがsudoで実行されなかった場合、これは完全に失敗します - 例えば、誰かがrootとしてログインし、それを実行する場合、ルートへの切り替えをsuを使用し、それを実行してください。最初に、次のようなものを入力してください。

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 
関連する問題