Niveau :      
Résumé : su - ; xclock

Êtes vous utilisateurs de su ? Si oui, il vous est sûrement déjà arrivé de vouloir lancer une application graphique une fois passé root et vous dire que mince ça ne marche pas. C'est un des gros avantage que les utilisateurs de sudo apprécient.

Petite parenthèse sur sudo pour ceux qui en ont marre de taper sudo à chaque commande. Il existe sudo -s qui permet de faire en sorte que toutes les prochaines commandes soient tapées comme paramètre à sudo.

Revenons à notre su et présentons deux premières méthodes un peu bricolo.

Méthode 1 : on passe par la pile ip locale

$ xhost +localhost
$ su -
$ export DISPLAY=localhost:0
$ xclock

Méthode 2 : on ouvre un tunnel vers soi même

$ ssh -X root@localhost
$ xclock

Avouez qu'on peut mieux faire. Pour cela, il faut comprendre le mécanisme d'autorisation de X. X11, ou xorg, utilise un système de cookies pour savoir qui a le droit d'utiliser le serveur. Celui qui a le cookie a le pouvoir. La commande xauth permet de manipuler ces cookies, nous avançons vers la bonne méthode.

Méthode 3 : on autorise root à se connecter directement

$ xauth list $DISPLAY
toto/unix:0  MIT-MAGIC-COOKIE-1  1f9a10e88f290764fa3d72791fe60643
$ su -
$ export DISPLAY=:0
$ xauth add toto/unix:0 MIT-MAGIC-COOKIE-1  1f9a10e88f290764fa3d72791fe60643
$ xclock

Notez que le couple list/add peut être remplacé par extract/merge ou nextract/nmerge.

Nous avons bien avancé, mais cela reste un peu lourd à utiliser. Heureusement, il existe un outil qui fait tout ceci à notre place, il s'agit de pam_xauth. Il se configure dans /etc/pam.d/su (il est peu intéressant de l'utiliser ailleurs). Ajoutez simplement la ligne suivante :

# support xauth pour les applis X
session  optional  pam_xauth.so

Ce qui nous donne
Méthode 4 : on laisse faire le système

$ su -
$ xclock