이 링크에 설명 된 sudo
것처럼 그래픽 응용 프로그램과 함께 사용 하는 것은 좋지 않습니다 . 따라서 와 함께 사용하는 경향이 있습니다 .gedit
vim
sudo
최근 우분투 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 페이지 :
소유자가 호출 사용자로 설정하여 편집 할 파일로 임시 사본이 작성됩니다.
정책에 의해 지정된 편집기가 임시 파일을 편집하기 위해 실행됩니다. sudoers 정책은
SUDO_EDITOR
,VISUAL
및EDITOR
환경 변수를 순서대로 사용합니다. 아무도 경우SUDO_EDITOR
,VISUAL
또는이EDITOR
설정되어 있지 않은, 편집기에 나열된 첫 번째 프로그램sudoers(5)
옵션이 사용됩니다.파일을 수정 한 경우 임시 파일이 원래 위치로 다시 복사되고 임시 버전이 제거됩니다.
이것은 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 개발자 이외의 다른 사람에 대한 루트 액세스를 신뢰할 필요가 없다는 점 외에도, 일반 사용자 계정으로 이미 신뢰할 수있는 모든 플러그인을로드 할 수 있습니다.