XDM et les terminaux X, mini-HOWTO

Sylvain Amrani

pour la traduction française

Historique des versions
Version v0.0514 novembre 2000kt
Ajout de références à d'autres Howtos
Version v0.046 novembre 2000kt
Mises à jour suite à la première publication.
Version v0.033 juillet 2000kt
Mises à jour mineures suite aux premiers commentaires
Version v0.0228 juin 2000kt
Premier brouillon de source SGML d'après le source HTML
Version v0.0127 juin 2000kt
Premier brouillon de source HTML

Table des matières

Introduction
Information de copyright
Décharge de responsabilité
Nouvelles versions
Remerciements
Réactions
A faire
Concepts de base
Contenu du document
A propos de ce document
XDM
Qu'est-ce que XDM ?
Qu'est-ce qu'un terminal X ?
Un peu de terminologie
Que peut faire XDM ?
Configurer XDM
Fichiers de configuration
Configurer XDM pour gérer des serveurs X
Configurer XDM pour recevoir des requêtes
Démarrer X
L'application Chooser
Options de configuration avancée
Configuration d'ensembles
Ressources X
Configurations courantes
Linux vers Linux
Linux vers d'autres systèmes
D'autres systèmes vers Linux
Ressources

Ce document décrit les concepts de base concernant l'utilisation de XDM (X Display Manager - gestionnaire d'écrans X) pour gérer des terminaux X et des serveurs X, afin de permettre une informatique de « clients légers » en utilisant Linux.

X (ou « X Window System ») est l'environnement graphique fenêtré de choix pour les systèmes Unix. Sa grande force (et ce détail qui nous intéresse pour ce document) est qu'il sépare les applications en fonctionnement (navigateur internet, traitement de textes, etc.) des écrans graphiques et périphériques d'entrée effectifs (souris, clavier, etc.) par un mécanisme de communication réseau.

En fait, cela veut dire que vous pouvez faire tourner une application sur une machine, et avoir ses entrées et sorties redirigées sur une autre machine au travers d'un réseau. C'est le principe clé qui rend possibles les terminaux X.

Ce document ne traite pas de l'installation ou de la configuration d'un réseau ou de X sous Linux. Reportez-vous aux documents HOWTO du projet de documentation Linux appropriés pour de plus amples détails (cf. la section intitulée « Ressources »).

Ce document doit être vu comme une « prise en main de XDM », en ce qu'il décrit les termes et les concepts de base pour utiliser XDM et les terminaux X, avec des exemples simples qui procurent le minimum de sécurité.

Il est recommandé au lecteur de consulter la liste de ressources fournie à la fin de ce document afin de continuer au-delà de ces renseignements de base - en particulier la configuration des paramètres d'authentification et de sécurité doit être étudiée, car les exemples donnés dans ce document utilisent les modes d'exploitation les moins sécurisés.

NB : les données de ce document ont été obtenues à partir de systèmes faisant tourner les distributions Debian 2.1, SuSE 6.4, Mandrake 7.0 et RedHat 6.0.

Ce document n'essaie pas de décrire l'installation et la configuration de Linux comme terminal X. Voyez à ce sujet le Thin-Client HOWTO, fourni par le projet de documentation Linux, ainsi que le projet Linux Terminal Server (cf. la section intitulée « Ressources »).

