L’équipe à l’origine de systemd souhaite que les utilisateurs adoptent une nouvelle approche pour la gestion de leurs répertoires personnels. Parler d’une « nouvelle approche » est un euphémisme; il s’agit d’un véritable changement de perspective pour Linux. Voici l’essentiel concernant systemd-homed, qui devrait faire son apparition dans une distribution Linux près de chez vous.
Un sujet de controverse habituel
Lors de l’introduction de systemd en 2010, la communauté Linux s’est scindée en trois groupes. Certains y voyaient une amélioration, tandis que d’autres estimaient que sa conception était défectueuse et violait la philosophie Unix. Enfin, une partie de la communauté restait indifférente.
La réaction des opposants a été forte, véhémente, voire parfois fanatique. Lennart Poettering, ingénieur logiciel chez Red Hat et co-développeur de systemd, a même reçu des menaces de mort.
Des chansons incitant à la violence contre Poettering ont été diffusées sur YouTube, et des sites web semblaient vouloir forcer les utilisateurs de Linux à boycotter systemd. Son co-développeur, Kay Sievers, a également été la cible de critiques et d’abus, mais Poettering a subi le plus gros des attaques.
Cependant, en l’espace de huit mois, Fedora utilisait systemd. Fin 2013, Arch, Debian, Manjaro et Ubuntu avaient tous migré vers systemd. Bien sûr, la nature de l’open source fait que si une solution ne vous convient pas, vous pouvez modifier le code source et créer votre propre version. De nouvelles distributions, comme Devuan, un fork de Debian, ont été créées précisément pour éviter d’utiliser systemd.
Votre répertoire $HOME
Dans l’arborescence de répertoires Linux, toutes vos activités se déroulent dans le répertoire « /home ». Vos fichiers de données, images, musiques, ainsi que l’ensemble de l’arborescence de vos répertoires personnels sont conservés dans ce répertoire qui porte le nom de votre compte utilisateur.
Les paramètres de vos applications sont stockés dans votre répertoire personnel dans des « répertoires point » masqués. Si le premier caractère d’un nom de fichier ou de répertoire est un point (.), il est invisible. Comme ces paramètres sont enregistrés localement et non dans un registre central et qu’une sauvegarde de votre répertoire personnel comprend ces fichiers et dossiers cachés, tous vos paramètres sont également sauvegardés.
Lorsque vous restaurez une sauvegarde et que vous lancez une application, comme LibreOffice ou Thunderbird, celle-ci recherche son répertoire caché. Elle y retrouve vos préférences de document, les paramètres de la barre d’outils et toutes les autres personnalisations. Thunderbird retrouve les informations de votre compte mail et vos emails. Vous n’avez pas à vous soucier de la configuration laborieuse de chaque application.
Vous pouvez utiliser la commande ls avec l’option -a (all) pour visualiser les fichiers et répertoires cachés. Commencez par saisir la commande suivante:
ls
Ceci affiche les fichiers et répertoires habituels. Ensuite, saisissez cette commande:
ls -a
Vous visualisez alors les fichiers et répertoires cachés.
Étant donné que c’est la partie la plus importante d’une installation, il est courant que le répertoire « /home » soit monté sur sa propre partition ou sur un disque dur distinct. De cette manière, en cas de problème majeur avec le système d’exploitation ou sa partition, vous pouvez réinstaller votre distribution Linux, ou migrer vers une nouvelle. Ensuite, il vous suffit de remonter votre partition personnelle existante sur « /home ».
Vos données personnelles
Votre répertoire personnel ne se contente pas de contenir vos données; il inclut également des informations à votre sujet, notamment certains éléments de votre identité numérique. Par exemple, votre répertoire « .ssh » contient des données sur les connexions distantes que vous avez établies avec d’autres ordinateurs ainsi que les clés SSH que vous avez générées.
D’autres attributs système, comme votre nom d’utilisateur, votre mot de passe et l’identifiant unique de votre compte utilisateur, sont conservés ailleurs dans des fichiers tels que « /etc/passwd » et « /etc/shadow ». Certains de ces fichiers sont accessibles à tous, tandis que d’autres ne peuvent être lus que par des personnes disposant de privilèges root.
Voici un exemple du contenu du fichier « /etc/passwd »:
cat /etc/passwd
Les changements apportés par systemd
L’objectif des modifications mises en œuvre par systemd est de fournir un répertoire personnel entièrement portable, contenant à la fois vos données et votre identité numérique Linux. Votre UID et tous les autres mécanismes d’identification et d’authentification seront stockés uniquement dans votre répertoire personnel.
En raison de leur conception « tous les œufs dans le même panier », les répertoires personnels sont chiffrés. Ils sont déchiffrés automatiquement à chaque connexion et re-chiffrés à chaque déconnexion. La méthode privilégiée est d’utiliser le chiffrement de disque Linux Unified Key Setup (LUKS). Toutefois, d’autres systèmes existent, comme fscrypt.
Un enregistrement utilisateur JavaScript Object Notation (JSON) stocke toutes vos informations d’identité dans un répertoire nommé « ~/.identity ». Il est signé cryptographiquement à l’aide d’une clé hors de votre contrôle.
Le répertoire personnel de chaque utilisateur est monté sur un périphérique de boucle, de la même manière qu’une application snap est montée. C’est ainsi que l’arborescence de répertoires du répertoire personnel apparaît comme une partie transparente de l’arborescence de répertoires du système d’exploitation. Le point de montage par défaut est « /home/$USER.homedir » (« $USER » étant remplacé par le nom du compte de l’utilisateur).
Quels sont les avantages ?
Étant donné que votre répertoire personnel devient une encapsulation sécurisée de toutes vos données, vous pouvez même le transporter sur un périphérique amovible. Par exemple, vous pouvez utiliser une clé USB pour le déplacer entre votre ordinateur de bureau et votre ordinateur portable, ou n’importe quel autre ordinateur géré par systemd.
C’est ce que Poettering entendait par « un répertoire personnel entièrement portable ». Il a précisé que même si vous ne souhaitez pas transporter votre répertoire personnel sur un périphérique amovible, cela facilitera les mises à niveau et les migrations, tout en renforçant la sécurité.
Cela supprime ce qu’il appelle les « bases de données side-car », qui contiennent des extraits d’informations essentielles à votre sujet, que Poettering estime qu’il faudrait centraliser. Les fichiers « /etc/passwd » et « /etc/shadow » contiennent des informations d’authentification et des mots de passe hachés. Cependant, ils contiennent également des informations comme votre shell par défaut, le champ General Electric Comprehensive Operating System (GECOS).
Poettering a affirmé que ces métadonnées devraient être rationalisées et regroupées de manière logique dans l’enregistrement JSON de chaque utilisateur au sein de son répertoire personnel.
Gérer votre nouveau $HOME
Le service systemd-homed est contrôlé par le nouvel outil de ligne de commande homectl.
Des options sont disponibles pour créer des utilisateurs et des répertoires personnels, ainsi que pour définir des limites de stockage pour chaque utilisateur. Vous pouvez aussi configurer le mot de passe, verrouiller l’accès d’un utilisateur à son compte, ou supprimer complètement un compte. Les utilisateurs peuvent être inspectés et leurs enregistrements utilisateur JSON peuvent également être consultés.
Les fuseaux horaires et d’autres informations de localisation peuvent également être configurés pour chaque utilisateur. Vous pouvez préciser le shell par défaut, voire définir des variables d’environnement de manière à ce qu’elles soient dans un état spécifique à chaque connexion.
Si vous examinez le répertoire « /home », vous verrez des entrées gérées par systemd ressemblant à ce qui suit, avec « .homedir » ajouté au nom d’utilisateur:
/home/dave.homedir
Il ne s’agit que d’un point de montage. L’emplacement du répertoire personnel chiffré réel se trouve ailleurs.
Limites et problèmes
systemd-homed est exclusivement destiné aux comptes utilisateur des personnes physiques. Il ne peut pas gérer les comptes d’utilisateurs dont l’UID est inférieur à 1000. Autrement dit, root, daemon, bin, etc. ne peuvent pas être administrés avec cette nouvelle approche. Les méthodes standard d’administration des utilisateurs seront toujours nécessaires. En conséquence, systemd-homed ne constitue pas une solution universelle.
Il existe un paradoxe connu qui doit être résolu. Comme mentionné précédemment, le répertoire personnel d’un utilisateur est déchiffré à chaque connexion. Cependant, si un utilisateur accède à l’ordinateur à distance via SSH, les clés SSH du répertoire personnel ne peuvent pas être utilisées, car ce dernier reste chiffré jusqu’à ce que l’utilisateur se connecte. Bien entendu, les clés SSH sont indispensables pour s’authentifier avant de pouvoir se connecter.
Ce problème a été reconnu par l’équipe de systemd, mais aucune solution n’a été trouvée à ce jour. Il y a fort à parier qu’ils finiront par résoudre ce problème ; un échec serait désastreux.
Supposons qu’un utilisateur transporte son répertoire personnel sur une nouvelle machine. Si l’UID est déjà utilisé sur la nouvelle machine par un autre utilisateur, un nouvel UID lui sera attribué automatiquement. Évidemment, tous ses fichiers devront être réattribués au nouveau UID.
Actuellement, cela se fait par une application récursive et automatique de la commande chown -R. Cette gestion sera probablement revue à l’avenir, une fois qu’une approche plus élégante aura été mise en place. Cette méthode n’est pas adaptée aux démons et aux processus qui s’exécutent sous d’autres utilisateurs.
Quand cela aura-t-il lieu ?
C’est déjà le cas. Les modifications du code ont été soumises le 20 janvier 2020, et elles ont été intégrées à la version 245 de systemd, livrée avec Ubuntu 20.04 en avril 2020.
Pour vérifier la version que vous utilisez, saisissez la commande suivante:
systemd --version
Cependant, la commande homectl n’est pas encore disponible. Ubuntu 20.04 utilise un répertoire /home traditionnel et n’utilise pas systemd-homed.
Bien entendu, il appartient à chaque distribution de décider quand elle inclura et prendra en charge systemd-homed et homectl.
Il n’y a donc aucune raison de s’alarmer. Étant donné que les méthodes standard de gestion des utilisateurs et des répertoires personnels resteront valables, chacun aura toujours le choix.