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.
Le manpage correspondant : https://man.openbsd.org/xenodm.1
L'activation de xenodm
n'est plus nécessaire depuis OpenBSD 6.4 !
xenodm
étant un service, apprenez à le gérer correctement.
Le fichier de configuration principal est : /etc/X11/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 :
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 :
/etc/X11/xenodm/Xservers
: configurer les spécifications relatives au serveur. /var/log/xenodm.log
: le journal !/etc/X11/xenodm/Xresources
: le fichier de configuration des ressources X, chargé par l'affichage local. Il sert à configurer les widgets d'authentification./etc/X11/xenodm/Xstartup
: est un script shell pour exécuter des programmes nécessaires au moment de la connexion de l'utilisateur *./etc/X11/xenodm/Xsession
: renferme les commandes exécutées avec les droits de l'utilisateur dans sa session. Son premier réflexe normalement est de chercher le fichier $HOME/.xsession
. DisplayManager._0.authorize
: une ressource booléenne qui permet au serveur de générer et d'utiliser les autorisations relatives aux connexions au serveur local. 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 :
! $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
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…
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 !
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.
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é !
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 :
~/.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. ~/.xsession
: ~/.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…
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 !
#!/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 &
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 !
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 :