Systemd wird die Funktionsweise Ihres Linux-Home-Verzeichnisses ändern

Das Team hinter systemd plant eine grundlegende Neuerung in der Art und Weise, wie Home-Verzeichnisse verwaltet werden. Dies ist mehr als nur eine kleine Veränderung – es handelt sich um einen echten Paradigmenwechsel für Linux. Hier erfahren Sie alles, was Sie über systemd-homed wissen müssen, eine Technologie, die wahrscheinlich bald in Ihrer Linux-Distribution Einzug halten wird.

Ein kontroverses Thema

Als systemd im Jahr 2010 eingeführt wurde, spaltete sich die Linux-Community in drei Lager. Einige sahen darin eine Verbesserung, andere hielten es für ein fehlerhaftes Design, das nicht mit der Unix-Philosophie vereinbar war. Und manchen war es schlichtweg egal.

Die Ablehnung durch Kritiker war lautstark, hitzig und teilweise sogar fanatisch. Lennart Poettering, ein Softwareentwickler bei Red Hat und Mitentwickler von systemd, erhielt sogar Morddrohungen. Auf YouTube wurden Lieder veröffentlicht, die Gewalt gegen Poettering befürworteten, und Webseiten versuchten, Linux-Nutzer zum Boykott von systemd aufzufordern. Sein Mitentwickler, Kay Sievers, wurde ebenfalls kritisiert und angegriffen, doch Poettering trug zweifellos die Hauptlast.

Innerhalb von acht Monaten implementierte Fedora jedoch systemd. Bis Ende 2013 hatten Arch, Debian, Manjaro und Ubuntu alle auf systemd umgestellt. Natürlich ist es der Vorteil von Open-Source, dass man bei Nichtgefallen den Quellcode forken und eine eigene Lösung entwickeln kann. Neue Distributionen, wie Devuan, ein Fork von Debian, wurden allein zu dem Zweck geschaffen, systemd zu vermeiden.

Ihr $HOME-Verzeichnis

In der Linux-Verzeichnisstruktur befindet sich alles, was Sie tun, im Verzeichnis „/home“. Ihre Datendateien, Bilder, Musik und der gesamte persönliche Verzeichnisbaum werden in diesem einen Verzeichnis gespeichert, das nach Ihrem Benutzernamen benannt ist.

Die Einstellungen Ihrer Anwendungen werden in Ihrem Home-Verzeichnis in versteckten „Punktverzeichnissen“ gespeichert. Wenn das erste Zeichen eines Datei- oder Verzeichnisnamens ein Punkt (.) ist, wird es ausgeblendet. Da diese Einstellungen lokal und nicht in einer zentralen Registrierung gespeichert sind – und da eine Sicherung Ihres Home-Verzeichnisses diese versteckten Dateien und Ordner enthält – werden auch alle Ihre Einstellungen gesichert.

Wenn Sie ein Backup wiederherstellen und eine Anwendung wie LibreOffice oder Thunderbird starten, sucht diese nach ihrem versteckten Verzeichnis und findet dort Ihre Dokumenteneinstellungen, Symbolleisteneinstellungen und alle anderen Anpassungen. Thunderbird findet Ihre E-Mail-Kontoinformationen und Ihre E-Mails. Sie müssen nicht jede Anwendung mühsam neu einrichten.

Sie können mit dem Befehl ls und der Option -a (all) versteckte Dateien und Verzeichnisse anzeigen. Geben Sie zunächst Folgendes ein:

ls

Dies zeigt Ihnen die normalen Dateien und Verzeichnisse. Geben Sie dann Folgendes ein:

ls -a

Jetzt können Sie die versteckten Dateien und Verzeichnisse sehen.

Da es der wertvollste Teil einer Installation ist, wird das Verzeichnis „/home“ oft in einer eigenen Partition oder auf einer separaten Festplatte eingehängt. So können Sie, wenn dem Betriebssystem oder der Partition, auf der es sich befindet, etwas Schlimmes zustößt, entweder Ihre Linux-Distribution neu installieren oder zu einer neuen wechseln. Dann können Sie einfach Ihre vorhandene Home-Partition wieder in „/home“ einhängen.

