Explorons systemd-homed et le chiffrement de son home (Mercredi Tech Live)
Adrien explore en direct le chiffrement du dossier personnel sous Linux avec systemd-homed, comparant les approches par conteneur LUKS et par chiffrement natif du système de fichiers, pour un déverrouillage transparent à la connexion.

SYNTHÈSE STRUCTURÉE
Le besoin : un chiffrement transparent, sans passe-phrase au démarrage
Adrien part d’un constat simple : le chiffrement complet du disque, proposé par défaut par Ubuntu, Fedora ou encore Homarchy, impose une passe-phrase au démarrage. C’est un frein, surtout sur une machine multi-utilisateurs ou lors des mises à jour automatiques de Fedora qui redémarrent le système. L’objectif est donc de ne chiffrer que le dossier personnel, et de le déchiffrer automatiquement à l’ouverture de session, sans interaction supplémentaire. Il précise : « Le but de la manœuvre c’est de voir comment on peut faire ça avec systemd-homed ».
systemd-homed : un service facultatif pour gérer les comptes et les homes
systemd-homed est un service additionnel de systemd, facultatif et non activé par défaut. Il prend en charge la gestion des comptes utilisateurs et de leurs répertoires personnels, indépendamment des fichiers historiques /etc/passwd et /etc/shadow. Chaque utilisateur géré par homed possède un enregistrement JSON, appelé « home record », stocké dans /var/lib/systemd/home/. Adrien insiste sur le fait que c’est un changement fondamental : « c’est systemd-homed qui va gérer les comptes utilisateurs, leur répertoire personnel et ce de façon autonome ».
Les différents types de stockage pour le home
La commande homectl permet de créer un utilisateur avec différents backends de stockage. Adrien en liste plusieurs : luks pour un conteneur chiffré, fscrypt pour un chiffrement au niveau du système de fichiers, directory pour un simple dossier non chiffré, subvolume pour un sous-volume Btrfs, et cifs pour un partage réseau. Il note que le mode cifs pourrait permettre d’utiliser un dossier personnel sur une ressource réseau partagée, une fonctionnalité potentiellement utile en environnement de domaine.
Création d’un utilisateur avec un conteneur LUKS
La commande homectl create permet de créer un utilisateur avec un stockage chiffré. Pour un conteneur LUKS, on spécifie --storage=luks, le type de système de fichiers (--fs-type=btrfs par exemple) et la taille du conteneur (--disk-size=30G). Le mot de passe saisi à la création sert à la fois pour l’authentification et pour le déchiffrement du home. Le résultat est un fichier unique, par exemple franck.home, qui est monté en boucle (loopback) lors de la connexion.
Le déverrouillage automatique à la connexion
Le module PAM pam_systemd_home.so est le composant clé qui permet le déverrouillage transparent. Lorsque l’utilisateur saisit son mot de passe au moment de la connexion, que ce soit via GDM ou SSH, ce module transmet le mot de passe à systemd-homed, qui l’utilise pour déchiffrer et monter le home. Adrien le résume ainsi : « on aura à mettre le mot de passe qu’une seule fois ».
Particularités de Fedora : authselect et SELinux
Sur Fedora, la gestion de PAM passe par authselect. Pour activer le support de systemd-homed, il faut exécuter authselect enable-feature systemd-homed. De plus, un problème de connexion avec GDM, où le premier mot de passe était ignoré, a été résolu en changeant le profil authselect de local à sssd. Enfin, une intervention sur les contextes SELinux (restorecon) a été nécessaire pour que le home monté soit accessible.
Le conteneur LUKS : une solution propre et efficace
Le test avec le conteneur LUKS s’est avéré concluant. Le fichier franck.home est un conteneur chiffré qui se monte en boucle sur /home/franck lors de la connexion. À la déconnexion, le volume est démonté et les données redeviennent inaccessibles. Adrien apprécie cette approche : « le conteneur, il marche, il est super top et moi j’aime bien ». Il note toutefois que l’espace disque est alloué dynamiquement, mais que la libération de l’espace après suppression de fichiers nécessite une commande fstrim.
Le chiffrement fscrypt : des résultats mitigés
Le test avec fscrypt sur une partition EXT4 a montré des résultats moins convaincants. Si le chiffrement fonctionne, les données restent déchiffrées après la déconnexion de l’utilisateur, jusqu’au redémarrage de la machine. Adrien constate : « c’est pas très concluant cette affaire ». Il émet l’hypothèse d’un bug ou d’une mauvaise configuration, mais la solution par conteneur LUKS lui semble plus fiable.
Récupération des données depuis un live USB
Une question importante est la récupération des données si le système ne démarre plus. Avec un conteneur LUKS, il est possible de le monter depuis un live USB en utilisant losetup pour créer un périphérique de boucle, puis cryptsetup open pour déchiffrer le conteneur, et enfin mount pour accéder aux données. Adrien détaille la procédure : « il y a besoin de trois commandes ». Pour le chiffrement fscrypt, la récupération est plus complexe et n’a pas été explorée.
Les limites et les points d’attention
Adrien soulève plusieurs points de vigilance. Le home n’est déchiffré que pendant que la session est active, ce qui signifie qu’il est rechiffré à la déconnexion. Il faut utiliser homectl passwd pour changer le mot de passe d’un utilisateur géré par homed, et non la commande passwd classique. Enfin, il note que les clés WiFi sont stockées en clair dans /etc/NetworkManager/system-connections/, ce qui relativise l’intérêt de ne chiffrer que le home.
Les prérequis et la disponibilité selon les distributions
systemd-homed est disponible depuis systemd 245. Sur Fedora, il est inclus dans le paquet systemd, tandis que sur Debian et Ubuntu, il faut installer le paquet systemd-homed. Il n’est pas disponible sur les distributions sans systemd comme Devuan, Gentoo avec OpenRC, ou Artix. Sur les distributions de type RHEL (Rocky, Alma), il n’est pas non plus proposé.
Le cas d’usage : un poste de travail personnel
Adrien conclut que systemd-homed répond à un besoin spécifique : sécuriser les données personnelles d’un poste de travail sans avoir à saisir une passe-phrase supplémentaire. Il compare cette approche à BitLocker, qui est transparent pour l’utilisateur. Il précise que ce n’est pas une solution pour les serveurs, mais pour les machines personnelles, notamment les PC portables.
CONCEPTS CLÉS
- systemd-homed : Service de systemd pour gérer les comptes utilisateurs et leurs répertoires personnels, avec des options de stockage variées.
- homectl : Commande de gestion des utilisateurs et des homes pour systemd-homed.
- LUKS : Format de chiffrement de disque standard sous Linux, utilisé ici pour créer un conteneur chiffré pour le home.
- fscrypt : Outil de chiffrement au niveau du système de fichiers, fonctionnant avec EXT4 et F2FS.
- PAM (Pluggable Authentication Modules) : Mécanisme d’authentification modulaire sous Linux, utilisé ici pour le déverrouillage automatique.
- authselect : Outil de configuration de PAM pour Fedora et d’autres distributions.
- SELinux : Système de contrôle d’accès obligatoire (MAC) sous Linux, qui peut nécessiter des ajustements de contexte.
- Home record : Fichier JSON contenant les informations d’un utilisateur géré par systemd-homed.
CONCLUSION
systemd-homed offre une solution moderne et intégrée pour chiffrer le dossier personnel sous Linux, avec un déverrouillage transparent à la connexion. L’approche par conteneur LUKS s’est révélée la plus fiable et la plus simple à mettre en œuvre, permettant même une récupération des données depuis un live USB. Cependant, cette solution a ses limites : elle ne chiffre que le home, laisse certaines données sensibles en clair (comme les clés WiFi), et nécessite une gestion spécifique des mots de passe. Elle constitue une alternative intéressante au chiffrement complet du disque pour les utilisateurs qui privilégient la commodité sans sacrifier la sécurité de leurs données personnelles.