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 sudoersisso, 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, nanoainda 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+=EDITORou 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 -Eor evenalias sudo='sudo -E': Derrota o ponto de terenv_resete 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 visudoainda 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 VISUALe SUDO_EDITOR(em desespero)
Há algo que eu perdi que será sudo visudoaberto 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) editorverifica $ EDITOR, mas se estiver executandosudo visudo,sudonão define $ EDITOR; portanto, quandovisudoexecutado, 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
VISUALter precedênciaEDITOR. Eu pensei que minhaEDITORvariável estava sendo ignorada. Acontece que, em Centos7 ambosEDITOReVISUALparecem padrão parapico.