# Manuel de référence du gestionnaire de connexions GNOME

## Termes et conventions utilisés dans ce manuel

Ce manuel documente la version 2.26.0 du gestionnaire de connexions GNOME. La dernière version date du 10/02/2009.

Sélecteur - Un programme utilisé pour sélectionner un hôte distant pour gérer cet affichage à distance sur l'affichage lié (`gdm-host-chooser`).

FreeDesktop - L'organisation qui fournit les normes de bureau, telles que la spécification « Desktop Entry » utilisée par GDM. http://www.freedesktop.org.

GDM - Le gestionnaire de connexions GNOME. Utilisé pour décrire l'ensemble des paquets de ce logiciel.

Bannière d'accueil - La fenêtre d'identification (`gnome-shell`).

PAM - Mécanisme d'authentification enfichable (Pluggable Authentication Mechanism).

XDMCP - Protocole de gestion d'affichage X.

Xserver - Une implémentation du système X Window. Par exemple, le serveur X de Xorg fourni par la fondation X.org http://www.x.org.

Les chemins qui commencent par un mot entre chevrons sont relatifs au préfixe d'installation. Par exemple, `<share>/pixmaps/` fait référence à `/usr/share/pixmaps` si GDM est configuré avec `--prefix=/usr`.

## Vue d'ensemble

### Introduction

Le gestionnaire de connexions GNOME (GDM) est un gestionnaire d'affichage qui implémente tous les outils nécessaires à la gestion des affichages liés ou distants. GDM a été complètement réécrit et ne contient pas de code de XDM ou du consortium X.

Il est à noter que GDM est configurable, et que beaucoup de paramètres de configuration touchent à la sécurité. Les points auxquels il s'agit de prêter attention sont mis en évidence dans ce document.

Veuillez noter que certains systèmes d'exploitation configurent GDM de façon différente du comportement par défaut qui est décrit dans ce document. Si GDM ne semble pas se comporter tel qu'il est documenté, c'est probablement que la configuration est différente de celle qui est décrite ici.

Pour plus d'informations à propos de GDM, référez-vous au site Web du projet http://wiki.gnome.org/Projects/GDM.

Pour des discussions ou des questions à propos de GDM, référez-vous à la liste de diffusion

    gdm-list@gnome.org

(anglophone). Cette liste est archivée et constitue une bonne ressource pour rechercher des réponses aux questions courantes. Les archives de la liste se trouvent sur http://mail.gnome.org/archives/gdm-list/ et disposent d'un outil de recherche à base de mots-clés.

Veuillez signaler vos rapports d'anomalie ou vos demandes d'amélioration dans la catégorie « gdm » de http://bugzilla.gnome.org.

### Stabilité de l'interface

GDM 2.20 et les versions précédentes stables d'interfaces de configuration. Cependant, la base de code de GDM 2.22 a été entièrement réécrite et n'est pas complètement compatible avec les versions précédentes. Cela est dû en partie au fait que le fonctionnement est différent ; certaines options n'ont donc pas de sens, soit parce qu'elles n'ont en jamais eu, soit parce que des fonctionnalités n'ont pas encore été réécrites.

Les interfaces qui sont toujours prises en charge de façon stable sont les scripts Init, PreSession, PostSession, PostLogin et Xsession. Certaines options de configuration des services dans le fichier de configuration `<etc>/gdm/custom.conf` continuent d'être prises en charge. Ainsi que `~/.dmrc` et les emplacements des images du navigateur de figures.

GDM 2.20 et les versions précédentes prenaient en charge la capacité de gérer plusieurs écrans avec des cartes graphiques différentes, comme dans les environnements de serveur de terminaux, la connexion dans une fenêtre via un programme tel que Xnest ou Xephyr, le programme gdmsetup, des thèmes d'accueil XML, et la possibilité de lancer le sélecteur XDMCP depuis l'écran de connexion. Ces fonctionnalités n'ont pas été réimplémentées lors de la réécriture de 2.22.

### Description opérationnelle

GDM est responsable de la gestion des affichages du système. Ceci inclut l'authentification des utilisateurs, le démarrage de la session utilisateur et la fermeture de celle-ci. GDM est configurable et les moyens de le configurer sont décrits dans la section « Configuration de GDM » de ce document. GDM est aussi utilisable par les utilisateurs ayant des handicaps.

GDM donne la possibilité de gérer l'affichage de la console principale et des affichages lancés par VT. Il est intégré avec d'autre programmes, tels que l'applet de changement rapide d'utilisateur (FUSA) et gnome-screensaver (l'économiseur d'écran) pour gérer des écrans multiples sur la console via l'interface Virtual Terminal (VT) de Xserver. Il peut aussi gérer des affichages XDMCP.

Quel que soit le type d'affichage, GDM procède comme suit quand il gère l'affichage. Il lance un processus Xserver, puis lance le script `Init` en tant qu'utilisateur root, et lance le programme d'accueil à l'écran.

