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

0.0
01/2007

GDM est le gestionnaire de connexions de GNOME, une application graphique pour s'identifier

Martin
K.
Petersen

    mkp@mkp.net

George
Lebl

    jirka@5z.com

Brian
Cameron

    Brian.Cameron@Sun.COM

Bill
Haneman

    Bill.Haneman@Sun.COM

1998
1999
Martin K. Petersen
2001
2003
2004
George Lebl
2003
Red Hat, Inc.
2003
2004
Sun Microsystems Inc.
2006,2007
Jonathan Ernst (jonathan@ernstfamily.ch)
2007
Gabriel De Sa (gabriel.desa@gmail.com)
2007-2008
Claude Paroz (claude@2xlibre.net)

Permission vous est donnée de copier, distribuer et/ou modifier ce document selon les termes de la Licence GNU Free Documentation License, Version 1.1 ou ultérieure publiée par la Free Software Foundation sans section inaltérable, sans texte de première page de couverture ni texte de dernière page de couverture. Vous trouverez un exemplaire de cette licence en suivant ce lien ou dans le fichier COPYING-DOCS fourni avec le présent manuel.

Ce manuel fait partie de la collection de manuels GNOME distribués selon les termes de la licence de documentation libre GNU. Si vous souhaitez distribuer ce manuel indépendamment de la collection, vous devez joindre un exemplaire de la licence au document, comme indiqué dans la section 6 de celle-ci.

La plupart des noms utilisés par les entreprises pour distinguer leurs produits et services sont des marques déposées. Lorsque ces noms apparaissent dans la documentation GNOME et que les membres du projet de Documentation GNOME sont informés de l'existence de ces marques déposées, soit ces noms entiers, soit leur première lettre est en majuscule.

LE PRÉSENT DOCUMENT ET SES VERSIONS MODIFIÉES SONT FOURNIS SELON LES TERMES DE LA LICENCE DE DOCUMENTATION LIBRE GNU SACHANT QUE :

