Vim은 sudo와 함께 사용하는 것이 안전합니까? . 따라서 와 함께

이 링크에 설명 된 sudo것처럼 그래픽 응용 프로그램과 함께 사용 하는 것은 좋지 않습니다 . 따라서 와 함께 사용하는 경향이 있습니다 .geditvimsudo

최근 우분투 16.04 (Xenial Xerus)를 ~/.viminfo새로 설치했을 때 루트가 소유하고 있음을 알았 으므로 Vim조차 그래픽으로 간주되는지 또는 호출에 다른 문제가 있는지 궁금해했습니다 . 다음을 통해 소유권을 본인에게 변경 한 후 :sudo vim

sudo find $HOME -not -user $USER -exec chown $USER:$(id -g) {} +

그 후 달리는 sudo vim나는 ~/.viminfo
루트 가 소유 할 수 없었습니다 . 그러나 최근에 루트가 소유하고 있다고 확신합니다.

호출하는 것이 바람직하지 sudo vim않습니까?



답변

예, 안전합니다.

문제 sudo gedit는 GUI 응용 프로그램이과 같은 특정 파일을 사용하기 때문에 ~/.cache/dconf상승한 후에 gedit해당 파일이 루트 소유 가되기 때문 입니다. 글쎄, 그 특정 파일에는 데스크탑을 포함한 GUI 응용 프로그램에 대한 사용자 별 설정이 포함되어 있으므로 시스템이 해당 설정을 읽을 수 없다면 좋지 않습니다. IIRC 사용자는 특정 데스크탑을 시작할 수 없습니다. 사용자의 최근 파일 데이터 recently-used.xbel도 영향을받습니다.

반면에 Vim은 그런 문제가 없습니다. GUI 관련 데이터베이스를 사용하지 않으며에 아무것도 넣지 않습니다 recently-used.xbel. gVim도 존재하지만 콘솔 전용으로 만들어졌습니다. 실제로 일부 시스템에서는 Vim이 유일한 편집자 선택입니다. 따라서 동일한 문제를 일으키지 않기 때문에 gedit 보다 안전 합니다. 두 경우 모두 여전히 루트로 편집하고 있으므로 부적절한 편집에 문제가 발생할 수 있습니다.

이 블로그 게시물 에 따르면 :

vim을 처음 사용할 때 파일 ~/.viminfo이 작성 sudo vim되고, 새로운 시스템에 vim을 설치 한 후 vim을 처음 사용할 경우 , 권한 ~/.viminfo이 소유자에게 기본 사용자 대신 root로 설정됩니다.

저자는 문제가 발생할 수 있다고 지적하지만 chown파일은 자신에게 다시 제공하는 것만으로 복잡한 것은 없습니다 .

참조 :


답변

sudoedit이를 달성하기 위해 사용할 수도 있습니다 . 편집기에서 파일의 임시 사본을 열고 편집기를 실행합니다. 로부터 man 페이지 :

  1. 소유자가 호출 사용자로 설정하여 편집 할 파일로 임시 사본이 작성됩니다.

  2. 정책에 의해 지정된 편집기가 임시 파일을 편집하기 위해 실행됩니다. sudoers 정책은 SUDO_EDITOR, VISUALEDITOR환경 변수를 순서대로 사용합니다. 아무도 경우 SUDO_EDITOR, VISUAL또는이 EDITOR설정되어 있지 않은, 편집기에 나열된 첫 번째 프로그램 sudoers(5)옵션이 사용됩니다.

  3. 파일을 수정 한 경우 임시 파일이 원래 위치로 다시 복사되고 임시 버전이 제거됩니다.

이것은 vim과 잘 작동하며 (일반적으로 내가하는 일) gedit도 사용할 수 있다고 생각합니다. 있습니다 일부 보안 제한 .


답변

링크는 매우 오래되었습니다 (2013). 그래픽 응용 프로그램을 사용 gksudo하거나 gksu그래픽 응용 프로그램에 사용하는 것이 좋지만 둘 다 사용되지 않습니다. 나중에 받아 들여진 대답에서도 제안 sudo -H합니다.

Ask Ubuntu 커뮤니티 의 일반적인 합의 는 다음을 사용하는 것입니다.

sudo -H gedit /path/to/filename

sudo탭 설정, 확장명, 단어 줄 바꿈, 글꼴 이름, 글꼴 크기 등에 대한 프로필이없는 유일한 문제가 남아 있습니다. 이러한 래퍼 스크립트를 사용하여 사용자 프로필에서 상속 할 수 있습니다. 루트를 동기화하는 방법 사용자 gedit의 환경 설정으로 gedit?


답변

예, 사용하는 것이 안전합니다 sudo vim. 내가 겪는 문제는

  • 파일을 종료하고 다시 열어야 sudo vim편집 할 수 있습니다.

  • vimrc내 사용자 정의 유용한 것들이 아닌 루트 를 기본값으로 사용하십시오.

다음 bashrc은 파일을 정상적으로 편집 할 수없는 경우 vim이 자동으로 sudo하도록 허용 하는 기능 입니다.

vim() {
    #only good for auto-sudo. delete if no sudo privileges.
    #If you're not just opening a single file, let's not use this.
    if [[ "$#" -ne 1 ]]; then
        command vim "$@"
    #cases: if we can write to the file, or the file doesn't exist and we can make new files in that directory
    elif [[ -w "$1" || ( -w $(dirname "$1") && ! -f "$1" ) ]]; then
        # \vim or 'vim' only escape aliases, not functions
        command vim "$1"
    else
        sudo env HOME="$HOME" vim -u $HOME/.vimrc "$1"
    fi
}

답변

vi를 루트로 사용하는 것이 좋습니다. 네트워크 인터페이스 파일 변경 또는 sshd 구성 파일 편집과 같이 sudo 또는 root 권한이 필요한 파일을 편집해야 할 때가 있습니다. 사람들이 IRC에 연결하거나 웹을 루트로 탐색하기 때문에 그래픽에 루트를 사용하는 것은 좋지 않습니다. 그렇게하는 동안 바이러스에 감염되면 전체 루트 액세스 권한을 갖습니다.


답변

다른 답변에서 언급되지 않은 것은 루트로 vim을 실행하면 설치 한 모든 플러그인에 루트 권한을 부여한다는 것입니다. 따라서 루트로 실행하는 것이 안전한지 아닌지에 대한 질문은 플러그인 개발자 (또는 프로젝트 기여자)가 시스템을 핵심에 소유하고 있지 않은지 신뢰할지 여부에 달려 있습니다.

Vim은 일반적으로 모든 Linux 배포판의 패키지 관리자에 의해 심사되므로 신뢰할 수 있습니다. 그러나 vim 플러그인은 일반적으로 GitHub 리포지토리에서 직접 설치되며 일반적으로 감사하는 사용자가 훨씬 적습니다 (아닐 수도 있음). 즉, 그들과 함께 베팅 과정이 없습니다.

루트에있는 동안 플러그인을로드하지 않으면 루트로 실행하는 것이 vim 개발자를 신뢰하는지 여부에 달려 있다고 생각합니다. 그러나 우리가 어쨌든 루트 액세스로 이미 신뢰할 수있는 sudo의 동일한 개발자가 만든 sudoedit를 사용하여 신뢰하지 않아도됩니다. GKFX와 NieDzejkob은 sudoedit가 이상적인 이유를 이미 언급했습니다. sudo 개발자 이외의 다른 사람에 대한 루트 액세스를 신뢰할 필요가 없다는 점 외에도, 일반 사용자 계정으로 이미 신뢰할 수있는 모든 플러그인을로드 할 수 있습니다.