Archlinux : visudo 에 편집기(vim) 할당..?

흠.. 아치는 여러가지로 복잡하다. 이 복잡함으로 인해 학습량은 늘어나긴 하지만.
visudo 도 마찬가지다. 물론, root 로 명령을 내렸을 땐 큰 무리가 없지만, sudo 와 사용할 땐 다소 이해가 필요하다.


설명서EDITOR=xxx visudo 라고 하면 된다고 한다.
헌데 이건 사용자가 root 일 때다. 일반 사용자로, sudo 를 사용하려한다면, 저렇게 해선 오류만 맞이하게 된다.

EDITOR=vim sudo visudo
visudo: no editor found (editor path = /usr/bin/vi)

해법부터 말하자면, sudo visudo 를 했을 때, EDITOR 환경변수가 sudo 로 넘겨지지 않기 때문이다.
이상한 건, Ubuntu 계열에선 그냥 이렇게 했을 때 아무 문제없이 실행이 됐었는데..??

왜 두 배포판에서 다른 결과가 나온건지는 모르겠다. Ubuntu 와 Arch 에서 visudo 의 내용, 즉 /etc/sudoers 를 비교해보자면, Ubuntu 에선 다음 Defaults 항목이 설정되어 있고, Arch 에는 그렇지 않다는 점을 찾을 수 있다.

# Ubuntu

Defaults	env_reset
Defaults	mail_badpass
Defaults	secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

이것 때문에 결과가 달라졌나???
살짝 찾아본 결과, 이건 우분투의 update-alternatives 와 연관이 있는게 아닐까?
우분투에선 기본 편집기를 설정하기 위해 이렇게 명령을 내려야 한다.

$ sudo update-alternatives --config editor

이 명령은 /etc/alternatives 에 심볼릭 링크를 만들고 실제 에디터로 연결시켜주는 작업을 한다.

$ ll /etc/alternatives/vi
lrwxrwxrwx 1 root root 17 2020-09-06 00:45 /etc/alternatives/vi -> /usr/bin/vim.gtk3

$ ll /usr/bin/vi
lrwxrwxrwx 1 root root 20 2020-08-10 23:24 /usr/bin/vi -> /etc/alternatives/vi

또, vi, 즉 /usr/bin/vi 는 /etc/alternatives/vi 로 연결되어 있어서, 결국 vi 는 vim.gtk 로 연결된 상태다.
이런 일련의 작업들이 Arch 에는 없고, /usr/bin/vi 도 없기 때문(내가 설치하지 않았다.)에 visudo 가 실행되지 못하고 오류를 뿜게 된다.


해법!

첫번째 : /usr/bin/vi 생성

sudo ln -s /usr/bin/vim /usr/bin/vi

이렇게 하면, sudo visudo 로 편집할 수 있게 된다. (가장 간단.)

만약, nano 를 사용하려 한다면 편법이지만, nano 를 vi 로 연결해줘도 되긴 될터.

두번째 : 환경변수 후 sudo -E

EDITOR=vim sudo -E visudo 도 가능하고, 아예 EDITOR=vim 항목을 ~/.profile(또는 .zprofile) 넣어놓고, sudo -E visudo 로 해도 된다.

첫번째 방법이 간편하긴 한데.. 이렇게 했을 때 혹시라도 뭔 문제가 있을 수도 있겠나?

세번째 : visudo 에 편집기 명시

위에 연결한 아치 문서에, visudo 에 편집기를 명시해주는 항목을 넣어줄 수도 있다고 돼 있다.
그런데, visudo 를 아예 실행할 수가 없는데 어떻게 편집을??? 닭이 먼저냐 달걀이 먼저냐??

Author: 아무도안

안녕하세요. 글 남겨주셔서 고맙습니다.