Outils pour utilisateurs

Outils du site


system:x11:xenodm

Xenodm (gestionnaire d'affichage)

Description

Xenodm est un gestionnaire de session X, faisant partie du système de base depuis OpenBSD 6.1 !

C'est un dérivé de xdm, purgé de beaucoup de codes, donc plus léger, et débarrassé de potentielles failles de sécurités :

Time has passed by and nowadays, xdm(1) is mainly used just to manage the local X server running on laptop or desktop machines. Moreover `XDCMP's security is weak (based on DES) and doesn't support IPv6 well. So it's time to retire it. So Xenocara is getting a “new” X Display Manager which will be called “xenodm”.

Xenodm is based on xdm source code. I've removed all support for XDMCP and other old cruft like ugly games with signals and setjmp(3)/longjmp(3) to set timeouts on potentially blocking operations. Another goal was to un-tangle the ifdef maze that supported various flavors of authentication methods, to only keep the BSDauth code used in OpenBSD.

(cf: http://undeadly.org/cgi?action=article&sid=20160911231712)

ATTENTION : Il est recommandé de ne pas utiliser xenodm avec l'environnement graphique Gnome3 ; utilisez gdm à la place !

Cela fait partie de ses limitations.

Xenodm est constitué d'un ensemble de fichiers de configuration dont chacun a son rôle bien précis.

Documentation

Le manpage correspondant : https://man.openbsd.org/xenodm.1

Utilisation

L'activation de xenodm n'est plus nécessaire depuis OpenBSD 6.4 !

xenodm étant un service, apprenez à le gérer correctement.

Configuration

Le fichier de configuration principal est : /etc/X11/xenodm-config.

Fichier ''/etc/X11/xenodm/xenodm-config''

Ce fichier de configuration principal est un appel vers les autres fichiers de configuration dédiés à des ressources particulières.

Le manpage restitue un exemple considéré comme étant un minimum des ressources nécessaires pour un bon fonctionnement :

/etc/X11/xenodm-config
DisplayManager.servers:      /etc/X11/xenodm/Xservers
DisplayManager.errorLogFile: /var/log/xenodm.log
DisplayManager*resources:    /etc/X11/xenodm/Xresources
DisplayManager*startup:      /etc/X11/xenodm/Xstartup
DisplayManager*session:      /etc/X11/xenodm/Xsession
DisplayManager._0.authorize: true
DisplayManager*authorize:    false

Explications

Voici une description du propos de chacun de ces fichiers :

Autres fichiers de configuration possible :

  • DisplayManager*reset: /etc/X11/xenodm/Xreset : ce fichier de réinitialisation exécute les commandes à utiliser lorsque l'utilisateur termine sa session. Les variables d'environnement fournies à Xstartup sont fournies aussi lors de son exécution. *
  • DisplayManager._0.setup: /etc/X11/xenodm/Xsetup_0 : est un script shell qui s'exécute après que le serveur X soit reconfiguré ET avant l'appel au gestionnaire de session. C'est ici que l'on configure l'aspect de ce dernier. *

* ATTENTION, ce programme est exécuté avec les droits root, il est donc nécessaire d'être très prudent en terme de sécurité système.


Le fichier de configuration de xenodm a actuellement cette forme :

/etc/X11/xenodm-config
! $OpenBSD: xenodm-config.in,v 1.5 2018/11/03 18:04:45 matthieu Exp $
!
DisplayManager.authDir:	/etc/X11/xenodm
DisplayManager.errorLogFile:	/var/log/xenodm.log
DisplayManager.servers:		/etc/X11/xenodm/Xservers
DisplayManager*resources:	/etc/X11/xenodm/Xresources
! All displays should use authorization, but we cannot be sure
! X terminals may not be configured that way, so they will require
! individual resource settings.
DisplayManager*authorize:	true
!
DisplayManager*startup:		/etc/X11/xenodm/Xstartup
DisplayManager*session:		/etc/X11/xenodm/Xsession
DisplayManager*reset:		/etc/X11/xenodm/Xreset
DisplayManager*authComplain:	true
! The following three resources set up display :0 as the console.
DisplayManager._0.setup:	/etc/X11/xenodm/Xsetup_0
DisplayManager._0.startup:	/etc/X11/xenodm/GiveConsole
DisplayManager._0.reset:	/etc/X11/xenodm/TakeConsole
 
DisplayManager.*.authName:	MIT-MAGIC-COOKIE-1

Auto-connexion

Pour utiliser le mode de connexion automatique, c'est-à-dire sans avoir à taper votre mot-de-passe pour entrer dans votre session, modifiez le fichier /etc/X11/xenodm/xenodm-config, pour y ajouter :

DisplayManager._0.autoLogin:    UserId

Cela signifie que vous êtes le seul utilisateur de votre machine informatique !
À oublier dans le contexte de multi-utilisateurs !

ATTENTION : du fait de ne pas avoir à taper votre mot-de-passe, toute personne peut utiliser votre ordinateur et entrer directement dans votre session, avec tous les risques que cela comporte : vols d'informations, modifications voire suppressions de documents, etc…


Fichier ''/etc/X11/xenodm/Xresources''

Le fichier /etc/X11/xenodm/Xresources permet de modifier l'apparence du gestionnaire (couleurs, polices, textes, etc …).

Ce fichier NE doit PAS avoir des droits en exécution !

Arrêter l'exécution de xenodm

Pour sortir de l'exécution de xenodm, il est nécessaire de configurer le fichier Xresources afin d'ajouter ce qui suit :

xlogin.login.translations: #override \
  Ctrl<Key>R: abort-display()

Cette astuce permet de basculer en mode console, en arrêtant le serveur de xenodm, par l'appui sur les touches Ctrl+R.

Interdire la connexion root

Pour interdire la connexion du compte root, il faut modifier ce fichier de configuration et décommenter la ligne 128, de telle manière :

xlogin.Login.allowRootLogin:    false

Ceci est une recommandation pratique de sécurité !

Fichier ''/etc/X11/xenodm/Xsession''

Le fichier /etc/X11/xenodm/Xsession s'occupe de l'entrée en session personnelle.

Ce fichier doit avoir des droits en exécution !

Un peu de décryptage utile :

  • création et gestion d'un fichier personnel ~/.xsession-errors, dont le but est de permettre au système d'écrire dedans tout problème relatif à l'exécution de l'entrée en session. C'est le fichier à vérifier IMPÉRATIVEMENT si vous rencontrez des problèmes de connexion.
  • gestion de l'agent SSH - si celui-ci est installé ET fonctionnel, c'est la raison pour laquelle il est demandé la saisie des clés SSH lors de la connexion. Si erreur, la session se fermera immédiatement.
  • gestion du fichier personnel ~/.xsession :
    • si le fichier existe ET qu'il n'est pas vide, il sera exécuté.
    • si le fichier a des droits en exécution, il sera appelé directement - à ce propos, il est recommandé dans le manpage que celui-ci doit avoir ces fameux droits.
    • s'il n'a pas de droits en exécution, un appel système au shell sera fait pour l'exécuter.
    • si le fichier n'existe pas, le système vérifiera l'existence d'un fichier personnel ~/.Xresources - copie personnelle du fichier /etc/X11/xenodm/Xresources - pour le charger, ainsi exécuter les binaires xterm, et fvwm par défaut. C'est le seul cas, où si ce fichier existe, il sera lu…

Fichier ''/etc/X11/xenodm/Xsetup_0''

Le fichier /etc/X11/xenodm/Xsetup_0 nous permet d'utiliser des binaires X, tels que xconsole (c'est la fameuse console de log qui s'affiche par défaut), xclock, display, etc …

Ce fichier doit avoir des droits en exécution !

/etc/X11/xenodm/Xsetup_0
#!/bin/sh
# $OpenBSD: Xsetup_0,v 1.1 2016/10/23 08:30:37 matthieu Exp $
if [ "$DISPLAY" = ":0" -o "$DISPLAY" = ":0.0" ]
then
       xconsole -geometry 480x130-0-0 -daemon -notify -verbose -fn fixed -exitOnFail
fi
 
#sxpm OpenBSD.xpm &

Fichier ''/etc/X11/xenodm/GiveConsole''

Le fichier /etc/X11/xenodm/GiveConsole a pour propos de traiter des instructions en sortie de xenodm ;-)

Ce fichier doit avoir des droits en exécution !

Exemples de configuration

Les binaires display, et qiv ne font pas partie du système de base.

Les binaires x* nécessitent que les sets d'installation xserver et consorts soient installés - ce qui devrait être le cas, si vous utilisez xenodm !

- display permet, entres autres, d'avoir une image en fond d'écran…
Exemple :

/usr/local/bin/display -window root /home/user/Images/Wallpapers/OBSD_From_Dark_to_the_Light.png

- qiv permet, entres autres, d'avoir un fond d'écran aléatoire, selon les options fournies.
Exemple :

/usr/local/bin/qiv -zr /home/user/Images/Wallpapers/* &

Cet exemple permet d'afficher une image de fond, aléatoirement, à chaque fois que xenodm est relancé.

- xclock permet d'afficher une horloge…
Exemple :

/usr/X11R6/bin/xclock -d -update 1 -render &

Pour fermer automatiquement l'horloge, on récupère son id - dans le fichier Xsetup_0, sous la ligne déclarant le binaire :

echo $! > /var/run/xclock.pid

et, on modifie le fichier /etc/X11/xenodm/GiveConsole :

if test -r /var/run/xclock.pid; then kill $(cat /var/run/xclock.pid); fi

Contribut(rice|eur)s :

pengouinpdt
system/x11/xenodm.txt · Dernière modification: 2020/10/10 13:51 de pengouinpdt