1. LE PRÉSENT DOCUMENT EST FOURNI « TEL QUEL », SANS AUCUNE GARANTIE, EXPRESSE OU IMPLICITE, Y COMPRIS, ET SANS LIMITATION, LES GARANTIES DE BONNE QUALITÉ MARCHANDE OU D'APTITUDE À UN EMPLOI PARTICULIER OU AUTORISÉ DU DOCUMENT OU DE SA VERSION MODIFIÉE. L'UTILISATEUR ASSUME TOUT RISQUE RELATIF À LA QUALITÉ, À LA PERTINENCE ET À LA PERFORMANCE DU DOCUMENT OU DE SA VERSION DE MISE À JOUR. SI LE DOCUMENT OU SA VERSION MODIFIÉE S'AVÉRAIT DÉFECTUEUSE, L'UTILISATEUR (ET NON LE RÉDACTEUR INITIAL, L'AUTEUR, NI TOUT AUTRE PARTICIPANT) ENDOSSERA LES COÛTS DE TOUTE INTERVENTION, RÉPARATION OU CORRECTION NÉCESSAIRE. CETTE DÉNÉGATION DE RESPONSABILITÉ CONSTITUE UNE PARTIE ESSENTIELLE DE CETTE LICENCE. AUCUNE UTILISATION DE CE DOCUMENT OU DE SA VERSION MODIFIÉE N'EST AUTORISÉE AUX TERMES DU PRÉSENT ACCORD, EXCEPTÉ SOUS CETTE DÉNÉGATION DE RESPONSABILITÉ ;

2. EN AUCUNE CIRCONSTANCE ET SOUS AUCUNE INTERPRÉTATION DE LA LOI, QU'IL S'AGISSE DE RESPONSABILITÉ CIVILE (Y COMPRIS LA NÉGLIGENCE), CONTRACTUELLE OU AUTRE, L'AUTEUR, LE RÉDACTEUR INITIAL, TOUT PARTICIPANT ET TOUT DISTRIBUTEUR DE CE DOCUMENTOU DE SA VERSION DE MISE À JOUR AINSI QUE TOUT FOURNISSEUR DE QUELQUE PARTIE QUE CE SOIT NE POURRONT ÊTRE TENUS RESPONSABLES À L'ÉGARD DE QUICONQUE POUR TOUT DOMMAGE DIRECT, INDIRECT, PARTICULIER OU ACCIDENTEL DE TOUT TYPE Y COMPRIS, SANS LIMITATION, LES DOMMAGES LIÉS À LA PERTE DE CLIENTÈLE, AUX ARRÊTS DE TRAVAIL, AUX DÉFAILLANCES ET AUX DYSFONCTIONNEMENTS INFORMATIQUES OU TOUT AUTRE DOMMAGE OU PERTE LIÉE À L'UTILISATION DU PRÉSENT DOCUMENT ET DE SES VERSIONS DE MISE À JOUR, ET CE MÊME SI CES PARTIES ONT ÉTÉ INFORMÉES DE LA POSSIBILITÉ DE TELS DOMMAGES.

This manual describes version 2.20.4 of the GNOME Display Manager. It was last updated on 03/10/2008.

## Termes et conventions utilisés dans ce manuel

This manual describes version 2.20.4 of the GNOME Display Manager. It was last updated on 03/10/2008.

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

Configurateur - L'application de configuration (`gdmsetup`).

GDM - Le gestionnaire de connexions. Utilisé pour décrire l'ensemble des paquets de ce logiciel. Parfois désigné sous le nom de GDM2.

gdm - Le démon du gestionnaire de connexions GNOME (`gdm`).

Bannière d'accueil - La fenêtre d'identification (`gdmlogin` ou `gdmgreeter`).

Bannière GTK+ - La fenêtre d'identification standard (`gdmlogin`).

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

Bannière avec thème - La fenêtre d'identification à thème (`gdmgreeter`).

XDMCP - Protocole de gestion d'affichage X.

Les chemins commençant par un mot entre chevrons sont relatifs au préfixe d'installation. Par exemple, `<share>/pixmaps/` se réfère à `usr/share/pixmaps` si GDM a été configuré avec `--prefix=/usr`. En principe, il faut savoir que GDM est installé avec `--sysconfigdir=<etc>/X11`, ce qui signifie que tout chemin du style `<etc>/gdm/PreSession` signifie généralement `<etc/X11>/gdm/PreSession`. Pour des raisons d'interopérabilité, il est conseillé d'utiliser un --prefix `/usr` et un --sysconfdir `<etc>/X11`.

## 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 hautement 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 et dans les fichiers de configuration GDM.

Pour plus d'informations à propos de GDM, visitez le site Web du projet GDM. Merci de nous soumettre vos rapports d'anomalie ou propositions d'amélioration dans la catégorie « gdm » de bugzilla.gnome.org. Vous pouvez aussi envoyer un message sur la liste de diffusion

    gdm-list@gnome.org

pour discuter de l'évolution ou des problèmes liés au programme GDM.

### Stabilité de l'interface

Les paires clé/valeur définies dans les fichiers de configuration de GDM et l'emplacement de ces fichiers sont considérés comme étant des interfaces stables et tout changement devrait respecter la compatibilité descendante. Il est à noter que cela inclut les fonctionnalités telles que les scripts GDM (Init, PreSession, PostSession, PostLogin, XKeepsCrashing, etc.), l'emplacement des répertoires (ServAuthDir, PidFile, etc.), les applications systèmes (SoundProgram), etc. Certaines valeurs de configuration dépendent d'interfaces du système d'exploitation et ont besoin d'être modifiées pour fonctionner sur certains systèmes. Les exemples typiques sont HaltCommand, RebootCommand, CustomCommands, SuspendCommand, StandardXServer, Xnest, SoundProgram et la valeur « commande » de chaque `server-foo`.

Les interfaces en ligne de commande des programmes GDM installés dans `<bin>` et `<sbin>` sont considérées comme stables. Référez-vous à la documentation de votre distribution pour voir s'il existe des changements spécifiques à votre distribution pour ces interfaces de GDM et quel support existe pour ceux-ci.

À partir des séries de développement GDM 2.15, certains arguments à un seul tiret ne sont plus pris en charge. Ceci inclut les arguments « -xdmaddress », « -clientaddress » et « -connectionType » utilisés par `gdmchooser`. Ces arguments ont été modifiés pour être utilisés avec deux tirets.

Si vous découvrez des éléments qui ne respectent pas la compatibilité, saisissez un rapport d'anomalie avec la priorité « urgent ».

### Le démon GDM

Le démon 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. Les scripts `Init`, `PostLogin`, `PreSession` et `PostSession` mentionnés ci-dessous sont abordés dans la section « Configuration de GDM ».

Le démon GDM gère le protocole de socket de domaine UNIX qui peut être employé pour commander des aspects de son comportement et pour demander des informations. Ce protocole est décrit dans la section « Contrôle de GDM » de ce document.

On peut demander à GDM de gérer un affichage de plusieurs manières. Les affichages liés sont toujours gérés lorsque GDM démarre et sont redémarrés lorsqu'une session utilisateur est terminée. Les affichages distants peuvent être appelés par XDMCP, les affichages flexibles par la commande `gdmflexiserver` et les affichages dynamiques par la commande `gdmdynamic`. Les affichages démarrés sur appel ne sont pas redémarrés lors de la fermeture d'une session.

Lorsque le démon GDM reçoit une demande de gestion d'affichage, il va générer un processus du serveur X, puis lancer le script `Init` en tant qu'utilisateur root et démarrer la boîte de dialogue graphique d'identification comme processus esclave dans l'affichage. GDM peut être configuré pour utiliser soit `gdmgreeter` (par défaut) soit `gdmlogin` comme programme d'interface. Le programme `gdmlogin` prend en charge l'accessibilité alors que le programme `gdmgreeter` gère mieux l'utilisation de thèmes. La fenêtre d'identification est lancée avec l'utilisateur et groupe non privilégié « gdm », décrit dans la section « Sécurité » ci-dessous. La fenêtre d'identification communique avec le démon au moyen d'un protocole de sockets et par l'entrée/sortie standard. Par exemple, le processus esclave transmet les informations du nom d'utilisateur et du mot de passe au démon GDM par l'entrée/sortie standard afin que le démon puisse s'occuper de l'authentification réelle.

L'écran de la fenêtre d'identification graphique permet à l'utilisateur de sélectionner quelle session il veut démarrer et quelle langue il souhaite utiliser. Les sessions sont définies dans des fichiers se terminant par l'extension .desktop. Vous trouvez plus d'informations sur ces fichiers dans la section « Configuration ». L'utilisateur saisit son nom et son mot de passe, et si l'authentification réussit, GDM lance la session demandée par l'utilisateur. Il est possible de configurer GDM pour ne pas utiliser le procédé d'authentification en activant les fonctionnalités de connexion automatique ou différée dans la configuration de GDM. La fenêtre d'identification peut aussi être configurée pour fournir des fonctions supplémentaires à l'utilisateur, comme le navigateur de figures, la capacité d'arrêter, de redémarrer ou de mettre en veille le système, ou encore la possibilité de modifier la configuration de la connexion (après avoir saisi le mot de passe d'administration).

Par défaut, GDM utilise PAM (Pluggable Authentication Modules) pour l'authentification, mais il peut aussi prendre en charge les mots de passe « crypt » et « shadow » des systèmes traditionnels. Après avoir authentifié un utilisateur, le démon exécute le script `PostLogin` en tant que root et génère un processus esclave pour démarrer la session demandée. Ce processus exécute alors le script `PreSession` en tant que root, met en place l'environnement utilisateur et démarre la session demandée. GDM conserve la trace de la session par défaut et de la langue de l'utilisateur dans le fichier `~/.dmrc` de l'utilisateur. Il utilise ces informations si l'utilisateur ne choisit pas spécifiquement une session ou une langue dans la fenêtre d'identification. Sur Solaris, GDM (depuis la version 2.8.0.3) utilise l'interface SDTLOGIN après l'authentification de l'utilisateur pour signifier au serveur X de redémarrer en tant qu'utilisateur au lieu de root, afin d'augmenter la sécurité. Lorsque la session de l'utilisateur se termine, le démon GDM exécute le script `PostSession` en tant que root.

Il est à noter que par défaut, GDM utilise le nom de service « gdm » pour une connexion normale et le nom de service « gdm-autologin » pour une connexion automatique. L'option de configuration `PamStack` peut être utilisée afin de définir un autre nom de service. Par exemple, si l'on indique « foo », GDM utilise le nom de service « foo » pour une connexion normale et « foo-autologin » pour une connexion automatique.

Pour ceux qui examinent le code, la fonction gdm_verify_user dans `daemon/verify-pam.c` est utilisée pour une connexion normale et la fonction gdm_verify_setup_user pour une connexion automatique.

### Différents types d'affichage

GDM prend en charge trois différents types d'affichage : les affichages liés, les affichages flexibles et les affichages XDMCP distants. La sous-section « Définitions du serveur X » de la section « Configuration » explique comment le serveur X peut être configuré pour les différents affichages.

Les affichages liés (aussi appelés locaux ou statiques) sont toujours démarrés par le démon, et lorsqu'ils meurent ou qu'ils sont terminés, ils redémarrent. GDM peut en exécuter autant que nécessaire. GDM peut aussi gérer des affichages pour lesquels il ne gère par de fenêtre d'identification, ce qui signifie que GDM peut être utilisé pour prendre en charge des terminaux X. La sous-section « Configuration de l'affichage X lié » de la section « Configuration » explique comment sont définis les affichages liés.

Les affichages flexibles (appelés aussi « à la demande ») ne sont disponibles que pour les utilisateurs connectés sur la console. Le lancement d'un affichage flexible verrouille la session actuelle et présente un nouvel écran de connexion par-dessus la session en cours de fonctionnement. Si un affichage flexible est déjà lancé et que l'utilisateur en demande un nouveau, il verra apparaître une boîte de dialogue affichant les affichages flexibles existants. Il peut alors choisir de revenir à un affichage précédent ou de démarrer un nouvel affichage flexible. S'il revient à un affichage existant, l'utilisateur doit ressaisir son mot de passe dans le programme de verrouillage de session. Le fichier de configuration GDM indique le nombre maximum d'affichages flexibles autorisés sur un système.

Les affichages flexibles peuvent être lancés en exécutant la commande `gdmflexiserver` ou en appelant directement le protocole socket de GDM. Certains programmes de verrouillage de session offrent un bouton pour démarrer un nouvelle session flexible. Cela permet à un utilisateur de démarrer une nouvelle session même si l'affichage est verrouillé. L'applet GNOME de changement d'utilisateur utilise aussi le protocole socket pour présenter une interface d'applet dans un tableau de bord GNOME pour gérer facilement les affichages de plusieurs utilisateurs. Les affichages flexibles ne sont pas redémarrés lorsqu'une session utilisateur se termine. Les affichages flexibles exigent la prise en charge des terminaux virtuels (VT) dans le noyau, et ne sont pas disponibles dans le cas contraire (comme sur Solaris).

Les paramètres de configuration `FlexibleXServers`, `FirstVT=7`, `VTAllocation` et `FlexiReapDelayMinutes` sont utilisés pour configurer le fonctionnement des affichages flexibles.

Les affichages imbriqués sont accessibles même si l'utilisateur n'est pas connecté sur la console. Ils lancent un écran d'identification dans une fenêtre de la session en cours de l'utilisateur. Cela peut être utile si l'utilisateur dispose de plus d'un compte sur un ordinateur et souhaite se connecter à un autre compte sans fermer ou verrouiller la session en cours. Les affichages imbriqués peuvent être démarrés en exécutant la commande `gdmflexiserver -n` ou en appelant directement le protocole socket GDM. Les affichages imbriqués exigent que le serveur X prenne en charge un serveur X imbriqué comme Xnest ou Xephyr. L'option de configuration `Xnest` est utilisée pour configurer la manière de démarrer les affichages imbriqués.

La commande `gdmdynamic` est semblable à `gdmflexiserver` dans le sens où elle permet à l'utilisateur de gérer des affichages dynamiquement. Cependant, les affichages démarrés par la commande `gdmdynamic` sont considérés comme des affichages liés ; ils sont donc redémarrés automatiquement lorsque la session se termine. Cette commande est destinée à une gestion plus efficace des affichages sur un serveur multi-utilisateurs (plusieurs affichages connectés sur un seul serveur). En d'autres mots, cette commande de gérer des affichages sans coder statiquement leurs informations dans la section « Attached DISPLAY Configuration » du fichier de configuration. C'est bien utile pour donner par exemple la possibilité d'ajouter de nouveaux affichages sur le serveur sans devoir redémarrer GDM.

Le dernier type d'affichage est XDMCP distant, décrit dans la section suivante. Les hôtes distants peuvent se connecter à GDM et voir apparaître l'écran de connexion si cet affichage est activé. Certaines choses sont différentes pour les sessions distantes. Par exemple, le menu Actions qui permet d'éteindre, de redémarrer, de mettre en veille ou de configurer GDM n'est pas affiché.

### XDMCP

Le démon 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 démon 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. Ne les modifiez pas sans savoir exactement ce que vous faites.

GDM écoute sur le port UDP 177 et répond aux requêtes QUERY et BROADCAST_QUERY en envoyant un paquet WILLING au demandeur.

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 démons sont GDM. Ceci est transparent et est ignoré par XDM ou d'autres démons 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.

### Sécurisation de connexions distantes avec SSH

Comme expliqué dans la section « Sécurité », XDMCP n'utilise aucune sort de chiffrement, ce qui en fait un protocole non sécurisé en lui-même. Comme XDMCP utilise UDP comme couche de transport réseau, il n'est pas possible de le sécuriser simplement au travers d'un tunnel SSH.

Pour remédier à ce problème, GDM peut être configuré au moment de la compilation avec l'option --enable-secureremote. Dans ce cas, GDM propose dans la liste des sessions une session nommée « Connexion distante sécurisée ». Au démarrage d'une connexion de ce type, l'utilisateur peut saisir le nom et l'adresse de connexion à l'hôte ; si ce dernier exécute un serveur SSH, l'utilisateur est connecté au serveur sur lequel la session X par défaut est démarrée et affichée sur l'hôte local.

L'utilisation de cette session offre une connexion réseau bien mieux sécurisée et exige uniquement la présence d'un serveur SSH fonctionnant sur l'hôte distant.

### La bannière GTK+

La bannière GTK+ est l'interface graphique par défaut présentée à l'utilisateur. La bannière contient un menu dans la partie supérieure, un navigateur de figures facultatif, un logo facultatif et une zone de saisie de texte. Cette bannière prend pleinement en charge l'accessibilité, et devrait donc être utilisée par les utilisateurs qui en ont besoin.

La zone de saisie de texte est utilisée pour saisir l'identifiant, le mot de passe, la phrase de passe, etc. `gdmlogin` est contrôlé par le démon sous-jacent et est sans état. Le démon contrôle la bannière par un protocole simple par lequel il peut demander à la bannière une chaîne de texte avec l'écho activé ou non. De la même manière, le démon peut changer l'étiquette au-dessus de la zone de saisie de texte pour qu'elle corresponde à ce que le système d'authentification attend de la part de l'utilisateur.

La barre de menus au sommet de la bannière permet à l'utilisateur de sélectionner le type de session ou l'environnement de bureau, une langue (ou locale) adéquate, de stopper, démarrer ou mettre en veille l'ordinateur, de configurer GDM (en saisissant le mot de passe d'administration), de changer le thème GTK+ ou de démarrer un sélecteur XDMCP.

De manière facultative, la bannière peut afficher un logo dans la fenêtre d'identification. L'image doit être dans un format lisible par la bibliothèque gdk-pixbuf (GIF, JPG, PNG, TIFF, XPM et peut-être d'autres) et elle doit pouvoir être lue par l'utilisateur GDM. Consultez l'option `Logo` dans la section Référence pour plus de détails.

### La bannière à thème

La bannière à thème est une interface de la bannière qui remplit tout l'écran et qui peut être thématisée. Les thèmes peuvent être sélectionnés et de nouveaux thèmes installés par l'application de configuration ou en définissant la clé de configuration `GraphicalTheme`. La bannière à thème est très semblable à la bannière GTK+, car elle est aussi contrôlée par le démon sous-jacent, elle est sans état et utilise le même protocole de communication avec le démon.

L'apparence de cette bannière est vraiment définie par le thème, ce qui fait que les éléments d'interface peuvent être différents. La seule chose qui doit toujours être présente est la zone de saisie de texte telle qu'elle est décrite ci-dessus pour la bannière GTK+. Le thème peut contenir des boutons permettant à l'utilisateur de choisir une langue (ou locale) adéquate, de stopper, redémarrer ou mettre en veille l'ordinateur, de configurer GDM (en donnant le mot de passe d'administration) ou de lancer un sélecteur XDMCP.

Vous pouvez toujours obtenir un menu des actions disponibles en appuyant sur la touche F10. Cela peut se révéler utile si le thème n'affiche pas certains boutons alors que vous souhaitez effectuer une action autorisée par la configuration GDM.

### Le navigateur de figures GDM

GDM met à disposition un navigateur de figures qui affiche une liste d'utilisateurs pouvant se connecter ainsi qu'une icône pour chaque utilisateur. À partir de la version 2.18.1, l'option de configuration `Browser` doit être définie à « true » pour que cette fonctionnalité soit disponible. Dans les versions précédentes, cela n'était nécessaire qu'avec la bannière GTK+. Avec la bannière à thème, le navigateur de figures n'est disponible que si le thème GDM contient un type d'élément « userlist ».

Par défaut, le navigateur de figures est désactivé car la présentation des noms d'utilisateur sur l'écran de connexion n'est pas approprié sur bien des systèmes pour des raisons de sécurité. GDM nécessite également certains paramètres pour définir quels utilisateurs doivent être visibles. Cette configuration peut se faire dans l'onglet « Utilisateurs » de `gdmsetup`. Cette fonctionnalité est surtout utile sur des systèmes qui comportent un petit nombre d'utilisateurs.

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. Dans le premier cas, elles devraient se trouver dans le répertoire `<share>/pixmaps/faces/` (bien que ceci peut être défini par l'option de configuration `GlobalFaceDir`) et le nom de fichier doit correspondre au nom de l'utilisateur, avec l'extension `.png` facultative. Les icônes de figures placées dans le répertoire global doivent être accessibles en lecture pour l'utilisateur GDM. Cependant, le démon fait office de proxy pour la bannière ce qui fait que les images ne doivent pas forcément être lisibles par l'utilisateur « gdm », mais par root.

Les utilisateurs peuvent exécuter la commande `gdmphotosetup` pour configurer l'image utilisée avec leur identifiant. Ce programme redimensionne correctement le fichier si celui-ci dépasse les limites fixées par les options de configuration `MaxIconWidth` ou `MaxIconHeight`, et il place l'icône dans un fichier nommé `~/.face`. Même si `gdmphotosetup` redimensionne automatiquement les images, cela ne garantit pas que les images soient toutes de dimension correcte, car un utilisateur pourrait aussi créer son fichier `~/.face` lui-même.

GDM recherche d'abord l'image de l'utilisateur dans `~/.face`. S'il ne trouve rien, il cherche `~/.face.icon`. S'il ne trouve toujours rien, il utilise la valeur définie pour « face/picture= » dans le fichier `~/.gnome2/gdm`. Finalement, il regarde encore `~/.gnome2/photo` et `~/.gnome/photo` qui sont obsolètes mais pris en charge pour des raisons de compatibilité descendante.

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 retourne à l'image définie dans l'option de configuration `DefaultFace`, correspondant généralement à `<share>/pixmaps/nobody.png`.

Il faut savoir que le chargement et le redimensionnement des icônes de figures situées dans les dossiers personnels peut devenir une tâche très coûteuse en temps. Comme il n'est pas envisageable en pratique de charger des images de figures au moyen de NIS ou NFS, GDM n'essaye même pas de les charger si les dossiers personnels sont distants. De plus, GDM abandonne le chargement après une attente de 5 secondes et n'affiche alors que les utilisateurs dont il a réussi à obtenir l'image durant cet intervalle. L'option de configuration `Include` peut être utilisée pour définir un ensemble d'utilisateurs devant apparaître dans le navigateur de figures. Pour autant que cette liste d'utilisateurs soit de taille raisonnable, GDM ne devrait pas rencontrer de problème à accéder aux images des figures. Pour éviter d'éventuels problèmes, il est conseillé de placer les images de figures dans le répertoire défini dans l'option de configuration `GlobalFaceDir`.

Pour avoir le contrôle des utilisateurs qui apparaissent dans le navigateur de figures, plusieurs options de configuration peuvent être utilisées. Si l'option `IncludeAll` est définie à « true », le fichier de mots de passe est analysé et tous les utilisateurs sont affichés. Si l'option `IncludeAll` est définie à « false », l'option `Include` doit contenir une liste d'utilisateurs séparés par des virgules. Seuls les utilisateurs de la liste sont affichés. Tout utilisateur présent dans la liste de l'option `Exclude` et les utilisateurs dont le numéro d'identifiant est plus bas que `MinimalUID` seront exclus, indépendamment de l'option `IncludeAll`. Cette dernière n'est pas recommandée sur les systèmes où les mots de passe sont chargés sur le réseau (comme avec NIS), car cela peut devenir très lent, dès qu'un certain nombre d'utilisateurs doivent être chargés par le réseau.

Lorsque le navigateur est activé, les noms d'utilisateurs valides sur le système sont inévitablement exposés à un intrus potentiel. Ce n'est pas une bonne solution si vous ne savez pas qui peut avoir accès à l'écran de connexion. C'est encore plus sensible lorsque vous avez activé XDMCP (désactivé par défaut).

### Journalisation

GDM lui-même utilise syslog pour journaliser les erreurs ou 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. Cela peut être activé dans le fichier de configuration.

La sortie des différents serveurs X est stockée dans le répertoire journal de GDM, qui est configurable, mais qui se trouve habituellement dans `<var>/log/gdm/`. La sortie provenant de la session se trouve dans un fichier nommé `<display>.log`. Quatre fichiers plus anciens sont également conservés avec un suffixe de `.1` à `.4`. Ils subissent une rotation au fur et à mesure que d'autres sessions sont lancées sur cet affichage. Vous pouvez consulter ces journaux pour voir ce que le serveur X a produit lors de son démarrage.

La sortie de la session utilisateur est redirigée dans `~/.xsession-errors` avant même que le script `PreSession` soit lancé. Il n'est donc pas vraiment nécessaire de le rediriger une nouvelle fois dans le script de configuration de session. Et c'est ainsi que cela se fait normalement. Si la session de l'utilisateur a duré moins de 10 secondes, GDM part du principe que la session a échoué et permet à l'utilisateur de voir ce fichier dans une boîte de dialogue avant de revenir à l'écran de connexion. De cette façon, l'utilisateur peut voir les erreurs de la dernière session et tenter de corriger le problème.

Vous pouvez supprimer l'avertissement des 10 secondes en retournant le code 66 dans le script `Xsession` ou dans le binaire de votre session (le script `Xsession` par défaut propage ces codes). Ceci peut être utile si vous avez des types de connexions spéciales pour lesquelles une session de moins de 10 secondes n'est pas une erreur, ou si vous avez déjà configuré la session pour afficher un message d'erreur et que le message GDM est redondant et pourrait prêter à confusion.

La sortie de la session est redirigée via le démon GDM ; en conséquence, le fichier `~/.xsession-errors` est limité par GDM à environ 200 kilooctets pour empêcher une éventuelle attaque par déni de service sur la session. À la lecture de certaines fausses données, une application pourrait produire des avertissements ou des erreurs dans stderr ou stdout. Cela pourrait remplir complètement le dossier personnel de l'utilisateur, l'obligeant à se déconnecter et à retourner dans sa session pour effacer cela. cela pourrait être particulièrement gênant si les quotas sont actifs. GDM intercepte aussi correctement le signal XFSZ et bloque l'écriture dans le fichier, ce qui, dans le cas contraire, amènerait à des sessions tuées si le fichier était redirigé à l'ancienne façon depuis le script.

Il est à noter que certaines distributions semblent ignorer la redirection `~/.xsession-errors` et la réaliser elles-mêmes dans leur propre script Xsession (défini par la clé de configuration `BaseXsession`), ce qui signifie que GDM ne sera pas capable d'intercepter la sortie et de limiter le fichier. La sortie du script `PreSession` est également perdue, ce qui pourrait compliquer le débogage par le fait que d'éventuels messages d'erreurs utiles ne seraient écrits nulle part. Consultez la description de la clé de configuration `BaseXsession` pour plus d'informations, particulièrement sur la manière de gérer plusieurs gestionnaires d'affichage à l'aide d'un même script.

Notez que dans le cas d'une session de secours ou si GDM ne peut ouvrir ce fichier pour une raison quelconque, un fichier de remplacement sera créé dans le répertoire `/tmp` avec le nom `/tmp/xses-<utilisateur>.XXXXXX`, où `XXXXXX` correspond à des caractères aléatoires.

Si les quotas sont actifs sur votre système, il peut être utile de supprimer le fichier `~/.xsession-errors` dans le script `PostSession`, afin que ce fichier de journalisation n'occupe pas de la place pour rien.

### Accès aux fichiers

En général, GDM est très prudent concernant la lecture et l'écriture dans des fichiers d'utilisateur (tels que `~/.dmrc`, `~/.face`, `~/.xsession-errors`et `~/.Xauthority`). Par exemple, il refuse d'accéder aux fichiers spéciaux. Les liens, sockets ou périphériques sont ignorés. La valeur du paramètre `RelaxPermissions` détermine si GDM doit accepter les fichiers accessibles en écriture par « groupe » et « autres ». Par défaut, ces fichiers sont ignorés.

Toutes les opérations sur les fichiers utilisateurs sont réalisées avec l'identifiant de l'utilisateur. Si le contrôle de validité du fichier `.Xauthority` échoue, un cookie de secours est créé dans le répertoire désigné par le paramètre de configuration `UserAuthFBDir` (`/tmp` par défaut).

Pour terminer, l'administrateur système peut indiquer la taille de fichier maximum que GDM devrait accepter. Et, dans le cas où le navigateur de figures est actif, une taille maximale d'icône, configurable, doit être respectée. Sur des gros systèmes, il est cependant toujours conseillé de désactiver le navigateur de figures pour des questions de performance. La recherche des icônes dans les dossiers personnels, le redimensionnement et l'affichage des icônes de figures peut consommer un temps important.

### Performances de GDM

Pour améliorer les performances, il est possible de compiler GDM pour qu'il précharge les bibliothèques lors du premier affichage de bannière GDM. Il a été démontré que ceci permet d'améliorer la rapidité de la première connexion, car ces bibliothèques sont chargées en mémoire pendant que l'utilisateur saisit son identifiant et son mot de passe.

Pour utiliser cette fonctionnalité, configurez GDM avec l'option `--with-prefetch`. Cela pousse GDM à installer le programme `gdmprefetch` dans le répertoire `libexecdir`, à copier `gdmprefetchlist` dans le répertoire `<etc>/gdm` et à définir la variable de configuration `PreFetchProgram` afin que le programme `gdmprefetch` soit appelé avec le fichier par défaut `gdmprefetchlist`. Ce fichier a été optimisé pour un bureau GNOME fonctionnant sous Solaris, il peut donc nécessiter quelques adaptations sur d'autres systèmes. D'autres fichiers prefetchlist peuvent être soumis dans bugzilla.gnome.org dans la catégorie « gdm », afin qu'ils puissent être inclus dans de futures versions de GDM.

## Sécurité

### PAM

GDM utilise PAM pour authentifier les connexions, bien que si votre machine ne prend pas en charge PAM, vous pouvez compiler GDM pour qu'il utilise la base de données des mots de passe et la fonction de bibliothèque crypt.

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.

Certaines fonctionnalités de GDM (comme l'activation de la connexion automatique) peuvent exiger la mise à jour de la configuration de PAM. 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 (pages de manuel de pam.d ou pam.conf) et soyez bien conscients des implications de sécurité induites par les modifications de votre configuration.

S'il n'existe pas de rubrique GDM dans le fichier de configuration de PAM de votre système, des fonctionnalités comme la connexion automatique peuvent ne pas fonctionner. Dans ce cas, GDM utilise son comportement par défaut. Il est probable alors que les paramètres stricts recommandés soient configurés dans votre distribution.

Si vous souhaitez faire fonctionner GDM avec d'autres types de mécanismes d'authentification (comme par ex. une SmartCard), 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é 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.

Par exemple, une manière efficace de programmer un tel mécanisme d'authentification exotique serait d'avoir un démon fonctionnant sur le serveur et à l'écoute du périphérique d'authentification (que ce soit une clé USB, un lecteur d'empreintes, etc.). Lorsque le périphérique signale une saisie, le démon peut alors définir la valeur de configuration `PamStack` à l'aide de la configuration spécifique à un affichage et redémarrer la bannière avec la pile PAM correspondant à ce périphérique. Cela évite de devoir manipuler directement le code du gestionnaire d'affichage pour prendre en charge cette fonctionnalité.

### utmp/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.

Les versions de GDM 2.18 et plus anciennes exécutaient le programme `sessreg` du serveur X à partir des scripts GDM par défaut `PreSession` et `PostSession`.À partir de GDM 2.20, GDM interagit directement avec les bases de données UTMP et WTMP, et prend en charge les options de configurations ci-après.

Pour le traitement des données utmp, GDM peut être configuré sur la manière de définir la valeur de ut_line. Les programmes qui accèdent à cette base de données partent du principe que cette valeur correspond à un périphérique réel. GDM définit donc ce périphérique comme suit. Si l'affichage est lié et est associé à un terminal virtuel (VT), c'est ce dernier qui sera utilisé comme périphérique. Sinon, pour les affichages liés, la valeur correspondra à la valeur par défaut de `UtmpLineAttached` dans la configuration de GDM. Pour les affichages distants, la valeur correspondra par défaut à la valeur de `UtmpLineRemote` dans la configuration de GDM. Les valeurs de périphérique doivent commencer par « /dev/ ».

GDM prend aussi en charge l'option de configuration filename>UtmpPseudoDevice

### L'utilisateur GDM

Pour des raisons de sécurité, un utilisateur et un groupe dédiés sont indispensables pour un fonctionnement correct ! Le besoin de pouvoir écrire des fichiers Xauth explique pourquoi l'utilisateur « nobody » (personne) n'est pas adéquat pour GDM.

Le démon GDM fonctionne normalement en tant que root, ainsi que l'esclave. Cependant, GDM doit aussi avoir un identifiant de groupe et d'utilisateur utilisés pour ses interfaces graphiques telles que `gdmgreeter` et `gdmlogin`. Ces identifiants sont définis dans les options de configuration `User` et `Group` dans les fichiers de configuration de GDM. L'utilisateur et le groupe devraient être créés avec l'exécution de « make install ». Par défaut, GDM part du principe que l'utilisateur et le groupe se nomment « gdm ».

Cet identifiant utilisateur est utilisé pour lancer les programmes graphiques de GDM requis par la connexion. Toutes les fonctions demandant les droits « root » sont effectuées par le processus du démon GDM. Ces principes permettent d'assurer qu'au cas où les programmes graphiques étaient compromis d'une manière ou d'une autre, seuls les privilèges de l'utilisateur dédié sont disponibles.

Il faut cependant relever que l'utilisateur et le groupe GDM disposent de certains privilèges qui les rend quelque peu dangereux. D'une part, ils ont accès au répertoire d'autorisation du serveur X. Ils doivent pouvoir lire et écrire les clés Xauth dans `<var>/lib/gdm`. Les propriétaires de ce répertoire devraient être root:gdm avec les droits 1770. L'exécution de « make install » configure ce répertoire de cette façon. Le processus du démon GDM réinitialise ce répertoire avec les propriétaires et les droits corrects au cas où il ne devait pas être configuré de la bonne façon.

Le danger est que si quelqu'un obtient les droits de l'utilisateur et du groupe GDM, il peut alors se connecter à n'importe quelle session. Vous ne devriez donc sous aucun prétexte faciliter l'accès à cet utilisateur et à ce groupe, comme c'est le cas avec l'utilisateur `nobody`. Les utilisateurs obtenant l'accès à l'utilisateur « gdm » pourraient alors modifier les clés Xauth et être la cause d'attaques par déni de service. D'autre part, si quelqu'un obtient la possibilité de lancer des programmes sous l'identité de « gdm », il pourrait se mettre à espionner les processus GDM en cours de fonctionnement, y compris la saisie des noms d'utilisateur et des mots de passe.

On attend des distributions et des administrateurs système utilisant GDM qu'ils configurent proprement l'utilisateur dédié. Il est recommandé que cet utilisateur ne soit pas autorisé à se connecter et qu'il n'ait pas de shell par défaut. Le système de fichiers ne devrait pas non plus autoriser l'accès à des fichiers sensibles à l'utilisateur GDM.

### Processus d'authentification du serveur X

Le répertoire d'autorisation du serveur X (`ServAuthDir`) est utilisé pour toute une série de données internes diverses en plus des fichiers d'autorisation au serveur X, et la nomenclature est vraiment un reliquat historique. Le démon GDM oblige ce répertoire à être la propriété de `root.gdm` avec les droits 1770. De cette façon, seuls root et le groupe GDM ont un accès en écriture à ce répertoire, mais le groupe GDM ne peut supprimer les fichiers appartenant à root dans ce répertoire, comme par exemple les fichiers d'autorisation du serveur X.

Par défaut, GDM ne fait pas confiance au répertoire d'autorisation du serveur X et le traite de la même manière que le dossier temporaire en ce qui concerne la création de fichiers. Ainsi, celui qui abuserait de l'utilisateur GDM ne pourrait pas produire d'attaque en créant des liens dans ce répertoire. De la même manière, le répertoire de journalisation du serveur X est traité de manière sûre, mais ce répertoire devrait vraiment appartenir à root et n'être accessible en écriture que par lui.

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é.

D'un autre côté, la génération de nombres aléatoires de GDM est très classique et GDM prend des mesures extrêmes pour obtenir un nombre 128 bits réellement aléatoire, à l'aide de générateurs de nombres aléatoires matériels (si disponible), avec l'heure actuelle (à la microseconde), un tableau de 20 octets de nombres pseudo-aléatoires, les identifiants de processus ainsi que d'autres informations aléatoires (comprenant l'utilisation de `/dev/audio` ou `/dev/mem` si les générateurs matériels ne sont pas disponibles) afin de créer un gros tampon, puis d'exécuter un hâchage MD5 par-dessus. Évidemment, tout ce travail est gâché si vous envoyez ce cookie sur un réseau ouvert ou que vous le stockez dans un répertoire NFS (voir la clé de configuration `UserAuthDir`. Soyez donc prudent quant à l'environnement d'utilisation de l'affichage X distant.

### 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 DoS 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 + le 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 pour rester ouvert sur Internet, et XDMCP l'est encore moins.

### Sécurité GDM avec NFS

Il faut relever que le trafic NFS transite « dans les fils » et qu'il peut donc être espionné. Lors de l'accès au fichier d'autorisation de l'utilisateur au serveur X (`~/.Xauthority`), GDM essaie d'ouvrir le fichier en lecteur en tant que root. S'il échoue, GDM en conclut qu'il se trouve sur un point de montage NFS et il utilise automatiquement `UserAuthFBDir`, défini par défaut sur `/tmp`. Ce comportement peut être modifié en définissant à « false » le paramètre `NeverPlaceCookiesOnNFS` de la section `[security]`.

### 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.

Les sections ci-dessus, « Processus d'identification du serveur X » et « Sécurité du pare-feu », contiennent aussi d'importantes informations sur l'utilisation sécurisée de XDMCP. La section suivante aborde également la manière de configurer le contrôle d'accès XDMCP.

Pour détourner l'insécurité intrinsèque de XDMCP, GDM propose une session prédéfinie qui utilise SSH pour chiffrer la connexion distante. Consultez la section ci-dessus « Sécurisation de connexions distantes avec SSH ».

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

Le contrôle d'accès XDMCP est réalisé par TCP wrappers. Cependant, il est possible que GDM soit compilé sans la prise en charge de TCP wrappers, il faut donc que vous testiez votre configuration pour vérifier qu'elle fonctionne.

Vous devriez utiliser le nom de démon `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.

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

Si GDM est compilé avec la prise en charge de RBAC, l'option de configuration `RBACSystemCommandKeys` peut être utilisée pour indiquer la clé RBAC à utiliser pour déterminer si l'utilisateur à le droit d'utiliser des commandes. Ceci est valable pour les commandes Éteindre, Redémarrer, Mettre en veille et pour les commandes personnalisées qui apparaissent dans la bannière GDM et par les commandes QUERY_LOGOUT_ACTION, SET_LOGOUT_ACTION et SET_SAFE_LOGOUT_ACTION de `gdmflexiserver`. La bannière n'affiche l'option que si l'utilisateur gdm (défini par l'option de configuration `User`) a les permissions par RBAC. Les utilisateurs ne pourront utiliser les commandes `gdmflexiserver` que s'ils en ont la permission par RBAC.

## 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 à un moment précis. 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 fournir de manière sûre ces éléments d'information sur la session de l'utilisateur. 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 d'un utilisateur ayant une session existante et s'authentifiant 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.

Si la prise en charge de ConsoleKit n'est pas souhaitée, il peut être désactivé au moment de la compilation à l'aide de l'option « --with-console-kit=no » lors de l'exécution de « configure ».

## Utilisation de gdmsetup pour configurer GDM

L'application `gdmsetup` peut être utilisée pour configurer GDM. Si vous pensez que le lancement d'une interface graphique en tant que root pose des problèmes de sécurité, vous pouvez en rester à l'édition manuelle de fichiers texte et faire l'impasse sur `gdmsetup`. L'édition de fichiers à la main est expliqué à la section « Configuration » de ce document. Il faut relever que `gdmsetup` ne prend pas en charge la modification de toutes les variables de configuration, il faudra donc passer obligatoirement par l'édition manuelle des fichiers pour certaines options.

Le programme `gdmsetup` possède cinq onglets : Locale, Distante, Accessibilité, Sécurité et Utilisateurs. Ils sont décrits ci-dessous. Vous trouverez entre parenthèses les relations entre les clés de configuration GDM et les différentes options de l'interface. Pour plus de détails sur chaque clé, consultez la section « Configuration » de ce manuel ainsi que les commentaires dans le fichier de configuration par défaut du système de GDM.

### Onglet Locale

L'onglet Locale est utilisé pour contrôler l'apparence de GDM pour les affichages liés (aussi appelés locaux ou statiques). Les affichages liés peuvent être, par exemple, des connexions distantes non XDMCP. Les choix disponibles sur cet onglet dépendent du réglage de la liste déroulante « Style ». Cette liste détermine le type de bannière utilisée (Simple ou Avec thème). Les différences entre les bannières sont expliquées dans la section « Aperçu » de ce document.

Lorsque la liste Style contient « Simple », GDM utilise le programme `gdmlogin` comme interface graphique de connexion (daemon/Greeter). Avec ce choix, `gdmsetup` permet de sélectionner si l'arrière-plan est une image ou une couleur unie (greeter/BackgroundType). Si l'on choisit une image, un bouton de sélection de fichier permet de sélectionner une image (greeter/BackgroundImage) et une case à cocher indique s'il faut redimensionner l'image pour correspondre à l'écran (greeter/BackgroundImageScaleToFit). Si l'on choisit une couleur unie, un bouton permet de sélectionner la couleur (greeter/BackgroundColor). De même, l'utilisateur peut choisir l'image du logo qui apparaît dans gdmlogin (greeter/Logo).

Lorsque la liste Style contient « Simple avec navigateur de figures », GDM utilise le programme `gdmlogin` comme interface graphique de connexion (daemon/Greeter) et le navigateur de figures est activé (greeter/Browser). Ce dernier est décrit dans la section « Aperçu ». Pour le reste, les choix sont les mêmes qu'avec l'option « Simple ». Il peut être souhaitable de configurer dans l'onglet Utilisateurs les noms qui apparaîtront dans le navigateur de figures.

Si l'option « Avec thème » est sélectionnée dans la liste Style, c'est le programme `gdmgreeter` qui est employé comme interface graphique (daemon/Greeter). Lorsque ce choix est sélectionné, `gdmsetup` permet à l'utilisateur de choisir le thème à utiliser (greeter/GraphicalTheme). Remarquez qu'il faut que la case à gauche du nom du thème soit cochée pour qu'un thème soit sélectionné. Lorsqu'un thème est mis en évidence, on voit apparaître sur la droite des informations sur ses auteurs et son copyright. Le bouton Ajouter permet d'ajouter de nouveaux thèmes dans le système. Les thèmes doivent être au format tar ou tar compressé pour pouvoir être ajoutés. On peut aussi sélectionner la couleur d'arrière-plan visible au démarrage de GDM (et dans les parties transparentes du thème, le cas échéant) (greeter/GraphicalThemedColor). On peut choisir « Sélection aléatoire » dans la liste déroulante Thème pour afficher un thème au hasard lors de chaque connexion(greeter/GraphicalThemeRand and greeter/GraphicalThemes). Dans ce mode, vous pouvez encore cocher les thèmes devant faire partie de la sélection aléatoire. Par défaut, la valeur de cette liste est « Uniquement sélectionné » ce qui fait qu'un seul thème peut être sélectionné et actif à la fois.

Si l'option « Avec thème et navigateur de figures » est sélectionnée dans la liste Style, c'est le programme `gdmgreeter` qui est employé comme interface graphique (daemon/Greeter) et le navigateur de figures est activé (greeter/Browser), pour autant que le thème le prenne en charge. Le navigateur de figures est décrit dans la section Aperçu. Pour le reste, les options sont identiques au choix « Avec thème » de la liste Style. Il peut être souhaitable de configurer dans l'onglet Utilisateurs les noms qui apparaîtront dans le navigateur de figures.

Quelque soit la valeur de la liste Style, l'utilisateur peut aussi choisir si le menu Actions doit être visible (greeter/SystemMenu), si le menu Actions contient le choix de lancer `gdmsetup` (greeter/ConfigAvailable) et si le menu Actions contient l'option de démarrer `gdmchooser` pour exécuter une session XDMCP distante (greeter/ChooserButton). Il est possible de définir le message de bienvenue affiché pour les affichages liés (greeter/DefaultWelcome and greeter/Welcome). Le message de bienvenue peut contenir les séquences de caractères décrites dans la sous-section « Nœuds de texte » de la section « Bannière avec thème » de ce manuel. Ces séquences de caractères permettent d'insérer des éléments comme le nom d'hôte ou le nom d'affichage dans le message de bienvenue.

### Onglet Distante

L'onglet Distante contrôle l'apparence de GDM pour les utilisateurs qui se connectent par XDMCP. Par défaut, XDMCP est désactivé, et les utilisateurs qui souhaiteraient l'activer devraient être à l'aise avec les sections concernant XDMCP dans la section Sécurité de ce document. Cet onglet contient une liste déroulante « Style » pouvant être utilisée pour activer XDMCP et contrôler l'apparence de GDM pour les utilisateurs distants (gui/RemoteGreeter et xdmcp/Enable). Il est possible de choisir d'utiliser la même bannière d'accueil que dans l'onglet Locale, ou d'utiliser une autre bannière. Si le navigateur de figures est activé dans l'onglet Locale, ce sera aussi le cas pour l'onglet Distante. Idem en cas de désactivation de cette fonctionnalité. Il est recommandé d'utiliser l'interface « Simple » pour les connexions distantes car il est plus léger et présente de meilleures performances sur un réseau.

Si les connexions distantes sont activées, il est possible d'indiquer le message de bienvenue pour les affichages distants (greeter/DefaultRemoteWelcome et greeter/RemoteWelcome). Ce message de bienvenue est différent du message affiché dans les affichages liés, défini dans l'onglet Locale, et peut donc avoir un contenu différent. Il peut également contenir les séquences de caractères décrites dans la sous-section « Nœud de texte » de la section « Bannière avec thème » de ce manuel. Ces séquences de caractères permettent d'insérer des éléments comme le nom d'hôte ou le nom d'affichage dans le message de bienvenue.

Si la liste Style contient « Identique à locale » et que le choix pour la connexion locale est « Simple » ou « Simple avec navigateur de figures », il est possible de choisir si l'image d'arrière-plan doit s'afficher pour les connexions distantes (greeter/BackgroundRemoteOnlyColor).

Si la connexion distante sont activées et configurée sur une autre valeur que l'onglet Locale, les options de configuration sont les mêmes que pour l'onglet Locale à l'exception des options du menu Actions qui ne sont pas présentes, car ce menu n'est jamais disponible lors de connexions distantes pour des raisons de sécurité.

Lorsque la connexion distante est activée, un bouton « Configurer XDMCP » amène à une boîte de dialogue permettant de définir la configuration XDMCP comprenant les paramètres suivants : honorer les requêtes indirectes (xdmcp/HonorIndirect), le port UDP (xdmcp/Port), le nombre maximal de requêtes indirectes en attente (xmdcp/MaxPendingIndirect), le nombre maximal de sessions distantes (xdmcp/MaxSessions), le délai d'attente maximal (xdmcp/MaxWait), le délai d'attente indirect maximal (xdmcp/MaxWaitIndirect), le nombre d'affichages par hôte (xdmcp/DisplaysPerHost) et l'intervalle de ping (xdmcp/PingIntervalSeconds). Les paramètres par défaut sont standards et ne devraient être modifiés que par des personnes qui comprennent les implications des changements.

### Onglet Accessibilité

L'onglet Accessibilité permet d'activer les fonctions d'accessibilité dans GDM. « Activer l'accessibilité de la connexion » (daemon/AddGtkModules et daemon/GtkModulesList) active les capteurs de mouvements, décrits dans la section Accessibilité de ce document. On y trouve aussi une case à cocher permettant aux utilisateurs de changer le thème de la bannière simple (gui/AllowGtkThemeChange). Cette fonctionnalité permet aux utilisateurs de passer à des thèmes avec des contrastes faibles ou élevés, selon les besoins. Il est également possible de choisir si GDM doit émettre un son lorsque l'écran de connexion est prêt, lorsque la connexion a réussi ou lorsqu'elle a échoué. Des boutons de sélection de fichier permettent de sélectionner les fichiers son, alors que le bouton Lecture permet d'écouter le son sélectionné.

### Onglet Sécurité

L'onglet Sécurité permet d'activer la connexion automatique ou la connexion différée, de définir l'utilisateur connecté lors de ce type de connexion et le délai avant la connexion différée (daemon/AutomaticLoginEnable, daemon/AutomaticLogin, daemon/TimedLoginEnable, daemon/TimedLogin et daemon/TimedLoginDelay). Lorsque la connexion automatique est activée, l'utilisateur spécifié sera automatiquement connecté au redémarrage sans que GDM demande de nom d'utilisateur ou de mot de passe. Si l'utilisateur sort de sa session, GDM est lancé et demande un nom d'utilisateur et un mot de passe pour ouvrir une nouvelle session. Lorsque la connexion différée est activée, GDM ouvre une connexion pour l'utilisateur spécifié après le nombre de secondes indiqué dans le champ correspondant. Il est possible d'activer la connexion différée pour les connexions distantes (XDMCP) en cochant la case « Autoriser les connexions différées à distance ».

Dans cet onglet, il est possible de choisir si l'administrateur système (root) peut se connecter et s'il peut accéder aux connexions à distance (XDMCP) (security/AllowRoot et security/AllowRemoteRoot). Il est aussi possible d'activer les messages de débogage GDM (debug/Enable) qui sont envoyés dans le journal système. Le débogage devrait se limiter au diagnostic de problèmes et ne devrait pas rester activé sans raison. Si elle est sélectionnée, l'option « Refuser les connexions TCP au serveur X » désactive le transfert (forwarding) X (security/DisallowTCP). Il est possible de définir un délai entre connexions (security/RetryDelay) afin que GDM attende un certain nombre de secondes après un échec de connexion.

Le bouton « Configurer le serveur X » permet de spécifier comment GDM doit gérer chaque affichage. La liste déroulante Serveurs montre les définitions de serveurs disponibles (par défaut, Standard, Terminal et Chooser (Sélecteur)). Consultez la sous-section « Définitions de serveurs X » de la section Configuration pour plus d'informations sur la manière de créer de nouvelles définitions de serveurs.

Pour chaque type de serveur, il est possible de modifier le « Nom du serveur » (server/name), la « Commande » à utiliser pour lancer le serveur X (server/command), si le type de serveur va « Lancer » la bannière ou le sélecteur après le démarrage du serveur X (server/chooser), si GDM gère ce type (en principe, ne devrait être décoché que pour les connexions de type Terminal) et si le type de session prend en charge les sessions « Flexibles » (server/flexible).

La partie « Serveurs à démarrer » montre quel type de serveur est affiché pour chaque affichage de la machine. Il est possible d'ajouter un nouvel affichage à la liste ou d'en modifier un à l'aide du bouton Ajouter/Modifier. Cela fait simplement correspondre chaque affichage physique avec la définition de serveur à utiliser pour gérer cet affichage. Le bouton Supprimer permet d'enlever un affichage de la liste.

### Onglet Utilisateurs

L'onglet Utilisateurs contrôle quels utilisateurs apparaissent dans le navigateur de figures. Si la case « Inclure tous les utilisateurs de /etc/passwd » est cochée, tous les utilisateurs (ayant un numéro d'identifiant plus grand que greeter/MinimalUID et ne figurant pas dans la liste Exclure) sont affichés. Si cette case n'est pas cochée, les utilisateurs doivent être ajoutés dans la liste Inclure. Les utilisateurs de la liste Exclure ne sont jamais affichés. Les boutons Ajouter et Enlever permettent d'ajouter ou d'enlever des utilisateurs dans les listes. Il est impératif de cliquer sur le bouton « Appliquer les modifications des utilisateurs » après la modification des listes Inclure et Exclure. Les boutons flèches gauche et droite entre les deux listes permettent de déplacer un utilisateur sélectionné dans une liste vers l'autre liste.

## Configuration

GDM dispose d'une puissante gestion de configuration. La configuration par défaut du système est stockée dans le fichier de configuration par défaut de GDM, alors que les modifications des utilisateurs par rapport à la configuration par défaut sont stockées dans le fichier de configuration personnalisée de GDM. Cela permet aux administrateurs système de placer le fichier de configuration par défaut sur un système de fichiers partagé, afin qu'un fichier unique puisse contrôler la configuration de plusieurs machines. GDM prend aussi en charge la configuration par affichage pour les clés liées à l'interface graphique.

`gdmsetup` est un programme graphique autorisant l'édition de la configuration de GDM. Ce programme peut aussi être lancé directement à partir de l'écran de connexion si le paramètre greeter/ConfigAvailable est défini à « true ». L'interface graphique ne gère pas toutes les clés du fichier de configuration de GDM, il peut donc se révéler nécessaire d'éditer certaines clés à la main. Si vous pensez que l'exécution d'interfaces graphiques en tant que root constitue un risque de sécurité, vous préférerez peut-être toujours éditer les fichiers à la main. Ce programme ne gère pas la configuration de paramètres par affichage ; les fichiers de configuration par affichage doivent être configurés à la main.

À l'exception du fichier de configuration système par défaut de GDM, Les autres fichiers de configuration de GDM sont situés, par défaut, dans le dossier `<etc>/gdm/` ou ses sous-dossiers. Remarquez que l'emplacement de beaucoup de fichiers de configuration sont définis dans les fichiers de configuration de GDM, il s'agit donc de consulter le fichier de configuration système par défaut et le fichier de configuration personnalisée de GDM si les fichiers ne se trouvent pas aux endroits indiqués dans ce document.

Liste du contenu du répertoire config :

    custom.conf
    locale.alias
    Xsession
    XKeepsCrashing
    modules/
    Init/
    PostLogin/
    PreSession/
    PostSession/

`locale.alias` est un fichier qui ressemble beaucoup à locale.alias du système, mais ce n'est en fait pas le même. C'est une liste de toutes les langues potentiellement installables sur votre système. Pour chacune d'elles, GDM vérifie si elle est présente avant de l'afficher dans l'interface de sélection de la langue. Seules celles qui existent réellement sont affichées.

`Xsession` est un script qui configure une session utilisateur et qui exécute ensuite la session choisie par l'utilisateur. Il est à relever que le script de session est habituellement démarré via le fichier `desktop` correspondant à la session choisie par l'utilisateur. Certaines sessions peuvent démarrer la session de l'utilisateur par un autre moyen que le script `Xsession`. Il faut donc contrôler le fichier `desktop` correspondant avant de déduire qu'un problème de démarrage de session est causé par ce fichier.

`XKeepsCrashing` est un script qui est lancé lorsque le serveur X plante continuellement et qu'on ne peut pas s'en sortir. Le script fourni par défaut fonctionne avec la plupart des distributions Linux et peut exécuter l'application de configuration de X pour autant que la personne derrière la console connaisse le mot de passe administrateur.

Les modules d'accessibilité sont configurés dans le sous-répertoire `modules/`. Ils constituent un sujet à part. Parcourez les fichiers fournis par défaut, ils disposent d'une documentation adéquate. Normalement, dans une installation standard, vous trouvez des fichiers dont le nom contient `factory` ; ces fichiers ne sont pas utilisés, ils sont là uniquement pour que vous puissiez revenir à la configuration par défaut.

Les fichiers décrivant les sessions GDM disponibles respectent la spécification des fichiers desktop de freedesktop.org. Les fichiers du style `.desktop` sont installés dans `<etc>/X11/sessions/`. Ce répertoire est également parcouru par le gestionnaire de bureau KDE (KDM) pour la configuration commune. Ensuite, le répertoire `<share>/gdm/BuiltInSessions/` est parcouru pour les sessions prédéfinies spécifiques à GDM (au moment de la rédaction de ce document, KDM fige ces informations dans son code). Pour terminer, la configuration par défaut parcourt également `<share>/xsessions/` (qui doit être `<share>/xsessions/` pour réellement coopérer avec KDM), où les paquets de bureau peuvent installer leurs fichiers de session. Les répertoires sous `<etc>` devraient être réservés pour la configuration. L'approche de la spécification des fichiers desktop simplifie l'installation de gestionnaires de fenêtres et de différents types de session par les systèmes de gestion de paquets, sans exiger l'édition de fichiers par les administrateurs système. Consultez la clé de configuration `SessionDesktopDir` pour modifier les chemins. Anciennement, GDM stockait ses sessions prédéfinies dans `<etc>/dm/Sessions/`, mais ceci n'est plus indiqué à partir de 2.5.90.0. Il est à noter qu'avant la version 2.4.4.2, seul `<etc>/dm/Sessions/` était parcouru.

Une session peut être désactivée (si elle a été installée dans `<share>/xsessions/`) en ajoutant un fichier `.desktop` du même nom dans l'un des répertoires précédents dans les chemins parcourus (probablement `<etc>/X11/sessions`) et en écrivant `Hidden=true` dans ce fichier.

GDM utilise la clé facultative `X-Gdm-XserverArgs` dans les fichiers de sessions pour définir des arguments supplémentaires à passer au serveur X. Par exemple, la ligne `X-Gdm-XserverArgs=-depth 16` va démarrer le serveur X avec une profondeur de couleur de 16 bits. De tels arguments supplémentaires sont ignorés en cas d'affichage imbriqué (lorsque GDM est lancé dans une fenêtre).

### Les répertoires de scripts

Dans cette section, nous présentons les répertoires `Init`, `PostLogin`, `PreSession` et `PostSession`, car ils sont très semblables.

Lorsque le serveur X a été démarré correctement, GDM essaye d'exécuter le script nommé `Init/<nomaffichage>`, par exemple `Init/:0` pour le premier affichage lié. Si ce fichier est absent, GDM essaye d'exécuter `Init/<nomhôte>`. Si ce fichier n'existe pas non plus, GDM essaye `Init/XDMCP` pour les connexions XDMCP ou `Init/Flexi` pour les affichages flexibles sur demande. Si aucun des fichiers ci-dessus n'est trouvé, GDM exécute `Init/Default`. Le script s'exécute en tant que root, et GDM attend que le script se termine. Utilisez le script `Init/*` pour les applications qui sont censées fonctionner en parallèle de la fenêtre de connexion GDM, par exemple xconsole. Les commandes de configuration de l'arrière-plan ou d'autres commandes du même genre vont également dans ce fichier.

C'est à l'administrateur système de décider si les clients démarrés par le script Init doivent être tués avant de démarrer la session utilisateur. Ceci est contrôlé par l'option de configuration `KillInitClients`.

Lorsque l'utilisateur a été authentifié avec succès, GDM essaie de lancer les scripts du répertoire `PostLogin` comme il l'a fait avec le répertoire `Init`. Cela se passe avant toute configuration de session ; c'est donc le script approprié pour la configuration du dossier personnel, si nécessaire (bien que vous devriez plutôt utiliser pour cela le module `pam_mount` si possible). Les variables d'environnement `$USER` et `$DISPLAY` sont définies pour ce script, et il est aussi exécuté en tant que root. Le script doit renvoyer la valeur 0 en cas de succès, sinon l'utilisateur ne sera pas connecté. Ce n'est cependant pas le cas pour les sessions de secours.

Après avoir configuré la session utilisateur pour la partie concernant GDM, GDM exécute les scripts du répertoire `PreSession`, toujours de la même manière que pour le répertoire `Init`. Ce script peut être utilisé par exemple pour la gestion et le suivi des sessions. La variable d'environnement `$USER` contient l'identifiant de l'utilisateur authentifié et `$DISPLAY` est défini sur l'affichage actuel. Le script doit renvoyer la valeur 0 en cas de succès. Toute autre valeur force GDM à interrompre le processus de connexion. Ce n'est cependant pas le cas pour les sessions de secours. La variable d'environnement `$X_SERVERS` est aussi définie, et elle indique un fichier factice de serveurs X pour les besoins de l'application de comptabilisation sessreg.

Après cela, le script `Xsession` de base est exécuté avec l'exécutable de la session sélectionnée comme premier argument. Ce script est exécuté avec les droits de l'utilisateur et forme réellement la session de l'utilisateur. Les exécutables de session disponibles sont récupérés dans la ligne `Exec=` dans les fichiers `.desktop` du chemin désigné par `SessionDesktopDir`. En principe, ce chemin est `<etc>/X11/sessions/:<etc>/dm/Sessions:/usr/share/xsessions/`. Le premier fichier trouvé est utilisé. Soit l'utilisateur choisit parmi ces sessions, soit GDM examine le fichier `~/.dmrc` pour y trouver la préférence enregistrée.

Ce script doit réellement charger le profil de l'utilisateur et s'occupe généralement de toute la machinerie nécessaire au lancement de la session. Étant donné que beaucoup de systèmes réinitialisent les sélections de langue faites par GDM, ce dernier définit aussi la variable `$GDM_LANG` à la langue sélectionnée. Vous pouvez utiliser cette étape pour réinitialiser les variables d'environnement de langue après avoir exécuté le profil de l'utilisateur. Si l'utilisateur a choisi d'utiliser la langue du système, la variable `$GDM_LANG` n'est pas définie.

Lorsque l'utilisateur ferme sa session, le script `PostSession` est exécuté. De nouveau, le principe est le même que pour les répertoires `Init`, `PostLogin` et `PreSession`. Le script s'exécutera aussi avec les privilèges de l'administrateur, le démon esclave se fige, la variable d'environnement `$USER` contient le nom de l'utilisateur qui s'est déconnecté et la variable `$DISPLAY` est définie sur l'affichage que l'utilisateur a utilisé. Cependant, il est à relever que le serveur X de cet affichage n'existe peut-être déjà plus, vous ne devriez donc pas essayer de l'atteindre. La variable d'environnement `$X_SERVERS` est aussi définie, et elle indique un fichier factice de serveurs X pour les besoins de l'application de comptabilisation sessreg.

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.

À l'exception du script `Xsession`, tous ces scripts disposent aussi de la variable d'environnement `$RUNNING_UNDER_GDM` définie à `yes`, ce qui permet d'utiliser éventuellement les mêmes scripts avec d'autres gestionnaires d'affichage. Le script `Xsession` dispose toujours de la variable `$GDMSESSION` définie au nom de base de la session choisie par l'utilisateur sans l'extension `.desktop`. De plus, `$DESKTOP_SESSION` contient la même valeur et KDM va aussi définir cette variable dans de futures versions.

Aucun des scripts `Init`, `PostLogin`, `PreSession` ou `PostSession` n'est obligatoire et ils peuvent être omis. Par contre, le script `Xsession` est indispensable, ainsi qu'au moins un fichier de session `.desktop`.

### Les fichiers de configuration - le fichier de configuration par défaut du système GDM et le fichier de configuration personnalisé GDM

GDM utilise deux fichiers de configuration : le fichier de configuration système par défaut GDM (`<share>/gdm/defaults.conf`) et le fichier de configuration personnalisée GDM (`<etc>/gdm/custom.conf`). Le fichier système par défaut GDM contient les options de configuration par défaut de GDM et ne doit pas être modifié par l'utilisateur. Le fichier de configuration personnalisée GDM est destiné à recevoir les choix personnels de configuration des utilisateurs. Si une option de configuration n'est définie dans aucun fichier, GDM utilise la valeur par défaut décrite dans les commentaires du fichier de configuration système par défaut GDM.

Les deux fichiers de configuration sont divisés en sections contenant des variables qui définissent le comportement d'une partie spécifique de la suite GDM. Consultez les commentaires dans le fichier de configuration système par défaut GDM pour obtenir plus d'informations sur chaque paramètre de configuration.

GDM also supports per-display configuration for parameters in the "gui", "greeter" sections of the configuration file Also the `security/PamStack` and `daemon/LockScreen` keys may be customized per-display. Per-display configuration is specified by creating a file named `<etc>/gdm/custom.conf<display num>`. In this file the section and keys to use on this display can be specified. For example, configuration overrides for display ":103" would be stored in the file `<etc>/gdm/custom.conf:0`. Per-display configuration is supported in GDM 2.14.6 and later.

Pour modifier manuellement une configuration, éditez le fichier de configuration personnalisée GDM ou un fichier de configuration pour un affichage spécifique et prenez bien soin de placer la paire nomdeclé=valeur dans la section adéquate. Par exemple, pour changer la valeur de la clé « Greeter » dans la section « daemon », il faut s'assurer que la clé et la valeur à modifier se trouve bien à la suite de la section daemon du fichier en cours d'édition. Comme dans l'exemple ci-dessous :

    [daemon]
    Greeter=/usr/lib/gdmgreeter

La commande `gdmsetup` peut être utilisée pour modifier le fichier de configuration personnalisée GDM. Il faut relever que `gdmsetup` doit être exécuté en tant que root. Si vous trouvez qu'il n'est pas assez sûr de lancer des programmes graphiques en tant que root, vous devrez alors éditer les fichiers de configuration à la main.

L'argument `--config` du démon GDM peut être utilisé pour indiquer un emplacement différent du fichier de configuration. Le démon doit être redémarré pour changer le fichier de configuration utilisé. Par ailleurs, lors de la compilation de GDM, l'emplacement des fichiers de configuration peut être spécifié avec les options de configuration `--with-defaults-conf` et `--with-custom-conf`.

Avant la version 2.13.0.4 de GDM, il n'existait que `<etc>/gdm/gdm.conf`. Pour garantir une compatibilité descendante maximale, ce fichier est utilisé à la place du fichier de configuration personnalisée GDM s'il existe. En mettant à jour votre version de GDM, la commande « make install » vérifie si les fichiers `<etc>/gdm/gdm.conf` et `<etc>/gdm/factory-gdm.conf` sont différents. Si c'est le cas, le fichier `<etc>/gdm/gdm.conf` est automatiquement copié dans `<etc>/gdm/custom.conf` pour préserver toute modification de configuration.

Les distributions devraient éditer le fichier de configuration système par défaut de GDM pour définir les valeurs de configuration par défaut, afin que les valeurs définies soient préservées comme valeurs par défaut, et qu'elles ne soient pas modifiées par les utilisateurs qui éditent le fichier de configuration personnalisée GDM. Il est à noter que les distributions peuvent modifier le fichier de configuration système par défaut de GDM lors de mises à jour pour améliorer la convivialité, la sécurité, etc. Ainsi, tout changement effectué dans ce fichier peut être perdu.

Les fichiers de configuration par défaut et personnalisée de GDM respectent le style standard de la syntaxe des fichiers de configuration `.ini`. Les mots-clés entre crochets définissent des sections, les chaînes de caractères avant le signe égal (=) sont des variables et les données après le signe égal représentent leur valeur. Les lignes vides ou commençant par dièse (#) sont ignorées. Le programme de configuration graphique tente de conserver aussi bien les commentaires (lignes débutant par #) que la structure générale du fichier afin que vous puissiez utiliser indifféremment l'interface graphique ou l'édition manuelle pour modifier le fichier de configuration.

Les clés de configuration suivantes sont prises en charge par GDM :

#### Configuration du démon

##### [daemon]

AddGtkModules

      AddGtkModules=false

  Si « true » (vrai), les commandes `gdmgreeter` et `gdmlogin` peuvent être lancées avec des modules Gtk+ supplémentaires. Cela est utile lorsque des fonctions supplémentaires sont nécessaires, telles que la connexion accessible. Il est à relever que seules des modules « de confiance » devraient être utilisés, pour limiter les problèmes de sécurité.

  Si « true » (vrai), le démon de registre (`at-spi-registryd`) est lancé par `gdmgreeter` ou `gdmlogin`, à partir de la version 2.17 de GDM.

  En principe, ceci est utilisé pour les modules d'accessibilité. Les modules chargés sont précisés par la clé `GtkModulesList`.

AllowLogoutActions

      AllowLogoutActions=HALT;REBOOT;SHUTDOWN;SUSPEND;CUSTOM_CMD

  Indique quelles actions sont prises en charge par les commandes QUERY_LOGOUT_ACTION, SET_LOGOUT_ACTION et SET_SAFE_LOGOUT_ACTION de `gdmflexiserver`. Les valeurs possibles sont HALT, REBOOT, SHUTDOWN, SUSPEND et CUSTOM_CMD ; ces valeurs doivent être séparées par deux-points (:). Cette clé permet de désactiver certaines options, si nécessaire. Référez-vous aux options de configuration comparables `SystemCommandsInMenu` et `RBACSystemCommandKeys`.

AlwaysLoginCurrentSession

      AlwaysLoginCurrentSession=true

  Si « true » (vrai), un utilisateur qui se connecte et pour lequel il existe déjà une session est reconnecté à cette dernière au lieu d'ouvrir une nouvelle session. Ceci fonctionne uniquement pour les sessions se trouvant dans des terminaux virtuels (VT) démarrées avec gdmflexiserver, mais pas avec XDMCP. Il faut savoir que les terminaux virtuels ne sont pas pris en charge sur tous les systèmes d'exploitation.

AutomaticLoginEnable

      AutomaticLoginEnable=false

  Indique si l'utilisateur spécifié par AutomaticLogin doit être connecté lors du démarrage initial. Aucun mot de passe n'est demandé. C'est utile pour des ordinateurs ayant un seul utilisateur et où l'accès à la console ne pose aucun problème de sécurité. Cela peut aussi être utile pour des terminaux publics. Voir aussi l'option `TimedLogin`.

AutomaticLogin

      AutomaticLogin=

  Cet utilisateur doit être connecté automatiquement lors du démarrage initial. AutomaticLoginEnable doit être vrai (true) et cet utilisateur doit être valide sur ce système. Il n'est cependant pas possible de connecter automatiquement l'utilisateur « root », et GDM refusera de le faire même si vous le configurez ainsi.

  Les caractères de contrôle suivants sont reconnus à l'intérieur du nom spécifié :

  %% — le caractère « % »

  %d — nom de l'affichage

  %h — nom d'hôte de l'affichage

  Il est aussi possible que le nom se termine par une barre verticale (|), le symbole du tube. Le nom est alors interprété comme une application à exécuter et qui renvoie le nom d'utilisateur désiré sur la sortie standard. Si un nom d'utilisateur vide ou non valide est renvoyé, la connexion automatique n'est pas effectuée. Cette fonction est fréquemment utilisée lorsque plusieurs affichages distants sont utilisés comme des bornes Internet, avec un utilisateur bien précis devant être connecté automatiquement sur chaque affichage.

BaseXsession

      BaseXsession=<etc>/gdm/Xsession

  C'est le fichier de session X de base. Lorsqu'un utilisateur se connecte, ce script est exécuté avec la session sélectionnée comme premier argument. La session sélectionnée correspond à `Exec=` du fichier `.desktop` de la session.

  Si vous souhaitez utiliser le même script pour plusieurs gestionnaires d'affichage différents et qu'une partie du script soit réservée uniquement à GDM, vous pouvez vérifier la présence de la variable d'environnement `GDMSESSION`. Elle sera toujours définie au nom de base du fichier `.desktop` (sans l'extension) utilisé pour cette session ; elle n'est définie que pour les sessions GDM. Anciennement, certains scripts contrôlaient la présence de `GDM_LANG`, mais celle-ci n'est définie que lorsque l'utilisateur choisit un langage par défaut non système.

  Ce script est chargé de s'occuper de la connexion effective de l'utilisateur. Il doit donc utiliser `<etc>/profile` et autres fichiers du même genre. Le script standard livré avec GDM parcourt les fichiers dans cet ordre : `<etc>/profile`, `~/.profile`, puis `<etc>/xprofile` et enfin `~/.xprofile`. Il faut relever que certaines distributions peuvent agir différemment. Parfois, la configuration personnelle des utilisateurs se trouvent dans `~/.bash_profile`, avec tous les problèmes de cette solution.

Chooser

      Chooser=<bin>/gdmchooser

  Chemin complet et nom de l'exécutable du sélecteur, suivi par des arguments facultatifs.

Configurator

      Configurator=<bin>/gdmsetup --disable-sound --disable-crash-dialog

  Le chemin d'accès au binaire du configurateur. Si l'option de la bannière `ConfigAvailable` est définie à « true » (vrai), c'est ce programme qui est lancé au moment où l'utilisateur choisit « Configuration » dans le menu Actions. Mais bien sûr, GDM demande d'abord le mode de passe d'administration. Et il ne permettra jamais cette opération depuis un affichage distant.

ConsoleCannotHandle

      ConsoleCannotHandle=am,ar,az,bn,el,fa,gu,hi,ja,ko,ml,mr,pa,ta,zh

  Ce sont les langues que la console ne sait pas gérer en raison de problèmes de polices. Il s'agit ici de la console texte, pas de X. C'est uniquement utilisé lorsqu'il y a des erreurs à signaler et que X ne peut démarrer.

ConsoleNotify

      ConsoleNotify=true

  Si défini à « false » (faux), GDM n'affiche pas de boîte de dialogue de message dans la console lorsqu'une erreur se produit.

DefaultPath

      DefaultPath=cheminpardéfaut (valeur définie par « configure »)

  Indique les chemins définis dans la session utilisateur. Cette valeur est écrasée par la valeur de `/etc/default/login` si elle contient « ROOT=<pathname> ». Si le fichier `/etc/default/login` existe mais qu'il ne contient pas de valeur pour ROOT, c'est la valeur définie dans la configuration de GDM qui sera utilisée.

DefaultSession

      DefaultSession=gnome.desktop

  La session utilisée par défaut si l'utilisateur n'a pas enregistré de préférence et qu'il a sélectionné « Dernière session » dans la liste des sessions. Remarquez que « Dernière session » n'est pas forcément affiché, voir la clé `ShowLastSession`.

DisplayInitDir

      DisplayInitDir=<etc>/gdm/Init

  Le répertoire contenant les scripts d'initialisation de l'affichage. Consultez la section « Les répertoires de scripts » pour plus d'informations.

DisplayLastLogin

      DisplayLastLogin=true

  Si défini à « true » (vrai), les informations de la dernière connexion sont présentées à l'utilisateur avant la saisie du mot de passe. Même si cela divulgue certaines informations sur les utilisateurs configurés sur un système, d'un autre côté, cela renseigne sur la date de la dernière connexion ; si cette date paraît suspecte à l'utilisateur, il peut stopper sa connexion et contacter l'administrateur système (pour éviter d'exécuter des scripts de démarrage pernicieux). Cette fonctionnalité a été ajoutée dans la version 2.5.90.0.

  Ceci place GDM en conformité avec la norme CSC-STD-002-85, même si c'est actuellement purement théorique. Il faudrait que quelqu'un lise la spécification et s'assure que ceci est vraiment conforme (en plus d'autres aspects de GDM). Consultez `http://www.radium.ncsc.mil/tpep/library/rainbow/CSC-STD-002-85.html` pour plus d'informations.

DoubleLoginWarning

      DoubleLoginWarning=true

  Si défini à « true » (vrai), GDM avertit l'utilisateur lorsqu'il est déjà connecté sur un autre terminal virtuel. Sur les systèmes où GDM gère la vérification des terminaux virtuels X, GDM permet à l'utilisateur de basculer sur le terminal virtuel de la connexion précédente, à la place de se connecter.

DynamicXServers

      DynamicXServers=false

  Si défini à « true » (vrai), le démon GDM répond aux requêtes de gestion d'affichage via la connexion socket `/tmp/.gdm_socket`. Des affichages peuvent être créés, démarrés ou détruits avec les commandes correspondantes. La commande `gdmdynamic` est une méthode appropriée pour envoyer ces messages.

FailsafeXServer

      FailsafeXServer=

  Une ligne de commande X dans le cas où il n'est pas possible de démarrer le serveur X habituel. Cela devrait être une sorte de script exécutant un serveur X à basse résolution qui devrait si possible fonctionner dans tous les cas. Cette tentative est effectuée avant l'exécution du script `XKeepsCrashing`.

FirstVT

      FirstVT=7

  Sur les systèmes où GDM prend en charge l'allocation automatique des terminaux virtuels, cela correspond au premier terminal à essayer. En principe, les connexions texte standard se trouvent sur les premiers terminaux. Voir aussi `VTAllocation`.

FlexibleXServers

      FlexibleXServers=5

  Le nombre maximal d'affichages flexibles autorisés. Ce sont des affichages pouvant être exécutés au moyen de la connexion socket `/tmp/.gdm_socket`. C'est utilisé à la fois pour les affichages flexibles normaux et pour les affichages imbriqués (référez-vous à l'option de configuration `Xnest`).

FlexiReapDelayMinutes

      FlexiReapDelayMinutes=5

  Le nombre de minutes d'inactivité d'un écran de connexion à la suite de quoi un affichage flexible est désactivé. Cela n'a d'effet qu'avant une connexion d'utilisateur. Cela n'affecte pas non plus les affichages imbriqués (consultez l'option de configuration `Xnest`). Pour désactiver ce comportement, définissez cette valeur à 0. Cette option a été ajoutée dans la version 2.5.90.0.

Greeter

      Greeter=<bin>/gdmlogin

  Chemin complet et nom de l'exécutable de la bannière, suivi par des arguments facultatifs. Cette bannière est utilisée par tous les affichages, à l'exception des affichages XDMCP distants. Voir aussi `RemoteGreeter`.

Group

      Group=gdm

  Le nom du groupe avec lequel sont exécutés `gdmlogin`, `gdmgreeter`, `gdmchooser` et les dialogues internes GTK+ de secours. Voir aussi `User`. Cet utilisateur a accès à tous les fichiers d'autorisation X et potentiellement à d'autres données GDM internes ; ce devrait donc être un utilisateur ad hoc, et non pas « nobody ». Le répertoire `ServAuthDir` appartient à ce groupe. L'appartenance et les droits sur `ServAuthDir` devraient être `root.gdm` et 1770.

GtkModulesList

      GtkModulesList=module-1:module-2:...

  Une liste séparée par deux-points de modules Gtk+ appelés par `gdmgreeter` ou `gdmlogin` si `AddGtkModules` est vrai (true). Le format est identique à l'interface standard de module Gtk+.

HaltCommand

      HaltCommand=<sbin>/shutdown -h now

  Chemin complet et arguments de la commande à exécuter lorsque l'utilisateur choisit « Éteindre » dans le menu Actions. Ce peut être une liste de commandes séparées par des « ; ». Si cette option n'a pas de valeur, la commande Éteindre n'est pas disponible. Signalons que la valeur par défaut n'est pas vide ; il faut donc définir une valeur vide pour désactiver la fonction « Éteindre ».

KillInitClients

      KillInitClients=true

  Détermine s'il faut que GDM tue les clients X démarrés par les scripts d'initialisation lorsque l'utilisateur se connecte.

LogDir

      LogDir=<var>/log/gdm

  Répertoire contenant les fichiers journaux des différents affichages. Par défaut, la valeur est la même que pour ServAuthDir.

PreFetchProgram

      PreFetchProgram=command

  Programme à exécuter par la bannière ou connexion GDM lorsque l'écran initial est affiché. L'objectif est de fournir un point d'accrochage pour que les fichiers qui seront utilisés après la connexion puissent être préchargés, afin d'améliorer les performances. Ce programme est appelé une seule fois, lors du premier affichage de la bannière. Il est possible d'utiliser la commande gdmprefetch. Cet utilitaire charge toute bibliothèque qui lui est transmise sur la ligne de commande, ou, si l'argument commence par le caractère « @ », il considère le paramètre comme un fichier ASCII contenant une liste de bibliothèques, une par ligne, et charge chaque bibliothèque contenue dans le fichier.

PamStack

      PamStack=gdm

  If using PAM, this specifies the PAM service name to use when calling pam_start. This option may be configured per-display so that GDM can be configured to have a different PAM stack on a given display. Note that autologin sessions append "-autologin" to this value, so by default autologin sessions use the service name "gdm-autologin".

PostLoginScriptDir

      PostLoginScriptDir=<etc>/gdm/PostLogin

  Répertoire contenant les scripts exécutés juste après la connexion de l'utilisateur, mais avant toute configuration de session. Consultez la section « Répertoires de scripts » pour plus d'informations.

PostSessionScriptDir

      PostSessionScriptDir=<etc>/gdm/PostSession

  Répertoire contenant les scripts exécutés après la déconnexion de l'utilisateur. Consultez la section « Répertoires de scripts » pour plus d'informations.

PreSessionScriptDir

      PreSessionScriptDir=<etc>/gdm/PreSession

  Répertoire contenant les scripts exécutés avant la connexion de l'utilisateur. Consultez la section « Répertoires de scripts » pour plus d'informations.

RBACSystemCommandKeys

      RBACSystemCommandKeys

  Prise en charge de RBAC (Role Based Access Control, contrôle d'accès basé sur les rôles) pour les commandes systèmes (Éteindre, Redémarrer, Mettre en veille, etc.). Cette fonctionnalité requiert que GDM ait été compilé avec la prise en charge de RBAC. Indiquez la clé RBAC utilisée pour déterminer si l'utilisateur a la permission d'effectuer une action au moyen des commandes `gdmflexiserver` QUERY_LOGOUT_ACTION, SET_LOGOUT_ACTION et SET_SAFE_LOGOUT_ACTION. Les actions possibles sont HALT, REBOOT, SUSPEND et CUSTOM_CMD. La bannière n'affiche une commande que si l'utilisateur gdm (clé de configuration `User`) a la permission RBAC d'effectuer l'action. Des clés RBAC pour plusieurs actions peuvent être indiquées en les séparant par des deux-points. Le format est « Action:clé RBAC ». Si une action n'est pas mentionnée, il en est déduit que tous les utilisateurs ont la permission d'effectuer cette action. Par exemple, une valeur possible de cette option de configuration serait : « HALT:clé.pour.halt;REBOOT:clé.pour.reboot ». Consultez aussi les options de configuration apparentées `AllowLogoutActions` et `SystemCommandsInMenu`.

RebootCommand

      RebootCommand=<sbin>/shutdown -r now

  Chemin complet et arguments facultatifs de la commande à exécuter lorsque l'utilisateur choisit « Redémarrer » dans le menu Actions. Ce peut être une liste de commandes séparées par des « ; ». Si cette option n'a pas de valeur, la commande Redémarrer n'est pas disponible. Signalons que la valeur par défaut n'est pas vide ; il faut donc définir une valeur vide pour désactiver la fonction « Redémarrer ».

RemoteGreeter

      RemoteGreeter=<bin>/gdmlogin

  Chemin complet et nom de l'exécutable de la bannière, suivi par des arguments facultatifs. Cette bannière est utilisée pour tous les affichages XDMCP distants. Il peut être utile de placer ici une bannière exigeant moins de ressources graphiques, dans le cas où vous utilisez la bannière avec thème comme bannière principale. Voir aussi la clé `Greeter`.

RootPath

      RootPath=cheminpardéfaut (valeur définie par « configure »)

  Indique les chemins définis dans la session de root et dans les scripts Init, PostLogin, PreSession et PostSession exécutés par GDM. Cette valeur est écrasée par la valeur de `/etc/default/login` si elle contient « SUROOT=<pathname> ». Si le fichier `/etc/default/login` existe mais qu'il ne contient pas de valeur pour SUROOT, c'est la valeur définie dans la configuration de GDM qui sera utilisée.

ServAuthDir

      ServAuthDir=<var>/gdm

  Répertoire contenant les fichiers d'authentification X pour les différents affichages. Il devrait appartenir à `root.gdm` avec les droits 1770, où `gdm` est le groupe défini par l'option `Group`. Cela signifie qu'il devrait appartenir à root, avec le groupe `gdm` possédant les droits d'écriture complets, son bit « sticky » doit être activé et tous les autres ne devraient avoir aucun accès. De cette façon, l'utilisateur GDM ne peut supprimer les fichiers de ce répertoire appartenant à root, mais il peut enregistrer ses propres fichiers à cet endroit. Si les permissions de ce dossier sont différentes, GDM essaye de les corriger lorsqu'il démarre pour la première fois. Ce répertoire est aussi employé pour stocker d'autres fichiers privés que le démon utilise. Les autres utilisateurs ne devraient en aucune manière avoir accès à ce répertoire et lire ou modifier ses contenus. Tout utilisateur pouvant lire ce répertoire peut se connecter à tous les affichages sur cet ordinateur.

SessionDesktopDir

      SessionDesktopDir=<etc>/X11/sessions/:<etc>/dm/Sessions/:<share>/xsessions/

  Répertoire contenant les fichiers `.desktop` correspondant aux sessions disponibles sur le système. Depuis la version 2.4.4.2, ceci est considéré comme une variable de type PATH et le premier fichier trouvé est utilisé.

SoundProgram

      SoundProgram=<bin>/play (ou <bin>/audioplay sur Solaris)

  Application à utiliser pour lire les sons. Utilisé actuellement pour lire le son de connexion, voir la clé `SoundOnLoginFile`. Pris en charge depuis la version 2.5.90.0.

StandardXServer

      StandardXServer=/répertoire/vers/X (valeur attribuée par le fichier de configuration)

  Chemin complet et arguments vers la commande standard du serveur X. Ceci est utilisé lorsque GDM ne trouve aucune autre définition ; c'est la valeur par défaut et la solution de secours à plusieurs endroits. Cette commande devrait être capable d'exécuter un type quelconque de serveur X.

SuspendCommand

      SuspendCommand=

  Chemin complet et arguments de la commande à exécuter lorsque l'utilisateur choisit « Mettre en veille » dans le menu Actions. Si cette option n'a pas de valeur, la commande n'est pas disponible. Signalons que la valeur par défaut n'est pas vide ; il faut donc définir une valeur vide pour désactiver la fonction « Mettre en veille ».

SystemCommandsInMenu

      SuspendCommand=HALT;REBOOT;SHUTDOWN;SUSPEND;CUSTOM_CMD

  Indique quelles commandes systèmes sont disponibles dans le menu de la bannière d'accueil. Les valeurs possibles sont HALT, REBOOT, SHUTDOWN, SUSPEND et CUSTOM_CMD, séparées par des deux-points. Cela peut être utile pour désactiver certaines options du menu, tout en les conservant disponibles pour les utilisateurs authentifiés par les commandes `gdmflexiserver` SET_LOGOUT_ACTION ou SET_SAFE_LOGOUT_ACTION. Par exemple, le tableau de bord GNOME utilise ces commandes pour proposer Éteindre, Redémarrer et Mettre en veille dans le menu Applications. Si donc vous désactivez ces options dans la bannière, elles peuvent toujours être disponibles pour les utilisateurs authentifiés, par l'intermédiaire du tableau de bord GNOME. Référez-vous aux options de configuration liées `AllowLogoutActions` et `RBACSystemCommandKeys`.

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 aucun nom d'utilisateur n'est saisi et que l'utilisateur 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 connecter immédiatement l'utilisateur « différé ». Il faut relever 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.

TimedLogin

      TimedLogin=

  Ceci est le nom de l'utilisateur devant être connecté après un nombre défini de secondes d'inactivité. Cela ne peut jamais être « root », GDM n'autorisant pas la connexion de root de cette manière. Les fonctionnalités prises en charge sont identiques à `AutomaticLogin`. Il est possible d'utiliser les mêmes caractères de contrôle et le même système de tube vers une application.

TimedLoginDelay

      TimedLoginDelay=30

  Délai en secondes avant que l'utilisateur `TimedLogin` soit connecté. Cette valeur doit être égale ou plus grande que 10.

User

      User=gdm

  Le nom d'utilisateur avec lequel sont exécutés `gdmlogin`, `gdmgreeter`, `gdmchooser` et les dialogues internes GTK+ de secours. Voir aussi `Group`. Cet utilisateur a accès à tous les fichiers d'autorisation X et potentiellement à d'autres données GDM internes ; ce devrait donc être un utilisateur ad hoc, et non pas « nobody ».

UserAuthDir

      UserAuthDir=

  Répertoire dans lequel le fichier des utilisateurs `.Xauthority` doit être enregistré. Si aucune valeur n'est définie, c'est le dossier personnel qui est utilisé. Le caractère tilde est interprété, ce qui permet de définir quelque chose comme : `~/authdir/`.

  Si vous n'utilisez pas le caractère tilde, le nom de fichier créé sera aléatoire, comme pour `UserAuthFBDir`. De cette façon, plusieurs utilisateurs peuvent partager le même répertoire d'authentification. Par exemple, on pourrait définir cette valeur à `/tmp` lorsque les dossiers personnels se trouvent sur NFS, car il n'est vraiment pas souhaitable que des fichiers cookie transitent sur le réseau. Les utilisateurs doivent disposer des droits en écriture sur ce répertoire, et celui-ci devrait posséder le bit « sticky », tout comme le répertoire `/tmp`.

  Normalement, si cette valeur indique le dossier personnel de l'utilisateur, GDM refuse d'y placer des cookies s'il pense qu'il se trouve sur NFS (par le test root-squashing). Cela peut être modifié en définissant la valeur du paramètre `NeverPlaceCookiesOnNFS` de la section `[security]` à « false » (faux).

UserAuthFBDir

      UserAuthFBDir=/tmp

  Si GDM échoue dans la mise à jour du fichier `.Xauthority` de l'utilisateur, un cookie de secours est créé dans ce répertoire.

UserAuthFile

      UserAuthFile=.Xauthority

  Nom du fichier utilisé pour stocker les cookies des utilisateurs.

VTAllocation

      VTAllocation=true

  Sur les systèmes où GDM prend en charge l'allocation des terminaux virtuels (VT) (actuellement seulement sur Linux et FreeBSD), il est possible de demander à GDM d'ajouter automatiquement l'argument vt à l'exécutable du serveur X. De cette façon, la concurrence entre les serveurs X gérant chacun l'allocation de leur terminal virtuel peut être évitée. Voir aussi `FirstVT`.

XKeepsCrashing

      XKeepsCrashing=<etc>/gdm/XKeepsCrashing

  Un script à exécuter dans le cas où X se plante continuellement. Ceci est prévu pour lancer la configuration de X ou pour effectuer une autre action permettant de faire fonctionner X. Examinez le script livré avec la distribution comme example. Le script `XKeepsCrashing` livré est testé sur Redhat, mais il devrait aussi fonctionner ailleurs. Votre intégrateur système devrait s'assurer que ce script est à jour pour votre système précis.

  Dans le cas où `FailsafeXServer` est configuré, c'est ce paramètre qui est essayé en premier. Puis, si le serveur X continue de planter, `XKeepsCrashing` est alors utilisé comme solution de secours.

Xnest

      Xnest=<bin>/X11/Xephyr -audit 0

  Le chemin complet et les arguments de la commande du serveur X imbriqué, qui peut être Xephyr, Xnest ou un autre programme semblable. Cette commande est utilisée pour démarrer des affichages imbriqués, permettant aux utilisateurs de de lancer de nouveaux écrans de connexion à l'intérieur d'une fenêtre. Xephyr est recommandé car il fonctionne mieux et prend mieux en charge les extensions récentes du serveur X. GDM définit donc la configuration par défaut à Xephyr, s'il est disponible. Si Xephyr n'est pas disponible, c'est Xnest qui sera utilisé à la place, s'il est disponible.

XnestUnscaledFontPath

      XnestUnscaledFontPath=true

  Défini à « true » (vrai) si le programme de serveur X imbriqué gère le suffixe « :unscaled » dans FontPath (transmis à la commande du serveur X imbriqué par l'argument -fp). Certains programmes Xnest (par ex. Xsun Xnest) ne gèrent pas cela, et il est nécessaire de définir ce paramètre à « false » (faux) pour qu'ils fonctionnent avec GDM. Référez-vous à l'option de configuration `Xnest`.

#### Options de sécurité

##### [security]

AllowRoot

      AllowRoot=true

  Permet à root (utilisateur privilégié) de se connecter avec GDM. Définissez ce paramètre à « false » (faux) si vous voulez empêcher de telles connexions.

  Sur les systèmes qui prennent en charge PAM, ce paramètre n'est pas très utile, puisque vous pouvez utiliser PAM pour faire la même chose, et même plus. Cependant, ce paramètre est tout de même respecté, ce qui fait que vous devriez probablement le laisser à « true » (vrai) pour les systèmes utilisant PAM.

AllowRemoteRoot

      AllowRemoteRoot=false

  Permet à root (utilisateur privilégié) de se connecter à distance avec GDM. La valeur doit être définie à « true » (vrai) pour autoriser de telles connexions. Les connexions distantes sont celles qui passent par XDMCP.

  Sur les systèmes qui prennent en charge PAM, ce paramètre n'est pas très utile, puisque vous pouvez utiliser PAM pour faire la même chose, et même plus.

  Cette valeur est écrasée et définie à « false » (faux) si le fichier `/etc/default/login` existe et qu'il contient « CONSOLE=/dev/login », mais définie à « true » (vrai) si le fichier `/etc/default/login` existe et qu'il contient toute autre valeur ou aucune valeur pour CONSOLE.

AllowRemoteAutoLogin

      AllowRemoteAutoLogin=false

  Autorise le fonctionnement de la connexion différée pour les affichages distants. En d'autres termes, les connexions distantes par XDMCP pourront connecter l'utilisateur « TimedLogin » après le délai défini par `TimedLoginDelay`.

  Il faut noter que ceci peut affaiblir la sécurité du système, ce qui explique que ce paramètre est désactivé par défaut.

CheckDirOwner

      CheckDirOwner=true

  Par défaut, GDM vérifie l'appartenance des dossiers personnels avant d'y écrire, ce qui évite des problèmes de sécurité en cas de mauvaise configuration. Cependant, dans certains cas, il peut arriver que le propriétaire d'un dossier personnel soit différent de l'utilisateur ; dans ce cas, il est nécessaire de désactiver cette option. Il faudra très probablement aussi définir la valeur de la clé `RelaxPermissions` à au moins 1, car dans de telles situations, il est probable que les dossiers personnels soient accessibles en écriture par le groupe. Pris en charge à partir de la version 2.6.0.4.

SupportAutomount

      SupportAutomount=false

  Par défaut, GDM vérifie l'appartenance des dossiers personnels avant d'y écrire, ce qui évite des problèmes de sécurité en cas de mauvaise configuration. Cependant, lorsque les dossiers personnels sont gérés par automounter, il arrive fréquemment qu'ils ne soient pas montés avant le premier accès. Cette option pallie aux subtilités de automounter Linux.

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.

NeverPlaceCookiesOnNFS

      NeverPlaceCookiesOnNFS=true

  Normalement, si cette option est définie à « true » (vrai) (valeur par défaut), GDM ne dépose pas de cookies dans le dossier personnel des utilisateurs si ce dossier se trouve sur NFS. En fait, GDM considère tout système de fichier utilisant le « root-squashing » comme un système de fichiers NFS. Il peut cependant arriver qu'un système de fichiers distant emploie le « root-squashing » tout en restant sûr (peut-être par l'utilisation du chiffrement). Dans ce cas, définissez cette valeur à « false » (faux). Il faut signaler que cette option est apparue dans la version 2.4.4.4 et est ignorée dans les versions précédentes.

PasswordRequired

      PasswordRequired=false

  Si défini à « true » (vrai), pam_authenticate et pam_acct_mgmt reçoivent le drapeau PAM_DISALLOW_NULL_AUTHTOK, ce qui désactive le mot de passe vide (NULL). Ce paramètre n'est opérationnel que si GDM utilise PAM. Cette valeur est écrasée par la valeur contenue dans `/etc/default/login`, si ce dernier contient « PASSREQ=[YES|NO] ». Si le fichier `/etc/default/login` existe, mais ne contient aucune valeur pour PASSREQ, c'est la valeur définie dans la configuration GDM qui est utilisée.

RelaxPermissions

      RelaxPermissions=0

  Par défaut, GDM ignore les fichiers et les répertoires accessibles en écriture à d'autres utilisateurs que le propriétaire.

  La modification de la valeur de RelaxPermissions permet de changer ce comportement :

  0 - option paranoïaque. N'accepte que les fichiers ou répertoires accessibles uniquement par leur propriétaire.

  1 - accepte les fichiers et répertoires accessibles en écriture par le groupe.

  2 - accepte les fichiers et répertoires accessibles en écriture par tout le monde.

RetryDelay

      RetryDelay=1

  Le nombre de secondes d'attente avant la réactivation par GDM du champ de saisie à la suite d'un échec de connexion.

UserMaxFile

      UserMaxFile=65536

  GDM refuse de lire ou d'écrire des fichiers plus grands que cette valeur (indiquée en octets).

  En plus du contrôle de la taille, GDM est extrêmement sensible lorsqu'il s'agit d'accéder à des fichiers dans les dossiers des utilisateurs. Il ne suit pas les liens symboliques et, selon la configuration, il peut refuser de lire des fichiers et des répertoires accessibles en écriture par d'autres personnes que leur propriétaire. Consultez l'option `RelaxPermissions` pour plus d'informations.

UtmpLineAttached

      UtmpLineAttached=/dev/console (ou /dev/dtlocal sur Solaris)

  Lors du traitement Utmp pour les affichages liés, GDM définit ut_line comme le périphérique associé au terminal virtuel (VT), si ce dernier est utilisé. Sinon, il utilise la valeur définie avec l'affichage dans la section `[servers]`, si une valeur est fournie. Dans le cas contraire, c'est la valeur par défaut définie dans UtmpLineAttached qui est utilisée pour les affichages liés. Cette valeur peut contenir « %d » qui correspond au nom d'affichage (DISPLAY) ou « %h » qui correspond au nom d'hôte. La valeur doit commencer par `/dev/`.

UtmpLineRemote

      UtmpLineRemote= (ou /dev/dtremote sur Solaris)

  Lors du traitement Utmp, GDM définit ut_line à cette valeur pour les affichages distants. Cette valeur peut contenir « %d » qui correspond au nom d'affichage (DISPLAY) ou « %h » qui correspond au nom d'hôte. La valeur doit commencer par `/dev/`.

UtmpPseudoDevice

      PseudoDevice=false (ou true sur Solaris)

  Si le périphérique associé à l'affichage n'existe pas, GDM crée un lien symbolique vers `/dev/null` ou effectue un « touch » sur le lien s'il existe déjà. Certains programmes comme `last`, `finger` ou `who` ont accès à la base de données utmp et peuvent supposer que le périphérique indique un fichier réel. La création de tels liens symboliques assure que de tels programmes fonctionnent correctement.

#### 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 la valeur de `DisplaysPerHost` 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(5) 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.

EnableProxy

      EnableProxy=false

  La définition de cette option à « true » (vrai) active la possibilité d'exécuter des sessions XDMCP sur un serveur X proxy local. Cela peut améliorer les performances des sessions XDMCP, particulièrement sur les réseaux à latence élevée, car beaucoup d'opérations du protocole X peuvent s'effectuer sans transiter par le réseau.

  Il faut cependant relever que ce mode va notablement augmenter la charge sur la machine hébergeant les sessions XDMCP.

  Consultez les options `FlexiProxy` et `FlexiProxyDisconnect` pour plus de détails sur la façon de configurer la prise en charge de cette fonctionnalité.

HonorIndirect

      HonorIndirect=true

  Active le choix XDMCP INDIRECT (c'est-à-dire l'exécution distante de `gdmchooser`) pour les terminaux X qui ne possèdent 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 gérables. Il limite seulement le nombre d'affichages lançant simultanément une connexion.

MaxPendingIndirect

      MaxPendingIndirect=4

  GDM ne propose simultanément que le nombre d'affichages correspondant à `MaxPendingIndirect` avec des sélecteurs d'hôte. Si des requêtes supplémentaires lui parviennent d'hôtes différents, les plus anciennes sont abandonnées.

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`.

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.

PingIntervalSeconds

      PingIntervalSeconds=15

  Intervalle en secondes des « ping » envoyés au serveur X. Si le serveur X ne répond pas avant le prochain ping, la connexion est interrompue et la session se termine. C'est une combinaison des paramètres PingInterval et PingTimeout de XDM, mais en secondes.

  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.

ProxyReconnect

      FlexiProxyReconnect=

  La définition de cette option active la prise en charge expérimentale des migrations de sessions XDMCP. Ceci permet aux utilisateurs d'interrompre une session, puis de se reconnecter à la même session, même depuis un autre terminal.

  Pour pouvoir utiliser cette fonctionnalité, vous devez disposer d'un serveur X imbriqué qui prend en charge la déconnexion de son serveur X parent et la reconnexion à un autre serveur X. Actuellement, le serveur Distributed Multihead X (DMX) gère partiellement cette fonctionnalité et d'autres projets comme NoMachine NX font des efforts d'implémentation dans ce sens.

  Cette option devrait être définie au chemin d'une commande qui s'occupe de reconnecter le proxy XDMCP à un autre moteur d'affichage. Un modèle d'implémentation utilisable avec DMX est fourni.

ProxyXServer

      ProxyXServer=

  La ligne de commande de serveur X pour un proxy XDMCP. Tout serveur X imbriqué tel que Xnest, Xephyr ou Xdmx devrait assez bien fonctionner.

Willing

      Willing=<etc>/gdm/Xwilling

  Lorsque la machine 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.

#### Options de configuration courantes de l'interface graphique

##### [gui]

AllowGtkThemeChange

      AllowGtkThemeChange=true

  Détermine s'il est permis de changer le thème GTK+ (widget) de la bannière. Actuellement, cela ne concerne que la bannière standard, car la bannière graphique ne dispose pas de cette possibilité. Le thème reste actif sur cet affichage tant qu'il n'est pas modifié, et il influence toutes les autres fenêtres ouvertes par GDM. Prise en charge depuis la version 2.5.90.2.

GtkRC

      GtkRC=

  Chemin vers un fichier `gtkrc` que GDM doit lire avant d'ouvrir une fenêtre. Il faudrait dorénavant vraiment utiliser la clé `GtkTheme` pour simplement définir un thème.

GtkTheme

      GtkTheme=Default

  Le nom d'un thème à installer par défaut. Il sera utilisé dans la bannière, le sélecteur et toutes les autres fenêtres graphiques ouvertes par GDM. Pris en charge depuis la version 2.5.90.2.

GtkThemesToAllow

      GtkThemesToAllow=all

  Liste des thèmes à autoriser, séparés par des virgules. Ce doit être les noms des thèmes installés dans les emplacements standards des thèmes GTK+. Vous pouvez aussi indiquer « all » pour autoriser tous les thèmes installés. Ceci est lié à la clé `AllowGtkThemeChange`. Pris en charge depuis la version 2.5.90.2.

MaxIconWidth

      MaxIconWidth=128

  Indique la largeur d'icône maximale (en pixels) affichée par le navigateur de figures. Les icônes plus larges que cette valeur sont redimensionnées. Cela concerne également les icônes du sélecteur XDMCP.

MaxIconHeight

      MaxIconHeight=128

  Indique la hauteur d'icône maximale (en pixels) affichée par le navigateur de figures. Les icônes plus hautes que cette valeur sont redimensionnées. Cela concerne également les icônes du sélecteur XDMCP.

#### Configuration de la bannière

##### [greeter]

BackgroundColor

      BackgroundColor=#76848F

  Si la valeur de BackgroundType est de 2, c'est cette couleur qui sera utilisée en arrière-plan de la bannière. Elle est aussi utilisée comme fond des images transparentes placées sur l'arrière-plan, également dans le cas où BackgroundRemoteOnlyColor est défini et que l'affichage est distant. Cela ne concerne que la bannière GTK+.

BackgroundProgramInitialDelay

      BackgroundProgramInitialDelay=30

  L'application d'arrière-plan est démarrée après un nombre de secondes d'inactivité au moins équivalent à cette valeur.

RestartBackgroundProgram

      RestartBackgroundProgram=true

  Si défini à « true » (vrai), l'application d'arrière-plan est redémarrée après s'être arrêtée, après l'écoulement du délai défini dans le paramètre ci-dessous. Cette option peut se révéler utile si vous voulez lancer un économiseur d'écran lorsque personne n'utilise l'ordinateur.

BackgroundProgramRestartDelay

      BackgroundProgramRestartDelay=30

  L'application d'arrière-plan est redémarrée après un nombre de secondes d'inactivité au moins équivalent à cette valeur.

BackgroundImage

      BackgroundImage=unfichier.png

  Si le paramètre BackgroundType vaut 1, ce fichier est affiché en arrière-plan de la bannière. Cela ne concerne que la bannière GTK+.

BackgroundProgram

      BackgroundProgram=<bin>/xeyes

  Cette commande est exécutée en arrière-plan durant l'affichage de la fenêtre de connexion. Notez que certaines applications peuvent ne pas fonctionner de cette manière, car GDM n'a normalement pas de dossier personnel. Il est possible de configurer un dossier personnel pour l'utilisateur GDM si vous souhaitez lancer une application qui l'exige. Cela ne concerne que la bannière GTK+.

BackgroundRemoteOnlyColor

      BackgroundRemoteOnlyColor=true

  N'affiche que la couleur d'arrière-plan pour les affichages distants. Cela permet d'alléger la charge réseau. Le programme défini par `BackgroundProgram` n'est pas non plus exécuté. Cela ne concerne que la bannière GTK+.

BackgroundScaleToFit

      BackgroundScaleToFit=true

  Redimensionne l'image d'arrière-plan pour correspondre à l'écran. Cela ne concerne que la bannière GTK+.

BackgroundType

      BackgroundType=2

  Le type d'arrière-plan utilisé. 0 signifie aucun, 1 pour l'image et la couleur, 2 pour la couleur et 3 pour l'image. Cela ne concerne que la bannière GTK+.

Browser

      Browser=true

  Si défini à « true » (vrai), active le navigateur de figures. Consultez la section « La bannière GTK+ » pour plus d'informations sur le navigateur de figures. Cette option n'est valide que pour la bannière GTK+. En ce qui concerne la bannière avec thème, le navigateur de figures est activé en choisissant un thème qui le contient.

ChooserButton

      ChooserButton=true

  Si défini à « true » (vrai), ajoute un bouton de sélecteur au menu Actions permettant de redémarrer le serveur X actuel avec un sélecteur. Il n'est pas nécessaire d'activer XDMCP sur l'ordinateur local pour que cela fonctionne.

ConfigAvailable

      ConfigAvailable=false

  Si défini à « true » (vrai), permet le lancement du programme de configuration à partir de la bannière. Il faut bien sûr que l'utilisateur saisisse le mot de passe d'administration avant que le programme ne soit lancé. Pour plus de sécurité, ce paramètre est défini à « false » (faux) par défaut. Consultez l'option `Configurator` dans la section « daemon ».

DefaultFace

      DefaultFace=<share>/pixmaps/nophoto.png

  Si un utilisateur ne dispose pas d'image de figure, GDM utilise l'icône prédéfinie « stock_person » dans le thème GTK+ actuel. Si celle-ci n'existe pas, c'est l'image définie par `DefaultFace` qui est utilisée. L'image doit être dans un format pris en charge par gdk-pixbuf et le fichier doit être accessible en lecture par l'utilisateur GDM.

Include

      Include=

  Liste d'utilisateurs, séparés par des virgules, à inclure dans le navigateur de figures et dans la liste de sélection de `gdmsetup` pour la connexion automatique ou différée. Voir aussi les paramètres `Exclude`, `IncludeAll` et `MinimalUID`.

Exclude

      Exclude=bin,daemon,adm,lp,sync,shutdown,halt,mail,...

  Liste d'utilisateurs, séparés par des virgules, à exclure du navigateur de figures et de la liste de sélection de `gdmsetup` pour la connexion automatique ou différée. Les utilisateurs exclus pourront toujours se connecter, mais en devant saisir leur nom d'utilisateur. Voir aussi les paramètres `Include`, `IncludeAll` et `MinimalUID`.

IncludeAll

      IncludeAll=false

  Par défaut, une liste « Include » vide signifie qu'aucun utilisateur n'est affiché. En définissant IncludeAll à « true » (vrai), le fichier des mots de passe est parcouru et tous les utilisateurs sont affichés, à l'exception des exclus de la liste « Exclude » et de ceux dont l'identifiant est plus petit que « MinimalUID ». Le parcours du fichier des mots de passe peut être lent sur les systèmes ayant un grand nombre d'utilisateurs ; il ne faudrait donc pas utiliser cette fonctionnalité sur de tels systèmes. Voir aussi les paramètres `Include`, `Exclude` et `MinimalUID`.

GlobalFaceDir

      GlobalFaceDir=<share>/pixmaps/faces/

  Répertoire contenant les fichiers de figures pour tout le système. Les administrateurs systèmes peuvent placer les icônes des utilisateurs à cet endroit, sans devoir toucher à leur dossier personnel. Les fichiers de figures sont nommés d'après le nom de l'utilisateur correspondant.

  Par exemple, `<GlobalFaceDir>/jdupond` contient l'icône de figure pour l'utilisateur « jdupond ». Il ne faut pas ajouter d'extension de format d'image.

  Les images de figures doivent être enregistrées dans un format pris en charge par gdk-pixbuf et elles doivent être lisibles par l'utilisateur GDM.

  Un fichier de figure fourni par un utilisateur (à l'endroit adéquat de son dossier personnel) a toujours la priorité sur le fichier système.

GraphicalTheme

      GraphicalTheme=circles

  Le thème graphique que la bannière avec thème doit utiliser. La valeur doit correspondre à un nom de répertoire dans le répertoire des thèmes défini par `GraphicalThemeDir`.

GraphicalThemes

      GraphicalThemes=circles

  Les thèmes graphiques, séparés par des deux-points, que la bannière avec thème doit utiliser, dans le cas où le mode des thèmes aléatoires est sélectionné. Les valeurs doivent correspondre à des noms de répertoires dans le répertoire des thèmes défini par `GraphicalThemeDir`. Ce paramètre n'est utilisé que si `GraphicalThemeRand` est défini à « true » (vrai).

GraphicalThemeRand

      GraphicalThemeRand=false

  Indique si la bannière graphique utilise le mode « Uniquement sélectionné » ou « Sélection aléatoire ». Le premier mode utilise le thème indiqué par `GraphicalTheme`, alors que le second utilise les thèmes définis dans la liste `GraphicalThemes`. La valeur « false » indique à la bannière d'utiliser le mode « Uniquement sélectionné », alors que la valeur « true » (vrai) active le mode « Sélection aléatoire ».

GraphicalThemeDir

      GraphicalThemeDir=<share>/gdm/themes/

  Répertoire contenant les thèmes installés pour la bannière avec thème.

GraphicalThemedColor

      GraphicalThemedColor=#76848F

  Couleur utilisée pour l'arrière-plan de la bannière avec thème. Cela ne concerne que la bannière avec thème.

InfoMsgFile

      InfoMsgFile=/chemin/vers/fichierinfo

  Si ce paramètre est présent et que /chemin/vers/fichierinfo correspond à un fichier texte existant et lisible (par ex. <etc>/infomsg.txt), le contenu du fichier est présenté dans une boîte de dialogue modale avant que l'utilisateur puisse se connecter. Cela fonctionne avec les deux types de bannière (standard et avec thème).

InfoMsgFont

      InfoMsgFont=police

  Si ce paramètre est présent et que InfoMsgFile est renseigné (voir ci-dessus), ce paramètre indique la police à utiliser lors de l'affichage du contenu du fichier texte InfoMsgFile. Par exemple, la valeur « Sans 24 » indique qu'une police Sans serif de 24 points doit être utilisée. Cela fonctionne avec les deux types de bannière (standard et avec thème).

LocaleFile

      LocaleFile=<etc>/gdm/locale.alias

  Fichier dans un format semblable au format GNU locale, contenant des références à toutes les langues prises en charge sur le système. Le format est décrit ci-dessus ou dans un commentaire à l'intérieur du fichier.

LockPosition

      LockPosition=true

  Si défini à « true » (vrai), la position de la fenêtre de connexion de la bannière GTK+ ne peut être modifiée, même si la barre de titre est visible.

Logo

      Logo=<share>/pixmaps/gnome-logo-large.png

  Fichier image affiché dans la zone du logo. Le fichier doit être dans un format pris en charge par gdk-pixbuf et il doit être accessible en lecture par l'utilisateur GDM. Si aucun fichier n'est indiqué, l'affichage du logo est désactivé. Cela ne concerne que la bannière GTK+.

ChooserButtonLogo

      ChooserButtonLogo=<share>/pixmaps/gnome-logo-large.png

  Fichier image à afficher dans le bouton de sélection de fichier dans `gdmsetup`. Cette clé est modifiée par `gdmsetup` et ne devrait pas être modifiée manuellement par un utilisateur. Cela ne concerne que les préférences de la Fenêtre de connexion (`gdmsetup`).

MinimalUID

      MinimalUID=100

  L'identifiant (UID) minimal que GDM considère comme un identifiant d'utilisateur. Tout utilisateur avec un identifiant plus petit sera exclu du navigateur de figures. Voir aussi les paramètres `Include`, `Exclude` et `IncludeAll`.

PositionX

      PositionX=200

  Position horizontale de la fenêtre de connexion de la bannière GTK+.

PositionY

      PositionY=100

  Position verticale de la fenêtre de connexion de la bannière GTK+.

Quiver

      Quiver=true

  Indique si `gdmlogin` doit secouer l'affichage lorsqu'un nom d'utilisateur ou un mot de passe incorrect est saisi. Cela ne concerne que la bannière GTK+.

DefaultRemoteWelcome

      DefaultRemoteWelcome=true

  Si défini à « true » (vrai), le texte « Welcome to %n » est utilisé comme message d'accueil distant. Ce texte est traduit dans la langue du système. Si défini à « false » (faux), c'est le texte contenu dans le paramètre `RemoteWelcome` qui est utilisé. Cette chaîne de caractères peut utiliser les mêmes séquences spéciales décrites dans la section « Nœud de texte » du chapitre « Bannière avec thème ». Vous pouvez y découvrir la signification de « %n ».

RemoteWelcome

      RemoteWelcome=Welcome to %n

  Indique le texte à afficher à côté du logo dans la bannière des sessions XDMCP distantes. Ce texte est soumis au même processus d'expansion que le texte `Welcome`. Cette chaîne de caractères peut utiliser les mêmes séquences spéciales décrites dans la section « Nœud de texte » du chapitre « Bannière avec thème ».

RunBackgroundProgramAlways

      RunBackgroundProgramAlways=false

  Si défini à « true » (vrai), l'application d'arrière-plan est toujours exécutée, sinon elle n'est exécutée que lorsque le paramètre `BackgroundType` est à 0 (aucun). Cela ne concerne que la bannière GTK+.

SetPosition

      SetPosition=true

  Si défini à « true » (vrai), la position de la fenêtre de connexion de la bannière GTK+ est déterminée par les paramètres `PositionX` / `PositionY`.

ShowGnomeFailsafeSession

      ShowGnomeFailsafeSession=true

  Indique si la bannière affiche la session GNOME de secours dans la liste des sessions.

ShowLastSession

      ShowLastSession=true

  Indique si la bannière doit afficher la « Dernière » session dans la liste des sessions. Si défini à « false » (faux), GDM est dans le mode dit « switchdesk », utilisé par exemple par Redhat. C'est-à-dire que les utilisateurs ne peuvent pas choisir la session précédente. Ils obtiennent alors la session par défaut (voir `DefaultSession`), sauf dans les cas où ils choisissent explicitement une autre session. Donc, en cas de désactivation, ce paramètre empêche la sauvegarde de la dernière session.

ShowXtermFailsafeSession

      ShowXtermFailsafeSession=true

  Indique si la bannière affiche la session de secours Xterm dans la liste des sessions.

SoundOnLogin

      SoundOnLogin=true

  Si défini à « true » (vrai), la bannière émet un son ou un bip lorsqu'elle est prête pour effectuer une connexion. Voir aussi la clé `SoundOnLoginFile`. Pris en charge depuis la version 2.5.90.0.

SoundOnLoginSuccess

      SoundOnLoginSuccess=true

  Si défini à « true » (vrai), la bannière émet un son après une tentative réussie de connexion. Voir aussi la clé `SoundOnLoginSuccessFile`.

SoundOnLoginFailure

      SoundOnLoginFailure=true

  Si défini à « true » (vrai), la bannière émet un son après un échec de connexion. Voir aussi la clé `SoundOnLoginFailureFile`.

SoundOnLoginFile

      SoundOnLoginFile=/chemin/vers/son.wav

  Le fichier son qui sera lu avec l'application audio choisie (par défaut, `/usr/bin/play`), en lieu et place du bip, lorsque la bannière est prête pour effectuer une connexion. Voir aussi les clés `SoundOnLogin` et `SoundProgram`. Pris en charge depuis la version 2.5.90.0.

SoundOnLoginSuccessFile

      SoundOnLoginSuccessFile=/chemin/vers/son.wav

  Le fichier son qui sera lu avec l'application audio choisie (par défaut, `/usr/bin/play`), à la suite d'une connexion réussie. Voir aussi les clés `SoundOnLoginSuccess` et `SoundProgram`.

SoundOnLoginFailureFile

      SoundOnLoginFailureFile=/chemin/vers/son.wav

  Le fichier son qui sera lu avec l'application audio choisie (par défaut, `/usr/bin/play`), à la suite d'un échec de connexion. Voir aussi les clés `SoundOnLoginFailure` et `SoundProgram`.

SystemMenu

      SystemMenu=true

  Active ou désactive le menu Actions (qui était appelé menu Système). Si défini à « false » (faux), l'une des actions sera disponible quelque part. Ces actions comprennent Éteindre, Redémarrer, Configurer, Sélecteur XDMCP, etc. Elle peuvent toutes être désactivées individuellement. Éteindre, Redémarrer et Mettre en veille peuvent être simplement désactivées en plaçant une valeur vide dans la clé correspondante. Il est à noter que le menu Actions n'est affiché que pour les affichages liés, car il ne serait ni sûr, ni souhaitable pour les connexions distantes. Vous n'avez donc pas à vous préoccuper des privilèges obtenus par des utilisateurs distants.

  Il est à noter que si ce paramètre est défini à « false » (faux), aucune action n'est disponible, même si une bannière graphique les affiche par erreur. Il peut aussi arriver parfois qu'un thème graphique n'affiche pas toutes les actions disponibles sous forme de boutons ; il s'agit alors d'appuyer sur F10 pour voir le menu.

TitleBar

      TitleBar=true

  Affiche la barre de titre dans la bannière. Cela ne concerne que la bannière GTK+.

Use24Clock

      Use24Clock=auto

  Détermine l'affichage de l'horloge en mode 24 heures. Certains paramètres locaux ne prennent pas en charge le mode 12 heures (comme le finnois, c'est-à-dire `fi_FI`) ; dans ce cas, ce paramètre n'a aucun effet.

  Les valeurs possibles sont « auto » (par défaut), « true » et « false ». Si ce paramètre est vide ou défini à « auto », le format d'heure est calqué sur celui des paramètres locaux. Ceux-ci sont basés sur la langue en cours, ils sont donc modifiés par la définition des variables d'environnement LANGUAGE (extension GNU), LANG, LC_MESSAGES ou LC_ALL dans l'environnement d'exécution de GDM. La priorité entre les variables d'environnement mentionnées ci-dessus peut se trouver dans le manuel de la bibliothèque C du système.

UseInvisibleInEntry

      UseInvisibleInEntry=false

  N'affiche aucun retour visuel dans la zone de saisie du mot de passe. C'est le comportement standard dans la console et dans xdm. La définition de ce paramètre annule l'option `UseCirclesInEntry`.

DefaultWelcome

      DefaultWelcome=true

  Si défini à « true » (vrai), la valeur « Welcome » est utilisée pour le paramètre `Welcome`. Cette valeur est traduite dans la langue correspondant au système. Si défini à « false » (faux), c'est la valeur du paramètre `Welcome` qui est utilisée.

Welcome

      Welcome=Welcome

  Détermine le texte affiché à côté du logo dans la bannière standard. Les caractères de contrôle suivants sont pris en charge :

  %% — le caractère « % »

  %d — affiche le nom d'hôte

  %h — nom d'hôte complet

  %m — machine (type de processeur)

  %n — nom de nœud (c.-à-d. nom d'hôte sans .domaine)

  %r — version (système d'exploitation)

  %s — nom du système (système d'exploitation)

  Ce texte n'est utilisé que pour les affichages liés. Pour les connexions XDMCP distantes, c'est `RemoteWelcome` qui est utilisé.

  Dans la bannière avec thème, l'emplacement de ce texte dépend du thème. Si le thème n'utilise nulle part le message de bienvenue prédéfini, ce texte ne sera pas affiché du tout.

XineramaScreen

      XineramaScreen=0

  Si l'extension Xinerama est active, la fenêtre de connexion sera au centre de cet écran physique (0 pour le premier écran, 1 pour le deuxième, etc.).

#### Options du sélecteur XDMCP

##### [chooser]

AllowAdd

      AllowAdd=true

  Si défini à « true » (vrai), permet à l'utilisateur d'ajouter arbitrairement des hôtes au sélecteur. De cette façon, l'utilisateur peut se connecter avec le sélecteur à n'importe quel hôte répondant aux requêtes XDMCP.

Broadcast

      Broadcast=true

  Si défini à « true » (vrai), le sélecteur diffuse une requête sur le réseau local et répertorie les réponses. De cette façon, le sélecteur affiche toujours tous les gestionnaires disponibles sur le réseau. Si vous devez ajouter certains hôtes en dehors du réseau local ou si vous ne souhaitez pas diffuser les requêtes (broadcast), vous pouvez faire une liste d'hôtes explicite dans la clé `Hosts`.

Multicast

      Multicast=true

  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. Si vous ne souhaitez pas envoyer en multidiffusion, vous pouvez indiquer des adresses IPv6 dans la clé `Hosts` . L'hôte répond s'il écoute les requêtes XDMCP et si IPv6 est actif sur son réseau.

MulticastAddr

      MulticastAddr=ff02::1

  C'est l'adresse de multidiffusion de lien local, codée ici en dur.

DefaultHostImage

      DefaultHostImage=<share>/pixmaps/nohost.png

  Nom de fichier de l'icône d'hôte par défaut. Cette image est affichée lorsqu'aucune icône n'est précisée pour un hôte spécifique. Le fichier doit être dans un format pris en charge par gdk-pixbuf et il doit être accessible en lecture par l'utilisateur GDM.

HostImageDir

      HostImageDir=<share>/hosts

  Répertoire de fichiers d'icônes d'hôtes. L'administrateur système peut y placer des icônes pour les hôtes distants et elles apparaîtront dans `gdmchooser`.

  Le nom de fichier doit correspondre au nom complet (FQDN) de l'hôte. Les icônes doivent être dans un format pris en charge par gdk-pixbuf et elles doivent être accessibles en lecture par l'utilisateur GDM.

Hosts

      Hosts=hôte1,hôte2

  Les hôtes à présenter dans le sélecteur. Le sélecteur ne les affiche que s'ils répondent. Ces hôtes s'ajoutent à ceux répertoriés par la diffusion (si `Broadcast` est défini), ce qui fait qu'il n'est pas nécessaire d'indiquer les hôtes du réseau local. Ceci est utile si votre configuration réseau ne permet pas à tous les hôtes d'être accessibles par un paquet de diffusion (broadcast).

ScanTime

      ScanTime=4

  Indique pendant combien de secondes le sélecteur doit attendre des réponses de sa requête BROADCAST_QUERY. Ceci correspond en fait à l'intervalle dans lequel les réponses devraient arriver. Les hôtes sont tout de même ajoutés à la liste s'ils répondent après ce délai.

#### Configuration de débogage

##### [debug]

Enable

      Enable=false

  Si défini à « true » (vrai), envoie la sortie de débogage dans le syslog. Cela peut être utile pour analyser des problèmes avec GDM. Cette sortie a tendance à produire beaucoup de messages, elle ne devrait donc pas être activée de manière générale.

Gestures

      Gestures=false

  Si défini à « true » (vrai), envoie la sortie de débogage concernant la détection de mouvements pour l'accessibilité dans le syslog. Cela peut être utile pour analyser des problèmes liés à cette fonctionnalité. Cette sortie a tendance à produire beaucoup de messages, elle ne devrait donc pas être activée de manière générale.

#### Commandes personnalisées

Vous pouvez créer jusqu'à 10 commandes différentes. Les espaces entre les numéros de commandes sont autorisés, et leur position relative dans la section et les unes par rapport aux autres n'est pas importante tant qu'elles respectent l'intervalle autorisé de [0-9].

##### [customcommand]

CustomCommand[0-9]

      CustomCommand[0-9]=

  Chemin complet et arguments de la commande à exécuter lorsque l'utilisateur sélectionne la nième commande personnalisée dans le menu Actions. Il peut y avoir plusieurs commandes séparées par des « ; ». Si la valeur est vide ou manquante, la commande personnalisée n'est pas disponible. Par défaut, cette valeur n'est pas activée ; pour activer les « Commandes personnalisées », il faut donc placer une valeur non vide. [0-9] représente le suffixe de `CustomCommand` et peut être un nombre entier entre 0 et 9 y compris.

CustomCommandIsPersistent[0-9]

      CustomCommandIsPersistent[0-9]=

  Indique si la nième commande personnalisée apparaît en dehors du gestionnaire de connexions, par exemple sur le bureau par les boîtes de dialogue de déconnexion et d'extinction. Si rien n'est spécifié, la valeur par défaut est « false » (faux). Cette option n'est valide que si la commande personnalisée (`CustomCommand`) correspondante est définie. [0-9] représente le suffixe de `CustomCommand` et peut être un nombre entier entre 0 et 9 y compris.

CustomCommandLabel[0-9]

      CustomCommandLabel[0-9]=

  Indique le texte prédéfini affiché sur le bouton ou l'élément de menu correspondant à la nième commande personnalisée. Si rien n'est spécifié, la valeur par défaut est « Custom_[0-9] ». Cette option n'est valide que si la commande personnalisée (`CustomCommand`) correspondante est définie. [0-9] représente le suffixe de `CustomCommand` et peut être un nombre entier entre 0 et 9 y compris. Cette option ne peut pas contenir des points-virgules (« ; »).

CustomCommandLRLabel[0-9]

      CustomCommandLRLabel[0-9]=

  Indique le texte prédéfini affiché sur l'élément de liste ou le bouton radio correspondant à la nième commande personnalisée. Si rien n'est spécifié, la valeur par défaut est « Execute custom command _[0-9] ». Cette option n'est valide que si la commande personnalisée (`CustomCommand`) correspondante est définie. [0-9] représente le suffixe de `CustomCommand` et peut être un nombre entier entre 0 et 9 y compris.

CustomCommandNoRestart[0-9]

      CustomCommandNoRestart[0-9]=

  Indique si GDM est arrêté et redémarré après que la nième commande personnalisée ait été exécutée. Si rien n'est spécifié, la valeur par défaut est « false ». Cette option n'est valide que si la commande personnalisée (`CustomCommand`) correspondante est définie. [0-9] représente le suffixe de `CustomCommand` et peut être un nombre entier entre 0 et 9 y compris. De plus, lorsque le paramètre `CustomCommandIsPersistent` correspondant est défini à « true » (vrai), la définition de CustomCommandNoRestart à « false » place la commande personnalisée correspondante dans les actions possibles de la boîte de dialogue d'extinction, et la définition de ce même paramètre à « true » place la commande personnalisée correspondante dans les actions possibles de la boîte de dialogue de déconnexion.

CustomCommandText[0-9]

      CustomCommandText[0-9]=

  Indique le message qui apparaît dans la boîte de dialogue d'avertissement de la nième commande personnalisée lorsque celle-ci est lancée par un bouton, un élément de menu, un bouton radio ou un élément de liste. Si rien n'est spécifié, la valeur par défaut est « Are you sure? ». Cette option n'est valide que si la commande personnalisée (`CustomCommand`) correspondante est définie. [0-9] représente le suffixe de `CustomCommand` et peut être un nombre entier entre 0 et 9 y compris.

CustomCommandTooltip[0-9]

      CustomCommandTooltip[0-9]=

  Indique le message qui apparaît dans l'infobulle de la nième commande personnalisée. Si rien n'est spécifié, la valeur par défaut est « Execute custom command [0-9] ». Cette option n'est valide que si la commande personnalisée (`CustomCommand`) correspondante est définie. [0-9] représente le suffixe de `CustomCommand` et peut être un nombre entier entre 0 et 9 y compris.

#### Définitions du serveur X

GDM doit recevoir des informations sur chaque serveur X qui sera utilisé. Vous pouvez avoir autant de définitions que souhaité, chacune étant identifiée par un nom unique. Le nom `Standard` est obligatoire. Si vous ne définissez pas ce serveur, GDM prend les valeurs par défaut d'un serveur « Standard » et le chemin donné par `daemon/StandardXServer`. `Standard` est utilisé comme valeur par défaut, dans les cas où aucun autre serveur n'a été défini.

Les serveurs sont définis par des sections nommées `server-` suivi par l'identifiant du serveur. Cela devrait être un texte purement ASCII, sans espace. Le programme de configuration graphique permet de modifier les serveurs définis dans les fichiers de configuration de GDM, mais ne permet actuellement pas d'ajouter ou de supprimer des définitions de serveur. Comme les options de configuration normales, les sections `server-` du fichier `<etc>/gdm/custom.conf` ont la priorité sur les valeurs du fichier `<share>/gdm/defaults.conf`. Autrement dit, si une section `server-Standard` est définie dans le fichier `<etc>/gdm/custom.conf`, ce sont ces informations qui seront utilisées, et si une section semblable existe dans le fichier `<share>/gdm/defaults.conf`, elle sera ignorée.

##### [server-Standard]

name

      name=Standard server

  Le nom que l'utilisateur voit apparaître.

command

      command=/chemin/vers/X

  La commande à exécuter, avec le chemin complet vers le binaire du serveur X et tout argument supplémentaire requis. En principe, il n'est pas nécessaire d'ajouter un argument `-nolisten tcp`, car l'ajout de cet argument est contrôlé par l'option de configuration GDM `DisallowTCP`.

flexible

      flexible=true

  Indique si ce serveur est un choix possible lorsque l'utilisateur souhaite lancer un serveur flexible, à la demande.

handled

      handled=true

  Indique que GDM devrait lancer la fenêtre de connexion sur ce serveur, et permettre à un utilisateur de s'y connecter. Si défini à « false » (faux), GDM lance simplement le serveur et attend qu'il se termine. Ceci peut être utile pour exécuter un terminal X avec GDM. Dans cette situation, vous devriez normalement aussi ajouter `-terminate` à la ligne de commande du serveur, afin que celui-ci se ferme après chaque session. Sinon, le contrôle de l'esclave ne revient jamais à GDM et, par exemple, le redémarrage logiciel ne fonctionnera pas. Cela est dû au fait que GDM pense qu'une connexion est en cours aussi longtemps que le serveur est actif.

chooser

      chooser=false

  Indique que GDM doit lancer un sélecteur dans cette fenêtre à la place d'une fenêtre de connexion, et permettre à l'utilisateur de choisir le serveur auquel il souhaite se connecter.

priority

      priority=0

  Indique que le serveur X doit être démarré avec une priorité de processus différente. Toute valeur entière acceptée par la fonction de bibliothèque C setpriority est valable (normalement entre -20 et 20), 0 étant la valeur par défaut. Pour les applications très interactives, -5 produit une bonne réactivité. La valeur par défaut est 0, et la fonction setpriority n'est pas appelée si la valeur reste à 0.

#### Configuration des affichages liés

La configuration d'affichage lié (aussi appelé local ou statique) indique quels sont les affichages qui doivent toujours être gérés par GDM. Par exemple, GDM redémarre le serveur X de l'affichage s'il meurt. Il peut y avoir autant d'affichages liés gérés par GDM que souhaité. En principe, chaque affichage est associé à un affichage réel. Sur un ordinateur classique doté d'un seul écran, cette section ne contient qu'une clé `0` correspondant à l'affichage (DISPLAY) `:0`.

Le programme de configuration graphique permet aux utilisateurs d'éditer la configuration d'affichage lié définie dans les fichiers de configuration GDM et d'ajouter ou de supprimer des entrées. Comme pour les autres options de configuration, la section `[servers]` du fichier `<etc>/gdm/custom.conf` a la priorité sur les valeurs du fichier filename><share>/gdm/defaults.conf

##### [servers]

<numéro d'affichage>

      0=Standard [device=/dev/foo]

  Cette clé correspond à l'affichage à gérer, la clé `0` correspondant à l'affichage `:0`. Sur une machine à plusieurs écrans, vous pouvez configurer GDM pour qu'il gère un programme de connexion sur d'autres affichages en ajoutant des clés supplémentaires. Par exemple, l'ajout de la clé `1` informe GDM qu'il doit gérer l'affichage `:1`.

  Le premier mot de la valeur correspond à une définition de serveur X dans la section « Définitions de serveurs X » du fichier de configuration. Par exemple, les lignes ci-après signifient que l'affichage `:0` va démarrer un serveur X tel que défini dans la section `[server-Standard]` :

      [servers]
      0=Standard

  Le premier mot de la valeur peut aussi être le texte « inactive » pour indiquer que cet affichage ne doit pas être géré. Cela peut être utilisé dans le fichier de configuration personnalisé de GDM pour désactiver un affichage défini dans le fichier de configuration système par défaut de GDM.

  L'argument facultatif « device » est utilisé pour préciser le périphérique associé à l'affichage. Avec l'utilisation des terminaux virtuels (VT), cette valeur est ignorée et GDM utilise le nom de périphérique correct associé au VT. Si les terminaux virtuels ne sont pas utilisés, GDM utilise alors la valeur spécifiée par cet argument facultatif. Si l'argument n'est pas défini, GDM utilise le paramètre par défaut pour les affichages liés défini dans la section de configuration `UtmpLineAttached`. En ce qui concerne l'affichage principal (généralement `:0`), `/dev/console` est une valeur habituelle. Pour d'autres affichages, il est probablement plus sûr de ne pas inclure cet argument, sauf si vous connaissez le périphérique précis associé à l'affichage. La valeur de « device » peut contenir « %d » qui correspond au nom d'affichage (DISPLAY) ou « %h » qui correspond au nom d'hôte.

### Configuration par utilisateur

Il existe certains paramètres de configuration propres aux utilisateurs, qui définissent le comportement de GDM. GDM est très sensible en rapport avec l'appartenance et les permissions des fichiers utilisateurs auxquels il accède, et il ignore les fichiers qui n'appartiennent pas à l'utilisateur ou ceux qui sont accessibles en écriture pour le groupe ou tout le monde. Il ignore aussi l'utilisateur s'il n'est pas propriétaire de son dossier personnel ou s'il est accessible en écriture pour le groupe ou tout le monde. Les fichiers doivent aussi être plus petits que la valeur `UserMaxFile` définie dans la configuration GDM. S'il semble que GDM n'accède pas correctement aux paramètres de configuration d'un utilisateur, le problème est probablement causé par l'échec de l'une de ces vérifications.

Tout d'abord, il y a le fichier `~/.dmrc`. En théorie, ce fichier devrait être partagé entre GDM et KDM, afin que les utilisateurs ne doivent configurer qu'une seule fois les choses. C'est un fichier de configuration de style `.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 (c.à-d. 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

En principe, GDM écrit ce fichier lors de la première connexion de l'utilisateur. Il le modifie lorsque l'utilisateur choisit de modifier les valeurs par défaut lors d'une connexion suivante.

Si le navigateur de figures GDM est activé, le fichier `$HOME/.face` est recherché. Ce fichier devrait être une image standard dans un format que GTK+ sache lire, tel que PNG ou JPEG. Il doit aussi être plus petit que les valeurs `MaxIconWidth` et `MaxIconHeight` définies dans la configuration de GDM, sans quoi il sera ignoré. Les utilisateurs peuvent lancer le programme `gdmphotosetup` pour définir une image de figure, et ce programme copie le fichier à l'emplacement `$HOME/.face` et il le redimensionne afin qu'il ne soit pas plus grand que les valeurs maximales ci-dessus. `gdmphotosetup` prend garde à ce que les proportions de l'image soient respectées.

Les images de figures peuvent aussi être placées dans le répertoire de figures global, indiqué par l'option de configuration `GlobalFaceDir` (habituellement `<share>/pixmaps/faces/`). Le nom de fichier doit alors correspondre au nom de l'utilisateur, avec une extension facultative de type `.png`, `.jpg`, etc.

## Supervision de GDM

Vous pouvez contrôler le comportement de GDM durant son exécution de différentes manières. Vous pouvez soit lancer certaines commandes, soit vous pouvez communiquer avec GDM à l'aide du protocole socket Unix ou d'un protocole FIFO.

### Commandes

Pour arrêter GDM, vous pouvez soit envoyer le signal TERM au démon principal, soit exécuter la commande `gdm-stop` qui se trouve dans le répertoire `<sbin>/`. Pour redémarrer GDM, vous pouvez soit envoyer le signal HUP au démon principal, soit exécuter la commande `gdm-restart` qui se trouve aussi dans le répertoire `<sbin>/`. Pour redémarrer GDM, mais uniquement après la déconnexion de tous les utilisateurs, vous pouvez soit envoyer le signal USR1 au démon principal, soit exécuter la commande `gdm-safe-restart`, toujours dans le répertoire `<sbin>/`.

La commande `gdmflexiserver` peut être utilisée pour lancer de nouveaux affichages flexibles (sur demande) si votre système prend en charge les terminaux virtuels. Normalement, cette commande verrouille la session en cours par un économiseur d'écran, afin que l'utilisateur puisse sans crainte s'éloigne de l'ordinateur et laisser un autre utilisateur se connecter. Si plus de deux affichages flexibles ont été démarrés, `gdmflexiserver` affiche une boîte de dialogue permettant à l'utilisateur de choisir la session qu'il veut poursuivre. L'utilisateur doit normalement saisir son mot de passe pour retourner dans sa session. À la fin d'une session, le système revient au terminal virtuel précédent. Lancez `gdmflexiserver --help` pour obtenir une liste des options possibles.

### Le protocole FIFO

GDM propose aussi un fichier FIFO nommé `.gdmfifo` dans le répertoire `ServAuthDir` (habituellement `<var>/gdm/.gdmfifo`). Vous devez être administrateur (root) pour utiliser ce protocole, et son utilisation est principalement réservée aux communications internes de GDM. C'est un protocole très simple où il suffit d'écrire une commande sur une seule ligne du fichier. Il peut être utilisé pour signifier à GDM des ordres comme le redémarrage, la mise en veille de l'ordinateur ou le redémarrage de tous les serveurs X à la prochaine occasion (ce qui peut être utile pour une application de configuration de X).

Une documentation complète et à jour des commandes et de leur usage se trouve dans l'arborescence de la source de GDM dans le fichier `daemon/gdm.h`. Recherchez les définitions de constantes commençant par `GDM_SOP_`. Les commandes qui exigent l'identifiant de processus de l'esclave comme argument sont celles qui sont réellement utilisées pour la communication interne entre l'esclave et le maître. Elles ne devraient pas être employées.

### Protocole socket

GDM fournit un socket de domaine Unix pour la communication dans `/tmp/.gdm_socket`. Par ce moyen, vous pouvez vérifier si GDM est lancé, la version du démon, les affichages actuellement en cours avec les noms des personnes connectées et, pour autant que GDM le prenne en charge sur votre système d'exploitation, les terminaux virtuels de toutes les connexions en console. Par exemple, la commande `gdmflexiserver` utilise ce protocole pour lancer des affichages flexibles (à la demande).

gdmflexiserver accepte les commandes suivantes avec l'option --command :

    ADD_DYNAMIC_DISPLAY
    ALL_SERVERS
    ATTACHED_SERVERS
    AUTH_LOCAL
    CLOSE
    FLEXI_XNEST
    FLEXI_XNEST_USER
    FLEXI_XSERVER
    FLEXI_XSERVER_USER
    GET_CONFIG
    GET_CONFIG_FILE
    GET_CUSTOM_CONFIG_FILE
    GET_SERVER_LIST
    GET_SERVER_DETAILS
    GREETERPIDS
    QUERY_LOGOUT_ACTION
    QUERY_CUSTOM_CMD_LABELS
    QUERY_CUSTOM_CMD_NO_RESTART_STATUS
    QUERY_VT
    RELEASE_DYNAMIC_DISPLAYS
    REMOVE_DYNAMIC_DISPLAY
    SERVER_BUSY
    SET_LOGOUT_ACTION
    SET_SAFE_LOGOUT_ACTION
    SET_VT
    UPDATE_CONFIG
    VERSION

Ces options sont décrites en détails ci-dessous, y compris les arguments obligatoires, le format des réponses et les codes de retour.

#### ADD_DYNAMIC_DISPLAY

    ADD_DYNAMIC_DISPLAY: Crée une nouvelle définition de serveur qui
                         s'exécute sur l'affichage indiqué, le laissant
                         dans l'état DISPLAY_CONFIG.
    Pris en charge depuis : 2.8.0.0
    Arguments : <affichage d'exécution>=<serveur>
      Où <serveur> est soit une configuration mentionnée dans
      la configuration GDM, soit un nom de commande littéral.
    Réponses :
      OK <affichage>
      ERROR <numéro d'erreur> <description d'erreur en anglais>
         0 = Non implémenté
         2 = Affichage existant
         3 = Aucune chaîne de serveur
         4 = Échec de démarrage d'affichage
         100 = Non authentifié
         200 = Affichages dynamiques non autorisés
         999 = Erreur inconnue

#### ALL_SERVERS

    ALL_SERVERS: Énumère tous les affichages, y compris consoles, distants ou xnest.
                 Cela peut être utile, par exemple, pour vérifier si
                 votre affichage actuel est géré par le démon gdm,
                 en parcourant la liste. Cela ressemble à la commande
                 « w », mais pour les sessions graphiques.
    Pris en charge depuis : 2.4.2.96
    Arguments : aucun
    Réponses :
      OK <serveur>;<serveur>;...

      <serveur> is <affichage>,<utilisateur connecté>

      <utilisateur connecté> peut être vide si personne ne s'est encore connecté

      ERROR <numéro d'erreur> <description d'erreur en anglais>
         0 = Non implémenté
         200 = Trop de messages
         999 = Erreur inconnue

#### ATTACHED_SERVERS

    ATTACHED_SERVERS: Énumère tous les affichages liés. N'affiche pas
                      les affichages XDMCP et xnest non liés.
    Note :            Cette commande s'appelait CONSOLE_SERVERS, et
                      elle est toujours reconnue pour assurer la
                      rétrocompatibilité. L'argument facultatif motif
                      est pris en charge à partir de la version 2.8.0.0.
    Pris en charge depuis : 2.2.4.0
    Arguments : <motif> (facultatif)
      Sans argument, tous les affichages liés sont renvoyés. L'argument
      facultatif <motif> est une chaîne de caractères pouvant contenir les
      caractères d'expansion « * », « ? » et « [] ».
      Seuls les affichages correspondants au motif sont renvoyés.
    Réponses :
      OK <serveur>;<serveur>;...

      <serveur> is <affichage>,<utilisateur connecté>,<affichage
      vt ou xnest>

      <utilisateur connecté> peut être vide si personne ne s'est encore
      connecté, et <vt> peut valoir -1 s'il est inconnu ou non pris en
      charge (par ex. sur des systèmes autres que Linux). Si l'affichage est
      xnest est qu'il est en console (c.-à-d. un xnest à l'intérieur d'un
      autre affichage en console) il apparaît dans la liste, mais au lieu de
      vt, c'est l'affichage parent sous la forme standard qui est mentionné.

      ERROR <numéro d'erreur> <description d'erreur en anglais>
         0 = Non implémenté
         200 = Trop de messages
         999 = Erreur inconnue

#### AUTH_LOCAL

    AUTH_LOCAL: Définit cette connexion comme authentifiée pour
                FLEXI_SERVER. C'est parce qu'un affichage standard
                (non imbriqué) ne peut être démarré que par des utilisateurs
                connectés sur des affichages liés, et dans ce cas, GDM ne
                considère que les utilisateurs connecté par GDM. Ils doivent
                transmettre le cookie xauth MIT-MAGIC-COOKIE-1 qu'ils ont reçu
                avant que la connexion ne soit authentifiée.
    Note :      La commande AUTH LOCAL exige
                l'option --authenticate, même si seul
                FLEXI XSERVER l'utilise actuellement.
    Note :      Depuis la version 2.6.0.6, vous pouvez aussi utiliser un
                cookie global <ServAuthDir>/.cookie, qui fonctionne pour
                toutes les authentifications, excepté pour SET_LOGOUT_ACTION,
                QUERY_LOGOUT_ACTION et SET_SAFE_LOGOUT_ACTION
                qui exigent un affichage avec connexion.
    Pris en charge depuis : 2.2.4.0
    Arguments : <cookie xauth>
      <cookie xauth> est sous forme hexadécimale, sans préfixe 0x
    Réponses :
      OK
      ERROR <numéro d'erreur> <description d'erreur en anglais>
         0 = Non implémenté
         100 = Non authentifié
         200 = Trop de messages
         999 = Erreur inconnue

#### CLOSE

    CLOSE : Ferme la connexion socket.
    Pris en charge depuis : 2.2.4.0
    Arguments : aucun
    Réponses : aucune

#### FLEXI_XNEST

    FLEXI_XNEXT: Démarre un nouvel affichage flexible imbriqué.
    Note :       Pris en charge dans les anciennes versions dès 2.2.4.0, puis
                 2.2.4.2, mais depuis la version 2.3.90.4, vous devez fournir 4
                 arguments, sans quoi l'erreur 100 est renvoyée. Cela
                 va lancer la commande de serveur X imbriqué avec
                 le fichier XAUTHORITY spécifié et sous la même
                 identité que le propriétaire de ce fichier (et le même
                 que vous avez spécifié). Vous devez aussi fournir le cookie
                 comme 3ème argument de l'affichage, pour prouver que
                 vous êtes bien cet utilisateur. Ce fichier doit aussi être
                 UNIQUEMENT lisible par cet utilisateur, c'est-à-dire qu'il
                 doit être en mode 0600. Si l'une des conditions n'est pas
                 respectée, l'erreur 100 est renvoyée.
    Note :       Le cookie doit être MIT-MAGIC-COOKIE-1,
                 le premier que GDM peut trouver dans le fichier XAUTHORITY
                 pour cet affichage. Si ce n'est pas ce que vous utilisez,
                 vous devriez d'abord en générer un. Le cookie
                 doit être sous forme hexadécimale.
    Pris en charge depuis : 2.3.90.4
    Arguments : <affichage d'exécution> <identifiant d'utilisateur>
                <cookie xauth pour l'affichage> <fichier xauth>
    Réponses :
      OK <affichage>
      ERROR <numéro d'erreur> <description d'erreur en anglais>
         0 = Non implémenté
         1 = Plus de serveur flexi
         2 = Erreurs de démarrage
         3 = Échec de X
         4 = X trop occupé
         5 = Xnest ne peut se connecter
         6 = Aucun binaire de serveur
         100 = Non authentifié
         200 = Trop de messages
         999 = Erreur inconnue

#### FLEXI_XNEST_USER

    FLEXI_XNEST_USER: Lance un nouvel affichage flexible imbriqué
                      et initialise la bannière avec le nom d'utilisateur indiqué.
    Note :            C'est une variante de la commande FLEXI_XNEST.
    Note :       Le cookie doit être MIT-MAGIC-COOKIE-1,
                 le premier que GDM peut trouver dans le fichier XAUTHORITY
                 pour cet affichage. Si ce n'est pas ce que vous utilisez,
                 vous devriez d'abord en générer un. Le cookie
                 doit être sous forme hexadécimale.
    Pris en charge depuis : 2.17.7
    Arguments : <nom d'utilisateur> <affichage d'exécution> <identifiant de
               l'utilisateur> <cookie xauth pour l'affichage> <fichier xauth>
    Réponses :
      OK <affichage>
      ERROR <numéro d'erreur> <description d'erreur en anglais>
         0 = Non implémenté
         1 = Plus de serveur flexi
         2 = Erreurs de démarrage
         3 = Échec de X
         4 = X trop occupé
         5 = Xnest ne peut se connecter
         6 = Aucun binaire de serveur
         100 = Non authentifié
         200 = Trop de messages
         999 = Erreur inconnue

#### FLEXI_XSERVER

    FLEXI_XSERVER: Lance un nouvel affichage X flexible. Pris en charge uniquement
                   pour les connexions qui ont transmis AUTH_LOCAL.
    Pris en charge depuis : 2.2.4.0
    Arguments : <type xserver>
      Sans argument, c'est le serveur X standard qui est lancé.
    Réponses :
      OK <affichage>
      ERROR <numéro d'erreur> <description d'erreur en anglais>
         0 = Non implémenté
         1 = Plus de serveur flexi
         2 = Erreurs de démarrage
         3 = Échec de X
         4 = X trop occupé
         6 = Aucun binaire de serveur
         100 = Non authentifié
         200 = Trop de messages
         999 = Erreur inconnue

#### FLEXI_XSERVER_USER

    FLEXI_XSERVER_USER: Lance un nouvel affichage X flexible et initialise la
                        bannière avec le nom d'utilisateur indiqué. Pris en charge
                        uniquement pour les connexions qui ont transmis AUTH_LOCAL.
    Pris en charge depuis : 2.17.7
    Arguments : <nom d'utilisateur> <type de xserver>
      Si aucun type de serveur n'est indiqué, c'est le serveur X standard qui est lancé.
    Réponses :
      OK <affichage>
      ERROR <numéro d'erreur> <description d'erreur en anglais>
         0 = Non implémenté
         1 = Plus de serveur flexi
         2 = Erreurs de démarrage
         3 = Échec de X
         4 = X trop occupé
         6 = Aucun binaire de serveur
         100 = Non authentifié
         200 = Trop de messages
         999 = Erreur inconnue

#### GET_CONFIG

    GET_CONFIG:  Obtient la valeur de configuration de la clé. Utile
                 pour que d'autres applications puissent interroger GDM sur ses
                 informations de configuration. Toute clé définie comme GDM_KEY_*
                 dans gdm-daemon-config-keys.h est prise en charge. À partir de la
                 version 2.13.0.2, les clés traduites (telles que
                 « greeter/GdmWelcome[fr] » sont prises en charge par GET_CONFIG.
                 Depuis cette même version 2.13.0.2, il n'est plus nécessaire
                 d'inclure la valeur par défaut (c.-à-d. que vous pouvez indiquer
                 la clé « greeter/IncludeAll » au lieu de devoir indiquer
                 « greeter/IncludeAll=false ».
    Pris en charge depuis : 2.6.0.9
    Arguments : <clé>
    Réponses :
      OK <valeur>
      ERROR <numéro d'erreur> <description d'erreur en anglais>
         0 = Non implémenté
         50 = Clé non prise en charge
         200 = Trop de messages
         999 = Erreur inconnue

#### GET_CONFIG_FILE

    GET_CONFIG_FILE:  Obtient l'emplacement du fichier de configuration
                      utilisé par le démon. si le démon GDM a été lancé avec
                      l'option --config, il renvoie la valeur qui a été
                      transmise par cet argument.
    Pris en charge depuis : 2.8.0.2
    Arguments : aucun
    Réponses :
      OK <chemin complet vers le fichier de configuration de GDM>
      ERROR <numéro d'erreur> <description d'erreur en anglais>
         0 = Non implémenté
         200 = Trop de messages
         999 = Erreur inconnue

#### GET_CUSTOM_CONFIG_FILE

    GET_CUSTOM_CONFIG_FILE: Obtient l'emplacement du fichier de configuration
                            utilisé par le démon.
    Pris en charge depuis : 2.14.0.0
    Arguments : aucun
    Réponses :
      OK <chemin complet vers le fichier de configuration personnalisée de GDM>
      ERROR <numéro d'erreur> <description d'erreur en anglais>
         0 = Non implémenté
         1 = Fichier non trouvé
         200 = Trop de messages
         999 = Erreur inconnue

#### GET_SERVER_DETAILS

    GET_SERVER_DETAILS: Obtient des informations détaillées sur un serveur spécifique.
    Pris en charge depuis : 2.13.0.4
    Arguments : <serveur> <clé>
      Les valeurs de clé comprennent :
        NAME      - Renvoie le nom du serveur
        COMMAND   - Renvoie la commande du serveur
        FLEXIBLE  - Renvoie « true » si c'est un serveur flexible,
                    « false » sinon
        CHOOSABLE - Renvoie « true » si c'est un serveur sélectionnable,
                    « false » sinon
        HANDLED   - Renvoie « true » si c'est un serveur géré,
                    « false » sinon
        CHOOSER   - Renvoie « true » si c'est un sélecteur,
                    « false » sinon
        PRIORITY  - Renvoie la priorité du processus
    Réponses :
      OK <valeur>
      ERROR <numéro d'erreur> <description d'erreur en anglais>
         0 = Non implémenté
         1 = Serveur introuvable
         2 = Clé non valide
         50 = Clé non prise en charge
         200 = Trop de messages
         999 = Erreur inconnue

#### GET_SERVER_LIST

    GET_SERVER_LIST:  Obtient une liste des sections « server » du
                      fichier de configuration.
    Pris en charge depuis : 2.13.0.4
    Arguments : aucun
    Réponses :
      OK <valeur>;<valeur>;...
      ERROR <numéro d'erreur> <description d'erreur en anglais>
         0 = Non implémenté
         1 = Aucun serveur trouvé
         200 = Trop de messages
         999 = Erreur inconnue

#### GREETERPIDS

    GREETERPIDS: Énumère tous les identifiants de processus (pid) de bannière
                 afin de pouvoir leur envoyer le signal HUP pour qu'ils relisent
                 la configuration. Il faut bien sûr être root pour pouvoir faire cela.
    Pris en charge depuis : 2.3.90.2
    Arguments : aucun
    Réponses :
      OK <pid>;<pid>;...
      ERROR <numéro d'erreur> <description d'erreur en anglais>
         0 = Non implémenté
         200 = Trop de messages
         999 = Erreur inconnue

#### QUERY_LOGOUT_ACTION

    QUERY_LOGOUT_ACTION: Interroge sur les actions de déconnexion possibles.
                         Pris en charge uniquement pour les connexions qui
                         ont transmis AUTH_LOCAL.
    Pris en charge depuis : 2.5.90.0
    Réponses :
      OK <action>;<action>;...
         Où action vaut HALT, REBOOT, SUSPEND ou CUSTOM_CMD[0-9].
         Une liste vide peut aussi être renvoyée si aucune action n'est possible.
         Un « ! » est ajouté à une action si elle a déjà été définie avec
         SET_LOGOUT_ACTION ou SET_SAFE_LOGOUT_ACTION. Il faut relever que
         SET_LOGOUT_ACTION a la priorité sur SET_SAFE_LOGOUT_ACTION.
      ERROR <numéro d'erreur> <description d'erreur en anglais>
         0 = Non implémenté
         100 = Non authentifié
         200 = Trop de messages
         999 = Erreur inconnue

#### QUERY_CUSTOM_CMD_LABELS

     QUERY_CUSTOM_CMD_LABELS: Interroge sur les étiquettes des commandes
                              personnalisées exportées. Pris en charge uniquement pour les
                              connexions qui ont transmis AUTH_LOCAL.
     Pris en charge depuis : 2.5.90.0
     Réponses :
       OK <étiquette1>;<étiquette2>;...
          Où étiquetteX est l'une des étiquettes des commandes CUSTOM_CMDX
          (où X va de 0 à GDM_CUSTOM_COMMAND_MAX). Une liste vide peut
          aussi être renvoyée si aucune des commandes personnalisées n'est
          exportée hors du gestionnaire de connexions (aucune des options
          CustomCommandIsPersistent n'est définie à « true »).
       ERROR <numéro d'erreur> <description d'erreur en anglais>
          0 = Non implémenté
          100 = Non authentifié
          200 = Trop de messages
          999 = Erreur inconnue

#### QUERY_CUSTOM_CMD_NO_RESTART_STATUS

    QUERY_CUSTOM_CMD_NO_RESTART_STATUS: Interroge les options de
                                        configuration NoRestart pour chaque commande
                                        personnalisée. Pris en charge uniquement pour les
                                        connexions qui ont transmis AUTH_LOCAL.
    Pris en charge depuis : 2.5.90.0
    Réponses :
      OK <état>
         Où chaque bit d'état représente la valeur NoRestart
         de chaque commande personnalisée.
         bit activé (1) : NoRestart = true,
         bit désactivé (0): NoRestart = false.
      ERROR <numéro d'erreur> <description d'erreur en anglais>
         0 = Non implémenté
         100 = Non authentifié
         200 = Trop de messages
         999 = Erreur inconnue

#### QUERY_VT

    QUERY_VT:  Demande au démon sur quel terminal virtuel nous nous trouvons.
               C'est utile pour les connexions qui ne possèdent pas
               /dev/console, mais qui sont tout de même des connexions
               de console. Pris en charge uniquement sur Linux pour l'instant,
               d'autres systèmes retournent simplement l'erreur 8. C'est aussi
               la méthode privilégiée à utiliser pour savoir si la prise en charge
               des terminaux virtuels est disponible dans le démon. Pris en charge
               uniquement pour les connexions qui ont transmis AUTH_LOCAL.
    Pris en charge depuis : 2.5.90.0
    Arguments : aucun
    Réponses :
      OK <numéro de terminal virtuel>
      ERROR <numéro d'erreur> <description d'erreur en anglais>
         0 = Non implémenté
         8 = Terminaux virtuels non pris en charge
         100 = Non authentifié
         200 = Trop de messages
         999 = Erreur inconnue

#### RELEASE_DYNAMIC_DISPLAYS

    RELEASE_DYNAMIC_DISPLAYS: Libère les affichages dynamiques actuellement
                              dans l'état DISPLAY_CONFIG.
    Pris en charge depuis : 2.8.0.0
    Arguments : <affichage à libérer>
    Réponses :
      OK <affichage>
      ERROR <numéro d'erreur> <description d'erreur en anglais>
         0 = Non implémenté
         1 = Mauvais numéro d'affichage
         100 = Non authentifié
         200 = Affichages dynamiques non autorisés
         999 = Erreur inconnue

#### REMOVE_DYNAMIC_DISPLAY

    REMOVE_DYNAMIC_DISPLAY: Supprime un affichage dynamique en tuant le
                            serveur et en nettoyant la configuration de l'affichage.
    Pris en charge depuis : 2.8.0.0
    Arguments : <affichage à supprimer>
    Réponses :
      OK <affichage>
      ERROR <numéro d'erreur> <description d'erreur en anglais>
         0 = Non implémenté
         1 = Mauvais numéro d'affichage
         100 = Non authentifié
         200 = Affichages dynamiques non autorisés
         999 = Erreur inconnue

#### SERVER_BUSY

    SERVER_BUSY:  Renvoie « true » (vrai) si la moitié ou plus des sockets de
                  démons sont occupés, sinon renvoie « false » (faux). Utilisé par
                  des programmes esclaves qui veulent s'assurer de ne pas
                  surcharger le serveur.
    Pris en charge depuis : 2.13.0.8
    Arguments : aucun
    Réponses :
      OK <valeur>
      ERROR <numéro d'erreur> <description d'erreur en anglais>
         0 = Non implémenté
         200 = Trop de messages
         999 = Erreur inconnue

#### SET_LOGOUT_ACTION

    SET_LOGOUT_ACTION: Signale au démon qu'il doit stopper, redémarrer ou
                       mettre en veille après que le processus esclave soit fermé.
                       Pris en charge uniquement pour les connexions qui ont
                       transmis AUTH_LOCAL.
    Pris en charge depuis : 2.5.90.0
    Arguments : <action>
      NONE               Définit l'action de sortie à « none » (aucune)
      HALT               Définit l'action de sortie à « halt » (arrêter)
      REBOOT             Définit l'action de sortie à « reboot » (redémarrer)
      SUSPEND            Définit l'action de sortie à « suspend » (mettre en veille)
      CUSTOM_CMD[0-9]    Définit l'action de sortie à la commande personnalisée [0-9]
    Réponses :
      OK
      ERROR <numéro d'erreur> <description d'erreur en anglais>
         0 = Non implémenté
         7 = Action de déconnexion inconnue ou non disponible
         100 = Non authentifié
         200 = Trop de messages
         999 = Erreur inconnue

#### SET_SAFE_LOGOUT_ACTION

    SET_SAFE_LOGOUT_ACTION:  Signale au démon qu'il doit stopper, redémarrer ou
                             mettre en veille après la déconnexion de tous les
                             utilisateurs. Si une seule personne se déconnecte,
                             cela revient au même que SET_LOGOUT_ACTION. Il
                             faut relever que SET_LOGOUT_ACTION a la priorité
                             sur SET_SAFE_LOGOUT_ACTION s'il contient autre
                             chose que « NONE ». Si personne n'est
                             connecté, l'action s'effectue immédiatement.
                             Pris en charge uniquement pour les connexions
                             qui ont transmis AUTH_LOCAL.
    Pris en charge depuis : 2.5.90.0
    Arguments : <action>
      NONE               Définit l'action de sortie à « none » (aucune)
      HALT               Définit l'action de sortie à « halt » (arrêter)
      REBOOT             Définit l'action de sortie à « reboot » (redémarrer)
      SUSPEND            Définit l'action de sortie à « suspend » (mettre en veille)
      CUSTOM_CMD[0-9]    Définit l'action de sortie à la commande personnalisée [0-9]
    Réponses :
      OK
      ERROR <numéro d'erreur> <description d'erreur en anglais>
         0 = Non implémenté
         7 = Action de déconnexion inconnue ou non disponible
         100 = Non authentifié
         200 = Trop de messages
         999 = Erreur inconnue

#### SET_VT

    SET_VT:  Bascule sur le terminal virtuel indiqué.
             C'est utile pour les connexions qui ne possèdent pas /dev/console
             mais qui sont tout de même des connexions de console. Pris
             en charge uniquement sur Linux pour l'instant, d'autres systèmes
             renvoient simplement l'erreur 8. Pris en charge uniquement
             pour les connexions qui ont transmis AUTH_LOCAL.
    Pris en charge depuis : 2.5.90.0
    Arguments : <vt>
    Réponses :
      OK
      ERROR <numéro d'erreur> <description d'erreur en anglais>
         0 = Non implémenté
         8 = Terminaux virtuels non pris en charge
         9 = Numéro de terminal virtuel non valide
         100 = Non authentifié
         200 = Trop de messages
         999 = Erreur inconnue

#### UPDATE_CONFIG

    UPDATE_CONFIG: Signale au démon qu'il doit relire une clé
                   du fichier de configuration GDM. Tout utilisateur peut
                   demander que des valeurs soient lues à nouveau, mais
                   le démon ne le fait que si le fichier a été modifié depuis
                   sa première lecture par GDM. Seuls les utilisateurs
                   qui peuvent modifier le fichier de configuration de GDM
                   (normalement seul root peut y écrire) peuvent réellement
                   modifier la configuration de GDM. Cette commande
                   est utile pour demander à GDM de se mettre à jour
                   afin de prendre en compte une modification du fichier
                   de configuration de GDM effectuée par l'administrateur (root).

                   À partir de la version 2.13.0.0, toutes les clés de GDM sont
                   prises en charge à l'exception des suivantes :

                          daemon/PidFile
                          daemon/ConsoleNotify
                          daemon/User
                          daemon/Group
                          daemon/LogDir
                          daemon/ServAuthDir
                          daemon/UserAuthDir
                          daemon/UserAuthFile
                          daemon/UserAuthFBDir

                   GDM prend aussi en charge les pseudo-clés suivantes :

                   xdmcp/PARAMETERS (2.3.90.2) met à jour ce qui suit :
                          xdmcp/MaxPending
                          xdmcp/MaxSessions
                          xdmcp/MaxWait
                          xdmcp/DisplaysPerHost
                          xdmcp/HonorIndirect
                          xdmcp/MaxPendingIndirect
                          xdmcp/MaxWaitIndirect
                          xdmcp/PingIntervalSeconds (concerne seulement les nouvelles connexions)

                    xservers/PARAMETERS (2.13.0.4) met à jour ce qui suit :
                          toutes les sections [server-??].

                    Clés prises en charge des versions précédentes de GDM :

                          security/AllowRoot (2.3.90.2)
                          security/AllowRemoteRoot (2.3.90.2)
                          security/AllowRemoteAutoLogin (2.3.90.2)
                          security/RetryDelay (2.3.90.2)
                          security/DisallowTCP (2.4.2.0)
                          daemon/Greeter (2.3.90.2)
                          daemon/RemoteGreeter (2.3.90.2)
                          xdmcp/Enable (2.3.90.2)
                          xdmcp/Port (2.3.90.2)
                          daemon/TimedLogin (2.3.90.3)
                          daemon/TimedLoginEnable (2.3.90.3)
                          daemon/TimedLoginDelay (2.3.90.3)
                          greeter/SystemMenu (2.3.90.3)
                          greeter/ConfigAvailable (2.3.90.3)
                          greeter/ChooserButton (2.4.2.0)
                          greeter/SoundOnLoginFile (2.5.90.0)
                          daemon/AddGtkModules (2.5.90.0)
                          daemon/GtkModulesList (2.5.90.0)
    Pris en charge depuis : 2.3.90.2
    Arguments : <clé>
      <clé> n'est que la partie de base de la clé, comme
      « security/AllowRemoteRoot »
    Réponses :
      OK
      ERROR <numéro d'erreur> <description d'erreur en anglais>
         0 = Non implémenté
         50 = Clé non prise en charge
         200 = Trop de messages
         999 = Erreur inconnue

#### VERSION

    VERSION: Interroge la version de GDM
    Pris en charge depuis : 2.2.4.0
    Arguments : aucun
    Réponses :
      GDM <version de GDM>
      ERROR <numéro d'erreur> <description d'erreur en anglais>
         200 = Trop de messages
         999 = Erreur inconnue

## Commandes GDM

### Commandes utilisateur GDM

Le paquet GDM fournit les différentes commandes ci-après dans `bindir`, à l'intention de l'utilisateur :

#### Options en ligne de commande de `gdmXnestchooser` et `gdmXnest`

La commande `gdmXnestchooser` obtient automatiquement le bon numéro d'affichage, configure l'accès et exécute la commande du serveur X imbriqué avec l'argument « -indirect localhost ». Cela fournit un programme sélecteur XDMCP. Vous pouvez également donner comme argument le nom d'hôte duquel doit provenir le sélecteur affiché. Ainsi, la commande `gdmXnestchooser hôteH` exécute le sélecteur XDMCP de l'hôte `hôteH` à l'intérieur d'une session de serveur X imbriqué. Vous pouvez faire que la commande effectue une requête directe en lui passant aussi l'option `-d`. En plus des options suivantes, cette commande prend aussi en charge les options standards de GNOME.

##### Options en ligne de commande de `gdmXnestchooser`

-x, --xnest=CHAÎNE

  Ligne de commande du serveur X imbriqué, la valeur par défaut étant définie par l'option de configuration `Xnest`.

-o, --xnest-extra-options=OPTIONS

  Options supplémentaires pour le serveur X imbriqué, la valeur par défaut étant aucune option.

-n, --no-query

  Exécute simplement Xnest, sans requête (pas de sélecteur)

-d, --direct

  Effectue une requête directe au lieu de indirecte (sélecteur)

-B, --broadcast

  Exécute la diffusion (broadcast) à la place de indirect (sélecteur)

-b, --background

  S'exécute en arrière-plan

--no-gdm-check

  Ne contrôle pas si d'autres GDM sont en cours d'exécution

#### Options en ligne de commande de `gdmflexichooser`

La commande `gdmflexiserver` offre trois fonctionnalités. Elle peut être utilisée pour lancer des affichages X flexibles (à la demande), pour lancer un affichage flexible via un serveur X imbriqué et pour envoyer des commandes au processus démon de GDM.

Le démarrage d'un affichage X flexible verrouille normalement la session en cours avec un économiseur d'écran et réaffiche l'écran de connexion de GDM pour qu'un deuxième utilisateur puisse s'y connecter. Cette fonctionnalité n'est disponible que sur les systèmes qui prennent en charge les terminaux virtuels et où ils sont activés. Cette fonctionnalité est utile si vous êtes connecté comme utilisateur A et que B veut rapidement se connecter sans que A doive se déconnecter. Le serveur X s'occupe du basculement de terminal virtuel de manière transparente. S'il existe plus d'un affichage en fonction avec le paramètre flexible=true, l'utilisateur voit apparaître une boîte de dialogue présentant les sessions actuellement ouvertes. Il peut alors choisir la session qu'il souhaite poursuivre et doit normalement saisir son mot de passe pour déverrouiller l'écran.

Les affichages imbriqués fonctionnent sur les systèmes qui ne prennent pas en charge les terminaux virtuels. Cette option lance un affichage flexible dans une fenêtre de la session actuelle. Cela ne verrouille pas la session encours, ce qui fait que ce n'est pas aussi sécurisé qu'un serveur flexible démarré via un terminal virtuel.

L'option `gdmflexiserver --command` offre une manière d'envoyer des commandes au démon GDM et peut être employée pour résoudre des problèmes ou pour modifier la configuration de GDM.

En plus des options suivantes, `gdmflexiserver` prend aussi en charge les options GNOME standards.

##### Options en ligne de commande de `gdmflexichooser`

-c, --command=COMMANDE

  Envoie la commande de protocole spécifiée à GDM

-n, --xnest

  Démarre un affichage X flexible en mode imbriqué

-l, --no-lock

  Ne verrouille pas l'écran actuel

-d, --debug

  Active la sortie de débogage, qui est envoyée dans le syslog. Même effet qu'en activant l'option « debug » dans le fichier de configuration.

-a, --authenticate

  S'authentifie avant de lancer --command

-s, --startnew

  Démarre un nouvel affichage flexible sans afficher de boîte de dialogue demandant à l'utilisateur s'il veut continuer une session existante.

#### Options en ligne de commande de `gdmdynamic`

`gdmdynamic` autorise la gestion des affichages de manière dynamique. Il est habituellement utilisé dans des environnements qui ne permettent pas d'énumérer les affichages possibles dans les fichiers de configuration de GDM. La commande `gdmdynamic` peut être utilisée pour créer un nouvel affichage sur un numéro d'affichage précis, pour exécuter tous les affichage nouvellement créés ou pour supprimer un affichage. Elle peut aussi être employée pour énumérer tous les affichages liés, ou uniquement les affichages liés correspondant à certains critères. L'option -a permet d'ajouter un affichage, l'option -r permet de lancer (ou libérer) un affichage, l'option -d permet de supprimer un affichage et l'option -l énumère les affichages existants. Une seule de ces quatre options peut être indiquée à la fois. Le cycle de vie d'un affichage passe en principe par un premier appel à la commande pour créer l'affichage, un deuxième appel pour le libérer (lancer) et finalement un troisième appel pour le supprimer lorsque la session doit être détruite.

Ce programme est conçu pour gérer plusieurs requêtes simultanées et essaye d'éviter de submerger le démon de requêtes. Si la connexion socket est occupée, il se met en attente et réessaye un certain nombre de fois, ce qui peut être ajusté avec les options -s et -t.

##### Options en ligne de commande de `gdmdynamic`

-a affichage=serveur

  Ajoute une nouvelle configuration d'affichage, le laissant dans l'état DISPLAY_CONFIG. Par exemple, `« -a 2=StandardServeurDeux »` ou `« -a 3=/usr/X11R6/bin/X -dev /dev/fb2 »`.

  L'affichage n'est pas réellement démarré tant que l'affichage n'a pas été libéré en appelant une nouvelle fois `gdmdynamic` avec l'option -r.

-r

  Libère (exécute) tous les affichages en attente dans l'état DISPLAY_CONFIG.

-d affichage

  Supprime un affichage, tuant le serveur X et nettoyant la configuration d'affichage. Par exemple, « -d 3 ».

-l [motif]

  Énumère les affichages via la commande ATTACHED_SERVERS de `gdmflexiserver`. Sans motif, énumère tous les affichages liés. Avec un motif, recherche les affichages liés correspondant au motif, avec les caractères d'expansion « * », « ? » et « [] ». Par exemple : `« -l Standard* »` ou `« -l *Xorg* »`.

-v

  Mode bavard. Affiche des messages de diagnostic.

-b

  Mode arrière-plan. Génère un processus fils dédié à la tâche, puis retourne immédiatement au shell.

-t ESSAIS

  Si le socket du démon est occupé, `gdmdynamic` essaie à nouveau d'ouvrir la connexion le nombre de fois indiqué par ESSAIS. La valeur par défaut est 15.

-s TEMPS

  Si le socket du démon est occupé, `gdmdynamic` se met en veille un certain temps entre chaque tentative. Un nombre de secondes aléatoire entre 0 et 5 est ajouté à la valeur TEMPS pour aider à s'assurer que les différents appels à gdmdynamic n'essaient pas tous de se connecter en même temps. Une valeur TEMPS de 0 produit un temps de veille de 1 seconde. La valeur par défaut est de 8 secondes.

#### Options en ligne de commande de `gdmphotosetup`

Permet à l'utilisateur de sélectionner une image qui sera utilisée par GDM pour représenter l'utilisateur dans le navigateur de figures, s'il est activé par GDM. Le fichier sélectionné est enregistré dans `~/.face`. Cette commande accepte les options GNOME standards.

#### Options en ligne de commande de `gdmthemetester`

`gdmthemetester` prend deux paramètres. Le premier définit l'environnement alors que le second indique le chemin ou le nom du thème à visualiser. C'est un outil pour visualiser un thème en dehors de GDM. Il est utile pour tester ou visualiser des thèmes. `gdmthemetester` exige la prise en charge de `gdmXnest` par le système. Il faut relever que les thèmes peuvent s'afficher différemment selon leur mode d'affichage. `gdmthemetester` permet de voir les thèmes dans différents modes par l'option d'environnement. Les valeurs d'environnement possibles ainsi que leur signification sont les suivantes :

    console       - En mode console.
    console-timed - En mode console non flexible.
    flexi         - En mode flexible.
    xdmcp         - En mode distant (XDMCP).
    remote-flexi  - En mode distant et flexible (XDMCP).

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

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

#### Options en ligne de commande de `gdm` et `gdm-binary`

La commande `gdm` n'est en fait qu'un script qui lance `gdm-binary`, en lui passant des options. Avant de lancer `gdm-binary`, le script « façade » gdm va sourcer le fichier `<etc>/profile` pour paramétrer les variables d'environnement standards du système. Pour mieux prendre en compte l'internationalisation, il définit aussi la variable d'environnement LC_MESSAGES à LANG si ni LC_MESSAGES, ni LC_ALL ne sont définies. Si vous avez vraiment besoin de paramétrer davantage l'environnement avant de lancer GDM, vous pouvez le faire dans ce script.

##### Options en ligne de commande de `gdm` et `gdm-binary`

--help

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

--nodaemon

  Si cette option est présente, GDM ne génère pas de processus en arrière-plan lorsqu'il est lancé. Vous pouvez aussi utiliser ce paramètre avec un seul tiret, « -nodaemon », pour des raisons de compatibilité avec d'autres gestionnaires de connexions.

--no-console

  Signale au démon qu'il ne doit rien exécuter sur la console. Cela signifie qu'aucun des serveurs liés de la section `[servers]` ne sera lancé, et que la console ne sera pas utilisée pour communiquer des erreurs à l'utilisateur. Une section `[servers]` vide implique automatiquement cette option.

--config=FICHIER_DE_CONFIGURATION

  Indique un fichier de configuration alternatif.

--preserve-ld-vars

  Lors du nettoyage interne de l'environnement, préserve toutes les variables commençant pas LD_. C'est essentiellement utilisé pour des raisons de débogage.

--version

  Affiche la version du démon GDM.

--wait-for-go

  Lorsqu'il est démarré avec cette option, GDM s'initialise, mais ne démarre que le premier affichage lié, puis attend de recevoir un message GO par le protocole FIFO. Aucune bannière n'apparaît avant que le message GO soit reçu. Les requêtes flexiserver sont aussi refusées et XDMCP ne démarre pas avant de recevoir le message GO. C'est utile pour les scripts d'initialisation qui souhaitent démarrer X rapidement, mais qui ne veulent pas que l'utilisateur puisse se connecter tout de suite. Ainsi, le script envoie la commande GO par FIFO dès qu'il est prêt, et GDM continue dès cet instant. Cette fonctionnalité a été ajoutée dans la version 2.5.90.0.

#### Options en ligne de commande de `gdmsetup`

`gdmsetup` lance une application graphique pour modifier le fichier de configuration de GDM. Normalement, sur les systèmes qui prennent en charge « PAM userhelper », le système est paramétré de telle façon que lorsqu'un utilisateur ordinaire lance `gdmsetup`, le mot de passe administrateur (root) lui est demandé. Sinon, l'application ne peut être exécutée que par root. Cette application gère les options standards de GNOME.

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

`gdm-restart` arrête et redémarre GDM en envoyant un signal HUP au démon 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 démon 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 démon GDM.

### Commandes internes de GDM

Le paquet GDM fournit les différentes commandes ci-après dans `libexecdir` à l'intention du processus démon de GDM.

#### Options en ligne de commande de `gdmchooser` et `gdmlogin`

`gdmgreeter` et `gdmlogin` sont deux applications de connexion différentes, qui peuvent toutes deux être utilisées par GDM. `gdmgreeter` peut être adapté avec des thèmes GDM, alors que `gdmlogin` peut être adapté avec des thèmes GTK+. En principe, ces applications sont exécutées par le démon GDM. Les deux commandes gèrent les options standards de GNOME.

#### Options en ligne de commande de `gdmchooser`

`gdmchooser` est l'application du sélecteur de XDMCP. C'est une commande qui est en principe exécutée par le démon GDM. Elle prend en charge les options ci-après pour être compatible avec XDM. Cette commande gère les options standards de GNOME.

##### Options en ligne de commande de `gdmchooser`

--xdmaddress=SOCKET

  Socket pour communiquer avec XDM.

--clientaddress=ADRESSE

  Adresse du client à renvoyer en réponse à XDM. Cette option sert à lancer gdmchooser avec XDM, mais n'est pas utilisée avec GDM.

--connectionType=TYPE

  Type de connexion à renvoyer en réponse à XDM. Cette option sert à lancer gdmchooser avec XDM, mais n'est pas utilisée avec GDM.

#### `gdm-ssh-session`

La commande `gdm-ssh-session` est normalement exécutée par le démon GDM lors du lancement d'une connexion distante sécurisée par SSH. Elle ne prend aucune option.

## Bannière avec thème

Cette section décrit la création de thèmes pour la bannière avec thème. Pour obtenir des exemples contenant des captures d'écran, examinez les thèmes standards installés et les thèmes du site Web des thèmes.

### Aperçu des thèmes

Les thèmes GDM peuvent être créés en produisant un fichier XML respectant la spécification gui/greeter/greeter.dtd. Les fichiers de thèmes sont enregistrées dans le répertoire `<share>/gdm/themes/<nom_du_thème>`. En principe, ils sont dans `/usr/share`. Le répertoire du thème doit contenir un fichier nommé `GdmGreeterTheme.desktop`, d'un format similaire aux autres fichiers .desktop, et qui ressemble à ceci :

    [GdmGreeterTheme]
    Encoding=UTF-8
    Greeter=circles.xml
    Name=Circles
    Description=Theme with blue circles
    Author=Bond, James Bond
    Copyright=(c) 2002 Bond, James Bond
    Screenshot=screenshot.png

Les champs Name, Description, Author and Copyright peuvent être traduits comme pour les autres fichiers `.desktop`. Tous les fichiers mentionnés doivent se trouver dans le répertoire du thème lui-même. Le champ Screenshot indique un fichier qui doit représenter une capture d'écran de 200x150 pixels du thème en action (il peut ne pas y en avoir, mais c'est toujours apprécié des utilisateurs). Le champ Greeter indique un fichier XML contenant la description du thème. La description est présentée plus loin.

Une fois qu'un thème est installé, vous pouvez le tester avec le programme `gdmthemetester`. Ce programme présuppose que le serveur X prend en charge une commande de serveur imbriqué. La commande prend deux arguments. En premier, l'environnement qui doit être utilisé. Les valeurs possibles sont console, console-timed, flexi, remote-flexi, xdmcp. L'option « console » teste le thème comme s'il apparaissait sur un affichage lié. L'option « console-timed » teste le thème comme s'il apparaissait sur un affichage lié avec connexion différée. L'option « flexi » teste le thème comme s'il apparaissait sur un affichage lié flexible (comme s'il était lancé via Xnest). Finalement, l'option « xdmcp » teste le thème comme s'il apparaissait sur un affichage XDMCP distant. Le second argument est le nom du thème. Ainsi, par exemple, pour tester l'aspect du thème « circles » en mode d'affichage distant XDMCP, vous devez exécuter :

    gdmthemetester xdmcp circles

Lorsque vous développez un thème, èrenez soin de tester tous les environnements et prenez garde à l'aspect de l'avertissement concernant le verrouillage majuscule lorsque vous appuyez sur cette touche. `gdmthemetester` est également une bonne méthode pour prendre des captures d'écran des thèmes GDM, car il suffit de capturer l'image de la fenêtre de l'affichage imbriqué. On peut le faire dans GNOME en activant la fenêtre concernée et en appuyant sur Alt-Impr écran.

Quand un thème a été complètement testé, créez l'archive tar contenant le répertoire tel qu'il doit être installé dans le répertoire `<share>/gdm/themes`. C'est le format standard pour la distribution de thèmes GDM.

### Description détaillée du format XML de thème

#### Balise greeter

Le format de thème GDM est exprimé en format XML, contenu dans une balise <greeter>. Vous pouvez indiquer qu'un thème GTK+ doit être utilisé avec ce thème en exploitant l'élément gtk-theme dans la balise greeter, comme dans l'exemple suivant.

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE greeter SYSTEM "greeter.dtd">
    <greeter gtk-theme="Crux">
    [...]
    </greeter>

À l'intérieur de la balise greeter, on peut trouver les nœuds décrits dans les sections suivantes de ce document. Certains de ces nœuds sont des conteneurs (nœuds boîtes, nœuds d'éléments rectangulaires) qui peuvent être utilisés pour organiser l'affichage des nœuds que l'utilisateur perçoit et avec lesquels il interagit (tels que les nœuds boutons, images et zones de saisie).

#### Nœuds boîtes (box)

Les nœuds boîtes sont des conteneurs pour les nœuds éléments. Ils se présentent comme suit :

    <box orientation="alignement" min-width="num"
    xpadding="num" ypadding="num" spacing="num"
    homogeneous="bool">

où « num » représente un nombre et « bool » représente soit « true » (vrai) ou « false » (faux). La valeur « alignement » peut être « horizontal » ou « vertical ». Si vous ne spécifiez pas une propriété, la valeur par défaut qui sera utilisée est 0 pour les valeurs numériques, « false » pour la propriété « homogeneous » et « vertical » pour l'orientation.

Si la valeur de la propriété « homogeneous » de la boîte est « true », les nœuds enfants reçoivent tous une quantité égale d'espace.

La propriété « min-width » (largeur minimale) est spécifiée en pixels. Il en est évidemment de même pour la propriété « min-height » (hauteur minimale).

#### Nœuds fixes (fixed)

Un nœud fixe est un conteneur dont les divers nœuds enfants sont disposés à l'aide de coordonnées précises. La taille de ce conteneur est déterminée par le rectangle englobant tous les enfants. Ce nœud n'a pas de propriétés supplémentaires. Il suffit donc d'écrire :

    <fixed>

Puis vous placez à l'intérieur les autres éléments avec les postions précises des nœuds.

Le nœud de premier niveau est en fait comme un nœud fixe.

#### Nœuds éléments (item)

Un thème GDM est créé en constituant une hiérarchie de nœuds éléments et nœuds boîtes. La propriété « type » des nœuds éléments peut contenir les valeurs suivantes :

button

  Un champ bouton. Ce champ utilise un bouton GTK+. Il est aussi possible qu'un élément de type « rect » se comporte comme un bouton en définissant son élément « button » à « true ». Cependant, il est préférable d'utiliser des boutons GTK+ dans les thèmes GDM car ils sont accessibles aux utilisateurs ayant des handicaps. Les boutons GTK+ sont aussi susceptibles d'être adaptés avec des thèmes. Cette fonctionnalité est prise en charge à partir de la version GDM 2.14.6.

entry

  Champ de saisie de texte.

label

  Une étiquette de texte. Elle doit comporter un nœud « text » pour préciser le texte.

list

  Un widget du navigateur de figure. Utile uniquement si le navigateur de figures est activé par la configuration.

pixmap

  Une image pixmap dans un format pris en charge par gdk-pixbuf, tel que PNG, JPEG, Tiff, etc.

rect

  Un rectangle.

svg

  Image SVG (Scaled Vector Graphic).

Par exemple :

    <item type="label">

Les éléments peuvent contenir des valeurs d'identifiant (ID) leur donnant une apparence ou un format spécifique. De plus, vous pouvez personnaliser le processus de connexion en ajoutant des widgets personnalisés avec des identifiants personnalisés pour certains éléments (actuellement pour l'élément « list » uniquement).

Les éléments « entry » peuvent posséder les valeurs « id » suivantes :

user-pw-entry

  Champ de saisie pour l'identifiant de l'utilisateur et le mot de passe. C'est le champ utilisé pour répondre aux questions PAM/GDM (nom d'utilisateur, mot de passe, etc.)

Par défaut, les éléments de liste apparaissent sous forme de liste standard, mais l'attribut combo="true" permet de transformer la liste en liste déroulante (pris en charge à partir de GDM 2.16.2). Certaines listes prédéfinies peuvent être inclues dans un thème en utilisant les valeurs id ci-après. Il est aussi possible de définir des listes personnalisées, ce qui est expliqué plus loin.

session

  Une liste des sessions disponibles, ce qui permet à l'utilisateur de choisir la session qu'il souhaite utiliser. Pris en charge depuis GDM 2.16.2.

language

  Une liste des langues disponibles, ce qui permet à l'utilisateur de choisir la langue qu'il souhaite utiliser. Pris en charge depuis GDM 2.16.2.

userlist

  Une liste du navigateur de figures permettant aux utilisateurs de choisir leur nom d'utilisateur en cliquant dans la liste plutôt qu'en le saisissant au clavier. Évidemment, cela expose les noms d'utilisateurs à ceux qui peuvent voir l'écran de connexion. Ce n'est donc pas recommandé à ceux qui pensent que cela restreint la sécurité. Le navigateur de figures ne prend pas en charge les listes déroulantes.

userlist-rect

  Cet identifiant peut qualifier un objet <rect> contenant la liste des utilisateurs. Si cette liste est vide, le rectangle n'apparaît pas. Cela permet au thème de définir une zone avec une couleur ou une couche alpha différente entourant la liste des utilisateurs, uniquement si celle-ci contient des éléments. Pris en charge depuis la version 2.16.2.

De plus, il est possible de définir un identifiant arbitraire (il est recommandé de le préfixer avec « custom » pour qu'il n'entre pas en conflit avec de futurs ajouts à cette spécification) et de demander des informations supplémentaires concernant l'utilisateur. Consultez la section « Widgets personnalisés ».

Les éléments « label » peuvent contenir les valeurs « id » suivantes :

clock

  Étiquette affichant la date et l'heure.

pam-prompt

  Étiquette affichant l'invite de PAM. C'est l'invite que PAM utilise pour demander le nom d'utilisateur, le mot de passe, etc.

pam-error

  Étiquette affichant les messages d'erreur de PAM et GDM. Comme par exemple lorsqu'un utilisateur ne peut pas se connecter.

pam-error-logo

  Une image affichée uniquement lorsqu'un message « pam-error » apparaît. Ceci est utile pour l'affichage d'une icône « Attention », par exemple. Cette fonctionnalité est prise en charge à partir de GDM 2.14.6.

pam-message

  Étiquette affichant un message PAM. Ce sont des messages que PAM ou GDM produisent au sujet de l'état d'un compte ou pour donner de l'aide sur l'invite ou pour d'autres informations.

timed-label

  Étiquette affichant des informations sur la connexion différée.

Les rectangles peuvent contenir les valeurs « id » suivantes :

caps-lock-warning

  Affiche une icône signalant si la touche Verrouillage majuscule est enfoncée. Ce rectangle est masqué et affiché de manière adéquate.

Si un élément est de type « rect », ce peut être un bouton. Les boutons doivent aussi contenir une valeur « button » comme dans l'exemple suivant :

    <item type="rect" id="disconnect_button" button="true">.

Les valeurs possibles de la propriété « id » des boutons sont les suivantes :

chooser_button

  Lance le sélecteur XDMCP.

config_button

  Lance l'application de configuration de GDM.

custom_cmd_button[0-9]

  Lance la commande personnalisée n (0-9).

disconnect_button

  Déconnecte de la session distante.

language_button

  Affiche la boîte de dialogue de sélection de langue.

halt_button

  Arrête (éteint) le système.

reboot_button

  Redémarre le système.

session_button

  Affiche la liste permettant de sélectionner une session.

suspend_button

  Met en veille le système.

system_button

  Met à disposition les options Éteindre, Redémarrer, Mettre en veille, etc. (si autorisé dans la configuration de GDM). Permet aussi à l'utilisateur de lancer l'application de configuration après avoir saisi le mot de passe administrateur (également soumis à l'autorisation de la configuration de GDM). En principe, cela s'appelle Actions, et l'on s'y réfère en parlant du menu Actions.

Par défaut, l'écran de connexion de GDM disparaît après l'authentification. Cela peut produire des scintillements entre l'écran de connexion et la session. La propriété « background » permet aux utilisateurs d'indiquer quels éléments du thème forment l'image d'arrière-plan. Lorsque c'est exploité, GDM enlève tous les éléments de l'affichage qui ne font pas partie de l'arrière-plan et dessine les éléments d'arrière-plan restants dans la fenêtre racine. Cela peut être utilisé pour créer une transition harmonieuse entre l'écran de connexion et la session. Par exemple, si le thème GDM et la session utilisent le même arrière-plan, cela permet de garder un arrière-plan constant.

Les nœuds éléments peuvent contenir une propriété « background » (arrière-plan) pouvant être définie à « true » (vrai) ou « false » (faux) (l'absence de la propriété correspond à la valeur « false »), comme ceci :

    <item type="rect" background="true">
        <normal file="background.svg"/>
        <pos x="0" y="0" width="100%" height="-75"/>
    </item>

Si aucun nœud élément n'a de propriété « background », l'arrière-plan n'est pas modifié lorsque la bannière se ferme.

Pour utiliser un arrière-plan différent durant la transition de la connexion que pendant la connexion elle-même, le thème doit indiquer deux nœuds éléments (qui peuvent contenir par exemple des images pixmap ou svg). L'élément qui correspond à l'arrière-plan de la bannière ne devrait pas comporter de propriété « background », alors que l'élément correspondant à l'arrière-plan de la transition devrait disposer de cette propriété. Par exemple :

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE greeter SYSTEM "greeter.dtd">
     <greeter>

      <item type="rect" background="true">
        <normal file="arriereplan_de_connexion.svg"/>
        <pos x="0" y="0" width="100%" height="100%"/>
      </item>
      <item type="rect">
        <normal file="arriereplan_de_banniere.svg"/>
        <pos x="0" y="0" width="100%" height="100%"/>
      </item>
    [...]
    </greeter>

#### Nœud de position (pos)

Chaque élément peut indiquer sa position et sa taille au moyen du nœud « pos ». Par exemple :

    <pos x="0" y="4" width="100%" height="100%"/>

Aussi bien la position que la taille peuvent être précisées en pourcentage, ce qui sera interprété comme un pourcentage de la taille du conteneur actuel. Pour les éléments de premier niveau, c'est un pourcentage de tout l'écran.

Pour les valeurs de x et de y, il est aussi possible d'indiquer une valeur négative, ce qui signifie que la position est calculée depuis la droite ou le bas de l'élément parent. Mais cela n'est valable que pour les coordonnées absolues. Si vous indiquez des pourcentages négatifs, cela n'a aucune influence sur la position.

La position indique également l'ancrage de l'élément, qui peut valoir « n », « ne », « e », « se », « s », « sw », « w » et « nw » qui correspondent au différents coins et bordures, et « center » pour le centrage. Par exemple :

    <pos x="10%" y="50%" anchor="w" width="80%" height="95"/>

Si l'élément contient une boîte, vous pouvez indiquer « box » comme valeur de largeur ou de hauteur, ce qui signifie que la largeur ou la hauteur correspondront aux grandeurs respectives des éléments dans la boîte, en plus du remplissage.

Si l'élément contient une image SVG, vous pouvez indiquer « scale » comme valeur de largeur ou de hauteur, ce qui signifie que l'image sera redimensionnée pour correspondre aux dimensions de la zone correspondante.

Vous pouvez aussi attribuer la propriété « expand » à « true » ou « false ». Si cette propriété est définie à « true », l'élément enfant sera agrandi au maximum dans la boîte (c'est-à-dire qu'il recevra autant d'espace que disponible).

Dès la version 2.4.4.3, il existe deux propriétés supplémentaires pour les étiquettes (et uniquement pour les étiquettes). La première est « max-width » qui précise la largeur maximale de l'étiquette en pixels. La seconde est « max-screen-percent-width » qui précise le pourcentage maximal de la largeur de l'écran pouvant être occupé par l'étiquette. Par défaut, aucune étiquette ne s'étend sur plus de 90% de la largeur de l'écran. Voici un exemple :

    <item type="label">
    <pos x="10%" max-screen-percent-width="50%"/>

#### Nœuds d'affichage (show)

Certains éléments ne s'affichent que dans certains modes, comme par exemple lors d'un affichage distant. Plusieurs valeurs peuvent être indiquées, et elles doivent être séparées par des virgules. Les valeurs suivantes sont possibles :

`console` - En mode console.

`console-fixed` - En mode console non flexible.

`console-flexi` - En mode console et flexible.

`flexi` - En mode flexible.

`remote` - En mode distant.

`remote-flexi` - En mode distant et flexible.

Par exemple :

    <show modes="flexi,remote"/>

Il est aussi possible d'indiquer la propriété « type » pour préciser que certains éléments ne doivent être affichés que si le type correspondant est actif. Voici quelques valeurs possibles :

`chooser`, affiché si le paramètre « ChooserButton » est défini à « true » dans la configuration de GDM.

`config`, affiché si le paramètre « ConfigAvailable » est défini à « true » dans la configuration de GDM.

`custom_cmd[0-9]`, affiché si la commande personnalisée `n` (0-9) est définie dans la configuration de GDM.

`halt`, affiché si le paramètre « HaltDaemon » est défini dans la configuration de GDM.

`reboot`, affiché si le paramètre « RebootCommand » est défini dans la configuration de GDM.

`suspend`, affiché si le paramètre « SuspendCommand » est défini dans la configuration de GDM.

`system`, affiché si le paramètre « SystemMenu » est défini dans la configuration de GDM.

`timed`, affiché si le paramètre « TimedLoginEnabled » est défini à « true » dans la configuration de GDM.

Par exemple :

    <show modes="console" type="system"/>

Il est aussi possible d'ajouter les propriétés « min-screen-width » ou « min-screen-height » pour indiquer que certains éléments ne doivent être affichés que si la résolution de l'écran correspond au minimum aux valeurs indiquées.

Par exemple :

    <show min-screen-height="768"/>

Il faut signaler que si le paramètre SystemMenu est désactivé, les options Éteindre, Redémarrer, Sélecteur et Configuration ne sont pas affichées. Ce paramètre est donc un un moyen de désactiver globalement toutes ces options. Référez-vous à certains thèmes standards pour observer l'utilisation des modes « show ».

#### Nœuds normal/actif/survol

Selon le type d'élément, il est possible de définir sa couleur, sa police ou son image au moyen des balises suivantes (excepté le type « userlist », voir le nœud couleur ci-dessous) :

`normal` - état normal.

`active` - lorsque l'élément représente la zone active.

`prelight` - lorsque la souris survole l'élément.

Lorsque l'élément est de type « rect » (la propriété alpha peut être omise, et sa valeur par défaut est 0.0) :

    <normal color="#ffffff" alpha="0.0">

Lorsque l'élément est de type étiquette (« label ») :

    <normal color="#ffffff" font="Sans 14"/>

Lorsque l'élément est de type « pixmap » ou « SVG », les balises « normal », « active » et « prelight » indiquent les images à utiliser, comme dans l'exemple suivant :

    <normal file="image.png" tint="#dddddd"/>

Il faut relever que les chemins relatifs utilisent comme base le même répertoire que le fichier `.xml` du thème dans `<share>/gdm/themes/<nom_du_thème>`.

Signalons qu'un fichier image de substitution peut être indiqué par la propriété « altfile[n] ». GDM utilise le dernier nom de fichier image valable. Par exemple :

    <normal file="image.png" altfile1="image_de_distrib_toto.png" altfile2="image_de_distrib_riri.png"/>

Si `image_de_distrib_riri.png` est un nom de fichier image correct, c'est cette image qui sera utilisée. Sinon, c'est `image_de_distrib_toto.png` qui sera utilisé, si le fichier existe. Cette fonctionnalité est prise en charge depuis la version 2.16.3.

#### Nœuds de couleur des icônes et étiquettes du navigateur de figures

Si le type d'élément est « userlist », la couleur d'arrière-plan de l'icône et de l'étiquette peut être définie séparément au moyen de la balise suivante :

    <color iconcolor="#dddddd" labelcolor="#ffffff"/>

#### Nœud texte

Les balises « text » sont utilisées pour les étiquettes. Elles peuvent être utilisées pour afficher du texte traduit, comme le montre l'exemple suivant (si l'attribut« xml:lang » est omis, c'est la locale C qui est utilisée) :

    <text xml:lang="fr">Option</text>

Il est possible d'insérer du balisage Pango dans les nœuds texte des étiquettes. Il faut cependant le coder. Par exemple, si vous souhaitez écrire « foo<sup>bar</sup> » dans une étiquette, vous devez saisir :

    <text>"foo<sup>bar</sup>"</text>

Les nœuds texte peuvent contenir des séquences de caractères spéciales. Voici ces séquences avec leur signification :

%% - Un caractère % littéral

%c - Heure d'horloge. Seules les étiquettes dotées de la propriété id « clock » affichent l'heure mise à jour en temps réel. Les autres étiquettes contiennent une heure statique.

%d - Nom d'affichage (variable d'environnement DISPLAY)

%h - Nom d'hôte (résultat de gethostname)

%m - Nom de machine (résultat de uname.machine)

%n - Nom de nœud (résultat de uname.nodename)

%o - Nom de domaine (résultat de getdomainname)

%r - Nom de version (résultat de uname.release)

%s - Nom du système (résultat de uname.sysname)

%t - Valeur actuelle du délai de connexion différée du fichier de configuration (0 si désactivé), suivie par le mot « seconde(s) ». Cette séquence de caractères est prévue uniquement pour une utilisation interne lors de l'affichage du message « timed-label » qui est mis à jour automatiquement chaque seconde.

%u - Nom d'utilisateur de connexion différée dans le fichier de configuration (vide si désactivé). Cette séquence de caractères est prévue uniquement pour une utilisation interne lors de l'affichage du message « timed-label » qui est mis à jour automatiquement chaque seconde.

\n - Retour de ligne

_ - Le caractère soulignement provoque le soulignement du caractère suivant. S'il précède une séquence de caractères %, le texte qui remplace la séquence de caractères est souligné.

#### Nœud prédéfini (stock)

Certaines étiquettes couramment traduites peuvent être indiquées par les balises « stock ». La balise « text » est ignorée si la balise « stock » est présente. Il est vraiment conseillé d'utiliser les étiquettes prédéfinies plutôt que de simplement placer toutes les traductions dans les thèmes. Cela réduit le temps de chargement et améliore certainement la cohérence des traductions. Voici les valeurs possibles :

`cancel`, A_nnuler

`caps-lock-warning`, Le verrouillage majuscule est actif.

`chooser`, Connexion distante via _XDMCP

`config`, Confi_gurer

`custom_cmd[0-9]`, récupération de l'étiquette dans le fichier de configuration

`disconnect`, _Déconnecter

`halt`, Étein_dre

`language`, _Langue

`ok`, _Valider

`options`, _Options

`quit`, _Quitter

`reboot`, _Redémarrer

`session`, _Session

`startagain`, _Recommencer

`suspend`, Mettre en _veille

`system`, _Actions

`timed-label`, L'utilisateur %u se connectera dans %t

`username-label`, Identifiant :

`welcome-label`, Bienvenue sur %n

Par exemple :

    <stock type="welcome-label">

#### Widgets personnalisés

Actuellement, l'élément que l'on peut personnaliser est l'élément liste. Si vous avez besoin de demander des informations supplémentaires à l'utilisateur, comme de choisir dans une liste d'emplacements de connexion ou dans un ensemble de sessions personnalisées, vous pouvez paramétrer l'élément liste et y ajouter des éléments enfants présentant ces options. Chaque élément de liste (« listitem ») doit posséder un sous-élément « id » et « text ». L'option est enregistrée dans le fichier `<ServAuthDir>/<affichage>.GreeterInfo` sous la forme `<list id>=<listitem id>`.

Par exemple, supposons que nous sommes sur l'affichage :0, que `ServAuthDir` correspond à `<var>/lib/gdm` et que l'on trouve ceci dans le thème :

    <item type="list" id="custom-config">
    <pos anchor="nw" x="1" y="1" height="200" width="100">
    <listitem id="toto">
    <text>Toto</text>
    </listitem>
    <listitem id="titi">
    <text>Titi</text>
    </listitem>
    </item>

Avec GDM 2.20, le fichier est créé au format INI. La valeur de groupe est « GreeterInfo » et la clé « custom-config » indique l'identificateur de l'élément de liste. Par exemple, si l'utilisateur choisit « Toto » (dont l'identificateur est « toto »), alors `<var>/lib/gdm/:0.GreeterInfo` contiendra :

    [GreeterInfo]
    custom-config=toto

Avec GDM 2.18 et plus ancien, le fichier n'est pas enregistré au format INI, ce qui fait que le groupe « GreeterInfo » ne sera pas dans le fichier. En d'autres termes, le fichier ne contiendra que ceci :

    custom-config=toto

## 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. Les programmes d'aide technique (AT) comme `GOK` (clavier visuel) et `Orca` (loupe et synthèse vocale) sont pris en charge. C'est la bannière GTK+ qui prend le mieux en charge l'accessibilité, il est donc recommandé de l'utiliser pour des besoins d'accessibilité. La bannière avec thème gère certaines fonctions d'accessibilité et peut être suffisante pour certains. Mais certaines aides techniques, comme `GOK`, ne fonctionnent pas avec la bannière avec thème.

L'accessibilité peut être activée en choisissant la bannière GTK+ (Simple) dans l'onglet « Locale » ou dans l'onglet « Distante » des préférences de la fenêtre de connexion. Vous pouvez aussi modifier directement les options de configuration `Greeter` et `RemoteGreeter` dans la configuration de GDM en les définissant à `/usr/lib/gdmlogin`.

Les programmes de bannière GDM permettent de lancer des aides techniques au moment de la connexion à l'aide de « mouvements » configurables. Ces mouvements peuvent être définis comme des raccourcis clavier standards, des événements d'appareils de commutation ou des événements de déplacement de souris. S'il utilise la bannière GTK+, l'utilisateur peut aussi modifier l'apparence de l'interface de connexion. Par exemple, dans le but d'activer une combinaison de couleurs très contrastées pour améliorer la visibilité.

Il faut relever que la configuration graphique (`gdmsetup`) ne fonctionne pas encore avec l'accessibilité, ce qui fait que les utilisateurs ayant besoin de programmes d'aide technique sont contraints de configurer GDM en éditant directement les fichiers texte.

### Configuration de l'accessibilité

Pour pouvoir activer la connexion accessible, l'administrateur système doit effectuer certaines modifications à la configuration de connexion par défaut, en modifiant manuellement trois fichiers de configuration lisibles par un humain : le fichier de configuration personnalisée de GDM, le fichier AccessKeyMouseEvents et le fichier AccessDwellMouseEvents. Ces deux derniers fichiers contiennent des valeurs par défaut raisonnables pour les mouvements permettant de lancer `GOK` et `Orca`, mais il est possible que certaines personnes aient besoin de les configurer différemment pour mieux répondre à leurs besoins. Par exemple, augmenter ou diminuer la durée de pression sur un bouton ou une touche peut faciliter la connexion pour certains. Il est aussi possible d'ajouter d'autres programmes d'aide technique dans le fichier de configuration, si nécessaire.

#### Thèmes et accessibilité

Avec la bannière GTK+, les utilisateurs peuvent facilement changer de combinaisons de couleurs et de contrastes de la fenêtre. Pour cela, il faut s'assurer que le paramètre `AllowGtkThemeChange` de la configuration GDM est défini à « true » (vrai). Ce devrait être la valeur par défaut. Dans ce cas, la bannière standard (simple) contient un menu permettant de changer de thème GTK+. L'option de configuration `GtkThemesToAllow` peut aussi être exploitée pour limiter les options disponibles, le cas échéant. Par exemple :

    GtkThemesToAllow=HighContrast,HighContrastInverse

La bannière avec thème peut aussi contenir des thèmes GDM comportant des combinaisons de couleurs et de contrastes adaptés aux besoins, mais il n'en existe pas encore dans la version livrée avec GDM. Certaines distributions peuvent contenir de tels thèmes. Il n'existe pour l'instant aucun mécanisme permettant de changer de thème à la volée dans la bannière avec thème. Cela signifie que si un utilisateur a besoin d'un thème accessible, tous les autres utilisateurs devront aussi utiliser ce thème.

#### Prise en charge des aides techniques

Pour permettre aux utilisateurs de lancer des aides techniques telles que `GOK` ou`Orca`, le paramètre `AddGtkModules` de la configuration GDM doit être défini à « true » (vrai). De plus, le paramètre `GtkModulesList` doit être décommenté et défini comme suit :

    GtkModulesList=gail:atk-bridge:/usr/lib/gtk-2.0/modules/libdwellmouselistener:/usr/lib/gtk-2.0/modules/libkeymouselistener

Ainsi, toutes les interfaces graphiques de GDM sont lancées avec les modules GTK appropriés au lancement des programmes d'aide technique. L'utilisation des aides techniques et du module « atk-bridge » exige que le démon de registre `at-spi-registryd` soit en cours d'exécution. À partir de la version 2.17, l'interface de GDM s'occupe de cela.

Les administrateurs système souhaitent parfois ne charger que les modules vraiment nécessaires à leurs utilisateurs. Le module « libkeymouselistener » offre la prise en charge des mouvements de claviers et de commutateurs, alors que le module « libdwellmouselistener » prend en charge les mouvements de souris. Si vos utilisateurs n'ont besoin que de l'un ou de l'autre, incluez uniquement le gestionnaire d'écoute requis. Certaines aides techniques n'ont pas non plus besoin de « gail » ou de « atk-bridge ». Si vous constatez que les programmes d'aide technique fonctionnent très bien sans ces modules, ils peuvent donc être omis. Notez que certains programmes fonctionnent de manière limitée lorsque ces modules sont absents. Cependant, pour des besoins généraux d'accessibilité, il est souhaitable d'inclure les quatre modules.

Après avoir ajouté « keymouselistener » ou « dwellmouselistener » dans `AddGtkModules` chargé par GDM, il peut être souhaitable de modifier les configurations de gestes afin de les adapter aux besoins de vos utilisateurs. Les gestes par défaut sont conçus pour pour lancer `GOK` et `Orca`, mais il est recommandé de les modifier pour qu'ils correspondent au mieux à vos besoins. Ces associations de gestes se trouvent dans les fichiers `AccessKeyMouseEvents` et `AccessDwellMouseEvents`, situés dans le répertoire `<etc>/gdm/modules`. Le format de configuration des gestes est décrit dans les commentaires des deux fichiers de configuration.

Le fichier AccessKeyMouseEvents contrôle le détecteur de gestes « keymouselistener ». Il est utilisé pour définir des séquences de pressions de touches, de clics de souris ou d'autres périphériques XInput permettant de lancer des applications nécessaires à l'accessibilité. Afin de réduire la probabilité de lancement involontaire, ces « gestes » peuvent être associés avec plusieurs pressions de commutateur ou des durées minimales. Il est à relever que l'extension XKB est nécessaire au fonctionnement des gestes de clavier, il peut donc être utile d'ajouter « +xkb » à la ligne de commande de votre serveur X pour que tout fonctionne. Cette ligne de commande est définie dans le fichier de configuration GDM sous les sections `server-?`.

Le fichier DwellKeyMouseEvents contrôle le détecteur de gestes « dwellmouselistner » et il prend en charge les gestes comprenant des mouvements de périphériques de pointage, tels que la souris du système, une souris de tête ou une boule de commande (trackball). Les gestes de déplacement sont définis comme des « événements de traversée » dans et hors de la fenêtre de connexion. Si le détecteur de gestes « dwellmouselistner » est chargé, les périphériques de pointages alternatifs sont temporairement associés au pointeur principal, afin que les mouvements de ces périphériques produisent des déplacements du pointeur à l'écran. Tous les gestes sont définis par une même syntaxe, c'est-à-dire qu'il n'y a aucune distinction entre le mouvement d'une souris principale et celui d'un périphérique d'entrée alternatif.

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 aides techniques qui génèrent une sortie sonore (comme la synthèse vocale) puissent fonctionner.

Actuellement, GDM ne se souvient pas des programmes d'aide technique qui ont été lancés au moment de changer d'application. Ainsi, si par exemple l'utilisateur bascule du programme de connexion à un sélecteur, il faut que l'utilisateur effectue à nouveau le geste nécessaire. Les utilisateurs peuvent aussi avoir besoin de configurer leur session par défaut afin que les aides techniques nécessaires soient lancées automatiquement (ou que des combinaisons clavier spécifiques permettent de les lancer) après le démarrage de la session utilisateur.

#### Dépannage des aides techniques

Il existe un certain nombre de problèmes courants à la base des difficultés de fonctionnement des détecteurs de gestes. Il est recommandé d'utiliser la version 2.18.0 ou ultérieure de GDM pour mettre toutes les chances de son côté.

Certains serveurs X anciens ont une anomalie qui empêche la détection de répétition automatique lorsque XEVIE est activé (ce qui arrive lorsque atk-bridge est inclu comme module GTK). En raison de cette anomalie, les gestes clavier avec une durée plus grande que 0 échouent toujours. Une solution est de simplement redéfinir tous les gestes concernés en leur attribuant une durée de 0 ; une autre possibilité est de mettre à jour le serveur X.

Certaines versions de `GOK` et d'`Orca` ne démarrent pas tant que l'utilisateur « gdm » ne dispose pas d'un dossier personnel accessible en écriture. Cela a été résolu dans GNOME 2.18, mais si vous utilisez une version plus ancienne de GNOME, vous pouvez corriger le problème et faire fonctionner ces applications en donnant à l'utilisateur GDM un dossier personnel accessible en écriture.

Si vous voyez un curseur en forme de montre lorsque vous effectuez un geste mais que le programme ne démarre pas, cela signifie que le geste a été détecté, mais qu'il y a un problème pour lancer le programme. Il s'agit très probablement du problème de l'absence d'un dossier personnel accessible en écriture pour l'utilisateur GDM.

Veuillez aussi prendre note du fait que certains périphériques d'entrée nécessitent d'être configurés au niveau du serveur X avant que GDM ne puisse les reconnaître.

#### Configuration du son de la connexion accessible

Par défaut, GDM exige la présence d'une application audio du genre « play » pour pouvoir émettre des sons lors de l'échec ou du succès de connexions. GDM cherche cette application à l'emplacement `<bin>/play` (ou `<bin>/audioplay` sur Solaris). Cela peut être ajusté par l'option de configuration `SoundProgram` de GDM. Habituellement, la plupart des programmes de synthèse vocale (comme `Orca`) utilisent un dispositif distinct pour émettre des sons, ce qui fait qu'ils n'ont pas besoin de cette option de configuration pour fonctionner.

## Fonctionnalités spécifiques à Solaris

### Utilisation de GDM sur Solaris

GDM n'est pas encore le programme de connexion par défaut sur Solaris. Si vous souhaitez utiliser GDM, vous devez alors désactiver la connexion CDE et lancer le service GDM. Notez que la désactivation de la connexion CDE provoque la fermeture immédiate de toute session en cours, et que toute donnée non sauvegardée est perdue. N'exécutez ces commandes que si vous êtes certain que les sessions en cours ne contiennent pas de données non enregistrées. Le mieux serait de lancer ces commandes depuis une connexion en console ou un terminal de secours plutôt que depuis une session graphique en cours. La première étape est d'exécuter la commande suivante pour savoir si la connexion CDE fonctionne en tant que service SMF.

    svcs cde-login

Si la commande `svcs` répond que ce service est actif, exécutez cette commande pour désactiver la connexion CDE :

    svcadm disable cde-login

Si la commande `svcs` répond que ce motif ne correspond à aucune instance, exécutez alors ces commandes pour arrêter la connexion CDE :

    /usr/dt/config/dtconfig -d
    Redémarrez ou tuez tout processus dtlogin en cours de fonctionnement.

À cet instant, vous verrez apparaître une connexion en console. Connectez-vous en tant que root et exécutez la commande ci-après. Sur Solaris 10, le nom de service est « gdm2-login » et sur Solaris Nevada, le nom de service est « gdm ».

    svcadm enable nom_de_service

### Configuration de Solaris

Sur Solaris, la configuration suivante est recommandée. Cela active IPv6 ainsi que PreFetch, afin d'améliorer les performances.

    ./autogen.sh --prefix=/usr --sysconfdir=/etc/X11 --localstatedir=/var
       --libexecdir=/usr/lib --enable-ipv6=yes --with-at-bindir=/usr/sfw/bin
       --with-prefetch --with-post-path=/usr/openwin/bin --with-pam-prefix=/etc
       --with-lang-file=/etc/default/init

La configuration de GDM sur Solaris avec « --with-post-path=/usr/openwin/bin » est recommandée pour accéder aux programmes de serveur X.

### Solaris et /etc/logindevperm

GDM prend en charge /etc/logindevperm, mais uniquement à partir de Solaris 10. Référez-vous à la page de manuel logindevperm.4 pour plus d'informations.

Pour rendre fonctionnel /etc/logindevperm sur Solaris 9 ou une version plus ancienne, vous êtes obligé de manipuler les scripts GDM PreSession et PostSession pour changer directement les droits d'accès (chmod) aux périphériques. En d'autres termes, si /etc/logindevperm présente la ligne suvante :

    /dev/console    0600    /dev/sound/*            # audio devices

Alors le script PreSession devrait être modifié pour que /dev/console appartienne au couple utilisateur:groupe qui se connecte par la console et pour s'assurer que les bonnes permissions soient définies, selon /etc/logindevperm (0600 pour la ligne ci-dessus). Ensuite, dans le script PostSession, il s'agit de remettre l'appartenance du périphérique à root:root et les droits à 0600 dans tous les cas (n'utilisez pas la valeur du fichier /etc/logindevperm). Linux utilise un mécanisme différent pour gérer les permissions des périphériques, ce qui fait que les opérations de script décrites ici ne sont pas nécessaires.

### Connexion automatique sur Solaris

La connexion automatique ne fonctionne pas sur Solaris 10 ou plus ancien, car PAM n'est pas configuré pour prendre en charge cette fonctionnalité par défaut. Comme la connexion automatique est une fonctionnalité de GDM qui n'est pas activée par défaut, vous ne constaterez ce problème que si vous essayez de l'utiliser. L'activation de cette fonctionnalité permet à votre ordinateur de se connecter au démarrage avec un nom d'utilisateur défini sans devoir saisir de nom d'utilisateur ni de mot de passe. C'est une façon non sécurisée de configurer un ordinateur.

Si vous utilisez Solaris 10 ou une version plus ancienne, vous devez compiler le code pam_allow.c fourni avec la version de GDM, l'installer dans /usr/lib/security (ou indiquer le chemin complet dans /etc/pam.conf) et vous assurer que son propriétaire possède l'uid 0 et qu'il ne soit pas accessible en écriture par le groupe ou par tout le monde.

Vous trouverez ci-après des valeurs convenables de pam.conf pour l'activation de la connexion automatique avec GDM. Prenez soin de lire la documentation de PAM (par ex. la page de manuel pam.d/pam.conf) et soyez bien conscient des conséquences sur la sécurité suite aux changements de configuration que vous pensez effectuer.

           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

### Prise en charge de RBAC sur Solaris pour l'extinction, le redémarrage et la mise en veille

À partir de la version 2.19 de GDM, celui-ci prend en charge RBAC (Role Based Access Control) pour l'activation des commandes système (Éteindre, Redémarrer, Mettre en veille, etc.) qui apparaissent dans le menu système de la bannière et par les commandes QUERY_LOGOUT_ACTION SET_LOGOUT_ACTION et SET_SAFE_LOGOUT_ACTION de `gdmflexiserver`.

Sur Solaris, GDM dispose de la valeur ci-après dans l'option de configuration `RBACSystemCommandKeys`.

    HALT:solaris.system.shutdown;REBOOT:solaris.system.shutdown

En conséquence, seuls les utilisateurs ayant l'autorité RBAC auront accès aux fonctions d'extinction et de redémarrage (SHUTDOWN / REBOOT). Autrement dit, les utilisateurs qui disposent du nom d'autorisation « solaris.system.shutdown ». La bannière GDM n'affiche ces options que si l'utilisateur GDM (défini par l'option de configuration `User`, « gdm » par défaut) possède les permissions RBAC correspondantes.

C'est pourquoi vous devez ajouter le nom d'autorisation « solaris.system.shutdown » dans le fichier `/etc/user_attr` pour tous les utilisateurs censés avoir accès à l'extinction et au redémarrage du système. Si vous souhaitez que ces options apparaissent dans la bannière, il faut aussi ajouter ce nom d'autorisation à l'utilisateur GDM. Si vous ne souhaitez pas utiliser RBAC, il vous suffit de ne pas définir la clé de configuration GDM `RBACSystemCommandKeys`, ce qui rendra disponible les commandes système à tous les utilisateurs. Référez-vous à la page de manuel de `user_attr` pour plus d'informations sur l'attribution de privilèges RBAC.

Il faut relever que sur Solaris, il existe deux programmes pour éteindre le système. Ce sont GDM et `gnome-sys-suspend`. Ce dernier est une interface graphique pour la commande `sys-suspend`.

Si GDM est utilisé comme programme de connexion et que l'utilisateur dispose des droits RBAC pour éteindre la machine (ou que la prise en charge de RBAC est désactivée dans GDM), l'option « Éteindre » du tableau de bord GNOME utilise GDM pour éteindre, redémarrer ou mettre en veille la machine. C'est un peu plus élégant que d'utiliser `gnome-sys-suspend`, car GDM attend que la session utilisateur soit terminée avant d'exécuter la commande souhaitée (y compris l'exécution du script PostSession, etc.). De plus, la commande `gnome-sys-suspend` est moins complète puisqu'elle ne comprend pas d'option de redémarrage, mais uniquement éteindre et mettre en veille.

Si GDM n'est pas exploité pour gérer l'extinction, le redémarrage et la mise en veille, le tableau de bord GNOME utilise `gnome-sys-suspend` lorsque vous choisissez l'option « Arrêter » dans le menu applications. Si la boîte de dialogue qui apparaît lorsque vous sélectionnez cette option ne présente que les options de mise en veille et d'extinction, il est probable que ce soit la commande `gnome-sys-suspend` qui est utilisée. Dans ce cas, consultez la page de manuel de `sys-suspend` pour obtenir des informations sur sa configuration. Ou envisagez l'utilisation de GDM que vous pourrez configurer pour fournir ces options.

### Autres fonctionnalités sur Solaris

GDM prend en charge quelques fonctionnalités spécifiques à Solaris, telles que :

GDM prend en charge « Solaris Auditing » à partir de Solaris 10. GDM ne devrait pas être utilisé si la fonction d'audit est nécessaire et que vous utilisez Solaris 9 ou une version plus ancienne.

GDM prend en charge une fonction de sécurité où le serveur X fonctionne sous l'identité de l'utilisateur plutôt qu'avec root. GDM doit utiliser PAM pour que cette fonction soit activée, ce qui est la situation normale avec Solaris. Un effet de bord de cette deuxième fonctionnalité est que le serveur X redémarre toujours entre les sessions, ce qui désactive l'option de configuration AlwaysRestartServer.

Solaris prend en charge l'interface `/etc/default/login`, ce qui influence les options `DefaultPath`, `RootPath`, `PasswordRequired` et `AllowRemoteRoot`, comme expliqué dans la section « Configuration ».

## Exemples de configuration

### Définition de commandes personnalisées

Admettons que vous souhaitez ajouter une commande personnalisée au menu GDM afin de donner la possibilité de démarrer avec d'autres systèmes d'exploitation, comme Windoze. Il suffit d'ajouter les options suivantes dans la section `[customcommand]` du fichier de configuration GDM.

              [customcommand]
              CustomCommand0=/sbin/rebootwindoze;/usr/local/sbin/rebootwindoze
              CustomCommandLabel0=_Windoze
              CustomCommandLRLabel0=Redémarrer avec _Windoze
              CustomCommandText0=Êtes-vous sûr de vouloir redémarrer l'ordinateur avec Windoze ?
              CustomCommandTooltip0=Redémarre l'ordinateur avec Windows
              CustomCommandIsPersistent0=true

CustomCommand0 indique deux commandes séparées par un point-virgule : filename>/sbin/rebootwindoze

À part la possibilité de personnaliser cette option pour redémarrer avec un autre système d'exploitation, vous pouvez aussi l'utiliser pour définir vos propres commandes que vous souhaitez lancer à partir du menu GDM. Supposons que vous souhaitez donner la possibilité aux utilisateurs de lancer des scripts de mise à jour du système à partir de l'écran de connexion. Ajoutez les options suivantes dans la section `[customcommand]` de votre fichier de configuration de GDM.

              [customcommand]
              CustomCommand0=/sbin/updatesystem;/usr/local/sbin/updatesystem
              CustomCommandLabel0=_Mettez-moi à jour
              CustomCommandLRLabel0=Mettre à jour le système
              CustomCommandText0=Êtes-vous sûr de vouloir mettre à jour le logiciel système ?
              CustomCommandTooltip0=Met à jour le système
              CustomCommandNoRestart0=true

Les deux commandes personnalisée pourraient être définies comme ceci :

              [customcommand]
              CustomCommand0=/sbin/rebootwindoze;/usr/local/sbin/rebootwindoze
              CustomCommandLabel0=_Windoze
              CustomCommandLRLabel0=Redémarrer avec _Windoze
              CustomCommandText0=Êtes-vous sûr de vouloir redémarrer l'ordinateur avec Windoze ?
              CustomCommandTooltip0=Redémarre l'ordinateur avec Windows
              CustomCommandIsPersistent0=true

              CustomCommand1=/sbin/updatesystem;/usr/local/sbin/updatesystem
              CustomCommandLabel1=_Mettez-moi à jour
              CustomCommandLRLabel1=Mettre à jour le système
              CustomCommandText1=Êtes-vous sûr de vouloir mettre à jour le logiciel système ?
              CustomCommandTooltip1=Met à jour le système
              CustomCommandNoRestart1=true

Il peut y avoir jusqu'à 10 commandes personnalisées, numérotées de 0 à 9.

              [customcommand]
              CustomCommand0=/sbin/rebootwindoze;/usr/local/sbin/rebootwindoze
              CustomCommandLabel0=_Windoze
              CustomCommandLRLabel0=Redémarrer avec _Windoze
              CustomCommandText0=Êtes-vous sûr de vouloir redémarrer l'ordinateur avec Windoze ?
              CustomCommandTooltip0=Redémarre l'ordinateur avec Windows
              CustomCommandIsPersistent0=true

              CustomCommand1=/sbin/updatesystem;/usr/local/sbin/updatesystem
              CustomCommandLabel1=_Mettez-moi à jour
              CustomCommandLRLabel1=Mettre à jour le système
              CustomCommandText1=Êtes-vous sûr de vouloir mettre à jour le logiciel système ?
              CustomCommandTooltip1=Met à jour le système
              CustomCommandNoRestart1=true

              CustomCommand3=/sbin/fais_quelque_chose
              .
              .
              .

              CustomCommand4=/sbin/fais_autre_chose
              .
              .
              .

## 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 dans la catégorie « gdm » de bugzilla.gnome.org ou vous pouvez envoyer un courriel à la liste de diffusion

    gdm-list@gnome.org

Si GDM ne fonctionne pas correctement, il est toujours utile de fournir des informations de débogage. Utilisez la commande `gdmsetup` pour activer le débogage (« Activer les messages de débogage dans les journaux système » de l'onglet Sécurité), puis amenez GDM à l'endroit où se pose le problème et faites part de la sortie de GDM récoltée dans votre journal système (`<var>/log/messages` ou `<var>/adm/messages` selon votre système d'exploitation). Dans la mesure où le journal système peut être très long, extrayez uniquement les informations liées à GDM et n'envoyez pas le fichier entier. Si vous ne voyez pas apparaître de données GDM dans le journal système, il peut être nécessaire de configurer syslog (voir la page de manuel syslog.3c).

Vous ne devriez pas laisser activés les messages de débogage après avoir récolté les données. Cela va surcharger votre journal système et ralentir les performances du système.

### 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.

Un autre problème courant est que le programme de la bannière GDM a des difficultés à démarrer. Cela peut arriver, par exemple, si GDM ne peut pas trouver une bibliothèque nécessaire ou une autre ressource. Essayez de lancer le serveur X et un terminal, définissez la variable d'environnement de shell DOING_GDM_DEVELOPMENT=1 et exécutez `<lib>/gdmlogin` ou `<lib>/gdmgreeter`. Tout message d'erreur apparaissant dans le terminal peut être une indication utile sur la cause du problème. Il est aussi possible d'activer le débogage et de contrôler les résultats apparaissant dans le journal système pour donner un éclairage sur le problè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.

### GDM n'accède pas aux paramètres de l'utilisateur

GDM enregistre les paramètres des utilisateurs, tels que la session par défaut et la langue par défaut dans le fichier `~/.dmrc`. D'autres fichiers, comme le fichier `~/.Xauthority` de l'utilisateur a aussi une influence sur la connexion. Par défaut, GDM est strict sur la manière d'accéder aux fichiers du dossier personnel de l'utilisateur, et il ignore tout fichier qui ne respecte pas certaines règles. Vous pouvez utiliser l'option de configuration `RelaxPermissions` pour que GDM soit moins strict dans sa manière d'accéder aux fichiers du dossier personnel des utilisateurs. Vous pouvez aussi corriger les problèmes de permissions qui empêchent GDM d'accéder aux fichiers. Tout ceci est abordé en détails dans la section « Accès aux fichiers » du chapitre Aperçu.

## 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 FloorBoston, MA02110-1301USA