In früheren Linux-Versionen erfolgt das Hinzufügen von Benutzern mit "useradd", das Home-Verzeichnis wird als Verzeichnis unter "/ home" erstellt und das Benutzerkonto lautet "/ etc / passwd", "/ etc / group", " Es wurde in / etc / shadow` verwaltet.
Von nun an wird systemd-homed
all diese Arbeit ersetzen.
Ein Benutzerverwaltungsdämon wurde in systemd Version 245 hinzugefügt. Die Entität ist eine systemd Service Unit-Datei, die als "systemd-homed.service" gestartet wird.
~~ Es scheint, dass die Benutzerverwaltung und -authentifizierung in Zukunft von systemd-homed (im Folgenden homed) durchgeführt wird. ~~ Ich habe es korrigiert, weil es keine Quelle gab und es ein Fehler war. Die Verwendung von systemd-homed hängt vom Benutzer ab, sodass keine Migration erzwungen werden muss. homed selbst wird automatisch aktiviert, wenn Sie das neueste System installiert haben. (Es ist jedoch erforderlich, es einzustellen, um es verwenden zu können. Es wird später beschrieben.)
Ich werde nur die obigen drei nacheinander erklären.
Wenn Sie Benutzer mit homed verwalten, verwenden Sie den Befehl homectl
anstelle von Befehlen wie useradd
.
** Natürlich können Sie sicher sein, dass Sie Benutzer weiterhin mit useradd
und / etc / passwd
unter Linux mit installiertem Homed verwalten können. ** Das auf einer Seite erstellte Konto kann jedoch nicht von der anderen Seite verwaltet werden. (Unvereinbar)
Da homed NSS unterstützt (systemd wird zu nsswitch.conf hinzugefügt), können Linux-Benutzer auch mit dem Befehl getent
und herkömmlicher Software mit glibc korrekt erkannt werden.
Werfen wir einen kurzen Blick auf den neuen Befehl "homectl".
--homectl create <Benutzer>
Benutzer hinzufügen
--homectl remove <Benutzer>
Benutzer entfernen
--homectl update <Benutzer>
Benutzerupdate
--homectl passwd <Benutzer>
Benutzerkennwort ändern
Folgende Optionen können durch Erstellen und Aktualisieren angegeben / geändert werden. * Es gibt viele mehr, aber sie werden weggelassen, weil sie lang sind. Weitere Informationen finden Sie unter 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
Sie können sehen, dass zusätzlich zu den Optionen, die bisher mit useradd angegeben werden können, verschiedene Ressourcenbeschränkungen hinzugefügt werden können.
Ein weiterer wichtiger Punkt ist, dass das Ablaufdatum des Passworts für jeden Benutzer festgelegt werden kann und die Anzahl der Anmeldeversuche pro fester Zeit hier begrenzt werden kann.
homed verwaltet auch Benutzerinformationen. Von homectl erstellte Benutzer werden nicht in "/ etc / passwd", "/ etc / group", "/ etc / shadow" aufgeführt.
Stattdessen,
/ run / systemd / userdb / io.systemd.Home
)~ / .identity
ist zum Beispiel so etwas.
{
"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"
}
Diese Datei kann von Nicht-Root-Benutzern gelesen und geschrieben werden. Daher ist es wahrscheinlich, dass sich der Text an einem anderen Ort befindet oder dass Homed diese Datei mit dem Element "Signatur" signiert. Aber ich weiß nicht, ob beides meine Spekulationen sind.
userdbctl
Verwenden Sie den Befehl userdbctl
, wenn Sie zusätzlich zum Erstellen / Aktualisieren von Benutzern Benutzerinformationen und Gruppeninformationen überprüfen möchten.
Unterbefehl
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
Beispielsweise kann "userdbctl user
Es ist PAM (Pluggable Authentication Modules), das Linux-Benutzer verwaltet. Reden wir über Pam.
In einer herkömmlichen Umgebung ohne Homed gibt es ein "PAM-Modul, das" / etc / passwd "und" / etc / shadow "liest und Erfolg an die Software zurückgibt, wenn das Passwort korrekt ist" und es standardmäßig verwendet. Es war eine Einstellungsdatei. (Details weggelassen)
In der Homed-Ära werden wir dieser Pam ein "PAM-Modul" hinzufügen, das Homed aufruft, um die Anmeldeinformationen des Benutzers zu überprüfen. ** Da es sich um eine Ergänzung handelt, wird auch die vorhandene Benutzerverwaltung angewendet.
Übrigens habe ich dieser PAM auch ein Modul hinzugefügt, wenn ich das Netzwerk von Linux-Benutzern wie die LDAP-Authentifizierung und die NIS-Authentifizierung verwalte.
** * Wenn Sie diese Einstellung nicht vornehmen, können Sie sich nicht anmelden, selbst wenn Sie einen Benutzer mit "homectl" hinzufügen. ** ** **
Um homed verwenden zu können, müssen Sie sich vorerst vorbereiten. Sie müssen die Pam-Konfigurationsdatei aktualisieren. Wenn Sie das Betriebssystem mit dem neuesten System installieren, wird die aktualisierte Konfigurationsdatei wahrscheinlich standardmäßig enthalten sein, aber wir müssen die Konfigurationsdatei beim Aktualisieren in der Mitte manuell neu schreiben. Dies ist eine Spekulation, aber wahrscheinlich, weil die Pam-Konfigurationsdatei nach der Installation je nach Umgebung (für die LDAP-Authentifizierung usw.) ziemlich oft bearbeitet wird.
Wenn Sie nicht mit den Pam-Einstellungen herumgespielt haben, können Sie die Pam-Einstellungen überschreiben und das Update ist abgeschlossen.
$ sudo cp /usr/share/factory/etc/pam.d/system-auth /etc/pam.d/system-auth
Wenn Sie mit den Einstellungen herumspielen, schauen Sie sich das Diff an und stellen Sie es nach Ihren Wünschen ein. Sie können die detaillierte Einstellungsmethode überprüfen, indem Sie "man pam_systemd_home" ausführen.
Das vielleicht größte Merkmal von Homed ist, dass es die Verschlüsselung des Home-Verzeichnisses unterstützt. Bisher war es notwendig, jedes mit ecryptfs etc. zu setzen.
Mit homed können Sie den Typ des Home-Verzeichnisses auswählen, wenn Sie einen Benutzer erstellen. (--storage =
)
** Wenn nichts angegeben ist, verwendet homed standardmäßig luks
. ** ** **
--directory
… Erstellen Sie nach wie vor ein Verzeichnis mit Ihrem Benutzernamen unter / home
--subvolume
… Erstellt ein btrfs-Subvolume des Benutzernamens unter / home
--Erstellen Sie ein Home-Verzeichnis mit LUKS-Verschlüsselung unter luks
… / home
--fscrypt
… Ich habe FSCrypt unter / home
(Abkürzung) verwendet.
--cifs
… / home
mit cifs (sogenannte Samba / Network Sharing) (Abkürzung)
Verwenden Sie zum Verschlüsseln "luks" oder "fscrypt". Nun, es ist natürlich, weil es LUKS und FSCrpyt verwendet. Sofern Sie keinen bestimmten Grund haben, empfiehlt systemd die Verwendung von "luks" über "fscrypt".
Darüber hinaus unterstützt diese Homed Luks-Verschlüsselung die automatische Entschlüsselung und die automatische Neuverschlüsselung, wenn sich der Benutzer an- und abmeldet. Es ist bequem.
Bei Verwendung von luks mit homed wird unter "/ home /" eine Datei mit einer Größe von mehreren zehn GB mit dem Namen "username.home" generiert. Dies ist anscheinend der Hauptteil des Home-Verzeichnisses.
Diese Datei ist eine Image-Datei von "ext4" oder "btrfs" (Sie können wählen, welches Dateisystem in luks enthalten ist) und wird zusammen mit dem Blockspeicher mit luks (dm-verity) verschlüsselt.
homed scheint diese Image-Datei unter / home / username
zu mounten, während sie beim Login entschlüsselt wird.
Verwenden Sie den Befehl homectl
, um das Home-Verzeichnis zu entschlüsseln (zu mounten), wenn der Benutzer nicht angemeldet ist. Natürlich ist für die Entschlüsselung eine Entschlüsselungspassphrase (ähnlich dem Anmeldekennwort des Benutzers) erforderlich.
--homectl aktiviere <Benutzer>
entschlüsseln
--homectl deaktiviert die <Benutzer>
Verschlüsselung
Anscheinend wird der entschlüsselte Zustand "aktiv" genannt. Übrigens können Sie mit homectl list
überprüfen, welcher Benutzer gerade aktiv ist.
Was Sie hier bemerken, ist, dass Sie eine Entschlüsselungspassphrase benötigen, um auf das Home-Verzeichnis des Benutzers zuzugreifen. Selbst wenn Sie über Root-Rechte verfügen, ist es aus Sicherheits- und Datenschutzgründen sehr vorteilhaft, dass Sie nur dann auf das Home-Verzeichnis einer anderen Person zugreifen können, wenn der Benutzer angemeldet ist (der Benutzer hat es nicht entschlüsselt).
Benutzer, die mit homectl erstellt wurden, scheinen standardmäßig in der Größe ihres Home-Verzeichnisses begrenzt zu sein. Bei luks ist die Größe der Bilddatei begrenzt.
Sie können den Befehl homectl resize
verwenden, um die Größenbeschränkung zu ändern.
Beispiel:
$ homectl resize user1 10G
Da es sich bei der Bilddatei im luks-Modus um eine feste Bilddatei handelt (eine Methode zum Sichern des Speicherplatzes im Voraus), werden von Anfang an mehrere zehn GB leere Bilddateien erstellt. Es ist ineffizient und ich benutze es nicht so oft. Ich denke, es ist eine gute Idee, es mit dem Befehl zum Ändern der Größe auf etwa 10 GB zu beschränken.
Einführung von systemd-homed. Sie können Benutzer weiterhin mit der herkömmlichen Methode verwalten. Wenn es in der aktuellen Situation kein Problem gibt, wird es daher lange dauern, bis Homed allmählich eindringt. Es ist jedoch sehr praktisch für Linux-Desktop-Benutzer. Wenn Sie also interessiert sind, verwenden Sie es bitte.
Entschuldigen Sie mich für einen langen Satz und danke, dass Sie so weit gelesen haben.
Recommended Posts