OBSD4* : wiki

Xenodm (gestionnaire d'affichage)

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)

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

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

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

$ ls -al /etc/X11/xenodm/                                                                                                             
total 56
drwxr-xr-x  4 root  wheel   512 Oct  9 16:03 ./
drwxr-xr-x  7 root  wheel   512 Oct  4 05:43 ../
-rwxr-xr-x  1 root  wheel   525 Apr  1  2017 GiveConsole*
-rwxr-xr-x  1 root  wheel   392 Apr  1  2017 TakeConsole*
-rwxr-xr-x  1 root  wheel   232 Oct  9 15:59 Xreset*
-r--r--r--  1 root  bin    3669 Oct  9 15:59 Xresources
-r--r--r--  1 root  bin     433 Apr  1  2017 Xservers
-rwxr-xr-x  1 root  wheel  1466 Oct  9 15:59 Xsession*
-rwxr-xr-x  1 root  wheel   227 Oct  9 15:59 Xsetup_0*
-rwxr-xr-x  1 root  wheel   368 Oct  9 15:59 Xstartup*
drwx------  3 _x11  _x11    512 Aug 29 09:52 authdir/
drwxr-xr-x  2 root  wheel   512 Oct  9 15:56 pixmaps/
-r--r--r--  1 root  bin    1183 Oct  9 16:03 xenodm-config

Gestion du service

À moins de l'avoir activé lors de votre installation d'OpenBSD depuis la version 6.1, celui-ci ne sera pas actif par défaut !

  • Pour activer xenodm :
    # rcctl enable xenodm 
  • Pour démarrer xenodm :
    # rcctl start xenodm 
  • Pour arrêter xenodm :
    # rcctl stop xenodm 
  • Pour supprimer xenodm :
    # rcctl disable 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 !

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 !

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

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
    • 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…

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 &

Exemples de configuration

- 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é. (qiv ne fait pas partie du système de base).

- 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

xenodm-config

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

Auto-connexion

Pour utiliser le mode auto-connexion, 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…