Dit simplement, XDM (X Display Manager - gestionnaire d'écrans X) peut être vu comme un remplacement graphique de l'invite de la ligne de commande « login ». En réalité, il peut vraiment faire beaucoup plus que cela.

Typiquement, il sera démarré par l'utilisateur « root » (ou par les scripts de démarrage du système) au lancement de la machine, et doit présenter à l'utilisateur une demande d'authentification (login) graphique. Il gérera ensuite les sessions X des utilisateurs après qu'ils se soient identifiés - c'est-à-dire qu'il lancera l'exécution de leur gestionnaire de fenêtres et d'applications.

Il peut être considéré comme une « simple demande d'authentification pour la machine locale », comme on peut le trouver installé par défaut par de nombreuses distributions Linux. Cependant, XDM peut également gérer des serveurs X distants et fournir des demandes d'authentification pour les terminaux X distants. En résumé, il n'est pas limité à la machine locale - il peut facilement gérer d'autres machines reliées par réseau.

XDM est un utilitaire largement configurable et ce document ne fera que « gratter le vernis » sur ce qui peut être fait. Ce document tente d'apporter assez d'informations pour configurer vos terminaux X et vos applications serveur pour les connecter entre eux. Le lecteur se reportera à la section intitulée « Ressources » pour de plus amples informations sur les sujets abordés ici.

Une note à propos de la sécurité : X (dans sa configuration par défaut) et XDMCP ne sont pas particulièrement sécurisés. Je suppose que vous faîtes fonctionner X sur un réseau de confiance et que la sécurité n'est pas un problème. Pour avoir des détails sur la façon de renforcer la résistance de vos connexions X (et d'autres détails sur l'utilisation des possibilités réseau de X), voyez le Howto « Exécuter des applications X distantes », lequel fait également partie du projet de documentation Linux (cf. la section intitulée « Ressources »).

Avant d'aller plus loin, je dois expliquer les termes que j'utiliserai tout au long de ce document. En parlant de X, il y a pas mal de confusion entre qui est serveur de services pour qui. C'est encore plus vrai quand on considère des sessions distribuées sur un réseau faisant appel à des terminaux X.

Terminal X dépourvu de disque

Il s'agit d'une machine sans disque dur local, qui accomplira son démarrage grâce à une EPROM (ou autres) qui utilise une connexion réseau avec un serveur. Cela veut dire obtenir du serveur la configuration réseau, le système d'exploitation, la configuration système et toutes les applications. Cependant, une fois démarré, il se comportera comme un « terminal X limité » (voir ci-dessous). Typiquement, cette configuration combinera les protocoles réseau suivants pour pouvoir se lancer : BOOTP, DHCP, TFTP, etc. Reportez-vous à la section intitulée « Ressources » pour des références sur des documents qui détaillent la façon de construire des clients dépourvus de disque.

Terminal X limité

Il s'agit d'une machine qui démarre sur son disque local, lance un système d'exploitation et le programme serveur X, mais rien de plus. De cette façon, une invite d'authentification sera fournie sur la machine, pour permettre à l'utilisateur de s'identifier sur un « serveur d'applications » quelque part sur le réseau.

Station de travail X

Il s'agit d'une machine similaire au terminal X limité, mais qui fournira l'option de s'identifier sur la machine elle-même, et donc la possibilité de devenir une station de travail autonome (c'est-à-dire sans connectivité réseau) si nécessaire. La plupart des distributions peuvent être configurées directement comme une station de travail X autonome, avec une invite d'authentification graphique.

Serveur d'applications

Dans le contexte de ce document, j'utilise le terme de « serveur d'applications » pour décrire une machine qui fournit les applications (clients X) que notre terminal X veut exécuter. Il s'agit de toute application, des éditeurs aux navigateurs, en passant par le gestionnaire de fenêtres lui-même.

Serveur X

Il s'agit du programme qui contrôle l'affichage d'une machine disposant d'une console physique (écran, clavier, souris, etc.). Cela peut être vu comme un pilote pour une combinaison de carte graphique, clavier et souris. Il fournira ces moyens comme services à des clients X (d'où le terme de serveur) Reportez-vous au HOWTO de l'utilisateur X à la section intitulée « Ressources » pour plus de détails.

Client X

Il s'agit d'une configuration qui nécessite l'utilisation d'un serveur X pour accepter des entrées (clavier et souris) et fournir un affichage (écran). Un client X ne peut produire d'affichage sans les services d'un serveur X. Le serveur X peut s'exécuter localement (sur la même machine) ou ailleurs sur le réseau.

Ainsi, suivant les descriptions ci-dessus, une station de travail X peut être vue comme un terminal X limité et un serveur d'applications tournant sur la même machine.

Ce document envisagera les architectures des différentes options données ci-dessus, et décrira le rôle que XDM peut jouer dans leur mise en place.

XDM est chargé de fournir aux utilisateurs une invite d'authentification et de lancer leur session X. Il peut gérer des sessions locales (c'est à dire pour les personnes utilisant une station de travail X) ou des sessions sur des machines distantes, au travers d'une connexion avec un serveur d'applications, depuis un terminal limité ou dépourvu de disque.

Il y a deux modes opératoires :

Les communications entre XDM et le serveur X réel (la machine possédant physiquement écran/clavier/souris) sont contrôlées au travers de XDMCP, le X Display Manager Control Protocol (Protocole de contrôle du gestionnaire d'écran X).

Ceci permet aux serveurs X d'envoyer des requêtes aux serveurs exécutant XDM. En fait, le serveur X doit dire « J'ai quelqu'un qui veut s'authentifier - donnez moi s'il vous plaît une invite d'authentification ». Dans ce mode opératoire, XDM ne fera rien tant que ça ne lui aura pas été demandé par votre serveur X.

La requête du serveur X peut prendre une de ces trois formes :

Il y a plusieurs autres options, mais elles ne seront pas décrites ici - référez-vous à la documentation de XDM et de XDMCP citée dans la la section intitulée « Ressources » pour de plus amples détails.

Cette section couvre ce qui doit être configuré pour que XDM puisse accomplir les fonctions décrites jusqu'ici dans ce document.

Pour chaque cas, la configuration décrite est le minimum nécessaire pour accomplir chaque but. Dans la plupart des cas, cela veut dire aussi que la configuration est la moins sécurisée. Référez-vous à la documentation additionnelle répertoriée dans la la section intitulée « Ressources » pour des informations supplémentaires concernant la sécurisation de XDM et des terminaux X (en particulier le Howto « exécuter des applications X distantes »).

Cette section décrit l'ensemble des fichiers de configuration de XDM suivant :

Il seront trouvés dans (Debian 2.1, Mandrake 7.0.2, RedHat 6.2) :

  /etc/X11/xdm
      
ou (SuSE 6.4) :
  /usr/X11R6/lib/X11/xdm
      

xdm-config

Définit l'emplacement des autres fichiers de configuration et les permissions d'accès de base. Pour toutes les distributions considérées dans ce document, les noms de fichiers apparaissent tels que cités ici (mais quelques fois, leur emplacement peut varier).

Il définit également les scripts qui doivent être lancés pour les différents états de transition d'une session X, c'est-à-dire au démarrage, etc. Vous ne devriez pas avoir besoin de les changer, car la plupart des distributions l'ont préconfiguré pour vous.

Notez que les sessions X gérées par XDM ont un ensemble de scripts de configuration et de démarrage différent des sessions X démarrées avec xinit ou startx (c'est-à-dire les sessions X non gérées par XDM).

Xaccess

Détermine quelles machines peuvent se connecter à XDM - c'est-à-dire de quelles autres machines du réseau nous acceptons des requêtes XDMCP. Si une machine n'est pas inscrite dans ce fichier, alors il lui sera impossible de demander une invite d'authentification à XDM.

Xservers

Contient une liste de machines auxquelles XDM se connectera, pour fournir une invite d'authentification, de façon automatique - c'est-à-dire, ces machines faisant déjà tourner un serveur X, mais qui veulent que ce soit notre machine qui fournisse l'invite d'authentification.

Ce fichier n'est nécessaire que pour des serveurs X gérés par XDM. Vous n'avez besoin d'aucune entrée dans ce fichier si vous laissez aux serveurs X distants la tâche de requérir XDM.

Pour une station de travail X autonome, il n'y a généralement qu'une seule entrée dans ce fichier, mentionnant l'hôte local « localhost ».

Xresources

Détaille les propriétés X utilisées par les composants visuels (par exemple la taille de la boîte d'identification, les couleurs, les images de fond, etc.).

La façon dont vous démarrerez le serveur X lui-même dépendra de la manière dont vous voulez qu'il interagisse avec XDM, local ou distant.

Dans chaque cas, X devra probablement être démarré avec les droits du super-utilisateur root, et peut-être configuré pour être démarré par les scripts d'initialisation, si on veut que X soit lancé automatiquement au démarrage.

Quand XDM reçoit une requête indirecte, en supposant que l'option ait été spécifiée dans le fichier Xaccess pour l'application « chooser », il peut fournir à l'utilisateur une liste des autres serveurs gérés par XDM qu'il connaît.

Dans ce mode opératoire, l'utilisateur obtiendra, à la place de l'invite d'authentification, une application « chooser », laquelle lui fournira une liste des hôtes détectés sur le réseau et acceptant des connexions XDM.

La première fois que j'ai essayé d'utiliser chooser, j'ai trouvé que les fichiers Xresources fournis avec mes distributions SuSE et Debian spécifiaient une taille pour la boîte de dialogue de chooser trop grande pour les écrans... La ligne suivante dans le fichier Xresources corrige cela :

  Chooser*geometry:      700x500+300+200
      

Le chooser obtient sa liste d'hôtes par une de ces deux méthodes :

  • requête diffusée : Dans ce mode une requête est diffusée sur le réseau, et une liste est construite à partir des réponses reçues des autres serveurs exécutant XDM ;

  • écoute explicite : Il est possible de fournir au chooser une liste d'hôtes dans le fichier Xaccess, comme suit :

      %hostlist      emma alex liam
      *              CHOOSER %hostlist
            
    Cela aura pour effet que les hôtes emma, alex et liam seront tous listés comme candidats - même si une de ces machine est éteinte (il y a souvent un bouton pour tester par « ping » un hôte, afin de vérifier s'il est en fonctionnement avant d'essayer de s'y connecter).

Le fichier xdm-config fournit un riche ensemble d'options, s'agissant des scripts définis et des autres fichiers de configuration. Dans la plupart des cas, ce qui a été fourni par défaut avec votre distribution devrait être suffisant, mais pour ceux d'entre vous qui en veulent plus...

Les noms des scripts de démarrage et des fichiers de configuration utilisés par XDM sont déterminés par une série d'entrées dans le fichier de plus haut niveau, xdm-config. Cela vous permet de configurer des ensembles différents de fichiers pour des serveurs et des terminaux X différents, avec des possibilités différentes.

Par exemple, disons que vous utilisez XDM pour gérer votre affichage local, mais vous voulez également qu'il accepte des requêtes d'autres terminaux X du réseau. Il est possible de spécifier un fichier Xresources différent pour chacun des cas, en utilisant les deux lignes suivantes dans xdm-config :

  DisplayManager._0.resources  /etc/X11/xdm/Xres_0
  DisplayManager*resources     /etc/X11/xdm/Xresources
      
Xres_0 sera utilisé pour l'affichage local (_0 est la façon pour XDM de dire :0) et Xresources pour tous les autres (le « * »).

Notez que les fichiers de configuration de XDM utilisent la terminologie hôte_0, où nous dirions habituellement hôte:0, pour désigner « écran 0 sur Hôte ».

D'une façon similaire, si vous voulez un fichier de ressources particulier pour un hôte spécifique, vous devez utiliser une entrée comme suit :

  DisplayManager.host_0.resources       /etc/X11/xdm/Xres_host_0
      

Si vous regardez votre fichier xdm-config par défaut, vous verrez probablement qu'il a été configuré pour que des fichiers différents soient utilisés pour votre serveur X local et les serveurs distants, car des choses différentes doivent être faites au démarrage et à la réinitialisation de ces serveurs. Le fichier sur ma Debian contient les entrées suivantes pour le serveur local :

  DisplayManager._0.resources:    /etc/X11/xdm/Xresources_0
  DisplayManager._0.setup:        /etc/X11/xdm/Xsetup_0
  DisplayManager._0.startup:      /etc/X11/xdm/Xstartup_0
  DisplayManager._0.reset:        /etc/X11/xdm/Xreset_0
      
et les entrées suivantes pour les serveurs distants :
  DisplayManager*resources:       /etc/X11/xdm/Xresources
  DisplayManager*setup:           /etc/X11/xdm/Xsetup
  DisplayManager*startup:         /etc/X11/xdm/Xstartup
  DisplayManager*reset:           /etc/X11/xdm/Xreset
      

Cette section contient quelques ressources consultées pour rédiger ce document et qui fournissent d'autres informations sur les concepts décrits.

Plusieurs des références citées ci-dessous font partie du projet de documentation Linux (LDP) : http://www.linuxdoc.org/

Le X Window System - Système de fenêtrage X

  • X User HOWTO, relatif à l'utilisation de X (du LDP)

  • Running Remote X Applications Mini-Howto, relatif à l'exécution d'applications X distantes (du LDP)

  • Pages de manuel : X (concepts principaux), Xserver (concepts sur les serveurs X)

  • FAQ de X (cf. http://www.x.org/)

Clients légers / Terminaux X

XDM, XDMCP, etc.

  • Pages de manuel : xdm

  • XDMCP Howto (du LDP)