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 sudoers
ciò 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 nano
viene 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+=EDITOR
o 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 -E
o anchealias sudo='sudo -E'
: sconfigge il punto di avereenv_reset
e 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 visudo
si 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 VISUAL
e SUDO_EDITOR
(nella disperazione)
C'è qualcosa che ho perso che si sudo visudo
aprirà 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) editor
controlla $ EDITOR, ma se in esecuzionesudo visudo
,sudo
non imposta $ EDITOR, quindi quandovisudo
viene 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/echo
viene utilizzato come editor. Bug? O un altro malinteso?
Grazie
VISUAL
precedenzaEDITOR
. Pensavo che la miaEDITOR
variabile fosse stata ignorata. Risulta, in Centos7 siaEDITOR
eVISUAL
sembrano defaultpico
.