Vue d'ensemble

II.I. Introduction

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

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

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

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

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

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

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

II.II. Stabilité de l'interface

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

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

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

II.III. Description opérationnelle

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

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

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

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

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

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

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

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

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

II.IV. Panneau de la bannière d'accueil

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

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

II.V. Accessibilité

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

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

II.VI. Le navigateur de figures GDM

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

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

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

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

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

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

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

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

II.VII. XDMCP

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

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

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

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

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

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

II.VIII. Journalisation

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

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

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

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

II.IX. Changement rapide d'utilisateur

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

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