Como posso configurar corretamente o editor do sudo / visudo?

16

Estou usando o Ubuntu 10.04 Server e tentando configurar sudoers para respeitar a escolha EDITOR do 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 $ EDITOR ser 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 esse usuário. Uma verificação rápida de env:

$ sudo -- env | grep EDITOR

Não retorna nada.

$ sudo -E -- env | grep EDITOR

Retorna EDITOR=/usr/bin/vim

Estou ciente de que posso fazer o seguinte para que o EDITOR funcione:

  • Defina 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 exemplo, export EDITOR=~/bad_program_to_run_as_root )
  • Use sudo -E ou até alias sudo='sudo -E' : Derrota o ponto de ter env_reset e usuários sem SETENV (não é algo que eu quero dar: veja o ponto anterior) obter sudo: sorry, you are not allowed to preserve the environment
  • Defina editor=/usr/bin/vim : mas há outros usuários que não conhecem o vim
  • Use sudo select-editor : Fechar, mas sudo visudo ainda é aberto em nano
  • Use o sudoedit ou vim diretamente: mas você perderá a segurança de ferramentas como visudo , vipw , crontab -e .
  • Apenas lide com isso: Provavelmente, mas se eu estiver sentindo falta de algumas ideias, eu adoraria saber

Eu também tentei definir as variáveis VISUAL e SUDO_EDITOR (em desespero)

Existe algo que eu perdi que tornará sudo visudo aberto no editor de usuários escolhido, sem fazer os compromissos acima?

EDITAR:

Acho que entendo por que isso não está funcionando como esperado. Estou colocando aqui, caso alguém tenha o mesmo equívoco.

No arquivo sudoers

Defaults        editor=/usr/bin/nano:/usr/bin/vim
  • Refere-se apenas à lista de editores permitidos ao executar visudo (nenhum outro programa)
  • editor checks $ EDITOR, mas se estiver executando sudo visudo , sudo não definirá $ EDITOR, então quando visudo for 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

i.e. mantenha o EDITOR se e somente se estiver executando o visudo. Isso então seria verificado em relação a

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

E se não corresponder, use nano

Estranhamente, isso 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 editor. Erro? Ou outro equívoco?

Obrigado

    
por Mark C 29.11.2012 / 14:24

4 respostas

5

Você está certo de que a configuração da variável EDITOR deve alterar o editor usado para sudo . No entanto, existem duas outras variáveis com precedência sobre o EDITOR : SUDO_EDITOR e VISUAL . Certifique-se de que nenhum deles aponte para algum outro editor como nano .

    
por 28.03.2013 / 18:47
5

Existe outra solução conforme descrito aqui :

sudo update-alternatives --config editor

Mas não é tão amigável em um sistema multiusuário, pois só atualiza um link simbólico em /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

O que aconteceu com o select-editor ? Quando eu executo, ele cria um arquivo:

$ 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"

Mas sudo visudo continua usando nano.

    
por 05.07.2013 / 03:18
2

No Debian 7, a configuração EDITOR no ambiente não funcionou.

Para usar o Nano, acabei adicionando a seguinte linha a /etc/sudoers

Defaults        editor="/usr/bin/nano"
    
por 07.10.2014 / 11:04
1

env_reset não impede que um usuário configure variáveis na linha de comando:

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

Eu acho suas descobertas sobre a opção editor levemente chocantes, mas infelizmente não sei as respostas para suas perguntas secundárias. Alguém poderia pensar que o acampamento do Ubuntu teria muitos documentos e exemplos de configuração sobre esta questão, talvez devêssemos olhar com mais atenção.

    
por 29.11.2012 / 20:27