[OpenBSD] Xenodm login automatique



Introduction

Je possède un nas (openBS sur un NUC6CAYH) connecté en HDMI sur un vidéo projecteur que j’utilise pour regarder des vidéos. Ce nas est sur un coin d’une étagère et n’est normalement connecté à rien d’autre que le cable HDMI et un cable ethernet.

Jusqu’ici, après reboot mon nas, je devais connecter un clavier et une souris, me logger sur xenodm et entrer la commande xhost + permettant à n’importe qui de se connecter au serveur X du nas (ce qui n’est vraiment pas recommandé soit dit en passant).

Suite à quoi, je pouvais me connecter en ssh, entre la commande export export DISPLAY=:0 et lancer mpv pour regarder une vidéo.

Dans cet article, je vais expliquer comment automatiser :

Autologin xenodm

Une seule ligne de configuration dans /etc/X11/xenodm/xenodm-config suffit pour automatiser le login d’un user:

DisplayManager.*.autoLogin: media

 DisplayManager.DISPLAY.autoLogin
         This resource specifies the name of an user that will be logged
         in automatically, without displaying the xlogin widget.

Pour l’occasion, j’ai crée un user media avec des privileges très limités (rien de plus que l’accès aux fichiers mulitimédia).

Voici le fichier xenodm-config, après ajout de la ligne:

nas$ cat /etc/X11/xenodm/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
DisplayManager.*.autoLogin: media

Activer connection au serveur X

En modifiant le .xession du user media, on peut faire en sorte que la connexion au serveur X soit authorisé pour n’importe quel user de la machine locale:

xhost local:nas

   [+]name The given name (the plus sign is optional) is added to the list
           allowed to connect to the X server.  The name can be a host
           name or a complete name (See NAMES for more details).

 [...]

   NAMES
       A complete name has the syntax ``family:name'' where the families are
       as follows:

       inet      Internet host (IPv4)
       inet6     Internet host (IPv6)
       dnet      DECnet host
       nis       Secure RPC network name
       krb       Kerberos V5 principal
       local     contains only one name, the empty string
       si        Server Interpreted


[...]

Voila mon fichier /home/media/.xsession

xhost local:nas
feh --bg-fill --no-fehbg /share/IMG_20231122_174448.jpg
cwm