[unix] sudoedit가 임시 디렉토리에 쓰는 이유는 무엇입니까?

sudoedit파일을 만드는 데 사용 했습니다.

 $ sudoedit /etc/systemd/system/apache2.service

그러나 파일을 저장하려고 할 때 임시 디렉토리 (/ var / temp / blahblah)에 썼습니다. 무슨 일이야? 시스템 디렉토리에 저장하지 않는 이유는 무엇입니까?



답변

요점은 sudoedit권한이없는 편집기를 실행하는 동안 사용자가 허용되지 않은 파일을 편집 할 수 있도록하는 것입니다. 이를 위해 sudoedit편집 할 파일을 임시 위치로 복사하고 요청한 사용자가 파일을 쓸 수 있도록하고 구성된 편집기에서 파일을 엽니 다. 그렇기 때문에 편집기는 관련없는 파일 이름을 임시 디렉토리에 표시합니다. 편집기가 종료되면 sudoedit실제로 변경되었는지 확인하고 필요한 경우 변경된 임시 파일을 원래 위치로 다시 복사합니다.


답변

이것은 잘 설명되어 . 의 설명 ( 에 해당합니다)는 말한다 :sudo-esudoedit

-e

-e(편집) 옵션 대신 명령을 실행하는 사용자는 편집 하나 이상의 파일을 원하는, 그 나타냅니다. 명령 대신 sudoedit보안 정책을 참조 할 때 문자열 ” “이 사용됩니다. 정책에 따라 사용자에게 권한이 부여되면 다음 단계가 수행됩니다.

  1. 소유자가 호출 사용자로 설정하여 편집 할 파일로 임시 사본이 작성됩니다.
  2. 정책에 의해 지정된 편집기가 임시 파일을 편집하기 위해 실행됩니다. sudoers정책 용도 SUDO_EDITOR, VISUALEDITOR(이 순서로) 환경 변수. 아무도 경우 SUDO_EDITOR, VISUAL또는이 EDITOR설정되어 있지 않은, 편집기에 나열된 첫 번째 프로그램 sudoers(5)옵션이 사용됩니다.
  3. 파일을 수정 한 경우 임시 파일이 원래 위치로 다시 복사되고 임시 버전이 제거됩니다.

지정된 파일이 없으면 작성됩니다. 로 실행되는 대부분의 명령과 달리 sudo편집기는 호출하는 사용자 환경을 수정하지 않고 실행합니다. 어떤 이유로 sudo편집 된 버전으로 파일을 업데이트 할 수없는 경우 사용자에게 경고 메시지가 표시되고 편집 된 사본은 임시 파일로 유지됩니다.

특히, 세 번째 단계에 유의하십시오. 편집이 끝날 때 파일이 수정 된 경우에만 원본이 변경됩니다. 따라서 파일을 감시하는 프로그램이있는 경우 (a) 중간 쓰기가 수행되지 않도록하고 (b) 결국 변경하지 않기로 결정한 경우 불필요한 조치를 피할 수 있습니다.


답변