흠.. 아치는 여러가지로 복잡하다. 이 복잡함으로 인해 학습량은 늘어나긴 하지만.
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 를 아예 실행할 수가 없는데 어떻게 편집을??? 닭이 먼저냐 달걀이 먼저냐??