호스트 파일에 행 추가, sudo 사용시 권한 거부-Mac


14

터미널에서 한 줄 명령을 실행하여 Mac의 hosts 파일에 줄을 추가하려고합니다.

sudo를 사용하면 쉽게 사용할 수 있다고 생각했지만 >>hosts 파일 에 추가하려고하면 "permission denied"가 반환 되지만 >호스트 내용을 바꾸려고 하면 작동합니다 .

sudo echo test >> /etc/hosts
-bash: /etc/hosts: Permission denied
$

sudo echo test > /etc/hosts
Password:
$ 

OS가 최신입니다.


텍스트 편집기 ( sudo로 시작 )를 사용하여 / etc / hosts
MrSmith42

1
이것을 자동화하는 데 도움이되는 스크립트를 만들고 싶습니다. 그래서 텍스트 편집기는 도움이되지 않습니다.
Min

답변:


17

echo루트로 실행 되기 때문 이지만 쉘은 실제로 리디렉션을 수행하는 쉘입니다. 이 작업을 수행하려면 새 쉘을 생성해야합니다.

sudo -- sh -c "echo test >> /etc/hosts"

편집 : >리디렉션이 작동 한다는 사실을 보지 못했습니다 . 나는 그것을 설명 할 수 없습니다.


보안상의 이유로 대부분의 프로덕션 환경에서 tee하위 쉘 실행을 허용하고 sudo차단해야 하기 때문에 유틸리티에 주목할 가치가 있다고 생각합니다 .
Steve Buzonas

9

대신 에코가 예제에서 실행될 때 루트가 아닌 현재 사용자로 실행될 리디렉션을 통해 에코를 실행하는 대신 Steve Buzonas가 제안한 대로 를 사용하십시오.

 echo 'test' | sudo tee -a /etc/hosts

sudo는 이제 tee 명령에 적용됩니다. '-a'는 파일에 추가됩니다.

또한 티를 표준 출력으로 출력합니다. 터미널에 'test'를 표시하지 않으려면 > /dev/null해당 줄의 끝에 다음 을 추가하십시오 .


1

새 줄을 먼저 만들려면 다음을 사용했습니다.

sudo -- sh -c "echo  \ \ >> /etc/hosts";sudo -- sh -c "echo 127.0.0.1  testdomain.com >> /etc/hosts"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.