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 sudoerscela, 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 nanoest 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+=EDITORou 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 -Eou mêmealias sudo='sudo -E': vainc le point d'avoirenv_resetet 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 visudoouvre 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 VISUALet SUDO_EDITOR(en désespoir de cause)
Y a-t-il quelque chose que j'ai manqué qui sudo visudoouvrira 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) editorvérifie $ EDITOR, mais s'il est en cours d'exécutionsudo visudo,sudone définit pas $ EDITOR, donc lors de l'visudoexé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/echoest utilisé comme éditeur. Punaise? Ou une autre idée fausse?
Merci
VISUALprioritéEDITOR. Je pensais que maEDITORvariable était simplement ignorée. Il s'avère que, dans Centos7 à la foisEDITORetVISUALsemblent par défautpico.