Dans l’article Changer l’éditeur par défaut utilisé par Ubuntu, j’indique que l’on peut choisir l’éditeur utilisé par divers programme (dont crontab) avec la commande select-editor.


Mais si vous positionnez ce choix à autre chose que nano (VIM par exemple) et que vous voulez éditer le fichier sudoer avec la commande  :

sudo visudo


Vous aurez ceci (enfin sur une Ubuntu 10.04) :

Visudo continue d’utiliser nano.


J’ai vérifié mon paramétrage de select-editor en affichant le contenu de ~/.selected_editor :

# Generated by /usr/bin/select-editor
 SELECTED_EDITOR="/usr/bin/vim.basic"


Visudo étant lancé en sudo, je me suis dit qu’il fallait aussi lancer préalablement select-editor en sudo

–> sans effet


Ensuite j’ai lu la man page de select-editor et y ai découvert ceci :

SELECTED_EDITOR is overridden by the VISUAL and EDITOR environment variables.


J’ai donc vérifié mes variable d’environnement (commande env), pas de trace de la variable EDITOR, je l’ai donc défini dans mon ~/.bashrc (que j’ai ensuite sourcé) :

–> sans effet


J’ai défini la variable EDITOR dans /etc/bash.bashrc (puis sourcé) :

–> sans effet


Ce n’est qu’après divers recherche Internet que j’ai trouvé la solution.


Contrairement a ce qui est indiqué ici, Visudo n’utilise pas sensible-editor, ce qui est d’ailleurs l’objet d’un bug :

https://bugs.launchpad.net/ubuntu/+source/sudo/+bug/280877


Visudo utilise le programme /usr/bin/editor qui n’est qu’un lien symbolique vers un autre éditeur :

ls -la /usr/bin/editor
 lrwxrwxrwx 1 root root 24 2010-07-26 14:01 /usr/bin/editor -> /etc/alternatives/editor
ls -la  /etc/alternatives/editor
 lrwxrwxrwx 1 root root 18 2010-07-26 14:01 /etc/alternatives/editor -> /usr/bin/nano


On pourrait donc changer manuellement ce liens, mais ce n’est pas la façon de faire, il utiliser la commande suivante :

sudo update-alternatives --config editor


Qui comme select-editor, permet de choisir, l’éditeur a utiliser et créé les liens symbolique correspondant :

Il existe 5 choix pour l'alternative editor (qui fournit /usr/bin/editor).
Sélection   Chemin                  Priorité  État
 ------------------------------------------------------------
 * 0            /bin/nano                40        mode automatique
 1            /bin/ed                 -100       mode manuel
 2            /bin/nano                40        mode manuel
 3            /usr/bin/mcedit-debian   25        mode manuel
 4            /usr/bin/vim.basic       30        mode manuel
 5            /usr/bin/vim.tiny        10        mode manuel
Appuyez sur <Entrée> pour conserver la valeur par défaut[*] ou choisissez le numéro sélectionné :4
 update-alternatives: utilisation de « /bin/vim.basic » pour fournir « /usr/bin/editor » (editor) en mode automatique.


Et voila, lorsque l’on édite son sudoer visudo utilise VIM (dans mon cas) :


Rque : sensible-editor utilisé dans les autres cas (cf. Changer l’éditeur par défaut utilisé par Ubuntu) n’est pas un lien symbolique mais réellement un programme qui lit le fichier ~/selected-editor en vue de lancer l’éditeur voulu :

ls /usr/bin/sensible-editor -la
 -rwxr-xr-x 1 root root 1109 2010-04-09 02:45 /usr/bin/sensible-editor

Rque 2 : là où sensible-editor est propre a chaque utilisateur, puisque paramétré dans le $HOME, editor utilisé par visudo est pour tous les utilisateurs.


Sources :

Article m’ayant induit en erreur :

http://linuxtoolkit.blogspot.com/2009/11/changing-default-editor-for-visudo.html

https://help.ubuntu.com/community/Sudoers

Article m’ayant mis sur la piste :

https://lists.ubuntu.com/archives/ubuntu-users/2007-July/118201.html

Image par Nic’s events sous CC BY-SA

Les commentaires sont fermés.