한 번 sudoedit
파일을 만들었습니다.
$ sudoedit /etc/systemd/system/apache2.service
하지만 파일을 저장하려고 하면 임시 디렉터리(/var/temp/blahblah)에 파일이 기록됩니다. 무슨 일이야? 왜 시스템 디렉토리에 저장하지 않습니까?
답변1
그 목적 sudoedit
은 권한이 없는 편집기를 실행할 때 허용되지 않는 파일을 사용자가 편집할 수 있도록 하는 것입니다. 이렇게 하려면 sudoedit
편집할 파일을 임시 위치에 복사하고 요청하는 사용자가 쓸 수 있도록 만든 다음 구성된 편집기에서 엽니다. 이것이 편집기가 임시 디렉터리에 관련 없는 파일 이름을 표시하는 이유입니다. 편집기가 종료되면 sudoedit
실제로 변경된 내용이 있는지 확인하고 필요한 경우 변경된 임시 파일을 원래 위치로 다시 복사합니다.
답변2
이것은 에 잘 설명되어 있습니다.sudo
맨페이지. 설명 -e
( sudoedit
동등한)은 다음과 같이 말합니다.
-e
(편집) 옵션은
-e
사용자가 명령을 실행하는 대신 하나 이상의 파일을 편집하기를 원함을 나타냅니다.sudoedit
보안 정책을 쿼리할 때 명령 대신 "" 문자열을 사용합니다. 사용자가 정책에 의해 승인된 경우 다음 단계를 수행하십시오.
- 임시 복사본은 편집할 파일로 구성되며 소유자는 호출 사용자로 설정됩니다.
- 정책에 지정된 편집기를 실행하여 임시 파일을 편집합니다. 이
sudoers
전략에서는SUDO_EDITOR
,VISUAL
및EDITOR
환경 변수를 순서대로 사용합니다.SUDO_EDITOR
,VISUAL
또는 둘 다 설정되지 않은 경우EDITOR
편집기 옵션에 나열된 첫 번째 프로그램이 사용됩니다.sudoers(5)
- 수정된 경우 임시 파일은 원래 위치로 다시 복사되고 임시 버전은 삭제됩니다.
지정한 파일이 없으면 생성됩니다. 실행되는 대부분의 명령과 달리
sudo
편집기는 호출하는 사용자의 환경이 수정되지 않은 상태로 실행됩니다. 어떤 이유로sudo
파일을 편집된 버전으로 업데이트할 수 없는 경우 사용자는 경고를 받게 되며 편집된 복사본은 임시 파일에 남게 됩니다.
세 번째 단계에 특별한 주의를 기울이십시오. 편집이 끝나면 수정된 파일만 원본 변경 사항입니다. 따라서 파일을 감시하는 프로그램이 있는 경우 이는 (a) 중간 쓰기가 선택되는 것을 방지하고 (b) 궁극적으로 변경하지 않기로 결정한 경우 불필요한 작업을 피하는 데 도움이 될 수 있습니다.