Le programme d'accueil est lancé en tant qu'utilisateur/groupe « gdm ». Cet utilisateur et groupe sont décrits dans la section « Sécurité » de ce document. Le rôle principal du programme d'accueil est de fournir un mécanisme pour la sélection d'un compte avec lequel se connecter et de diriger le dialogue entre l'utilisateur et le système lors de l'authentification avec ce compte. Le processus d'authentification est piloté par les modules d'authentification enfichables (PAM). Les modules PAM déterminent quels sont les invites affichées (s'il y en a) pour que l'utilisateur s'authentifie. Sur un système normal, le programme d'accueil demande un nom d'utilisateur et un mot de passe pour l'authentification. Toutefois certains systèmes peuvent être configurés pour utiliser des méthodes alternatives telles que les empreintes digitales ou un lecteur de cartes à puce. GDM peut être configuré pour prendre en charge ces alternatives en parallèle avec des extensions du programme d'accueil et l'option `--enable-split-authentication` de `./configure`, ou une à la fois via la configuration de PAM du système.

L'extension pour cartes à puces peut être activée ou désactivée via la clé gsettings `org.gnome.display-manager.extensions.smartcard.active`.

De la même manière, l'extension pour empreintes digitales peut être activée ou désactivée via la clé gsettings `org.gnome.display-manager.extensions.fingerprint.active`.

GDM et PAM peuvent être configurés pour n'avoir besoin d'aucune saisie ; dans ce cas, GDM se connecte automatiquement et lance simplement une session, ce qui peut être utile dans certains environnements comme des systèmes mono-utilisateur ou des kiosques.

En plus de l'authentification, le programme d'accueil permet à l'utilisateur de sélectionner la session à lancer et la langue à utiliser. Les sessions sont définies par des fichiers terminés par le suffixe .desktop ; plus d'informations à propos de ceux-ci sont disponibles dans la section « Configuration GDM de la session utilisateur et de la langue » de ce document. Par défaut, GDM est configuré pour afficher un navigateur de figures afin que l'utilisateur puisse sélectionner son compte en cliquant sur une image au lieu de devoir saisir son nom d'utilisateur. GDM conserve la session et la langue par défaut de l'utilisateur dans `~/.dmrc` et utilise ces paramètres si l'utilisateur ne sélectionne pas de session ou de langue particulière dans l'interface d'authentification.

Après l'authentification de l'utilisateur, le service lance le script `PostLogin` en tant que root, puis il lance le script `PreSession` en tant que root. Après avoir lancé ces scripts, la session de l'utilisateur est lancée. Quand l'utilisateur quitte la session, le script `PostSession` est lancé en tant que root. Ces scripts sont fournis comme des points d'entrée pour les distributions et les utilisateurs pour personnaliser la gestion des sessions. Par exemple, en utilisant ces points d'entrée, vous pouvez configurer un ordinateur qui crée le dossier $HOME de l'utilisateur au vol et le supprime à la fin de la session. La différence entre les scripts `PostLogin` et `PreSession` est que `PostLogin` est lancé avant l'appel à pam_open_session ; c'est donc le bon endroit pour faire tout ce qui doit être lancé avant que la session utilisateur ne soit initialisée. Le script `PreSession` est appelé après l'initialisation de la session.

### Panneau de la bannière d'accueil

Le programme d'accueil affiche un panneau en bas de l'écran qui fournit des fonctionnalités supplémentaires. Quand un utilisateur est sélectionné, le panneau permet à cet utilisateur de choisir la session, la langue et l'agencement du clavier qui seront activés après la connexion. L'agencement de clavier sélectionné change aussi l'agencement utilisé pour saisir le mot de passe. Le panneau contient également une zone pour que les services de connexion puissent afficher des icônes d'état. Par exemple, une icône de batterie pour l'utilisation actuelle de la batterie ou une icône pour activer les fonctions d'accessibilité. Le programme d'accueil fournit aussi des boutons qui permettent à l'utilisateur d'éteindre ou de redémarrer le système. Il est possible de configurer GDM pour qu'il ne fournisse pas de boutons d'extinction ou de redémarrage. GDM peut également être configuré à l'aide de PolicyKit (ou de RBAC avec Oracle Solaris) pour que seuls des utilisateurs définis aient l'autorisation d'éteindre ou de redémarrer l'ordinateur.

Notez que les fonctions d'agencement de clavier ne sont disponibles que sur les système prenant en charge libxklavier.

### Accessibilité

GDM prend en charge la « connexion accessible », permettant aux utilisateurs de se connecter dans une session même s'ils ne peuvent pas facilement utiliser l'écran, la souris ou le clavier de manière conventionnelle. Des outils d'accessibilité comme le clavier visuel, le lecteur d'écran, la loupe et les fonctions d'accessibilité du clavier AccessX de Xserver sont disponibles. Il est aussi possible d'agrandir le texte ou d'appliquer un fort contraste pour les icônes et autres éléments graphiques, si nécessaire. Référez-vous à la section « Configuration de l'accessibilité » pour plus d'informations sur la configuration des différentes fonctions.

Sur certains systèmes d'exploitation, il est nécessaire de s'assurer que l'utilisateur GDM est un membre du groupe « audio » si l'on veut que les outils d'accessibilité qui génèrent une sortie sonore (comme la synthèse vocale) puissent fonctionner.

### Le navigateur de figures GDM

Le navigateur de figures est l'interface qui permet aux utilisateurs de sélectionner leur identifiant en cliquant sur une image. Cette fonction peut être activée ou désactivée par la clé GSettings org.gnome.login-screen disable-user-list ; par défaut, cette clé est activée. Quand elle est inactive, les utilisateurs doivent saisir leur identifiant au clavier. Quand elle est active, le navigateur affiche tous les utilisateurs locaux qui peuvent se connecter sur le système (tous les comptes utilisateurs définis dans le fichier /etc/passwd qui disposent d'un shell valide et d'un UID suffisamment élevé) et les utilisateurs distants qui se sont connectés récemment. Le navigateur de figures dans GDM 2.20 et les versions précédentes essayait d'afficher tous les utilisateurs distants, ce qui causait des problèmes de performance dans les déploiements de grande taille en entreprise.

Le navigateur de figures est configuré pour afficher les utilisateurs qui se connectent le plus souvent en haut de la liste. Ceci permet à ces utilisateurs de retrouver leur image de connexion plus facilement.

Le navigateur de figures prend en charge la « recherche de saisie » qui déplace dynamiquement la sélection de la figure sur le nom correspondant dans la liste au moment de la frappe au clavier. Cela signifie qu'un utilisateur avec un long identifiant ne devra saisir que les premiers caractères de son identifiant avant que l'objet correct dans la liste ne soit sélectionné.

Les icônes utilisées par GDM peuvent être installées globalement par l'administrateur ou peuvent être placées dans les dossiers personnels des utilisateurs. Si elles sont installées globalement, elles doivent se trouver dans le répertoire `<share>/pixmaps/faces/` et le nom du fichier doit correspondre au nom de l'utilisateur. Les images de figures doivent être dans un format d'image standard lisible par GTK+, tel que PNG ou JPEG. Les icônes de figures placées dans le répertoire global des figures doivent être lisibles par l'utilisateur GDM.

Si aucune icône globale n'existe pour l'utilisateur, GDM cherche un fichier image dans le répertoire $HOME de l'utilisateur. GDM cherche d'abord une image de la figure de l'utilisateur dans le répertoire `~/.face`. S'il ne trouve pas, il essaye `~/.face.icon`. S'il ne trouve toujours pas, il utilise la valeur par défaut définie pour « face/picture= » dans le fichier `~/.gnome2/gdm`.

Si un utilisateur n'a pas défini d'image pour sa figure, GDM utilise l'icône « stock_person » définie dans le thème GTK+ actuel. Si aucune image n'est définie, il utilise une image de figure générique.

Veuillez noter que le chargement et le redimensionnement des icônes de figures placées dans les répertoires personnels distants des utilisateurs peuvent prendre beaucoup de temps. Comme ce n'est pas réalisable de charger les images avec NIS ou NFS, GDM ne tente pas de charger les image de figure depuis des répertoires personnels distants.

Lorsque le navigateur est activé, les noms d'utilisateur valides sur l'ordinateur sont révélés à tout le monde. Si XDMCP est activé, les noms d'utilisateurs sont révélés aux utilisateur distants. Évidemment, ceci limite quelque peu la sécurité car un utilisateur malveillant n'a plus besoin de deviner les noms d'utilisateur valides. Dans des environnements restrictifs, le navigateur de figures peut ne pas être approprié.

### XDMCP

Le service GDM peut être configuré pour écouter et gérer les requêtes XDMCP (X Display Manage Protocol) provenant d'hôtes distants. Par défaut, XDMCP est désactivé, mais il peut être activé au besoin. Si GDM a été compilé avec la prise en charge de TCP Wrapper, le service ne donnera accès qu'aux hôtes indiqués dans la section de service GDM du fichier de configuration de TCP Wrappers.

GDM contient plusieurs mesures afin d'être plus résistant aux attaques par déni de service sur le service XDMCP. Beaucoup de paramètres du protocole, des délais d'interaction, etc. peuvent être configurés. Les valeurs par défaut devraient cependant convenir pour la plupart des systèmes.

Par défaut, GDM écoute les requêtes XDMCP sur le port UDP normalement utilisé par XDMCP : le port 177, et répond aux requêtes QUERY et BROADCAST_QUERY en envoyant un paquet WILLING à l'émetteur.

GDM peut aussi être configuré pour répondre aux requêtes INDIRECT et présenter un sélecteur d'hôte à l'affichage distant. GDM mémorise le choix de l'utilisateur et fait suivre les requêtes suivantes au gestionnaire sélectionné. GDM gère également une extension au protocole qui lui fait oublier la redirection dès que la connexion de l'utilisateur a réussi. Cette extension n'est prise en charge que si les deux services sont GDM. Ceci est transparent et est ignoré par XDM ou d'autres services qui implémentent XDMCP.

Si XDMCP semble ne pas fonctionner, assurez-vous que toutes les machines sont présentes dans `/etc/hosts`.

Référez-vous à la section « Sécurité » pour des informations sur les questions de sécurité lors de l'utilisation de XDMCP.

### Journalisation

GDM utilise syslog pour journaliser les erreurs et les états. Il peut aussi journaliser les informations de débogage, qui peuvent être utiles pour la résolution de problèmes lorsque GDM ne fonctionne pas correctement. La sortie de débogage peut être activée en configurant la clé debug/enable à « true » dans le fichier `<etc>/gdm/custom.conf`.

Les sorties des différents serveurs X sont stockées dans le répertoire log de GDM, qui est normalement `<var>/log/gdm/`. Tous les messages Xserver sont enregistrés dans un fichier associé à la valeur de l'affichage, `<display>.log`.

La sortie de la session est redirigée par le service GDM vers le fichier `~/`$XDG_CACHE_HOME`/gdm/session.log` qui est développé habituellement sous la forme `~/.cache/gdm/session.log`. Le fichier est écrasé à chaque connexion, donc une déconnexion et re-connexion du même utilisateur via GDM efface tous les messages de la session précédente.

Notez que dans le cas où GDM ne peut créer ce fichier pour une raison quelconque, il crée un fichier de remplacement nommé `~/`$XDG_CACHE_HOME`/gdm/session.log..XXXXXXXX` où `XXXXXX` correspond à des caractères aléatoires.

### Changement rapide d'utilisateur

GDM permet à plusieurs utilisateurs d'être connectés en même temps. Après qu'un utilisateur s'est connecté, d'autres utilisateurs peuvent se connecter grâce à l'Outil de changement d'utilisateur dans le tableau de bord de GNOME, ou avec le bouton « Changer d'utilisateur » dans la fenêtre de verrouillage de l'économiseur d'écran de GNOME. On peut ainsi passer d'une session à l'autre par ce même moyen. Notez que certaines distributions n'ajoutent pas toujours par défaut l'Outil de changement d'utilisateur dans le tableau de bord. Il peut être ajouté à l'aide du menu contextuel du tableau de bord.

Notez que cette fonction est disponible sur les systèmes qui prennent en charge les terminaux virtuels. Cette fonction n'est pas disponible si les terminaux virtuels ne le sont pas.

## Sécurité

### Utilisateur et groupe GDM

Pour des raisons de sécurité, il est recommandé d'utiliser un identifiant d'utilisateur et de groupe dédié pour un fonctionnement correct. Cet utilisateur et ce groupe sont sur la plupart des systèmes « gdm », mais peuvent être configurés comme n'importe quel utilisateur ou groupe. Tous les programmes d'interface graphique de GDM sont lancés par cet utilisateur, afin que les programmes qui interagissent avec l'utilisateur s'exécutent dans un environnement protégé. Cet utilisateur et ce groupe doivent avoir des privilèges restreints.

Le seul privilège spécial nécessaire pour l'utilisateur « gdm » est l'autorisation de lire et d'écrire des fichiers Xauth dans le répertoire `<var>/run/gdm`. Le répertoire `<var>/run/gdm` doit être la propriété de root:gdm avec les permissions 1777.

Vous ne devez en aucun cas configurer l'utilisateur/groupe GDM comme un utilisateur auquel un autre utilisateur puisse en obtenir facilement l'accès, tel que `nobody`. Tout utilisateur qui obtient l'accès à une clé Xauth peut explorer et contrôler les programmes de l'interface graphique de la session associée ou exécuter un attaque par déni de service sur la session. Il est important de s'assurer que le système est configuré correctement pour que seul l'utilisateur « gdm » ait accès à ces fichiers et qu'il ne soit pas facile de se connecter en utilisant ce compte. Par exemple, le compte devrait être configuré sans mot de passe et sans autoriser les utilisateurs non root à se connecter au compte.

La configuration de la bannière d'accueil de GDM est stockée dans GConf. Pour permettre à l'utilisateur GDM d'écrire la configuration, il est nécessaire qu'il ait un répertoire $HOME accessible en écriture. Il est possible de configurer GConf par défaut pour éviter d'avoir à fournir un répertoire $HOME accessible en écriture à l'utilisateur « gdm ». Cependant, certaines fonctions de GDM peuvent être désactivées s'il ne lui est pas possible d'écrire des informations d'état dans la configuration GConf.

### PAM

GDM utilise PAM pour authentifier la connexion. PAM signifie Pluggable Authentication Module (Module d'authentification enfichable) et est utilisé par la plupart des programmes qui demandent une authentification sur votre ordinateur. Il permet à l'administrateur de configurer différents types d'authentification pour différents programmes de connexion (tels que ssh, interface graphique de connexion, économiseur d'écran, etc).

PAM est compliqué et hautement configurable ; cette documentation n'a pas pour but d'expliquer cela en détails. Le but ici est de donner un aperçu de la façon dont la configuration de PAM se rapporte à GDM, comment PAM est configuré couramment avec GDM, ainsi que les problèmes connus. Il est nécessaire pour une personne qui doit effectuer une configuration de PAM de lire plus en détails la documentation de PAM afin de comprendre comment configurer PAM ainsi que les termes utilisés dans cette section.

La configuration de PAM se fait par différentes interfaces, en général similaires, selon les systèmes d'exploitation ; consultez la page de manuel de pam.d ou de pam.conf pour plus de détails. Prenez soin de lire la documentation de PAM et soyez bien conscients des implications de sécurité induites par les modifications de votre configuration.

Il est à noter que par défaut, GDM utilise le nom de service PAM « gdm » pour une connexion normale et le nom de service PAM « gdm-autologin » pour une connexion automatique. Ces services ne sont peut-être pas définis dans votre pam.d ou dans le fichier de configuration pam.conf. S'il n'y a pas d'entrée, GDM utilise le fonctionnement par défaut de PAM. Sur la plupart des systèmes cela fonctionne bien. Cependant, la fonction de connexion automatique peut ne pas fonctionner si le service gdm-autologin n'est pas défini.

Le script `PostLogin` est lancé avant l'appel de pam_open_session et le script `PreSession` est appelé après. Cela permet à l'administrateur système d'ajouter des scripts de connexion soit avant ou après que PAM initialise la session.

Si vous souhaitez faire fonctionner GDM avec d'autres types de mécanismes d'authentification (comme par ex. un lecteur d'empreintes digitales ou de carte à puce), il vous faut alors implémenter cela en créant un module de service PAM pour ce type d'authentification, plutôt qu'en essayant de modifier directement le code de GDM. Référez-vous à la documentation de PAM sur votre système. Cette question a été fréquemment abordée sur la liste de diffusion

    gdm-list@gnome.org

, vous pouvez donc vous référer aux archives de la liste pour plus d'informations.

PAM comporte quelques limitations dans le cas où il doit fonctionner avec plusieurs types d'authentification en même temps, comme prendre en charge soit une carte à puce soit un identifiant et mot de passe dans le programme de connexion. Il existe des techniques pour parvenir à le faire fonctionner, et il convient de rechercher comment ce problème est généralement résolu lorsque l'on configure une configuration de ce type.

Si la connexion automatique ne fonctionne pas sur un système, vérifiez si la pile « gdm-autologin » PAM est définie dans la configuration de PAM. Pour que cela fonctionne, il est nécessaire d'utiliser un module PAM qui ne fait simplement pas d'authentification ou qui retourne simplement PAM_SUCCESS de toutes ses interfaces publiques. Si l'on suppose que le système a bien le module PAM pam_allow.so qui gère cela, une configuration PAM pour activer le « gdm-autologin » ressemble à ce qui suit :

           gdm-autologin auth  required    pam_unix_cred.so.1
           gdm-autologin auth  sufficient  pam_allow.so.1
           gdm-autologin account  sufficient  pam_allow.so.1
           gdm-autologin session  sufficient  pam_allow.so.1
           gdm-autologin password  sufficient  pam_allow.so.1

La configuration ci-dessus ne produit aucune journalisation dans lastlog. Si vous souhaitez une telle journalisation, utilisez la configuration suivante pour l'élément session :

           gdm-autologin session required pam_unix_session.so.1

Si l'ordinateur est utilisé par plusieurs personnes, un cas où la connexion automatique n'est pas appropriée, il peut être souhaitable de laisser certains utilisateurs se connecter sans mot de passe. Cette fonctionnalité peut être activée individuellement pour chaque utilisateur dans l'outil de gestion des utilisateurs de GNOME (users-admin de gnome-system-tools). Il s'agit alors de vérifier que l'utilisateur est membre d'un groupe Unix nommé « nopasswdlogin » avant la demande d'un mot de passe. Pour que cela fonctionne, le fichier de configuration PAM du service « gdm » doit inclure une ligne telle que :

          gdm auth  sufficient  pam_succeed_if.so  user ingroup nopasswdlogin

### utmp et wtmp

GDM génère des éléments utmp et wtmp dans la base de données de suivi des utilisateurs lors de la connexion et déconnexion de sessions. La base de données utmp contient des informations concernant le suivi et l'accès des utilisateurs ; ces informations sont utilisées par des commandes telles que `finger`, `last`, `login` et `who`. La base de données wtmp contient l'historique des informations de suivi et d'accès des utilisateurs de la base de données utmp. Référez-vous aux pages de manuel de utmp et wtmp pour plus d'informations.

### Processus d'authentification du serveur X

Les fichiers d'autorisation du serveur X sont stockées au démarrage dans un nouveau sous-répertoire de `<var>/run/gdm`. Ces fichiers sont utilisés pour stocker et partager un « mot de passe » utilisé entre les clients X et le serveur X. Ce « mot de passe » est unique pour chaque session connectée, de façon à ce qu'aucun utilisateur ne puisse espionner la session des autres.

GDM ne prend en charge que le processus d'authentification du serveur X MIT-MAGIC-COOKIE-1. Normalement, les autres processus n'apportent pas grand chose et jusqu'à présent, aucun effort n'a été fait pour les implémenter. Soyez extrêmement prudent lors de l'utilisation de XDMCP, car le cookie d'authentification du serveur X passe en texte clair sur le réseau. Si un pirate peut renifler le trafic réseau, il pourra simplement intercepter votre mot de passe d'authentification lors de la connexion, quel que soit le processus d'authentification utilisé. Lorsque vous ne pouvez pas faire confiance au trafic réseau, vous devriez alors utiliser SSH au lieu de XDMCP, pour faire transiter la connexion X par un tunnel. On peut comparer XDMCP à une sorte de Telnet graphique, avec les mêmes problèmes de sécurité. Dans la plupart des cas, ssh -Y doit être préféré aux fonctionnalités XDMCP de GDM.

### Sécurité XDMCP

Même si votre affichage est protégé par des cookies, XEvents et donc aussi les frappes au clavier lors de la saisie des mots de passe transitent toujours sur le réseau en texte clair. Il est trivial de les capturer.

XDMCP est surtout utile pour mettre en place des clients légers, par exemple dans une salle de terminaux. Ces clients légers n'auront besoin du réseau que pour accéder au serveur, il semble donc que la meilleure politique de sécurité dans ce cas est de séparer ce réseau du monde externe et de le réserver à l'accès au serveur. Le seul point à partir duquel vous avez besoin d'accéder à l'extérieur est le serveur. Ce type de configuration ne doit jamais utiliser un hub non administrable ou un autre type de réseau reniflable.

### Contrôle d'accès XDMCP

Le contrôle d'accès XDMCP est réalisé par TCP wrappers. Il est possible que GDM soit compilé sans la prise en charge de TCP wrapper, il se peut donc que cette fonctionnalité ne soit pas prise en charge par certains systèmes d'exploitation.

Vous devriez utiliser le nom de service `gdm` dans les fichiers `<etc>/hosts.allow` et `<etc>/hosts.deny`. Par exemple, pour empêcher les ordinateurs de `.danger.domaine` de se connecter, ajoutez

    gdm: .danger.domaine

à `<etc>/hosts.deny`. Il se peut que vous deviez aussi ajouter

    gdm: .votre.domaine

à `<etc>/hosts.allow`, dans le cas habituel où vous refusez tous les services de tous les hôtes. Consultez la page de manuel de hosts.allow(5) pour les détails.

### Sécurité du pare-feu

Même si GDM essaie de déjouer les plans d'attaques potentiels sur le protocole XDMCP, il est tout de même conseillé de bloquer le port XDMCP (normalement le port UDP 177) sur votre pare-feu dans le cas où vous n'en avez pas réellement besoin. GDM se protège des attaques par déni de service (DoS), mais le protocole X est tout de même non sécurisé en lui-même et ne devrait être utilisé que dans un environnement maîtrisé. De plus, chaque connexion distante consomme beaucoup de ressources, ce qui rend les attaques par déni de service plus simples par XDMCP que sur un serveur Web.

Il est également sage de bloquer tous les ports du serveur X sur votre pare-feu. Cela correspond aux ports TCP 6000 + (un pour chaque numéro d'affichage). Il est à relever que GDM utilise des numéros d'affichage à partir de 20 pour les serveurs flexibles sur demande.

X n'est pas un protocole très sûr à utiliser sur Internet, et XDMCP l'est encore moins.

### PolicyKit

GDM peut être configuré pour utiliser PolicyKit et permettre à l'administrateur système de contrôler si l'écran de connexion fournit les boutons d'extinction et de redémarrage sur l'écran d'accueil.

Ces boutons sont respectivement contrôlés par les actions `org.freedesktop.consolekit.system.stop-multiple-users` et `org.freedesktop.consolekit.system.restart-multiple-users`. Les règles pour ces actions peuvent être configurées avec l'outil polkit-gnome-authorization ou le programme en ligne de commande polkit-auth.

### RBAC (Contrôle d'accès basé sur les rôles)

GDM peut être configuré pour utiliser RBAC au lieu de Policykit. Dans ce cas, la configuration RBAC est utilisée pour contrôler si l'écran de connexion fournit les boutons d'extinction et de redémarrage sur l'écran d'accueil.

Par exemple, avec Oracle Solaris, on utilise l'autorisation de « solaris.system.shutdown » pour cette gestion. Modifiez simplement le fichier `/etc/user_attr` pour que l'utilisateur « gdm » dispose de cette autorisation.

## Prise en charge de ConsoleKit

GDM contient la prise en charge de la publication des informations de connexion des utilisateurs au moyen de l'infrastructure de comptabilisation des sessions et des utilisateurs, connue sous le nom de ConsoleKit. ConsoleKit est capable de conserver la trace de tous les utilisateurs connectés. Il peut donc être considéré comme un remplacement des fichiers utmp et utmpx disponibles dans la plupart des systèmes d'exploitation de type Unix.

Lorsque GDM est sur le point de créer un nouveau processus de connexion pour un utilisateur, il appelle une méthode privilégiée de ConsoleKit dans le but d'ouvrir une nouvelle session pour cet utilisateur. À cet instant, GDM fournit aussi à ConsoleKit des informations au sujet de cette session : l'identifiant de l'utilisateur, le nom d'affichage X11 qui sera associé à la session, le nom d'hôte de provenance de la session (utile dans le cas d'un session XDMCP), si la session est liée, etc. En tant qu'entité à l'origine du processus utilisateur, GDM est dans une position unique pour la connaissance de la session utilisateur et pour fournir de manière sûre ces éléments d'information. L'utilisation de cette méthode privilégiée est limitée par le respect de la politique de sécurité du bus de messages système D-Bus.

Dans le cas où un utilisateur a une session existante et s'authentifie par GDM pour demander la reprise de cette session, GDM appelle une méthode privilégiée de ConsoleKit pour déverrouiller la session. Les détails précis de ce qui se passe lorsque la session reçoit ce signal de déverrouillage ne sont pas définis et sont spécifiques à la session. Cependant, la plupart des sessions répondent en déverrouillant un économiseur d'écran.

Lorsque l'utilisateur choisit de fermer sa session ou si GDM ou la session se ferme de manière inattendue, la session utilisateur ne sera plus référencée par ConsoleKit.

## Configuration

GDM dispose de plusieurs interfaces de configuration. Elles comprennent les points d'intégration de scripts, la configuration du service, la configuration de la bannière d'accueil, les paramètres généraux de session, l'intégration avec la configuration de gnome-settings-daemon et la configuration de la session. Ces types d'intégration sont décrits en détails ci-après.

### Points d'intégration de scripts

Les points d'intégration de scripts GDM se trouvent dans le répertoire `<etc>/gdm/` :

    Xsession
    Init/
    PostLogin/
    PreSession/
    PostSession/

Les scripts `Init`, `PostLogin`, `PreSession` et `PostSession` fonctionnent comme décrit ci-dessous.

Pour chaque type de script, le script lancé par défaut est appelé « Default » ; il est stocké dans le répertoire associé au type de script. Ainsi, le script `Init` par défaut est `<etc>/gdm/Init/Default`. Un script par affichage peut être fourni, et s'il existe il est lancé à la place de celui par défaut. Ces scripts sont stockés dans le même répertoire que le script par défaut et ont le même nom que la valeur DISPLAY de Xserver pour cet affichage. Par exemple, si le script `<Init>/:0` existe, il se lance pour DISPLAY « :0 ».

Tous ces scripts sont exécutés avec les privilèges de root et renvoient 0 si l'exécution est réussie ou un code non nul dans le cas d'une erreur qui doit interrompre le processus de connexion de la session. Notez aussi que GDM se bloque jusqu'à la fin de l'exécution des scripts, donc si un script se bloque, cela bloque aussi le processus de connexion.

Lorsque le serveur X de l'écran de connexion démarre sans erreur, mais avant qu'il ne s'affiche, GDM lance le script `Init`. Ce script est utile pour lancer des programmes qui doivent fonctionner alors que l'écran de connexion s'affiche, ou si une initialisation particulière est nécessaire.

Après l'authentification sans erreur de l'utilisateur, GDM lance le script `PostLogin`. Cela s'effectue avant que la configuration de la session se fasse, également avant l'appel à pam_open_session. Ce script est utile pour effectuer toute initialisation de la session qui doit être faite avant qu'elle ne démarre. Par exemple, configurer le répertoire $HOME de l'utilisateur si nécessaire.

Après l'initialisation de la session de l'utilisateur, GDM lance le script `PreSession`. Ce script est utile pour effectuer toute initialisation de la session qui doit intervenir après le démarrage de la session. Cela peut être utilisé pour la gestion de session ou pour la comptabilité.

Quand un utilisateur termine sa session, GDM lance le script `PostSession`. Notez que le serveur X est aussi stoppé lorsque le script est lancé et qu'il ne doit donc pas être consulté.

Il faut savoir que le script `PostSession` est exécuté même lorsque l'affichage ne répond plus suite à une erreur d'entrée/sortie ou autre. Il n'existe donc aucune garantie que les applications X fonctionnent durant l'exécution de ce script.

Tous les scripts décrits ci-dessus définissent la variable d'environnement `$RUNNING_UNDER_GDM` à `yes`. Si ces scripts sont aussi partagés avec d'autres gestionnaires d'affichage, cela vous permet d'identifier quand GDM appelle ces scripts, vous pouvez donc exécuter du code spécifique quand GDM est utilisé.

### Configuration du démarrage automatique

Le répertoire `<share>/gdm/autostart/LoginWindow` contient les fichiers dans le format défini par la spécification « FreeDesktop.org Desktop Application Autostart ». Des fonctions standard de la spécification peuvent être utilisées pour indiquer les programmes qui doivent redémarrer automatiquement ou ceux qui doivent être lancés seulement si une valeur dans la configuration GConf est définie, etc.

Tout fichier `.desktop` dans ce répertoire provoque le lancement automatiquement du programme associé en même temps que la bannière d'accueil. Par défaut, GDM est livré avec des fichiers qui lancent automatiquement la bannière d'accueil de l'écran de connexion gdm-simple-greeter, l'application gnome-power-manager, le service gnome-settings-daemon et le gestionnaire de fenêtres metacity. Ces programmes sont nécessaires au fonctionnement de la bannière GDM. Par ailleurs, des fichiers desktop sont fournis pour lancer différents outils d'accessibilité si les valeurs indiquées dans la section Configuration d'accessibilité ci-après sont définies.

### Script Xsession

Il existe aussi un script `Xsession` se trouvant dans `<etc>/gdm/Xsession` qui est appelé entre les scripts `PreSession` et `PostSession`. Il ne prend pas en charge les variantes par affichage comme les autres scripts. Il est utilisé pour lancer réellement la session de l'utilisateur. Il est lancé en tant que l'utilisateur, et il lance la session telle qu'elle est définie par le fichier de session Desktop que l'utilisateur a choisi de lancer.

### Configuration du service

Le service GDM est configuré à l'aide du fichier `<etc>/gdm/custom.conf`. Les valeurs par défaut sont stockées dans GConf dans le fichier `gdm.schemas`. Il est recommandé que les utilisateurs finaux modifient le fichier `<etc>/gdm/custom.conf` car le fichier de schémas peut être écrasé quand les utilisateurs mettent à jour leur système pour avoir une nouvelle version de GDM.

Notez que les versions précédentes de GDM prenaient en charge des options de configuration supplémentaires qui ne sont plus disponibles dans les versions récentes de GDM.

le fichier `<etc>/gdm/custom.conf` est en format `keyfile`. Les mots-clés entre crochets délimitent les sections de groupe, les chaînes de caractères avant le signe (=) sont les clés et les données après le signe égal représentent leurs valeurs. Les lignes vides ou celles commençant par le signe dièse (#) sont ignorées.

Le fichier `<etc>/gdm/custom.conf` prend en charge les sections « [daemon] », « [security] » et « [xdmcp] ». Chacun des groupes comprend des paires clé/valeur particulières qui sont définies pour modifier le fonctionnement de GDM. Par exemple, pour activer la connexion différée pour un utilisateur appelé « you », il faut modifier le fichier pour qu'il contienne les lignes suivantes :

    [daemon]
    TimedLoginEnable=true
    TimedLogin=you

Voici la liste complète des clés de configuration prises en charge :

#### [chooser]

Multicast

-     Multicast=false

  Si défini à « true » (vrai) et que IPv6 est actif, le sélecteur envoie une requête en multidiffusion (multicast) sur le réseau local et répertorie les réponses des hôtes ayant rejoint le groupe multidiffusion.

MulticastAddr

-     MulticastAddr=ff02::1

  C'est l'adresse de multidiffusion de lien local.

#### [daemon]

TimedLoginEnable

-     TimedLoginEnable=false

  Indique si l'utilisateur spécifié par `TimedLogin` doit être automatiquement connecté après un certain nombre de secondes (défini par `TimedLoginDelay`) d'inactivité à l'écran de connexion. C'est utile pour des terminaux à accès public, ou même pour une utilisation privée. Si l'utilisateur emploie le clavier ou parcourt les menus, le délai est réinitialisé à la valeur la plus élevée entre `TimedLoginDelay` et 30 secondes. Si l'utilisateur ne saisit aucun nom et qu'il appuie sur la touche Entrée alors que le programme de connexion demande un nom d'utilisateur, GDM interprète cela comme le souhait de se connecter immédiatement en utilisant l'utilisateur différé. Notez qu'aucun mot de passe n'est exigé pour cet utilisateur. Il faut donc rester prudent, même si avec PAM, il est possible de configurer la demande du mot de passe avant d'autoriser la connexion. Référez-vous à la section « Sécurité->PAM » de ce manuel pour plus d'informations ou pour obtenir de l'aide si cette fonction ne semble pas fonctionner.

TimedLogin

-     TimedLogin=

  L'utilisateur qui doit être connecté après un nombre défini de secondes d'inactivité.

  Si la valeur se termine par une barre verticale « | », GDM exécute le programme indiqué et considère la valeur retournée sur la sortie standard comme le nom d'utilisateur. Le programme est exécuté avec la variable d'environnement DISPLAY définie, il est donc possible d'indiquer l'utilisateur en fonction de l'affichage. Par exemple, si la valeur est « /usr/bin/getloginuser| », le programme « /usr/bin/getloginuser » est exécuté pour obtenir le nom d'utilisateur.

TimedLoginDelay

-     TimedLoginDelay=30

  Délai en secondes avant que l'utilisateur `TimedLogin` soit connecté.

AutomaticLoginEnable

-     AutomaticLoginEnable=false

  Si défini à « true » (vrai), l'utilisateur indiqué dans la clé `AutomaticLogin` doit être connecté immédiatement. Cette fonction est similaire à la connexion différée avec un délai de 0 seconde.

AutomaticLogin

-     AutomaticLogin=

  Le nom de l'utilisateur qui doit être connecté automatiquement si `AutomaticLoginEnable` est vrai.

  Si la valeur se termine par une barre verticale « | », GDM exécute le programme indiqué et considère la valeur retournée sur la sortie standard comme le nom d'utilisateur. Le programme est exécuté avec la variable d'environnement DISPLAY définie, il est donc possible d'indiquer l'utilisateur en fonction de l'affichage. Par exemple, si la valeur est « /usr/bin/getloginuser| », le programme « /usr/bin/getloginuser » est exécuté pour obtenir le nom d'utilisateur.

User

-     User=gdm

  Le nom d'utilisateur sous lequel la bannière d'accueil et les autres programmes GUI sont lancés. Référez-vous à la clé de configuration `Group` et à la section « Sécurité->Utilisateur et groupe GDM » de ce document pour plus d'informations.

Group

-     Group=gdm

  Le nom du groupe sous lequel la bannière d'accueil et les autres programmes graphiques sont lancés. Référez-vous à la clé de configuration `User` et à la section « Sécurité->Utilisateur et groupe GDM » de ce document pour plus d'informations.

#### Options de débogage

#### [debug]

Enable

-     Enable=false

  Pour activer le débogage, configurez la clé debug/Enable à « true » dans le fichier `<etc>/gdm/custom.conf` et redémarrez GDM. La sortie de débogage est alors envoyée dans le fichier journal du système (`<var>/log/messages` ou `<var>/adm/messages` en fonction du système d'exploitation).

#### Options de la bannière d'accueil

#### [greeter]

IncludeAll

-     IncludeAll=true

  Si vrai, le navigateur de figures affiche tous les utilisateurs de l'ordinateur local. Si faux, le navigateur de figures n'affiche que les utilisateurs qui se sont connectés récemment.

  Lorsque cette clé est définie à « true », GDM appelle fgetpwent() pour obtenir une liste des utilisateurs locaux. Tous les utilisateurs dont l'ID d'utilisateur est inférieur à 500 (ou 100 si vous utilisez Oracle Solaris) sont exclus. Le navigateur de figures va aussi afficher tout utilisateur qui s'est déjà connecté sur le système (par exemple des utilisateurs NIS ou LDAP). Il obtient cette liste en faisant appel à l'interface `ck-history` de ConsoleKit. Il exclut également tout utilisateur qui ne possède pas de shell valide (les shells valides sont ceux qui sont obtenus par getusershell(), à l'exception de /sbin/nologin et /bin/false qui sont toujours considérés comme non valides).

  Si défini à « false », GDM affiche simplement tous les utilisateurs qui se sont connectés au moins une fois sur le système (utilisateurs locaux ou NIS/LDAP) en faisant appel à l'interface `ck-history` de ConsoleKit.

Include

-     Include=

  Définit une liste d'utilisateurs qui apparaissent toujours dans le navigateur de figures. Cette valeur est définie par une liste d'utilisateurs séparés par des virgules. Par défaut, cette valeur est vide.

Exclude

-     Exclude=bin,root,daemon,adm,lp,sync,shutdown,halt,mail,news,uucp,operator,nobody,nobody4,noaccess,postgres,pvm,rpm,nfsnobody,pcap

  Définit une liste d'utilisateurs qui sont toujours exclus du navigateur de figures. Cette valeur est définie par une liste d'utilisateurs séparés par des virgules. Notez que le paramètre dans `custom.conf` remplace la valeur par défaut, donc si vous souhaitez ajouter de nouveaux utilisateurs dans la liste, vous devez alors reprendre la valeur par défaut et y ajouter les utilisateurs supplémentaires.

#### Options de sécurité

#### [security]

DisallowTCP

-     DisallowTCP=true

  Si défini à « true » (vrai), le paramètre `-nolisten tcp` est toujours transmis sur la ligne de commande lors du démarrage de serveurs X liés, ce qui interdit les connexions TCP. Cela permet de sécuriser la configuration, lorsque les connexions distantes ne sont pas utilisées.

#### Prise en charge de XDMCP

#### [xdmcp]

DisplaysPerHost

-     DisplaysPerHost=1

  Pour empêcher des attaquants de remplir la file d'attente, GDM n'accepte qu'une seule connexion par ordinateur distant. Si vous souhaitez offrir des services d'affichage à des ordinateurs ayant plus d'un écran, vous devez augmenter cette valeur en conséquence.

  Il faut relever que le nombre autorisé d'affichages liés est illimité. Seules les connexions distantes par XDMCP sont limitées par cette option de configuration.

Enable

-     Enable=false

  La définition de cette option à « true » (vrai) active la prise en charge de XDMCP pour permettre à des terminaux X ou des affichages distants d'être gérés par GDM.

  `gdm` écoute les requêtes sur le port UDP 177. Consultez l'option Port pour plus d'informations.

  Si GDM est compilé pour le prendre en charge, l'accès à partir d'affichages distants peut être contrôlé par la bibliothèque TCP Wrappers. Le nom de service est `gdm`.

  Vous devez alors ajouter

      gdm: .mon.domaine

  à votre fichier `<etc>/hosts.allow`, selon votre configuration de TCP Wrappers. Consultez la page de manuel hosts.allow pour plus de détails.

  Il faut relever que XDMCP n'est pas un protocole particulièrement sécurisé, et qu'il est conseillé de bloquer le port UDP 177 sur votre pare-feu si vous n'en avez pas vraiment besoin.

HonorIndirect

-     HonorIndirect=true

  Active le choix XDMCP INDIRECT (c'est-à-dire l'exécution distante de `gdmchooser`) pour les terminaux X qui ne fournissent pas leur propre navigateur d'affichage.

MaxPending

-     MaxPending=4

  Pour éviter les attaques par déni de service, GDM dispose d'une file d'attente de connexions limitée. Seuls MaxPending affichages peuvent démarrer simultanément.

  Notez que ce paramètre ne limite pas le nombre d'affichages distants qui sont gérés. Il limite seulement le nombre d'affichages lançant simultanément une connexion.

MaxSessions

-     MaxSessions=16

  Détermine le nombre maximal de connexions d'affichages distants gérées simultanément. Cela correspond donc au nombre total d'affichages distants utilisables par l'hôte.

MaxWait

-     MaxWait=30

  Lorsque GDM est prêt à gérer un affichage, un paquet ACCEPT lui est envoyé avec un identifiant de session unique qui sera utilisé dans les échanges XDMCP subséquents.

  GDM place ensuite l'identifiant de session dans la file d'attente, en attendant que l'affichage réponde par une requête MANAGE.

  Si aucune réponse n'arrive dans l'intervalle en secondes défini par MaxWait, GDM considère l'affichage comme mort et l'efface de la file d'attente, libérant la place pour d'autres affichages.

MaxWaitIndirect

-     MaxWaitIndirect=30

  Le paramètre MaxWaitIndirect détermine le nombre maximal de secondes entre le moment où un utilisateur choisit un hôte et la requête indirecte correspondant à la connexion de l'utilisateur à l'hôte. Si ce délai est dépassé, l'information à propos de l'hôte choisi est oubliée et la place est libérée pour une autre demande d'affichage indirect. Il se peut que cette information soit oubliée plus rapidement s'il y a davantage d'hôtes essayant d'envoyer des requêtes indirectes que le nombre défini dans `MaxPendingIndirect`.

PingIntervalSeconds

-     PingIntervalSeconds=60

  Si le serveur X ne répond pas dans l'intervalle spécifié de temps en secondes alors la connexion est interrompue et la session se termine. Lorsque cela se produit, le démon esclave s'arrête avec un signal ALARM. Notez que GDM 2.20 et les versions précédentes doublent ce paramètre, il peut donc être nécessaire d'augmenter le délai en cas de mise à niveau vers une nouvelle version.

  Signalons que dans le passé, GDM avait une clé de configuration `PingInterval` qui était aussi définie en minutes. Dans bien des cas, il est souhaitable de définir une valeur en-dessous de la minute, car dans la plupart des utilisations de XDMCP (comme dans des salles de terminaux), des délais de réponse supérieurs à une quinzaine de secondes signifie vraiment que le terminal a été éteint ou redémarré, et il est préférable de terminer la session.

Port

-     Port=177

  Le numéro de port UDP que `gdm` doit écouter pour les requêtes XDMCP. Ne changez ce paramètre que si vous savez bien ce que vous faites.

Willing

-     Willing=<etc>/gdm/Xwilling

  Lorsque le système renvoie un paquet WILLING après une requête (QUERY), il envoie une chaîne de caractères informant sur l'état actuel de ce serveur. Le message par défaut est l'identifiant système, mais il est possible de créer un script qui génère un message personnalisé. Si ce script n'existe pas ou que cette clé est vide, c'est le message par défaut qui est envoyé. Si ce script réussit à produire un résultat, la première ligne du résultat est envoyée (et seulement la première ligne). Il s'exécute au maximum une fois toutes les 3 secondes pour empêcher de possibles attaques par déni de service qui submergeraient la machine de paquets QUERY.

### Configuration de la bannière d'accueil simple

La bannière d'accueil par défaut de GDM s'appelle la bannière d'accueil simple et se configure avec GConf. Les valeurs par défaut sont stockées dans GConf dans le fichier `gdm-simple-greeter.schemas`. Ces valeurs par défaut peuvent être surchargées si l'utilisateur « gdm » possède un répertoire $HOME inscriptible pour sauvegarder les paramètres GConf. Ces valeurs peuvent être modifiées à l'aide des programmes `gconftool-2` ou `gconf-editor`. Les options de configuration suivantes sont prises en charge :

### Clés de configuration de la bannière d'accueil

/apps/gdm/simple-greeter/banner_message_enable

-     false (faux, booléen)

  Contrôle si le texte du message de la bannière doit être affiché.

/apps/gdm/simple-greeter/banner_message_text

-     NULL (chaîne)

  Définit le texte du message de la bannière à afficher sur la fenêtre d'accueil.

/apps/gdm/simple-greeter/disable_restart_buttons

-     false (faux, booléen)

  Contrôle si les boutons de redémarrage doivent être affichés dans la fenêtre de connexion.

/apps/gdm/simple-greeter/disable_user_list

-     false (faux, booléen)

  Si vrai, le navigateur de figures avec les utilisateurs connus n'est pas affiché dans la fenêtre de connexion.

/apps/gdm/simple-greeter/logo_icon_name

-     computer (chaîne)

  Définit le nom d'un thème d'icônes à utiliser pour le logo de la bannière d'accueil.

/apps/gdm/simple-greeter/recent-languages

-     [] (liste de chaînes)

  Définit une liste de langues à afficher par défaut dans la fenêtre de connexion. La valeur par défaut est « [] ». Avec la valeur par défaut, seule la langue par défaut du système est affichée ainsi que l'option « Autre » qui ouvre une boîte de dialogue affichant la liste complète des langues disponibles au choix de l'utilisateur.

  Les utilisateurs ne sont pas censés changer ce paramètre manuellement. GDM conserve lui-même le suivi de toute langue sélectionnée dans cette clé de configuration ; il affiche ces langues dans la liste déroulante des langues avec le choix « Autre ». Cela facilite la sélection des langues fréquemment sélectionnées.

/apps/gdm/simple-greeter/recent-layouts

-     [] (liste de chaînes)

  Définit une liste d'agencements de clavier à afficher par défaut dans la fenêtre de connexion. La valeur par défaut est « [] ». Avec la valeur par défaut, seul l'agencement de clavier par défaut du système est affiché, ainsi que l'option « Autre » qui ouvre une boîte de dialogue affichant la liste complète des agencements de clavier au choix de l'utilisateur.

  Les utilisateurs ne sont pas censés changer ce paramètre manuellement. GDM conserve lui-même la trace de tout agencement de clavier sélectionné dans cette clé de configuration ; il affiche ces agencements dans la liste déroulante avec le choix « Autre ». De cette façon, les agencements de clavier fréquemment sélectionnés sont plus facilement disponibles.

/apps/gdm/simple-greeter/wm_use_compiz

-     false (faux, booléen)

  Contrôle si Compiz est utilisé comme gestionnaire de fenêtres au lieu de Metacity.

### Configuration de l'accessibilité

Cette section décrit les options de configuration de l'accessibilité disponibles dans GDM.

#### Dialogue d'accessibilité GDM et clés GConf

Le panneau d'accueil GDM sur l'écran de connexion affiche une icône d'accessibilité. Un clic sur cette icône ouvre la boîte de dialogue d'accessibilité GDM. Dans cette boîte de dialogue figure une liste de cases à cocher permettant d'activer ou de désactiver les outils d'accessibilité correspondants.

Les cases à cocher correspondant aux outils d'accessibilité clavier visuel, loupe d'écran et lecteur d'écran agissent sur les trois clés GConf qui sont décrites dans la section suivante de ce document. En activant ou désactivant ces cases à cocher, la clé GConf associée est mise à « true » (vrai) ou « false » (faux). Quand la valeur de la clé est « true », l'outil d'accessibilité lié à cette clé GConf est lancé. Quand la valeur de la clé est « false », tous les outils d'accessibilité liés à cette clé sont arrêtés. Ces clés GConf ne sont pas automatiquement réinitialisées à un état par défaut après la connexion de l'utilisateur. Par conséquent, les outils d'accessibilité qui fonctionnaient durant la précédente session GDM seront automatiquement lancés lors de la prochaine session de connexion GDM.

Les autres cases à cocher dans la boîte de dialogue d'accessibilité de GDM n'ont pas de correspondance avec des clés GConf car aucun programme supplémentaire n'est démarré pour fournir les fonctions d'accessibilité qu'elles offrent. Ces autres options correspondent à des fonctions d'accessibilité qui sont fournies par le serveur X, qui est toujours lancé pendant la session GDM.

#### Clés GConf sur l'accessibilité

GDM offre les clés GConf suivantes pour contrôler ses fonctions d'accessibilité :

#### Clés de configuration GDM

/desktop/gnome/interface/accessibility

-     false (faux, booléen)

  Contrôle si l'infrastructure d'accessibilité est lancée avec l'interface graphique de GDM. Ceci est nécessaire pour que la plupart des programmes d'accessibilité puissent fonctionner.

/desktop/gnome/applications/at/screen_magnifier_enabled

-     false (faux, booléen)

  Si activé, les outils d'accessibilité liés à cette clé GConf sont lancés avec le programme d'interface graphique GDM. Par défaut, c'est une application de loupe d'écran.

/desktop/gnome/applications/at/screen_keyboard_enabled

-     false (faux, booléen)

  Si activé, les outils d'accessibilité liés à cette clé GConf sont lancés avec le programme d'interface graphique GDM. Par défaut, c'est une application de clavier visuel.

/desktop/gnome/applications/at/screen_reader_enabled

-     false (faux, booléen)

  Si activé, les outils d'accessibilité liés à cette clé GConf sont lancés avec le programme d'interface graphique GDM. Par défaut, c'est une application de lecteur d'écran.

#### Linking GConf Keys to Accessibility Tools

Pour les clés GConf « screen_magnifier_enabled », « screen_keyboard_enabled » et « screen_reader_enabled », l'outil d'accessibilité qui est lancé dépend des fichiers desktop situés dans le répertoire de démarrage automatique de GDM, tel que décrit dans la section « Configuration du démarrage automatique » de ce manuel. Tout fichier desktop dans le répertoire de démarrage automatique de GDM peut être lié à une de ces clés GConf en indiquant cette clé GConf dans la valeur AutostartCondition du fichier desktop. Par exemple, la ligne AutostartCondition peut être une des suivantes :

    AutostartCondition=GNOME /desktop/gnome/applications/at/screen_keyboard_enabled
    AutostartCondition=GNOME /desktop/gnome/applications/at/screen_magnifier_enabled
    AutostartCondition=GNOME /desktop/gnome/applications/at/screen_reader_enabled

Quand une clé d'accessibilité vaut « true », tous les programmes qui sont liés à cette clé dans un fichier desktop du démarrage automatique GDM seront lancés (sauf si la clé « Hidden » vaut « true » dans ce fichier desktop). Une seule clé GConf peut aussi démarrer plusieurs outils d'accessibilité si plusieurs fichiers desktop ont cette ligne « AutostartCondition » dans le répertoire de démarrage automatique de GDM.

#### Exemple de modification de la configuration d'un outil d'accessibilité

Par exemple, si GNOME est distribué avec GOK comme clavier visuel par défaut, ce dernier pourrait être remplacé par un autre programme, si désiré. Pour remplacer GOK par le clavier visuel « onboard » et de plus activer l'outil d'accessibilité « mousetweaks » pour le clic par maintien, la configuration suivante est nécessaire.

Créez un fichier desktop pour onboard et un autre pour mousetweaks, par exemple onboard.desktop et mousetweaks.desktop. Ces fichiers doivent être placés dans le répertoire de démarrage automatique GDM et être dans le format documenté dans la section « Configuration du démarrage automatique » de ce document.

Voici un exemple de fichier `onboard.desktop` :

    [Desktop Entry]
    Encoding=UTF-8
    Name=Clavier visuel Onboard
    Comment=Utiliser un clavier visuel
    TryExec=onboard
    Exec=onboard --size 500x180 -x 20 -y 10
    Terminal=false
    Type=Application
    StartupNotify=true
    Categories=GNOME;GTK;Accessibility;
    AutostartCondition=GNOME /desktop/gnome/applications/at/screen_keyboard_enabled

Voici un exemple de fichier `mousetweaks.desktop` :

    [Desktop Entry]
    Encoding=UTF-8
    Name=Clics de souris logiciels
    Comment=Effectue des clics en maintenant le curseur immobile
    TryExec=mousetweaks
    Exec=mousetweaks --enable-dwell -m window -c -x 20 -y 240
    Terminal=false
    Type=Application
    StartupNotify=true
    Categories=GNOME;GTK;Accessibility;
    AutostartCondition=GNOME /desktop/gnome/applications/at/screen_keyboard_enabled

Remarquez la ligne AutostartCondition qui lie les deux fichiers desktop à la clé GConf du clavier visuel.

Pour désactiver le démarrage de GOK, le fichier desktop du clavier visuel GOK doit être supprimé ou désactivé. Sinon, onboard et GOK seront lancés simultanément. Ceci peut être fait en supprimant le fichier gok.desktop du répertoire de démarrage automatique GDM ou en ajoutant la clé « Hidden=true » dans le fichier gok.desktop.

Après avoir effectué ces modifications, GOK ne sera plus démarré quand l'utilisateur active le clavier visuel dans la session GDM ; mais onboard et mousetweaks seront lancés à la place.

### Paramètres généraux de la session

La bannière d'accueil de GDM utilise en partie le même environnement que la session de bureau. Elle est de ce fait liée à plusieurs paramètres GConf identiques. Pour chacun de ces paramètres, la bannière d'accueil utilise la valeur par défaut sauf si elle est supplantée par a) une règle GDM obligatoire b) une règle système obligatoire. GDM installe ses propres règles obligatoires pour sécuriser certains paramètres.

### Service des paramètres GNOME

GDM active les greffons « gnome-settings-daemon » suivants : a11y-keyboard, background, sound, xsettings.

Ils sont responsables des aspects tels que l'image d'arrière-plan, les paramètres de police et du thème, les événements sonores, etc.

Les greffons peuvent aussi être désactivés à l'aide de GConf. Par exemple, si vous souhaitez désactiver le greffon du son, désactivez la clé suivante : `/apps/gdm/simple-greeter/settings-manager-plugins/sound/active`.

### Configuration de la session GDM

Les sessions GDM utilisent les spécifications d'entrée de bureau de FreeDesktop.org, qui sont référencées à l'adresse suivante : http://www.freedesktop.org/wiki/Specifications/desktop-entry-spec.

Par défaut, GDM installe les fichiers desktop dans le répertoire `<share>/xsessions`. GDM cherche les fichiers desktop dans les répertoires suivants et dans cet ordre : `<etc>/X11/sessions/`, `<dmconfdir>/Sessions`, `<share>/xsessions` et `<share>/gdm/BuiltInSessions`. Par défaut, `<dmconfdir>` est défini à `<etc>/dm/`, pour autant que GDM ne soit pas configuré pour utiliser un autre répertoire par l'option « --with-dmconfdir ».

Il est possible de désactiver une session en modifiant son fichier desktop et en ajoutant une ligne comme suit : `Hidden=true`.

Les fichiers desktop de GDM prennent en charge une extension spécifique à GDM, une clé nommée « X-GDM-BypassXsession ». Si la clé n'est pas spécifiée dans un fichier desktop, la valeur par défaut est définie comme « false ». Si cette clé est spécifiée comme « true » dans un fichier desktop, GDM lance le programme mentionné dans la clé « Exec » du fichier desktop dès qu'un utilisateur démarre une session. Le programme n'est pas lancé via le script `<etc>/gdm/Xsession`, qui est le comportement normal. Comme le fait d'ignorer le script `<etc>/gdm/Xsession` évite de configurer la session de l'utilisateur avec les paramètres habituels système et utilisateur, les sessions démarrées de cette façon peuvent être utiles pour investiguer les problèmes dans les scripts système ou utilisateur qui pourraient empêcher un utilisateur de démarrer une session.

### Configuration GDM de la session utilisateur et de la langue

La session par défaut et le choix de langue de l'utilisateur sont stockés dans le fichier `~/.dmrc`. Lorsqu'un utilisateur se connecte pour la première fois, ce fichier est créé avec ses choix initiaux. L'utilisateur peut simplement changer ces valeurs par défaut en les modifiant lors de la connexion. GDM mémorise ces changements pour les connexions suivantes.

Le fichier `~/.dmrc` est au format `INI` standard. Il contient une section nommée `[Desktop]` ayant deux clés : `Session` et `Language`.

La clé `Session` indique le nom de base du fichier de session `.desktop` que l'utilisateur souhaite normalement utiliser, sans l'extension `.desktop`. La clé `Language` indique la langue que l'utilisateur souhaite utiliser par défaut. Si l'une des clés est manquante, c'est la valeur par défaut du système qui est utilisée. Le fichier ressemble habituellement à ceci :

    [Desktop]
    Session=gnome
    Language=fr_FR.UTF-8

## Commandes GDM

### Commandes GDM pour l'administrateur (root)

Le paquet GDM fournit les commandes ci-après dans `sbindir`, à l'intention de l'administrateur (root) :

#### Options en ligne de commande de `gdm`

`gdm` is the main daemon which sets up graphical login environment and starts necessary helpers.

#### Options en ligne de commande de `gdm`

-?, --help

- Donne un bref aperçu des options en ligne de commande.

--fatal-warnings

- Tous les avertissements provoquent la fermeture de GDM.

--timed-exit

- Fermeture après 30 secondes. Utile pour le débogage.

--version

- Affiche la version du service GDM.

#### Options en ligne de commande de `gdm-restart`

`gdm-restart` arrête et redémarre GDM en envoyant un signal HUP au service GDM. Cette commande ferme immédiatement toutes les sessions et déconnecte les utilisateurs actuellement connectés avec GDM.

#### Options en ligne de commande de `gdm-safe-restart`

`gdm-safe-restart` arrête et redémarre GDM en envoyant un signal USR1 au service GDM. GDM sera redémarré dès que tous les utilisateurs se seront déconnectés.

#### Options en ligne de commande de `gdm-stop`

`gdm-stop` arrête GDM en envoyant un signal TERM au service GDM.

## Dépannage

Cette section présente des astuces pratiques pour faire fonctionner GDM. En général, si vous rencontrez des problèmes dans l'utilisation de GDM, vous pouvez soumettre une anomalie ou vous pouvez envoyer un courriel à la liste de diffusion gdm-list (anglophone). Les informations indiquant comment procéder se trouvent dans la section Introduction de ce document.

Si GDM ne fonctionne pas correctement, il est toujours utile de fournir des informations de débogage. Pour activer le débogage, définissez la clé debug/Enable à « true » dans le fichier `<etc>/gdm/custom.conf` et redémarrez GDM. Utilisez ensuite GDM jusqu'au point de panne ; la sortie de débogage est envoyée à votre journal système (`<var>/log/messages` ou `<var>/adm/messages` en fonction de votre système d'exploitation). Si vous partagez ce résultat avec la communauté GDM via un rapport d'anomalie ou un courriel, n'incluez que les informations relatives au débogage de GDM et non pas le fichier complet qui peut être très volumineux. Si vous ne trouvez pas de résultat GDM dans le journal système, vous devrez probablement configurer syslog (consultez la page de manuel syslog).

### GDM ne démarre pas

Il existe de nombreux problèmes qui peuvent empêcher le démarrage de GDM, mais dans cette section, nous abordons quelques problèmes courants et la manière de suivre attentivement un problème lors du démarrage de GDM. Certains problèmes génèrent un message d'erreur ou une boîte de dialogue de GDM lorsqu'il essaie de démarrer, mais lorsque ce n'est pas le cas, il est souvent difficile de trouver les causes d'un problème.

Tout d'abord, assurez-vous que le serveur X est correctement configuré. Le fichier de configuration de GDM contient une commande utilisée pour lancer le serveur X, dans la section [server-Standard]. Vérifiez que cette commande fonctionne sur votre système. Le lancement de cette commande à partir d'une console devrait démarrer le serveur X. Si cela échoue, le problème est probablement dû à la configuration du serveur X. Consultez le journal d'erreurs du serveur X pour obtenir des informations sur la cause possible du problème. Le problème pourrait aussi être dû au fait que le serveur X ait besoin d'options de ligne de commande différentes. Si c'est le cas, modifiez la commande du serveur X dans le fichier de configuration de GDM afin qu'il corresponde aux besoins de votre système.

Vérifiez aussi que le répertoire `/tmp` dispose d'un propriétaire convenable avec des permissions adéquates, et que le système de fichier de la machine n'est pas saturé. Ces problèmes empêchent GDM de démarrer.

## Licence

Ce programme est un logiciel libre ; vous pouvez le redistribuer et/ou le modifier conformément aux dispositions de la Licence Publique Générale GNU, telle que publiée par la Free Software Foundation ; version 2 de la licence, ou encore (à votre choix) toute version ultérieure.

Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE ; sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION À UN OBJET PARTICULIER. Pour plus de détails, voir la Licence Publique Générale GNU.

Un exemplaire de la Licence Publique Générale GNU est inclus en annexe du Guide d'utilisation du bureau GNOME. Vous pouvez également en obtenir un exemplaire en visitant le site Web de la Free Software Foundation ou en écrivant à

          Free Software Foundation, Inc.
          51 Franklin Street, Fifth Floor
          Boston, MA 02110-1301
          USA