sudo / visudo의 편집기를 올바르게 설정하려면 어떻게해야합니까?


18

우분투 10.04 서버를 사용하고 있으며 사용자의 EDITOR 선택을 존중하도록 sudoers를 설정하려고합니다 (한도 내)

내 sudoers에는 다음이 있습니다.

Defaults        editor=/usr/bin/nano:/usr/bin/vim
Defaults        env_reset

그리고 사용자 .bashrc에서 :

export EDITOR=/usr/bin/vim

$ EDITOR가 설정되었습니다.

$ echo $EDITOR
/usr/bin/vim

이것에 따르면 man sudoers$ EDITOR를 vim으로 설정하기에 충분해야합니다.

editor  A colon (':') separated list of editors allowed to be used with visudo.
        visudo will choose the editor that matches the user's EDITOR environment
        variable if possible, or the first editor in the list that exists and is
        executable. The default is the path to vi on your system.

그러나이 nano사용자에게는 여전히 사용되고 있습니다. env의 빠른 점검 :

$ sudo -- env | grep EDITOR

아무것도 반환하지 않습니다.

$ sudo -E -- env | grep EDITOR

보고 EDITOR=/usr/bin/vim

EDITOR를 작동시키기 위해 다음 작업을 수행 할 수 있음을 알고 있습니다.

  • 설정 env_editor, env_keep+=EDITOR또는의 sudoers에 EDITOR 변수를 유지 다른 옵션 : 나는 어떤 임의의 실행을 허용 할 수 있기 때문에이 작업을 수행 할 수 없습니다 (예를 들어 export EDITOR=~/bad_program_to_run_as_root)
  • 사용 sudo -E또는 짝수 alias sudo='sudo -E': env_resetSETENV가없는 포인트 와 사용자를 물리칩니다 (내가주고 싶은 것이 아닙니다 : 이전 포인트 참조)sudo: sorry, you are not allowed to preserve the environment
  • 설정 editor=/usr/bin/vim:하지만 vim을 모르는 다른 사용자가 있습니다
  • 사용 sudo select-editor: 닫기, 그러나 sudo visudo여전히 열립니다nano
  • 그냥 sudoedit를 사용하거나 직접 정력 : 그런데 당신은 같은 도구의 안전을 잃고 visudo, vipw, crontab -e.
  • 그냥 처리하십시오. 아마도 통찰력이 없으면 알고 싶습니다.

나는 또한 설정을 시도했습니다 VISUALSUDO_EDITOR(절망) 변수

sudo visudo위에서 타협하지 않고 선택한 사용자 편집기에서 열어 놓칠 내용이 있습니까?

편집하다:

왜 이것이 예상대로 작동하지 않는지 이해합니다. 다른 사람이 같은 오해를 가지고있는 경우를 대비하여 여기에 내려 놓았습니다.

sudoers 파일에서

Defaults        editor=/usr/bin/nano:/usr/bin/vim
  • 실행할 때 허용되는 편집기 목록 만 참조 visudo(다른 프로그램은 아님)
  • editor$ EDITOR를 확인하지만 running sudo visudo인 경우 sudo$ EDITOR를 설정하지 않으므로 visudo실행하면 비어 있습니다.
  • 따라서이 경우 첫 번째 편집기가 사용됩니다. nano

누구든지 이것이 올바른지 확인할 수 있습니까?

따라서 안전한 솔루션은 다음을 추가하는 것이 좋습니다.

Defaults!/usr/sbin/visudo env_keep+=EDITOR

즉, visudo를 실행하는 경우에만 EDITOR를 유지하십시오. 그런 다음에 대해 확인됩니다

Defaults                  editor=/usr/bin/nano:/usr/bin/vim

그리고 일치하지 않으면 nano

그러나 이상하게도 그렇지 않은 것 같습니다.

$ sudo su - root
# export EDITOR=/bin/echo
# visudo
/etc/sudoers.tmp
visudo: /etc/sudoers.tmp unchanged

/bin/echo편집기로 사용됩니다. 곤충? 아니면 다른 오해?

감사

답변:


6

EDITOR변수 를 설정하면에 사용되는 편집기가 변경되어야합니다 sudo. 그러나 EDITOR: SUDO_EDITOR및에 우선하는 두 가지 다른 변수가 VISUAL있습니다. 그들 중 어느 것도와 같은 다른 편집기를 가리 키지 않도록하십시오 nano.


내가 투표 한 이유는 VISUAL우선 순위를 정하는 것에 대한 답변이 거의 없기 때문 EDITOR입니다. 내 EDITOR변수가 무시되고 있다고 생각했습니다 . Centos7 모두에서 밝혀 EDITOR과 것은 VISUAL디폴트로 보인다 pico.

5

여기에 설명 된 다른 해결책이 있습니다 .

sudo update-alternatives --config editor

그러나 다중 사용자 시스템에서는 심볼릭 링크 만 업데이트하므로 친숙하지 않습니다 /usr/bin/.

$ ls -l `which editor`
lrwxrwxrwx 1 root root 24 lip  4 19:37 /usr/bin/editor -> /etc/alternatives/editor

$ ls -l /etc/alternatives/editor
lrwxrwxrwx 1 root root 18 Jul  5 01:39 /etc/alternatives/editor -> /usr/bin/vim.basic

무슨 일이 일어난 select-editor어쨌든? 내가 실행하면 파일이 생성됩니다.

$ ls -l .selected_editor 
-rw-r--r-- 1 rld rld 75 Jul  5 01:54 .selected_editor

$ cat .selected_editor 
# Generated by /usr/bin/select-editor
SELECTED_EDITOR="/usr/bin/vim.basic"

그러나 sudo visudo나노를 계속 사용합니다.


3

데비안 7에서는 환경에서 EDITOR를 설정하지 못했습니다.

Nano를 사용하기 위해 다음 줄을 추가했습니다. /etc/sudoers

Defaults        editor="/usr/bin/nano"

DigitalOcean Ubuntu 12.04에서 챔피언처럼 작동했습니다. 감사.
Joe 코드 웰 사용자 601770

감사합니다. 이것은 Oracle Linux에서도 작동했습니다. (나노 / 피코를 좋아합니다.)
MikeP

1

env_reset은 사용자가 명령 행에서 변수를 설정하지 못하게합니다.

$ sudo EDITOR=vim -- env |grep EDIT
EDITOR=vim

나는 editor약간 충격적인 옵션 에 대한 당신의 발견을 찾았 지만 불행히도 나는 당신의 이차적 인 질문에 대한 답을 모른다. 우분투 캠프에는이 문제에 대한 많은 문서와 구성 예제가 있다고 생각할 것입니다. 아마도 더 어려워 보일 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.