Systemd 245: Home-Verzeichnisse lassen sich umziehen

Die neue Systemd-Version bringt unter anderem die im Vorfeld vieldiskutierte Komponente systemd-homed mit und sammelt Benutzerdaten in einer Datenbank.

Lesezeit: 2 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen 154 Beiträge

(Bild: Shutterstock (Collage))

Von

Die Systemd-Entwickler rund um Lennart Poettering haben Version 245 ihrer Linux-Systemverwaltung freigegeben. Neben vielen kleinen Änderungen und Neuentwicklungen des Systemd-Frameworks stechen drei neue Komponenten heraus: systemd-repart, systemd-userdb.service und systemd-homed.service.

Laut Release-Notes zu systemd 245 kann das neue systemd-repart GUID-Partitionstabellen (GPT) anhand einer deklarativen Vorgabe automatisch anpassen. Bei jedem Systemstart vergleicht systemd-repart dazu die vorhandene GPT-Struktur mit "Drop-In"-Dateien, in denen benötigte Partitionen beschrieben werden. Fehlen Partitionen oder sind vorhandene zu klein, legt systemd-repart diese an oder vergrößert sie entsprechend. GPT-Partitionen verkleinern oder löschen soll mit systemd-repart nicht möglich sein.

Die Funktion kann beim Installieren von Linux-Images praktisch sein. Sie können - wie beispielsweise Linux- oder BSD-Images für den Raspberry Pi - automatisch beim ersten Start auf die volle Größe des Datenträgers aufgezogen werden.

Die Möglichkeiten von /etc/passwd, /etc/shadow und /etc/group in Kombination mit spezialisierten Dienste-Datenspeichern (z.B. account-daemons, Samba, SSH und so weiter) reichen den systemd-Entwicklern nicht aus. Mit systemd-userdb.service können all diese Daten deshalb in einer "userdb"-Datenbank im leicht maschinenlesbaren JSON-Format zusammengefasst werden.

Systemkomponenten wie systemd-logind oder pam-systemd greifen direkt auf diese Datenbank zu. Die Einträge in der Datenbank sind als "rich records" frei definierbar, so dass beispielsweise auch ein Benutzerbild gespeichert und allen Diensten zugänglich gemacht werden kann. Auf der vor kurzem neu gestalteten Projektseite zu Systemd sind ausführliche Informationen zu USER_RECORD, GROUP_RECORD und USER_GROUP_API zu finden.

Angekündigt als "small new service" kommt mit Systemd 245 auch die Komponente systemd-homed.service, die Lennart Poettering bereits im September 2019 auf der Konferenz "All Systems Go" ankündigte.

Aus Poetterings Sicht ist es falsch, dass für das Anlegen eines Benutzers in das /etc-Verzeichnis geschrieben werden muss (nämlich in die /etc/passwd, etc/shadow und die /etc/group). Auch kennt /etc/passwd (genauer: die /etc/shadow) nur Unix-Passwörter und kann weder mit YubiKeys umgehen noch Ressourcen für einzelne Benutzer managen. Dennoch sollte das Unix-Konzept "Alles ist eine Datei" nach Poetterings Ansicht auch für Benutzer beziehungsweise dessen Home-Verzeichnis gelten.

Diese Probleme soll systemd-homed.service lösen, indem Systemd für jeden einzelnen Benutzer eine verschlüsselte Containerdatei bereitstellt, die nur der Benutzer mit seinem Passwort entschlüsseln, benutzen und sich so auch gleich authentifizieren kann. In diesen Containern sind alle den Benutzer betreffenden Daten und Passwörter zentral gespeichert. Wird ein Container auf ein anderes System verschoben, wandern mit ihm gleichzeitig sämtliche Benutzer-Informationen hinüber.

Poettering führt als Beispiel in seinem All-Systems-Go-Vortrag zu "Reinventing Home Directories" sein Notebook an, bei dem sein Home-Verzeichnis auf einem USB-Stick gespeichert werden könnte und er diesen dann einfach in ein anderes Notebook steckt und dort arbeiten kann. Systemd-homed.service soll entsprechend nur für menschliche Benutzer, nicht für Systemdienste gelten.

systemd-homed.service ist allerdings nur eine optionale Komponente für Linux-Systeme: Bestehende Installationen sollen auch mit systemd 245 wie bisher weiterlaufen.

Wer unix-artige Betriebssysteme kennt und nutzt, dürfte sofort auch zwei mögliche Probleme des neuen Konzepts sehen: UIDs und SSH-Logins. Beide haben wir in einem heise-online-Artikel zu Poetterings Vortrag auf der FOSDEM 2020 ausführlich erläutert. Der Artikel-Abschnitt "Tücken im Detail" fasst diese und weitere Hürden zusammen, die systemd-homed (auch nach Auffassung Poetterings) noch überwinden muss. Und für die er derzeit (eher unbefriedigende) Zwischenlösungen vorschlägt.

Weitere ungelöste Probleme tauchen auf, wenn sich der Benutzer zu Gruppen hinzugefügt hat, die nach dem Verschieben auf dem Zielsystem nicht existieren. Gegen Manipulationen seitens des Benutzers, der seinen User-Record in der JSON-Datei ändert (abgelegt im Home-Verzeichnis als .identity), soll eine Signatur bei jeder Änderung seitens des Administrators schützen.

Was mit auf diese Weise signierten und verschlüsselten Home-Verzeichnissen passiert, wenn das System selbst und damit der Schlüssel zum Prüfen der Signatur nicht mehr lesbar ist, ist unklar.

Update 11.3.20, 18:40 / 13.03.20, 10:10: Korrektur im Abschnitt "Benutzerverzeichnis als Container", Flüchtigkeitsfehler, kleinere inhaltliche Korrekturen.

Lesen Sie auch

(ovw)