Come posso impostare correttamente l'editor di sudo / visudo?


18

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 anche alias sudo='sudo -E': sconfigge il punto di avere env_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, ma sudo 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 esecuzione sudo visudo, sudonon imposta $ EDITOR, quindi quando visudoviene 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

Risposte:


6

Hai ragione che l'impostazione della EDITORvariabile dovrebbe modificare l'editor utilizzato per sudo. Tuttavia, ci sono altre due variabili con precedenza su EDITOR: SUDO_EDITORe VISUAL. Assicurati che nessuno di essi punti ad altri editor come nano.


Il motivo per cui ho votato è perché così poche risposte fanno riferimento alla VISUALprecedenza EDITOR. Pensavo che la mia EDITORvariabile fosse stata ignorata. Risulta, in Centos7 sia EDITORe VISUALsembrano default pico.
tre

5

C'è un'altra soluzione come descritto qui :

sudo update-alternatives --config editor

Ma non è così amichevole su un sistema multiutente in quanto aggiorna solo un link simbolico in /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

Che cosa è successo select-editorcomunque? Quando lo eseguo, crea un file:

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

Ma sudo visudocontinua a usare nano.


3

In Debian 7, l'impostazione di EDITOR nell'ambiente non funzionava.

Per usare Nano, ho finito per aggiungere la seguente riga a /etc/sudoers

Defaults        editor="/usr/bin/nano"

FUNZIONATO COME UN CAMPIONE su DigitalOcean Ubuntu 12.04. Grazie.
Utente Joe Codeswell601770,

Grazie. Questo ha funzionato anche su Oracle Linux. (Mi piace nano / pico.)
MikeP,

1

env_reset non impedisce a un utente di impostare variabili sulla riga di comando:

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

Trovo che le tue scoperte editorsull'opzione siano leggermente scioccanti, ma sfortunatamente non conosco le risposte alle tue domande secondarie. Si potrebbe pensare che il campo Ubuntu avrebbe molti documenti ed esempi di configurazione su questo problema, forse dovremmo sembrare più difficili.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.