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 sudoers
esto, 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, nano
todaví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+=EDITOR
o 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 -E
o inclusoalias sudo='sudo -E'
: Derrota el punto de tenerenv_reset
y 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 visudo
aú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 VISUAL
y SUDO_EDITOR
(en desesperación)
¿Hay algo que me haya perdido que se sudo visudo
abrirá 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) editor
comprueba $ EDITOR, pero si se ejecutasudo visudo
,sudo
no establece $ EDITOR, por lo que cuando sevisudo
ejecute 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/echo
se utiliza como editor ¿Error? ¿O otra idea falsa?
Gracias
VISUAL
tener prioridad sobreEDITOR
. Pensé que miEDITOR
variable solo estaba siendo ignorada. Resulta que, en tanto Centos7EDITOR
yVISUAL
parece que por defectopico
.