Sto usando Ubuntu 10.04 Server e sto provando a configurare i sudoer per rispettare la scelta EDITOR di un utente (entro certi limiti)
Nei miei sudoers ho:
Defaults editor=/usr/bin/nano:/usr/bin/vim
Defaults env_reset
E nell'utente .bashrc:
export EDITOR=/usr/bin/vim
$ EDITOR è impostato:
$ echo $EDITOR
/usr/bin/vim
In base a man sudoersciò dovrebbe essere sufficiente che $ EDITOR sia impostato su 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.
Tuttavia nanoviene ancora utilizzato per questo utente. Un rapido controllo di env:
$ sudo -- env | grep EDITOR
Non restituisce nulla.
$ sudo -E -- env | grep EDITOR
ritorna EDITOR=/usr/bin/vim
Sono consapevole che potrei fare le seguenti cose per far funzionare EDITOR:
- Set
env_editor,env_keep+=EDITORo qualsiasi altra opzione che mantenga la variabile EDITOR in sudoers: non voglio farlo poiché potrebbe consentire l'esecuzione arbitraria di qualsiasi cosa (ad es.export EDITOR=~/bad_program_to_run_as_root) - Usa
sudo -Eo anchealias sudo='sudo -E': sconfigge il punto di avereenv_resete gli utenti senza SETENV (non qualcosa che voglio dare: vedi punto precedente) otteneresudo: sorry, you are not allowed to preserve the environment - Set
editor=/usr/bin/vim: Ma ci sono altri utenti che non conoscono vim - Usa
sudo select-editor: Chiudi, masudo visudosi apre ancoranano - Basta usare sudoedit o vim direttamente: Ma poi si perde la sicurezza di strumenti come
visudo,vipw,crontab -e. - Basta occuparsene: probabilmente, ma se mi manca qualche intuizione mi piacerebbe saperlo
Ho anche provato a impostare le variabili VISUALe SUDO_EDITOR(nella disperazione)
C'è qualcosa che ho perso che si sudo visudoaprirà nell'editor di scelta degli utenti, senza scendere a compromessi sopra?
MODIFICARE:
Penso di capire perché questo non funziona come mi aspetto. Lo sto mettendo qui nel caso in cui qualcun altro abbia lo stesso malinteso.
Nel file sudoers
Defaults editor=/usr/bin/nano:/usr/bin/vim
- Si riferisce solo all'elenco di editor che sono consentiti durante l'esecuzione
visudo(non qualsiasi altro programma) editorcontrolla $ EDITOR, ma se in esecuzionesudo visudo,sudonon imposta $ EDITOR, quindi quandovisudoviene eseguito sarà vuoto- Pertanto, viene utilizzato il primo editor, in questo caso
nano
Qualcuno può confermare che questo è corretto?
Mi aspettavo quindi che una soluzione sicura sarebbe stata aggiungere:
Defaults!/usr/sbin/visudo env_keep+=EDITOR
cioè mantenere EDITOR se e solo se in esecuzione visudo. Questo verrebbe quindi verificato
Defaults editor=/usr/bin/nano:/usr/bin/vim
E se non corrispondesse, sarebbe utile nano
Stranamente, questo non sembra essere il caso:
$ sudo su - root
# export EDITOR=/bin/echo
# visudo
/etc/sudoers.tmp
visudo: /etc/sudoers.tmp unchanged
/bin/echoviene utilizzato come editor. Bug? O un altro malinteso?
Grazie
VISUALprecedenzaEDITOR. Pensavo che la miaEDITORvariabile fosse stata ignorata. Risulta, in Centos7 siaEDITOReVISUALsembrano defaultpico.