Gérer les répertoires personnels des utilisateurs Linux avec systemd-homed
Les administrateurs système peuvent utiliser le service hébergé par systemd pour une forme sécurisée de gestion des répertoires personnels des utilisateurs itinérants.
L'ensemble du concept et de la mise en œuvre de systemd ont introduit de nombreux changements depuis qu'il a commencé à remplacer les anciens outils de démarrage et d'initialisation de SystemV. Au fil du temps, systemd a été étendu à de nombreux autres segments de l'environnement Linux.
Un service relativement nouveau, systemd-homed, étend la portée de systemd à la gestion des répertoires personnels des utilisateurs. La fonctionnalité applique uniquement l'accès des utilisateurs humains et restreint les utilisateurs du système dans la plage d'ID utilisateur (UID) comprise entre 0 et 999. Je soutiens le projet de systemd de conquérir le monde, mais je me demandais si c'était un peu excessif. Ensuite, j'ai fait quelques recherches.
Qu’est-ce que systemd-homed ?
Le service hébergé par systemd prend en charge la portabilité des comptes utilisateur indépendamment du système informatique sous-jacent. Un exemple pratique consiste à transporter votre répertoire personnel sur une clé USB et à le brancher sur n'importe quel système qui le reconnaîtrait et le monterait automatiquement. Selon Lennart Poettering, développeur principal de systemd, l'accès au répertoire personnel d'un utilisateur ne devrait être autorisé à personne à moins que l'utilisateur ne soit connecté. Le service hébergé par systemd est conçu pour améliorer la sécurité, en particulier pour les appareils mobiles tels que les ordinateurs portables. Cela semble également être un outil qui pourrait être utile avec les conteneurs.
Cet objectif ne peut être atteint que si le répertoire personnel contient toutes les métadonnées utilisateur. Le fichier ~/.identity stocke les informations du compte utilisateur, qui ne sont accessibles à systemd-homed que lorsque le mot de passe est saisi. Ce fichier contient toutes les métadonnées du compte, y compris tout ce que Linux a besoin de savoir sur vous, afin que le répertoire personnel soit portable sur tout hôte Linux utilisant systemd-homed. Cette approche évite d'avoir un compte avec un mot de passe stocké sur chaque système que vous pourriez avoir besoin d'utiliser.
Le répertoire personnel peut également être crypté à l'aide de votre mot de passe. Sous systemd-homed, votre répertoire personnel stocke votre mot de passe avec toutes vos métadonnées utilisateur. Votre mot de passe crypté n’est stocké nulle part ailleurs et personne n’y a donc accès. Bien que les méthodes utilisées pour chiffrer et stocker les mots de passe sur les systèmes Linux modernes soient considérées comme incassables, la meilleure protection consiste à en empêcher l'accès en premier lieu. Les hypothèses sur l’invulnérabilité de leur sécurité ont conduit de nombreuses personnes à la ruine.
Ce service est principalement destiné à être utilisé avec des appareils portables tels que des ordinateurs portables. Poettering déclare : "Homed est principalement destiné aux machines clientes, c'est-à-dire aux ordinateurs portables et donc aux machines vers lesquelles vous effectuez généralement bien plus de ssh que ssh, si vous suivez ce que je veux dire." Il n'est pas destiné à être utilisé sur des serveurs ou des postes de travail reliés à un seul emplacement par des câbles ou verrouillés dans une salle de serveurs.
Le service hébergé par systemd est activé par défaut sur les nouvelles installations, du moins pour Fedora, qui est la distribution que j'utilise. Cette configuration est intentionnelle et je ne m'attends pas à ce que cela change. Les comptes d'utilisateurs ne sont en aucun cas affectés ou modifiés sur les systèmes dotés de systèmes de fichiers existants, de mises à niveau ou de réinstallations conservant les partitions existantes et les volumes logiques.
Création d'utilisateurs contrôlés
Les outils traditionnels tels que useradd
créent des comptes et des répertoires personnels que systemd-homed ne gère pas. Par conséquent, si vous continuez à utiliser les outils de gestion d'utilisateurs conventionnels, les répertoires personnels de vos répertoires personnels ne sont pas gérés par systemd-homed. C'est également le cas du compte utilisateur non root créé lors d'une nouvelle installation.
La commande homectl
La commande homectl
crée des comptes d'utilisateurs gérés par systemd-homed. L'utilisation de la commande homectl
pour créer un nouveau compte génère les métadonnées nécessaires pour rendre le répertoire personnel portable.
La page de manuel de la commande homectl
contient une bonne explication des objectifs et de la fonction du service hébergé par systemd. Cependant, la lecture de la page de manuel homectl
est assez intéressante, notamment la section Exemple. Parmi les cinq exemples, trois montrent comment créer des comptes d'utilisateurs avec des limites spécifiques imposées, telles qu'un nombre maximum de processus simultanés ou une quantité maximale d'espace disque.
Dans une configuration non-homectl, le fichier /etc/security/limits.conf
impose ces limites. Le seul avantage que je peux y voir est qu'il ajoute un utilisateur et applique les limites avec une seule commande. Avec la méthode traditionnelle, l'administrateur système doit configurer le fichier limits.conf
manuellement.
Limites
La seule limitation importante dont je suis conscient est qu'il n'est pas possible d'accéder à distance à un répertoire personnel d'utilisateur à l'aide d'OpenSSH. Cette limitation est due à l'incapacité actuelle de PAM à fournir l'accès à un répertoire personnel géré par homectl
. Poettering semble douter que ce problème puisse être surmonté. Ce problème m'empêcherait d'utiliser systemd-homed pour mon répertoire personnel sur mon poste de travail principal ou même sur mon ordinateur portable. Je me connecte généralement aux deux ordinateurs à distance plusieurs fois par jour en utilisant SSH, c'est donc un obstacle pour moi.
L'autre préoccupation que je peux voir est que vous avez toujours besoin d'un ordinateur Linux pour utiliser une clé USB contenant votre répertoire personnel, et que cet ordinateur doit être hébergé sur SystemD.
C'est facultatif
Cependant, vous n’êtes pas obligé de l’utiliser. Je prévois de continuer à utiliser les outils traditionnels de gestion des utilisateurs pour prendre en charge mon flux de travail. La valeur par défaut pour les quelques distributions que je connais peu, y compris Fedora, est que le service hébergé par systemd soit activé et exécuté. Vous pouvez désactiver et arrêter le service hébergé par systemd sans affecter les comptes d'utilisateurs traditionnels.
Dernières pensées
Les administrateurs système peuvent utiliser le service hébergé par systemd pour une forme sécurisée de gestion des répertoires personnels des utilisateurs itinérants. Il est utile sur les appareils portables tels que les ordinateurs portables et peut être particulièrement utile pour les utilisateurs qui possèdent une clé USB contenant uniquement leurs répertoires personnels pour la brancher sur n'importe quel ordinateur Linux pratique.
La principale limitation de l'utilisation de systemd-homed est qu'il est impossible de se connecter à distance via SSH. Et même si systemd-homed est activé par défaut, cela n'affecte pas les répertoires personnels créés avec la commande useradd
. Je dois souligner que, comme de nombreux outils systemd, systemd-homed est facultatif. J'ai donc arrêté et désactivé le service.
Si je dois conserver mon répertoire personnel dans un package plus petit que mon ordinateur portable, je peux simplement utiliser une clé USB en direct avec un stockage persistant.
Ressources
- https://systemd.io/HOME_DIRECTORY/
- https://www.freedesktop.org/software/systemd/man/homectl.html
- https://www.freedesktop.org/software/systemd/man/systemd-homed.service.html
- https://wiki.archlinux.org/title/Systemd-homed