Daten über Sie

Ihr Home-Verzeichnis speichert nicht nur Ihre Daten, sondern auch Informationen über Sie, einschließlich einiger Merkmale Ihrer digitalen Identität. In Ihrem „.ssh“-Verzeichnis werden beispielsweise Informationen über Remote-Verbindungen zu anderen Computern sowie alle von Ihnen erstellten SSH-Schlüssel gespeichert.

Andere Systemattribute wie Ihr Benutzername, Ihr Passwort und Ihre eindeutige Benutzer-ID werden an anderer Stelle in Dateien wie „/etc/passwd“ und „/etc/shadow“ gespeichert. Einige davon sind für jeden lesbar, andere nur für Personen mit Root-Rechten.

So sieht der Inhalt der Datei „/etc/passwd“ aus:

cat /etc/passwd

Die Änderungen durch systemd-homed

Die Idee hinter systemd-homed ist es, ein vollständig portables Home-Verzeichnis zu schaffen, das sowohl Ihre Daten als auch Ihre digitale Linux-Identität enthält. Ihre UID und alle anderen Identifikations- und Authentifizierungsmechanismen werden nur in Ihrem Home-Verzeichnis gespeichert.

Aufgrund dieses „Alles-in-einem-Korb“-Ansatzes werden Home-Verzeichnisse verschlüsselt. Sie werden automatisch entschlüsselt, wenn Sie sich anmelden, und wieder verschlüsselt, wenn Sie sich abmelden. Die bevorzugte Methode ist die Verwendung der Linux Unified Key Setup (LUKS) Festplattenverschlüsselung. Es stehen jedoch auch andere Methoden zur Verfügung, wie z. B. fscrypt.

Ein JSON-Benutzerdatensatz speichert alle Ihre Identitätsinformationen in einem Verzeichnis namens „~/.identity“. Es ist kryptografisch mit einem Schlüssel signiert, auf den Sie keinen Zugriff haben.

Das Home-Verzeichnis jedes Benutzers wird auf einem Loopback-Gerät eingehängt, ähnlich wie eine Snap-Anwendung. Dadurch erscheint der Verzeichnisbaum innerhalb des Home-Verzeichnisses als nahtloser Teil des Verzeichnisbaums des Betriebssystems. Der Einhängepunkt ist standardmäßig „/home/$USER.homedir“ (wobei „$USER“ durch den Kontonamen des Benutzers ersetzt wird).

Was sind die Vorteile?

Da Ihr Home-Verzeichnis zu einer sicheren Kapselung all Ihrer Daten wird, können Sie es sogar auf einem Wechseldatenträger speichern. Sie könnten beispielsweise ein USB-Laufwerk verwenden, um es zwischen Ihrem Arbeits- und Heimcomputer oder einem anderen systemd-basierten Computer zu verschieben.

Das meinte Poettering mit „einem vollständig portablen Home-Verzeichnis“. Selbst wenn Sie Ihr Home-Verzeichnis nicht auf einem tragbaren Gerät speichern möchten, werden Upgrades und Migrationen einfacher und die Sicherheit wird erhöht.

Es beseitigt das, was er als „Sidecar-Datenbanken“ bezeichnet, also Fragmente wichtiger Informationen über Sie, die Poettering zentralisieren möchte. Die Dateien „/etc/passwd“ und „/etc/shadow“ enthalten Authentifizierungsinformationen und gehashte Passwörter. Sie enthalten aber auch Informationen wie Ihre Standard-Shell, das GECOS-Feld.

Poettering hat argumentiert, dass Metadaten rationalisiert und in sinnvollen Gruppen innerhalb des JSON-Datensatzes jedes Benutzers in seinem Home-Verzeichnis gespeichert werden sollten.

Verwalten Ihres neuen $HOME

Der systemd-homed-Dienst wird über das neue Befehlszeilentool homectl gesteuert.

