답변:
이 경우 파일을로 작성합니다 :w /tmp/tmpfile. 그런 다음 나가서 /tmp/tmpfilesudo 권한을 가진 이전 파일로 이동 합니다.
vi
/tmp디렉토리를 모니터링하는 다른 사용자에게 노출시킵니다 . (2) 시스템에 악의적 인 사용자가있는 경우 사용자는 사용자 /tmp/tmpfile를 작성할 때 (부터 vi)와 사용자가 편집중인 시스템 구성 파일을 통해 복사 할 때 사용자를 대신 할 수 있습니다. 액세스 권한이있는 디렉토리에 임시 파일을 저장하는 것이 더 안전합니다.
에서 SO :
:w !sudo tee %
실제로이 방법을 사용하여 더 자주 수행합니다.
:%!sudo tee %
내가 아는 것처럼 조금 더 직관적이라고 생각 :%!하지만에 대한 내장 적 이해가 없습니다 :w !. 또한, 사이의 매우 중요한 공간 그리워 쉽게 w와를 !.
vi명령은 여러 글자 일 수 있으므로 이론적으로“ wfoo”명령 이있을 수 있으므로“ ”파일에 쓰려면“ foo”라고 말해야합니다 :w foo. 즉, " :w" 뒤에 공백이 필요합니다 . " :w !"에 관한 한 – " :!"가 무엇인지 아십니까 ? " :!date"는 " date"명령을 실행합니다. 따라서 " :w !xyz"는 버퍼가 아니라 파일이 아닌 명령에 씁니다 .
%?
% 더 어려울 수 있습니다.) (3) 좋아, 조금 도와 줄께. tee여러 장소에 정보를 쓸 수있는 프로그램입니다. 예를 들어, date | tee cody현재 날짜와 시간을 cody … (계속)
date | tee cody > bugstein현재 날짜와 시간을 파일 cody과에 파일에 씁니다 bugstein. — 이해 sudo하십니까? 다른 사용자 (일반적으로 root)의 권한으로 명령을 실행할 수 있습니다. 예를 들어에 ls /root액세스 할 수 없으므로 일반적으로 실패합니다 /root. 그러나 sudo ls /root작동합니다. — 유닉스가 작동하는 방식의 불행한 부작용 sudo ls /root > /root/cody은에 액세스 /root할 수 없어서 글을 쓸 수 없기 때문에 실패 한다는 것 /root/cody입니다. … (계속)