![sudo [duplicate]를 사용하여 파일에 텍스트를 추가하려고 하면 "권한이 거부되었습니다"](https://linux55.com/image/10400/sudo%20%5Bduplicate%5D%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%ED%8C%8C%EC%9D%BC%EC%97%90%20%ED%85%8D%EC%8A%A4%ED%8A%B8%EB%A5%BC%20%EC%B6%94%EA%B0%80%ED%95%98%EB%A0%A4%EA%B3%A0%20%ED%95%98%EB%A9%B4%20%22%EA%B6%8C%ED%95%9C%EC%9D%B4%20%EA%B1%B0%EB%B6%80%EB%90%98%EC%97%88%EC%8A%B5%EB%8B%88%EB%8B%A4%22.png)
저는 아마존 리눅스를 사용하고 있습니다. 파일에 텍스트를 추가하려고 합니다. 이 파일은 루트가 소유합니다. "sudo"를 사용하면 필요한 텍스트를 추가할 수 있다고 생각했지만 "권한이 거부되었습니다"라는 메시지가 표시됩니다. 아래를 참조하세요.
[myuser@mymachine ~]$ ls -al /etc/yum.repos.d/google-chrome.repo
-rw-r--r-- 1 root root 186 Jul 31 15:50 /etc/yum.repos.d/google-chrome.repo
[myuser@mymachine ~]$ sudo echo -e "[google-chrome]\nname=google-chrome\nbaseurl=http://dl.google.com/linux/chrome/rpm/stable/\$basearch\nenabled=1\ngpgcheck=1\ngpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub" >> /etc/yum.repos.d/google-chrome.repo
-bash: /etc/yum.repos.d/google-chrome.repo: Permission denied
필요한 텍스트가 파일에 추가되도록 명세서를 어떻게 조정합니까?
답변1
tee
특정 권한이 필요한 파일에 스트림을 리디렉션하거나 추가하려면 유틸리티를 사용해야 합니다 . 예를 들면 다음과 같습니다.
echo something | sudo tee /etc/file
또는 추가하기 위해
echo something | sudo tee -a /etc/file
기본적으로 쉘은 자신의 사용자 권한 및 리디렉션으로 실행되거나 >
사용자 >>
와 동일한 권한으로 수행되므로 실제로는 허가 없이 실행되고 echo
리디렉션 sudo
됩니다 root
.
대안으로 루트 셸을 가져와 정상적으로 리디렉션을 시도해 볼 수도 있습니다.
sudo -i
echo something >> /etc/pat/to/file
exit
또는 sudo -s
비로그인 쉘의 경우.
루트 액세스로 비대화형 셸을 실행할 수도 있습니다.
sudo bash -c 'echo something >> /etc/somewhere/file'
답변2
이전 답변에서 제공한 설명은 기본적으로 정확합니다. 리디렉션 전 명령은 높은 권한으로 실행되지만 리디렉션 자체는 실행되지 않습니다.
귀하의 요구 사항을 충족시킬 또 다른 방법이 있습니다. 여기나 답변에는 언급되지 않았습니다.문제는 이게 중복이라는거. 완전성을 위해 여기에 넣겠습니다.
sudo su -c 'echo -e "some\ntext" >> /other/file'