Es gibt Optionen zum Erstellen von Benutzern und Home-Verzeichnissen sowie zum Festlegen von Speichergrenzen für jeden Benutzer. Sie können auch das Passwort ändern, jemanden aus seinem Konto aussperren oder ein Konto vollständig löschen. Benutzer können überprüft und ihre JSON-Benutzerdatensätze können auch gelesen werden.

Auch Zeitzonen und andere ortsbezogene Informationen können für jeden Benutzer eingestellt werden. Sie können die Standard-Shell angeben und sogar Umgebungsvariablen so einstellen, dass sie beim Anmelden in einem bestimmten Zustand sind.

Wenn Sie im Verzeichnis „/home“ nachsehen, sehen Sie systemd-homed verwaltete Einträge, die wie folgt aussehen, wobei „.homedir“ an den Benutzernamen angehängt ist:

/home/dave.homedir

Denken Sie daran, dass dies nur ein Einhängepunkt ist. Der Ort des eigentlichen verschlüsselten Home-Verzeichnisses befindet sich an einem anderen Ort.

Einschränkungen und Probleme

systemd-homed ist nur für die Verwendung auf Benutzerkonten von Menschen gedacht. Es kann keine Benutzerkonten mit einer UID von weniger als 1000 verarbeiten. Das bedeutet, dass root, daemon, bin usw. nicht mit dem neuen Schema verwaltet werden können. Es wird immer ein Bedarf an den Standardmethoden zur Verwaltung von Benutzern geben. Daher ist systemd-homed keine universelle Lösung.

Es gibt ein bekanntes Catch-22, das gelöst werden muss. Wie bereits erwähnt, wird das Home-Verzeichnis eines Benutzers jedes Mal entschlüsselt, wenn er sich anmeldet. Wenn jedoch jemand per SSH aus der Ferne auf den Computer zugreift, können die SSH-Schlüssel im Home-Verzeichnis nicht referenziert werden, da das Home-Verzeichnis verschlüsselt ist, bis sich der Benutzer anmeldet. Natürlich benötigt man die SSH-Schlüssel, um sich zu authentifizieren, bevor man sich anmelden kann.

Dies war ein Problem, das vom systemd-homed-Team erkannt wurde, aber wir konnten keine Referenz zu einer Lösung dafür finden. Wir sind jedoch zuversichtlich, dass sie eine Lösung finden werden, da es eine große Herausforderung wäre, wenn nicht.

Nehmen wir an, jemand überträgt sein Home-Verzeichnis auf einen neuen Computer. Wenn die UID auf dem neuen Rechner bereits von jemand anderem verwendet wird, wird ihm automatisch eine neue UID zugewiesen. Natürlich muss der Besitz aller Dateien der neuen UID zugewiesen werden.

Derzeit wird dies durch eine rekursive, automatische Anwendung des Befehls chown -R erledigt. Dies wird sich wahrscheinlich in Zukunft ändern, sobald ein eleganteres Schema entwickelt wird. Dieser etwas grobe Ansatz berücksichtigt nicht die Daemons und Prozesse, die als andere Benutzer ausgeführt werden.

Wann wird das passieren?

Es passiert jetzt. Die Codeänderungen wurden am 20. Januar 2020 eingereicht und waren in Build 245 von systemd enthalten, der im April 2020 mit Ubuntu 20.04 ausgeliefert wurde.

Um zu überprüfen, welche Version Sie haben, geben Sie Folgendes ein:

systemd --version

Der Befehl homectl ist jedoch noch nicht vorhanden. Ubuntu 20.04 verwendet ein herkömmliches /home-Verzeichnis und verwendet nicht systemd-homed.

Natürlich liegt es an den einzelnen Distributionen, zu entscheiden, wann sie systemd-homed und homectl einbinden und unterstützen.

Es gibt also keinen Grund für Aufruhr. Da die Standardmethoden zur Verwaltung von Benutzern und Home-Verzeichnissen weiterhin bestehen, haben wir alle weiterhin eine Wahl.