[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 :
-
Le login sur xenodm
-
L’autorisation pour un user loggé en ssh de se connecter au serveur X
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