Sous Linux précédent, l'ajout d'utilisateurs était fait avec ʻuseradd, le répertoire personnel était créé comme répertoire sous
/ homeet le compte de l'utilisateur était
/ etc / passwd,
/ etc / group,
. Il a été géré dans / etc / shadow`.
Désormais, systemd-homed
remplacera tout ce travail.
Un démon de gestion des utilisateurs ajouté dans la version 245 de systemd. L'entité est un fichier d'unité de service systemd, lancé en tant que systemd-homed.service
.
~~ Il semble que la gestion des utilisateurs et l'authentification seront effectuées par systemd-homed (ci-après, hébergé) à l'avenir. ~~ Je l'ai corrigé car il n'y avait pas de source et c'était une erreur. L'utilisation de systemd-homed est un choix de l'utilisateur, il n'est donc pas nécessaire de forcer une migration. homed lui-même est automatiquement activé si la dernière version de systemd est installée. (Cependant, il est nécessaire de le configurer pour pouvoir l'utiliser. Il sera décrit plus loin.)
--Créer, supprimer, modifier des utilisateurs
/ etc / passwd
, / etc / group
, / etc / shadow
Je n'expliquerai que les trois ci-dessus un par un.
Lors de la gestion des utilisateurs avec homed, vous utiliserez la commande homectl
au lieu de commandes telles que ʻuseradd. ** Bien sûr, soyez assuré que vous pouvez continuer à gérer les utilisateurs en utilisant ʻuseradd
et / etc / passwd
sous Linux avec homed installé. ** Cependant, le compte créé d'un côté ne peut pas être géré par l'autre. (Incompatible)
De plus, comme homed prend en charge NSS (systemd est ajouté à nsswitch.conf), les utilisateurs Linux peuvent être correctement reconnus même avec la commande getent
et les logiciels conventionnels utilisant la glibc.
Jetons un bref coup d'œil à la nouvelle commande homectl
.
--homectl create <user>
Ajouter un utilisateur
--homectl remove <user>
Supprimer l'utilisateur
--homectl update <utilisateur>
Mise à jour de l'utilisateur
--homectl passwd <utilisateur>
Changer le mot de passe de l'utilisateur
Les options qui peuvent être spécifiées / modifiées par création et mise à jour sont les suivantes. * Il y en a beaucoup plus, mais ils sont omis parce qu'ils sont longs. Pour plus d'informations, allez dans homectl -h
.
General User Record Properties:
-c --real-name=REALNAME Real name for user
--realm=REALM Realm to create user in
--email-address=EMAIL Email address for user
--location=LOCATION Set location of user on earth
--icon-name=NAME Icon name for user
-d --home-dir=PATH Home directory
--uid=UID Numeric UID for user
-G --member-of=GROUP Add user to group
--skel=PATH Skeleton directory to use
--shell=PATH Shell for account
--setenv=VARIABLE=VALUE Set an environment variable at log-in
--timezone=TIMEZONE Set a time-zone
--language=LOCALE Set preferred language
--ssh-authorized-keys=KEYS
Specify SSH public keys
--pkcs11-token-uri=URI URI to PKCS#11 security token containing
private key and matching X.509 certificate
Account Management User Record Properties:
--locked=BOOL Set locked account state
--not-before=TIMESTAMP Do not allow logins before
--not-after=TIMESTAMP Do not allow logins after
--rate-limit-interval=SECS
Login rate-limit interval in seconds
--rate-limit-burst=NUMBER
Login rate-limit attempts per interval
Password Policy User Record Properties:
--password-hint=HINT Set Password hint
--enforce-password-policy=BOOL
Control whether to enforce system's password
policy for this user
-P Equivalent to --enforce-password-password=no
--password-change-now=BOOL
Require the password to be changed on next login
--password-change-min=TIME
Require minimum time between password changes
--password-change-max=TIME
Require maximum time between password changes
--password-change-warn=TIME
How much time to warn before password expiry
--password-change-inactive=TIME
How much time to block password after expiry
Resource Management User Record Properties:
--disk-size=BYTES Size to assign the user on disk
--access-mode=MODE User home directory access mode
--umask=MODE Umask for user when logging in
--nice=NICE Nice level for user
--rlimit=LIMIT=VALUE[:VALUE]
Set resource limits
--tasks-max=MAX Set maximum number of per-user tasks
--memory-high=BYTES Set high memory threshold in bytes
--memory-max=BYTES Set maximum memory limit
--cpu-weight=WEIGHT Set CPU weight
--io-weight=WEIGHT Set IO weight
Vous pouvez voir que diverses restrictions de ressources peuvent être ajoutées en plus des options qui peuvent être spécifiées avec useradd jusqu'à présent.
Un autre point important est que la date d'expiration du mot de passe peut être définie pour chaque utilisateur et que le nombre de tentatives de connexion par heure fixe peut être limité ici.
homed gère également les informations utilisateur. Les utilisateurs créés par homectl ne sont pas répertoriés dans / etc / passwd
, / etc / group
, / etc / shadow
.
Au lieu,
/ run / systemd / userdb / io.systemd.Home
)~ / .identity
est créé dans chaque répertoire personnel et vous pouvez vérifier les informations utilisateur au format JSON.~ / .identity
est, par exemple, quelque chose comme ça.
{
"cpuWeight" : 10,
"disposition" : "regular",
"lastChangeUSec" : 1584387192577240,
"lastPasswordChangeUSec" : 1584382416144118,
"memberOf" : [
"testgroup"
],
"perMachine" : [
{
"diskSize" : 10737418240,
"matchMachineId" : [
"48801054a2af8b2c0104ff82c482fe2d"
]
}
],
"privileged" : {
"hashedPassword" : [
"$6$h9kNT.dmjmHXt/i1$ATJy/KnBCXMlmIjBziemYqRa8XUtiVDMCnC.m/iSNNh8zdXfX5V7jJwwsZCJo3PJIv3.C0p/6OXTxN8CXCIcS1"
]
},
"signature" : [
{
"data" : "hoge",
"key" : "-----BEGIN PUBLIC KEY-----\fuga=\n-----END PUBLIC KEY-----\n"
}
],
"userName" : "test"
}
Ce fichier peut être lu et écrit par des non-root, il est donc probable que le corps se trouve ailleurs, ou que homed signe ce fichier avec l'élément signature
. Mais je ne sais pas si les deux sont mes spéculations.
userdbctl
Si vous souhaitez vérifier les informations utilisateur et les informations de groupe autres que la création / mise à jour d'utilisateurs, utilisez la commande ʻuserdbctl`.
Sous-commande
user [USER…] Inspect user
group [GROUP…] Inspect group
users-in-group [GROUP…] Show users that are members of specified group(s)
groups-of-user [USER…] Show groups the specified user(s) is a member of
Par exemple, ʻuserdbctl user <nom d'utilisateur> `peut être utilisé pour vérifier l'état de chiffrement et les restrictions de ressources du groupe de l'utilisateur, du répertoire personnel, etc.
C'est PAM (modules d'authentification enfichables) qui gère les utilisateurs Linux. Parlons de pam.
Dans un environnement traditionnel sans homed, il existe un "module PAM qui lit / etc / passwd
et / etc / shadow
et renvoie le succès au logiciel si le mot de passe est correct "et l'utilise par défaut. C'était un fichier de paramètres. (Détails omis)
À l'ère de l'homed, ** ajoutez un «module PAM qui appelle l'homed pour vérifier les informations d'identification de l'utilisateur» à ce pam. ** Puisqu'il s'agit d'un ajout, la gestion des utilisateurs existante sera également appliquée.
En passant, en passant, j'ai également ajouté un module à ce PAM lors de la gestion du réseau des utilisateurs Linux tels que l'authentification LDAP et l'authentification NIS.
** * Si vous n'effectuez pas ce réglage, vous ne pourrez pas vous connecter même si vous ajoutez un utilisateur avec homectl
. ** **
Pour utiliser la fonction domiciliée, vous devez vous préparer pour le moment. Vous devez mettre à jour le fichier de configuration pam. Probablement, si vous installez le système d'exploitation avec le dernier systemd, le fichier de configuration mis à jour sera inclus par défaut, mais nous devons réécrire manuellement le fichier de configuration lors de la mise à jour au milieu. C'est de la spéculation, mais c'est probablement parce que le fichier de configuration pam est édité un peu après l'installation en fonction de l'environnement (pour l'authentification LDAP, etc.).
Si vous n'avez pas modifié les paramètres de pam, vous pouvez écraser les paramètres de pam et la mise à jour est terminée.
$ sudo cp /usr/share/factory/etc/pam.d/system-auth /etc/pam.d/system-auth
Si vous jouez avec les paramètres, regardez le diff et réglez-le à votre guise. Vous pouvez vérifier la méthode de paramétrage détaillée en exécutant man pam_systemd_home
.
Peut-être la plus grande caractéristique de homed est qu'il prend en charge le cryptage du répertoire personnel. Jusqu'à présent, il était nécessaire de définir chacun avec ecryptfs etc.
homed vous permet de choisir le type de répertoire de base lorsque vous créez un utilisateur. (--storage =
)
** Si rien n'est spécifié, homed utilisera par défaut luks
. ** **
--directory
… Comme précédemment, créez un répertoire avec votre nom d'utilisateur sous / home
--subvolume
… Créer le sous-volume btrfs du nom d'utilisateur sous / home
--Créez un répertoire personnel en utilisant le cryptage LUKS sous luks
… / home
--fscrypt
… J'ai utilisé FSCrypt sous / home
(abréviation)
--cifs
… / home
, en utilisant cifs (soi-disant Samba / partage réseau) (abréviation
Parmi ceux-ci, utilisez «luks» ou «fscrypt» pour chiffrer. Eh bien, c'est naturel car il utilise LUKS et FSCrpyt. Sauf si vous avez une raison spécifique, systemd recommande d'utiliser luks
sur fscrypt
.
En outre, ce cryptage luks hébergé prend en charge le décryptage automatique et le rechiffrement automatique lorsque l'utilisateur se connecte et se déconnecte. C'est pratique.
luks
dans homed (bonus)Lors de l'utilisation de luks avec homed, un fichier d'une taille de plusieurs dizaines de Go appelé ʻusername.home est généré sous
/ home / . Il s'agit apparemment du corps du répertoire personnel. Ce fichier est un fichier image de ʻext4
ou btrfs
(vous pouvez choisir quel système de fichiers dans luks est), et il est chiffré avec luks (dm-verity) avec le stockage en bloc.
homed semble monter ce fichier image sur / home / username
tout en le déchiffrant lors de la connexion.
Utilisez la commande homectl
pour déchiffrer (monter) le répertoire personnel lorsque l'utilisateur n'est pas connecté. Bien entendu, une phrase de passe de décryptage (similaire au mot de passe de connexion de l'utilisateur) est requise pour le décryptage.
--homectl activer <utilisateur>
décrypter
--`homectl désactiver
Apparemment, l'état déchiffré est appelé "actif". En passant, vous pouvez vérifier quel utilisateur est actuellement actif avec homectl list
.
Ce que vous remarquez ici, c'est que vous avez besoin d'une phrase de passe de décryptage pour accéder au répertoire personnel de l'utilisateur. Même si vous disposez des privilèges root, il est très avantageux du point de vue de la sécurité et de la confidentialité de ne pas pouvoir accéder au répertoire personnel d'une autre personne à moins que l'utilisateur ne soit connecté (l'utilisateur ne l'a pas déchiffré).
Les utilisateurs créés avec homectl semblent être limités en taille de leur répertoire personnel par défaut. Dans le cas de luks, la taille du fichier image est limitée.
Vous pouvez utiliser la commande homectl resize
pour modifier la limite de taille.
Exemple:
$ homectl resize user1 10G
Le fichier image en mode luks étant un fichier image fixe (une méthode de sécurisation de la capacité à l'avance), plusieurs dizaines de Go de fichiers image vides sont créés dès le début. C'est inefficace et je ne l'utilise pas beaucoup, donc je pense que c'est une bonne idée de le maintenir à environ 10 Go avec la commande resize.
Introduction de systemd-homed. Vous pouvez continuer à gérer les utilisateurs en utilisant la méthode conventionnelle. Par conséquent, s'il n'y a pas de problème dans la situation actuelle, il faudra beaucoup de temps pour que le homed pénètre progressivement. Cependant, il est très pratique pour les utilisateurs de bureau Linux, donc si vous êtes intéressé, veuillez l'utiliser.
Excusez-moi pour une longue phrase et merci d'avoir lu jusqu'ici.
Recommended Posts