2016-10-07 4 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를 실행하려면. 나는 많은 멍청한 놈이다. 그래서 새로운 사용자를 만드는 것을 포함하지 않는 모든지도/대안 방법은 매우 감사 할 것이다. 스크립트가 sudo으로 실행 된 경우

+0

4 행에서'sudo -u USERNAME'을 제거하지 않는 이유는 무엇입니까? –

+0

미안 해요, 내가 지정해야하지만, 스크립트는 sudo를 사용하여 실행되므로 모든 행은 sudo입니다. 그리고 Homebrew의 설치 스크립트는 sudo 설치를 금지합니다. – user3338275

+0

실제로 얼마나 많은 스크립트가 실제로'sudo'를 필요로하는지, 그리고'sudo'를 사용하여 전체 스크립트를 실행하는 대신 필요하다면 스크립트에서'sudo' *를 사용하는 것이 더 적합한 지 생각해보십시오. – chepner

답변

0

, 당신은 원래 이름 얻을 $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 실행되지 않은 경우 BTW

이 완전히 실패 할 것이다) 완전히 중복입니다 - 예를 들어, 누군가가 루트로 로그인하고 실행하는 경우 루트로 전환 su을 사용하고, 그것을 달리십시오, 등등. 그것은 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 
관련 문제