Estoy usando Ubuntu 10.04 Server e intento configurar sudoers para respetar la elección del EDITOR de un usuario (dentro de los límites)
En mis sudoers tengo:
Defaults        editor=/usr/bin/nano:/usr/bin/vim
Defaults        env_reset
Y en el usuario .bashrc:
export EDITOR=/usr/bin/vim
$ EDITOR está configurado:
$ echo $EDITOR
/usr/bin/vim
De acuerdo con man sudoersesto, debería ser suficiente para que $ EDITOR se configure en 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.
Sin embargo, nanotodavía se está utilizando para este usuario. Una comprobación rápida de env:
$ sudo -- env | grep EDITOR
No devuelve nada
$ sudo -E -- env | grep EDITOR
Devoluciones EDITOR=/usr/bin/vim
Soy consciente de que podría hacer lo siguiente para que EDITOR funcione:
- Set 
env_editor,env_keep+=EDITORo cualquier otra opción que mantiene la variable EDITOR en sudoers: No quiero hacer esto, ya que podría permitir la ejecución arbitraria de cualquier cosa (por ejemploexport EDITOR=~/bad_program_to_run_as_root) - Uso 
sudo -Eo inclusoalias sudo='sudo -E': Derrota el punto de tenerenv_resety usuarios sin SETENV (no es algo que quiera revelar: ver punto anterior) obtenersudo: sorry, you are not allowed to preserve the environment - Conjunto 
editor=/usr/bin/vim: Pero hay otros usuarios que no conocen vim - Uso 
sudo select-editor: Cerrar, perosudo visudoaún se abre ennano - Sólo tiene que utilizar sudoedit o vim directamente: Pero entonces se pierde la seguridad de herramientas como 
visudo,vipw,crontab -e. - Solo lidia con eso: Probablemente, pero si me falta alguna idea, me encantaría saber
 
También he intentado configurar las variables VISUALy SUDO_EDITOR(en desesperación)
¿Hay algo que me haya perdido que se sudo visudoabrirá en el editor de elección de los usuarios, sin hacer los compromisos anteriores?
EDITAR:
Creo que entiendo por qué esto no funciona como esperaba. Lo pondré aquí en caso de que alguien más tenga el mismo concepto erróneo.
En el archivo sudoers
Defaults        editor=/usr/bin/nano:/usr/bin/vim
- Solo se refiere a la lista de editores que están permitidos cuando se ejecuta 
visudo(no cualquier otro programa) editorcomprueba $ EDITOR, pero si se ejecutasudo visudo,sudono establece $ EDITOR, por lo que cuando sevisudoejecute estará vacío- Por lo tanto, se utiliza el primer editor, en este caso 
nano 
¿Alguien puede confirmar que esto es correcto?
Por lo tanto, esperaba que una solución segura sería agregar:
Defaults!/usr/sbin/visudo env_keep+=EDITOR
es decir, mantener EDITOR si y solo si se ejecuta visudo. Esto luego se verificaría contra
Defaults                  editor=/usr/bin/nano:/usr/bin/vim
Y si no coincidiera, cualquiera usaría nano
Aunque parezca extraño, este no parece ser el caso:
$ sudo su - root
# export EDITOR=/bin/echo
# visudo
/etc/sudoers.tmp
visudo: /etc/sudoers.tmp unchanged
/bin/echose utiliza como editor ¿Error? ¿O otra idea falsa?
Gracias

VISUALtener prioridad sobreEDITOR. Pensé que miEDITORvariable solo estaba siendo ignorada. Resulta que, en tanto Centos7EDITORyVISUALparece que por defectopico.Hay otra solución como se describe aquí :
Pero no es tan amigable en un sistema multiusuario ya que solo actualiza un enlace simbólico en
/usr/bin/:¿Qué pasó de
select-editortodos modos? Cuando lo ejecuto, crea un archivo:Pero
sudo visudosigue usando nano.fuente
En Debian 7, configurar EDITOR en el entorno no funcionó.
Para usar Nano, terminé agregando la siguiente línea a
/etc/sudoersfuente
env_reset no impide que un usuario establezca variables en la línea de comando:
Sus hallazgos sobre la
editoropción me parecen un poco impactantes, pero desafortunadamente no sé las respuestas a sus preguntas secundarias. Uno pensaría que el campamento de Ubuntu tendría muchos documentos y ejemplos de configuración sobre este tema, tal vez deberíamos buscarlo más.fuente