Re: xhost et DISPLAY

Top Page

Reply to this message
Author: Fabrice Bellet
Date:  
To: guilde
Subject: Re: xhost et DISPLAY
Salut,

La variable DISPLAY permet sur un machine distante d'indiquer que toutes
les applications lancees sur cette machine afficheront leurs fenetres
sur la machine indiquee dans le DISPLAY, sur laquelle un serveur X doit
fonctionner. Le chiffre donne apres les ':' permet d'adresser plusieurs
serveurs X tournant sur une meme machine.

Donc apres une connection vers une machine distante (rsh/telnet/rlogin),
il faut toujours affecter le DISPLAY a la valeur ip-de-la-machine-locale:0.

Il se rajoute a cela un minimum de securisation, pour ne pas que la terre
entiere puisse ouvrir des fenetres sur ton display. Le premier type de
securisation est le 'xhost'. Un serveur X garde une liste de machines
dont il autorise l'acces, cette liste peut etre modifiee avec 'xhost +machine'
et 'xhost -machine'. Ce mecanisme d'autorisation peut etre court-circuite avec
'xhost +' et active avec 'xhost -'.

Lors d'une connection vers une machine distante. En plus d'affecter le display
il faut donc sur la machine locale autoriser prealablement l'acces X par un
'xhost +machine-distante'. Remarque : xhost, est un client X11 comme tous les
autres, il faut donc que la variable DISPLAY soit correctement affectee (a la
valeur de la machine locale) dans la fenetre ou tu le lances.

Cependant, cette securisation n'est pas suffisante, car elle autorise
potentiellement n'importe quel utilisateur sur la machine distante
a se connecter a ton serveur X local des l'instant ou tu as fait un
'xhost +machine-distante'.

Un mecanisme d'authentification a base d'echange de cookies a donc
ete introduit, et permet une restriction d'acces au niveau de l'utilisateur
cette fois-ci. Cet echange de cookies se fait par la commande 'xauth'.
Au demarrage de la session X d'un utilisateur, un cookie va etre genere
dans le fichier ~/.Xauthority, associant le display local et une cle
(xauth list). Si ca n'est pas fait automatiquement (il faut parametrer startx
pour ca il me semble. xdm genere des cookies par defaut), la commande
mcookie permet de le faire (man mcookie).

L'autorisation d'un utilisateur sur une machine distante se fait alors en
transmettant le cookie associe au DISPLAY courant dans le .Xauthority
du homedirectory sur la machine distante. (man xauth, section EXAMPLE).
Le fichier .Xauthority doit bien sur etre protege des regards indiscrets
sur les deux machines.
L'utilisation courante est :
xauth extract - $DISPLAY | rsh otherhost xauth merge -

La machine distante n'a alors plus besoin d'etre referencee dans la
liste geree par xhost sur la machine locale, qui doit donc etre
en 'xhost -' pour que cela presente un interet au niveau de le
securisation.

Fab