Mit dem Aufkommen von systemd-homed im Jahr 2020 wird sich die Linux-Benutzerverwaltung dramatisch ändern.

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.

Was ist systemd-homed?

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.)

Was Homed kann

Ich werde nur die obigen drei nacheinander erklären.

Benutzer erstellen, löschen, bearbeiten

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.

Verwaltung von Benutzerinformationen

homed verwaltet auch Benutzerinformationen. Von homectl erstellte Benutzer werden nicht in "/ etc / passwd", "/ etc / group", "/ etc / shadow" aufgeführt.

Stattdessen,

~ / .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 " verwendet werden, um den Verschlüsselungsstatus und die Ressourcenbeschränkungen der Benutzergruppe, des Basisverzeichnisses usw. zu überprüfen.

Informationen zur Benutzerauthentifizierung

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.

Aktivieren Sie Homed Pam

** * 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.

Home-Verzeichnis-Verschlüsselung

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.

Über die Operation bei der Verwendung von "Luks" in Homed (Bonus)

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).

Informationen zur Größenbeschränkung des Basisverzeichnisses

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.

Zusammenfassung

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.

Referenz

Recommended Posts

Mit dem Aufkommen von systemd-homed im Jahr 2020 wird sich die Linux-Benutzerverwaltung dramatisch ändern.
[Verständnis in 3 Minuten] Der Beginn von Linux
Ändern Sie die Schriftgröße der Legende in df.plot
Ändern Sie die Zeitzone in Oracle Database Docker
Die Geschichte des Aufbaus der schnellsten Linux-Umgebung der Welt
In der Mitte der Entwicklung werden wir Alembic vorstellen
[Linux] Benutzerpasswort ändern
Berechnen Sie mit Python Millionen von Stellen in der Quadratwurzel von 2
Überprüfen Sie den Speicherstatus des Servers mit dem Befehl Linux free
Überprüfen Sie den Betriebsstatus des Servers mit dem Linux-Befehl top
[Homologie] Zählen Sie mit Python die Anzahl der Löcher in den Daten
Ändern des Aufbewahrungszeitraums für CloudWatch-Protokolle in Lambda
Rufen Sie den Hostnamen des Host-PCs mit Docker unter Linux ab
Ändern Sie das Thema von Jupyter
Ändern Sie den Stil von matplotlib
Ich habe versucht, das Ranking des Qiita-Adventskalenders mit Python zu kratzen
Verarbeiten Sie den Inhalt der Datei der Reihe nach mit einem Shell-Skript
Git-Management von Jupyter Notebook (ipynb) Unterschieden in JupyterLab für einfache Anzeige
[Linux] Ich möchte das Datum wissen, an dem sich der Benutzer angemeldet hat
So ändern Sie die Farbe nur der mit Tkinter gedrückten Taste
[In der Abbildung verstanden] Verwaltung der virtuellen Python-Umgebung durch Pipenv
Geben Sie den Inhalt von ~ .xlsx im Ordner mit Python in HTML aus
Fühlen Sie sich frei, das Legendenlabel mit Seaborn in Python zu ändern
Die Geschichte der Ausgabe des Planetarium-Meisters im PDF-Format mit Pycairo
Visualisieren Sie die Häufigkeit von Wortvorkommen in Sätzen mit Word Cloud. [Python]
Überprüfen Sie den Speicherschutz von Linux Kern mit Code für ARM