J'utilise Ubuntu 10.04 Server et j'essaie de configurer des sudoers pour respecter le choix de l'EDITEUR d'un utilisateur (dans certaines limites)
Dans mes sudoers j'ai:
Defaults editor=/usr/bin/nano:/usr/bin/vim
Defaults env_reset
Et dans l'utilisateur .bashrc:
export EDITOR=/usr/bin/vim
$ EDITOR est défini:
$ echo $EDITOR
/usr/bin/vim
Selon man sudoers
cela, cela devrait être suffisant pour que $ EDITOR soit défini sur 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.
Cependant, il nano
est toujours utilisé pour cet utilisateur. Une vérification rapide d'env:
$ sudo -- env | grep EDITOR
Ne renvoie rien.
$ sudo -E -- env | grep EDITOR
Retour EDITOR=/usr/bin/vim
Je suis conscient que je pourrais faire les choses suivantes pour faire fonctionner EDITOR:
- Set
env_editor
,env_keep+=EDITOR
ou toute autre option qui conserve la variable EDITOR dans sudoers: je ne veux pas faire cela car cela pourrait permettre l'exécution arbitraire de quoi que ce soit (par exempleexport EDITOR=~/bad_program_to_run_as_root
) - Utiliser
sudo -E
ou mêmealias sudo='sudo -E'
: vainc le point d'avoirenv_reset
et les utilisateurs sans SETENV (pas quelque chose que je veux donner: voir le point précédent)sudo: sorry, you are not allowed to preserve the environment
- Set
editor=/usr/bin/vim
: Mais il y a d'autres utilisateurs qui ne connaissent pas vim - Utilisation
sudo select-editor
: Fermer, maissudo visudo
ouvre toujours dansnano
- Il suffit d' utiliser sudoedit ou vim directement: Mais vous perdez la sécurité des outils tels que
visudo
,vipw
,crontab -e
. - Traitez-le: Probablement, mais si je manque un aperçu, j'aimerais savoir
J'ai également essayé de définir les variables VISUAL
et SUDO_EDITOR
(en désespoir de cause)
Y a-t-il quelque chose que j'ai manqué qui sudo visudo
ouvrira dans l'éditeur d'utilisateurs de choix, sans faire les compromis ci-dessus?
ÉDITER:
Je pense que je comprends pourquoi cela ne fonctionne pas comme je m'y attendais. Je le mets ici au cas où quelqu'un d'autre aurait la même idée fausse.
Dans le fichier sudoers
Defaults editor=/usr/bin/nano:/usr/bin/vim
- Se réfère uniquement à la liste des éditeurs autorisés lors de l'exécution
visudo
(pas tout autre programme) editor
vérifie $ EDITOR, mais s'il est en cours d'exécutionsudo visudo
,sudo
ne définit pas $ EDITOR, donc lors de l'visudo
exécution, il sera vide- Par conséquent, le premier éditeur est utilisé, dans ce cas
nano
Quelqu'un peut-il confirmer que c'est correct?
Je m'attendais donc à ce qu'une solution sûre soit d'ajouter:
Defaults!/usr/sbin/visudo env_keep+=EDITOR
c'est-à-dire garder EDITOR si et seulement si vous utilisez visudo. Cela serait ensuite vérifié par rapport à
Defaults editor=/usr/bin/nano:/usr/bin/vim
Et s'il ne correspondait pas non plus, utiliserait nano
Bizarrement cependant, cela ne semble pas être le cas:
$ sudo su - root
# export EDITOR=/bin/echo
# visudo
/etc/sudoers.tmp
visudo: /etc/sudoers.tmp unchanged
/bin/echo
est utilisé comme éditeur. Punaise? Ou une autre idée fausse?
Merci
VISUAL
prioritéEDITOR
. Je pensais que maEDITOR
variable était simplement ignorée. Il s'avère que, dans Centos7 à la foisEDITOR
etVISUAL
semblent par défautpico
.