Association Bordelaise des Utilisateurs de Logiciels libres

Accueil ›› Utilisation de logiciels libres ›› Système ›› Partager son serveur X

Partager son serveur X

Posté le mardi 18 novembre 2003 par igor

Vouloir autoriser une personne à visualiser ou accéder aux ressources X de sa machine est quelque chose que l’on a toujours voulu faire à un moment ou à un autre. Un moyen rapide mais peu sûr est d’utiliser la commande magique xhost. Je vais vous présenter un moyen beaucoup plus sûr et plus contrôlable.

Je déteste xhost + depuis l’IUT, la fac, depuis que des petits malins (et j’en faisais malheureusement partie) s’amusaient à espionner, poluer le display des autres utilisateurs.

J’ai banni xhost + depuis. Et j’utilise xauth (package xbase-clients pour les utilisateurs de Debian) qui lui permet beaucoup plus finement d’autoriser la manipulation du display par un autre utilisateur seulement.

xhost, autorise une machine à se connecter, xauth lui permet à un utilisateur de se connecter.

C’est un peu le même principe que les clés RSA/DSA de ssh et le fichier authorized_keys

xdm/kdm/wmd/gdm génèrent une clé par session et est gérée par xauth

igor@tass:~$ xauth list
tass.genibel.org:0  MIT-MAGIC-COOKIE-1 07f3586c8552ca40568ce6231e04f1bc
tass/unix:0  MIT-MAGIC-COOKIE-1 07f3586c8552ca40568ce6231e04f1bc
tass.genibel.org:0  XDM-AUTHORIZATION-1 3ab4f225de92c3e1002b22b3d2ce6069
tass/unix:0  XDM-AUTHORIZATION-1 3ab4f225de92c3e1002b22b3d2ce6069

 une session XDM ;
 une session X sur socket de plus X écoute sur le réseau.

Celle-ci peut être exportée en vue de l’utilisation du display par un autre utilisateur. Par exemple je veux que root puisse lancer des applications sur ma machine même si mon serveur X n’écoute pas sur le
réseau :

igor@tass:igor ->umask 066 && xauth extract /tmp/xauth $DISPLAY && umask 022
igor@tass:igor ->ls -l /tmp/xauth
-rw-------    1 igor     igor           99 2003-08-12 11:43 /tmp/xauth

Le fichier n’est seulement lisible que par igor et bien sûr root ;)

igor@tass:igor ->su -
Password:
tass:~# xauth merge /tmp/xauth
tass:~# export DISPLAY=:0
tass:~# xterm
tass:~# echo $?
0

J’insère la clé générée dans le trousseau xauthority de root, je positionne $DISPLAY et je lance un xterm et tout se passe bien.

Dans aucun des cas un autre utilisateur que root et igor peuvent disposer du DISPLAY.

Voilà donc une ébauche de la manipulation xauthority dont le domaine d’application est beaucoup plus vaste.
Voici quelques liens :
 Remote X Apps mini-HOWTO ;
 X-Window Note ;
 Une partie du TERM-HOWTO ;
 Et bien sûr la page de manuel de xauth.

Répondre à cet article