2012-10-08 4 views
1

sudoer 권한이 필요하다는 것을 의미하는/etc/hosts에 줄을 추가하는 스크립트를 작성하려고합니다. 그러나 데스크탑에서 스크립트를 실행하면 암호를 묻지 않습니다. 나는 단순히 허가를 거부 당한다.Sudo가 암호를 묻지 않음 Mac bash 스크립트

스크립트 예 :

#!/bin/bash 
sudo echo '131.253.13.32  www.google.com' >> /etc/hosts 
dscacheutil -flushcache 

터미널 결코 실제로 팝업 및 권한이 거부라고하지만은 sudo는 암호를 입력하라는 메시지가 표시됩니다. 이 문제를 해결할 수있는 방법이 있습니까?

+0

다른 opparations에 sudo를 사용할 수 있습니까 그것은 암호를 묻는 메시지를 표시하지 않습니다 – rien333

+0

을 내가 sudo는 LS를 할 경우 그것을 ls 명령을 실행하지만 것인가?. – spassen

답변

1

당신 여기서 뭐하는 것이 효율적이다 : 당신이 중 하나 echo | sudo tee -a 또는 sudo bash -c 'echo >>' 사용할 수있는 루트에

  1. 스위치, 다시 자신에게 echo

  2. 스위치를 실행하고 추가하려고 sudo의 출력에 /etc/hosts

echo을 실행하는 경우가 아니라 /etc/hosts에 추가 할 때 root 권한이 필요하기 때문에 작동하지 않습니다.

이 작업을 수행하는 가장 간단한 방법은 루트로 자리 떠들썩한 파티를 실행

sudo bash -c "sudo echo '131.253.13.32  www.google.com' >> /etc/hosts" 

입니다. 그러나 이것은 특히 안전하지는 않습니다. 루트로 쉘을 호출하기 때문에 잠재적으로 많은 불쾌한 일을 할 수 있습니다 (특히 이름이 환경 변수 BASH_ENV에있는 파일의 내용을 실행합니다. . 하나는 좀 더 조심스럽게이 일을 선호 할 수 있도록 :

sudo env -i bash -c "sudo echo '131.253.13.32  www.google.com' >> /etc/hosts" 
관련 문제