Estou usando o Ubuntu 10.04 Server e tentando configurar sudoers para respeitar a opção EDITOR de um usuário (dentro dos limites)
Nos meus sudoers eu tenho:
Defaults editor=/usr/bin/nano:/usr/bin/vim
Defaults env_reset
E no usuário .bashrc:
export EDITOR=/usr/bin/vim
$ EDITOR está definido:
$ echo $EDITOR
/usr/bin/vim
De acordo com man sudoers
isso, deve ser suficiente para que $ EDITOR seja definido como 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.
No entanto, nano
ainda está sendo usado para este usuário. Uma verificação rápida do env:
$ sudo -- env | grep EDITOR
Retorna nada.
$ sudo -E -- env | grep EDITOR
Devoluções EDITOR=/usr/bin/vim
Estou ciente de que poderia fazer o seguinte para fazer o EDITOR funcionar:
- Set
env_editor
,env_keep+=EDITOR
ou qualquer outra opção que mantenha a variável EDITOR em sudoers: não quero fazer isso, pois isso pode permitir a execução arbitrária de qualquer coisa (por exemploexport EDITOR=~/bad_program_to_run_as_root
) - Use
sudo -E
or evenalias sudo='sudo -E'
: Derrota o ponto de terenv_reset
e usuários sem SETENV (não é algo que eu queira dar: veja o ponto anterior)sudo: sorry, you are not allowed to preserve the environment
- Conjunto
editor=/usr/bin/vim
: mas existem outros usuários que não conhecem o vim - Uso
sudo select-editor
: Fechar, massudo visudo
ainda abrenano
- Basta usar sudoedit ou vim diretamente: Mas então você perde a segurança de ferramentas como
visudo
,vipw
,crontab -e
. - Apenas lide com isso: provavelmente, mas se eu estiver perdendo alguma visão, eu gostaria de saber
Eu também tentei definir as variáveis VISUAL
e SUDO_EDITOR
(em desespero)
Há algo que eu perdi que será sudo visudo
aberto no editor de escolha dos usuários, sem fazer os compromissos acima?
EDITAR:
Acho que entendo por que isso não está funcionando como eu esperava. Estou colocando aqui em baixo, caso mais alguém tenha o mesmo conceito errado.
No arquivo sudoers
Defaults editor=/usr/bin/nano:/usr/bin/vim
- Refere-se apenas à lista de editores permitidos durante a execução
visudo
(não em nenhum outro programa) editor
verifica $ EDITOR, mas se estiver executandosudo visudo
,sudo
não define $ EDITOR; portanto, quandovisudo
executado, ele estará vazio- Portanto, o primeiro editor é usado, neste caso
nano
Alguém pode confirmar que isso está correto?
Eu esperava, portanto, que uma solução segura seria adicionar:
Defaults!/usr/sbin/visudo env_keep+=EDITOR
ou seja, mantenha EDITOR se e somente se estiver executando o visudo. Isso seria então verificado contra
Defaults editor=/usr/bin/nano:/usr/bin/vim
E se não combinasse, usaria nano
Estranhamente, porém, este não parece ser o caso:
$ sudo su - root
# export EDITOR=/bin/echo
# visudo
/etc/sudoers.tmp
visudo: /etc/sudoers.tmp unchanged
/bin/echo
é usado como o editor. Erro? Ou outro equívoco?
obrigado
VISUAL
ter precedênciaEDITOR
. Eu pensei que minhaEDITOR
variável estava sendo ignorada. Acontece que, em Centos7 ambosEDITOR
eVISUAL
parecem padrão parapico
.