중복 가능성:
쓰기 권한이 없는 파일로 표준 출력을 리디렉션합니다.
예, 루트로 업그레이드할 수 있습니다(그리고 아마도 그렇게 할 것입니다). 하지만 이것이 작동하지 않는 이유가 무엇인지 궁금합니다.
sudo cat .mplayer/config >> /home/griff/.mplayer/config
zsh: permission denied: /home/griff/.mplayer/config
sudo
모든 명령을 실행할 수 있도록 구성되었으므로 제한을 두지 않았습니다.
답변1
답변2
명령이 무엇이든 관계없이 >>
명령이 실행되기 전에 리디렉션이 항상 완료되기 때문에 이는 실패합니다.
이 경우 쉘은 루트가 아닌 사용자로 실행되며 .../config
현재 권한(루트 권한 대신)을 사용하여 파일에 연결하려고 시도하지만 sudo가 실행되기 전에 실패합니다.
명령 실행에 대한 일반적인 비유는 다음과 같습니다.
sudo tee --append /home/griff/.mplayer/config < .mplayer/config
(읽기 권한이 있다고 가정 .mplayer/config
). sudo의 루트 컨텍스트에서 /home/griff/...
열렸 으므로 파일에 쓸 수 있는 루트 권한이 있습니다.tee
나는 이 접근 방식의 팬이 아닙니다. 내용을 .mplayer/config
stdout에 복사하고 이를 그리프 파일에 추가하기 때문입니다. 하지만 작동합니다.
답변3
통과
sudo는 어떤 명령이라도 실행할 수 있습니다
개념적으로 sudo가 모든 명령을 실행하도록 구성될 수 있다는 의미입니까, 아니면 대략적으로 해당 시스템에서 sudo를 구성했다는 의미입니까 <user> <host(s)>=<opt(s)> ALL
?
시도해 보셨나요 sudo -u 0 cat ...
? 이렇게 하면 사용자 ID가 허용된 경우 sudo가 루트로 명령을 실행하게 됩니다.
무엇을 인쇄할까요 sudo -l
?