sudoedit: 왜 sudo vi보다 더 많이 사용하나요?

sudoedit: 왜 sudo vi보다 더 많이 사용하나요?

에 따르면매뉴얼 페이지:

sudoedit /etc/file

파일의 복사본을 만들고 이를 현재 사용자로 열고 저장 시 기존 파일을 복사본으로 덮어씁니다.

반면

sudo vi /etc/file

파일을 루트로 엽니다

매뉴얼 페이지에는 다음과 같은 이유로 sudoedit가 sudo와 다르다고 명시되어 있습니다.

편집기는 수정되지 않은 호출 사용자 환경으로 실행됩니다.

첫 번째 방법이 더 안전합니까? 그렇다면 그 이유는 무엇입니까? sudo vi 대신 sudoedit를 사용하는 다른 이유가 있습니까?

답변1

전혀 관련이 없는 것을 검색하다가 우연히 이 질문을 발견했는데, 지금까지 전혀 언급되지 않은 다음과 같은 중요한 차이점을 추가해야겠다고 생각했습니다.sudoedit는 편집기를 루트로 실행하지 않습니다.

$ sudo vim /etc/farts.conf 

vim을 루트로 실행하면 파일을 읽을 수 있습니다. 단점은 이제 편집기가 루트로 실행되어 무엇이든 할 수 있다는 것입니다. 사용자가 구성 파일을 편집할 수 있도록 허용하고 그 외에 다른 것은 허용하지 않으려면 안타깝게도 사용자에게 구성 파일을 제공했습니다.뿌리전체 시스템에서. :sh또는 을 사용하여 vim에서 쉘을 생성하는 것을 방해하는 것은 없으며 :!command하위 프로세스이므로 루트로도 실행됩니다.

반면에:

$ sudoedit /etc/farts.conf

실제로는 다르게 작동합니다. /tmp에 고유한 이름을 가진 복사본을 생성하고 해당 사용자에게만 권한이 잠긴 다음 해당 복사본에 대해 루트 권한 없이 정상적으로 편집기를 생성합니다.

편집기를 종료하면 임시 파일과 원본 파일을 비교하고 변경된 경우 원본을 편집 내용으로 안전하게 교체합니다.

이 시나리오에서는 사용자가 시스템 파일을 편집하는 것을 허용할 수 있지만 루트로 임의의 바이너리를 실행하거나 파일 시스템의 모든 곳을 찌르는 것은 허용하지 않습니다.

이는 주로 실제 차이점이며, 언급된 나머지 부분은 깔끔한 부작용입니다.

답변2

우선 에서는 sudo vim이미 기본 편집기를 명시적으로 언급하고 있는데, NET에서 정의한 경우에는 필요하지 않습니다 $EDITOR. sudoedit무언가를 편집하고 싶을 때마다 편집기를 정의할 필요가 없으며 다중 사용자 시스템에서는 모든 사람이 개인적으로 좋아하는 편집기를 사용할 수 있습니다.

어떻게요? 일반 사용자가 특정 파일을 편집할 수 있는 권한만 갖는 시스템을 생각해 보십시오 sudo. sudo그러나 다른 것과 함께 실행하는 것은 제한됩니다 . 당신은 그들이 sudo viand sudo vimand sudo nanoand sudo emacsand sudo pico(etc) 를 허용해야 할 것입니다 . 그렇게 할 필요 없이, 그들이 원하는 대로 sudoedit설정하도록 선택하여 파일 에 액세스하도록 허용할 수 있습니다. $EDITOR(Emacs를 좋아하는 사람에게 Vim을 사용하도록 강요한다고 상상해보세요…)

또 다른 문제는 가 로 $EDITOR설정되어 있고 vim사용자의 에 이에 대한 사용자 정의 설정이 있는 경우 또는 을 .vimrc사용하면 해당 설정이 사용되지 않는다는 것입니다 . 그러나 호출하는 사용자의 환경과 그에 따른 설정은 보존됩니다.sudo vimsudo $EDITORsudoedit

또한보십시오:sudoedit의 장점은 무엇인가요?

관련 정보