systemd Systemmanager Version 248

Nach vier Monaten Entwicklungszeit wird die Veröffentlichung des Systemmanagers systemd 248 vorgestellt. Die neue Version bietet Unterstützung für Images zum Erweitern von Systemverzeichnissen, die Konfigurationsdatei /etc/veritytab, das Dienstprogramm systemd-cryptenroll, das Entsperren von LUKS2 mithilfe von TPM2-Chips und FIDO2 Tokens, laufende Einheiten in einem isolierten IPC-Identifizierungsraum, BATMAN-Protokoll für Mesh-Netzwerke, nftables-Backend für systemd-nspawn. Systemd-oomd wurde stabilisiert.

Wichtigste Änderungen:

  • Das Konzept der Systemerweiterungsimages wurde implementiert, mit denen die Hierarchie der Verzeichnisse /usr/ und /opt/ erweitert und zur Laufzeit zusätzliche Dateien hinzugefügt werden können, selbst wenn die angegebenen Verzeichnisse schreibgeschützt gemountet sind. Wenn ein Systemerweiterungsimage gemountet wird, werden seine Inhalte mithilfe von OverlayFS über die /usr/- und /opt/-Hierarchie gelegt.

    Ein neues Dienstprogramm, systemd-sysext, wurde vorgeschlagen, um Bilder von Systemerweiterungen zu verbinden, zu trennen, anzuzeigen und zu aktualisieren. Um bereits installierte Images beim Booten automatisch zu verbinden, wurde der Dienst systemd-sysext.service hinzugefügt. Parameter „SYSEXT_LEVEL=" zur OS-Release-Datei hinzugefügt, um die Stufe der unterstützten Systemerweiterungen zu bestimmen.

  • Für Einheiten wurde die Einstellung ExtensionImages implementiert, mit der Systemerweiterungsbilder mit der FS-Namespace-Hierarchie einzelner isolierter Dienste verknüpft werden können.
  • Konfigurationsdatei /etc/veritytab hinzugefügt, um die Datenüberprüfung auf Blockebene mithilfe des dm-verity-Moduls zu konfigurieren. Das Dateiformat ähnelt /etc/crypttab – „Abschnittsname Gerät_für_Daten Gerät_für_Hashes check_hash_root-Optionen“. Systemd.verity.root_options Kernel-Befehlszeilenoption hinzugefügt, um das dm-verity-Verhalten für das Root-Gerät zu konfigurieren.
  • systemd-cryptsetup fügt die Möglichkeit hinzu, den PKCS#11-Token-URI und den verschlüsselten Schlüssel aus dem LUKS2-Metadaten-Header im JSON-Format zu extrahieren, sodass Informationen zum Öffnen eines verschlüsselten Geräts in das Gerät selbst integriert werden können, ohne dass externe Dateien beteiligt sind.
  • systemd-cryptsetup bietet Unterstützung für das Entsperren von LUKS2-verschlüsselten Partitionen mithilfe von TPM2-Chips und FIDO2-Tokens zusätzlich zu den zuvor unterstützten PKCS#11-Tokens. Das Laden von libfido2 erfolgt über dlopen(), d.h. Die Verfügbarkeit wird im laufenden Betrieb und nicht als fest verdrahtete Abhängigkeit überprüft.
  • Neue Optionen „no-write-workqueue“ und „no-read-workqueue“ wurden zu /etc/crypttab für systemd-cryptsetup hinzugefügt, um die synchrone Verarbeitung von E/A im Zusammenhang mit der Verschlüsselung und Entschlüsselung zu ermöglichen.
  • Das Dienstprogramm systemd-repart hat die Möglichkeit hinzugefügt, verschlüsselte Partitionen mithilfe von TPM2-Chips zu aktivieren, um beispielsweise beim ersten Start eine verschlüsselte /var-Partition zu erstellen.
  • Das Dienstprogramm systemd-cryptenroll wurde hinzugefügt, um TPM2-, FIDO2- und PKCS#11-Tokens an LUKS-Partitionen zu binden, Token zu lösen und anzuzeigen, Ersatzschlüssel zu binden und ein Passwort für den Zugriff festzulegen.
  • Der PrivateIPC-Parameter wurde hinzugefügt, mit dem Sie die Unit-Datei so konfigurieren können, dass Prozesse in einem isolierten IPC-Bereich mit eigenen separaten Kennungen und Nachrichtenwarteschlangen ausgeführt werden. Um eine Einheit mit einem bereits erstellten IPC-Identifier-Bereich zu verbinden, wird die Option IPCNamespacePath vorgeschlagen.
  • ExecPaths- und NoExecPaths-Einstellungen hinzugefügt, um die Anwendung des Noexec-Flags auf bestimmte Teile des Dateisystems zu ermöglichen.
  • systemd-networkd fügt Unterstützung für das Mesh-Protokoll BATMAN (Better Approach To Mobile Adhoc Networking) hinzu, das die Erstellung dezentraler Netzwerke ermöglicht, in denen jeder Knoten über benachbarte Knoten verbunden ist. Zur Konfiguration werden der Abschnitt [BatmanAdvanced] in .netdev, der Parameter BatmanAdvanced in .network-Dateien und ein neuer Gerätetyp „batadv“ vorgeschlagen.
  • Die Implementierung des Early-Response-Mechanismus für wenig Speicher im systemd-oomd-System wurde stabilisiert. Die Option DefaultMemoryPressureDurationSec wurde hinzugefügt, um die Wartezeit für die Freigabe einer Ressource zu konfigurieren, bevor sie sich auf eine Einheit auswirkt. Systemd-oomd nutzt das Kernel-Subsystem PSI (Pressure Stall Information) und ermöglicht es Ihnen, beginnende Verzögerungen aufgrund von Ressourcenmangel zu erkennen und ressourcenintensive Prozesse gezielt in einem Stadium zu beenden, in dem sich das System noch nicht in einem kritischen Zustand befindet und dies auch nicht tut Beginnen Sie damit, den Cache intensiv zu reduzieren und Daten in die Swap-Partition zu verschieben.
  • Kernel-Befehlszeilenparameter „root=tmpfs“ hinzugefügt, der es Ihnen ermöglicht, die Root-Partition mithilfe von Tmpfs im temporären Speicher im RAM bereitzustellen.
  • Der Parameter /etc/crypttab, der die Schlüsseldatei angibt, kann jetzt auf die Socket-Typen AF_UNIX und SOCK_STREAM verweisen. In diesem Fall muss beim Verbinden mit dem Socket der Schlüssel angegeben werden, mit dem sich beispielsweise Dienste erstellen lassen, die Schlüssel dynamisch ausgeben.
  • Der Fallback-Hostname zur Verwendung durch den Systemmanager und systemd-hostnamed kann jetzt auf zwei Arten festgelegt werden: über den Parameter DEFAULT_HOSTNAME in os-release und über die Umgebungsvariable $SYSTEMD_DEFAULT_HOSTNAME. systemd-hostnamed verarbeitet auch „localhost“ im Hostnamen und fügt die Möglichkeit hinzu, den Hostnamen sowie die Eigenschaften „HardwareVendor“ und „HardwareModel“ über DBus zu exportieren.
  • Der Block mit exponierten Umgebungsvariablen kann jetzt über die neue Option ManagerEnvironment in system.conf oder user.conf konfiguriert werden und nicht nur über die Kernel-Befehlszeile und die Unit-Dateieinstellungen.
  • Zur Kompilierungszeit ist es möglich, den Systemaufruf fexecve() zum Starten von Prozessen anstelle von execve() zu verwenden, um die Verzögerung zwischen der Überprüfung des Sicherheitskontexts und seiner Anwendung zu reduzieren.
  • Für Unit-Dateien wurden neue bedingte Operationen ConditionSecurity=tpm2 und ConditionCPUFeature hinzugefügt, um das Vorhandensein von TPM2-Geräten und einzelnen CPU-Funktionen zu prüfen (mit ConditionCPUFeature=rdrand kann beispielsweise überprüft werden, ob der Prozessor die RDRAND-Operation unterstützt).
  • Für verfügbare Kernel wurde die automatische Generierung von Systemaufruftabellen für Seccomp-Filter implementiert.
  • Es wurde die Möglichkeit hinzugefügt, neue Bind-Mounts in bestehende Mount-Namespaces von Diensten zu ersetzen, ohne die Dienste neu zu starten. Die Ersetzung erfolgt mit den Befehlen 'systemctl bind ...‘ und ‚systemctl mount-image …'.
  • Unterstützung für die Angabe von Pfaden in den StandardOutput- und StandardError-Einstellungen in der Form „truncate:“ hinzugefügt. » zur Reinigung vor Gebrauch.
  • Es wurde die Möglichkeit hinzugefügt, eine Verbindung zur Sitzung eines bestimmten Benutzers innerhalb eines lokalen Containers zum SD-Bus herzustellen. Zum Beispiel „systemctl -user -M lennart@ start quux“.
  • Die folgenden Parameter sind in den systemd.link-Dateien im Abschnitt [Link] implementiert:
    • Promiscuous – ermöglicht es Ihnen, das Gerät in den „Promiscuous“-Modus zu schalten, um alle Netzwerkpakete zu verarbeiten, einschließlich derjenigen, die nicht an das aktuelle System adressiert sind;
    • TransmitQueues und ReceiveQueues zum Festlegen der Anzahl der TX- und RX-Warteschlangen;
    • TransmitQueueLength zum Festlegen der TX-Warteschlangengröße; GenericSegmentOffloadMaxBytes und GenericSegmentOffloadMaxSegment zum Festlegen von Grenzen für die Verwendung der GRO-Technologie (Generic Receive Offload).
  • Den systemd.network-Dateien wurden neue Einstellungen hinzugefügt:
    • [Netzwerk] RouteTable zur Auswahl einer Routing-Tabelle;
    • [RoutingPolicyRule] Typ für den Routing-Typ („Blackhole“, „unreachable“, „prohibit“);
    • [IPv6AcceptRA] RouteDenyList und RouteAllowList für Listen erlaubter und verweigerter Routenankündigungen;
    • [DHCPv6] Verwenden Sie Addres, um die von DHCP ausgegebene Adresse zu ignorieren.
    • [DHCPv6PrefixDelegation] ManageTemporaryAddress;
    • ActivationPolicy zum Definieren der Richtlinie bezüglich der Schnittstellenaktivität (behalten Sie immer den UP- oder DOWN-Status bei oder erlauben Sie dem Benutzer, den Status mit dem Befehl „ip link set dev“ zu ändern).
  • Optionen [VLAN] Protocol, IngressQOSMaps, EgressQOSMaps und [MACVLAN] BroadcastMulticastQueueLength zu systemd.netdev-Dateien hinzugefügt, um die VLAN-Paketverarbeitung zu konfigurieren.
  • Das Mounten des /dev/-Verzeichnisses im Noexec-Modus wurde gestoppt, da es einen Konflikt verursacht, wenn das Executable-Flag mit /dev/sgx-Dateien verwendet wird. Um das alte Verhalten wiederherzustellen, können Sie die Einstellung NoExecPaths=/dev verwenden.
  • Die Dateiberechtigungen /dev/vsock wurden in 0o666 geändert und die Dateien /dev/vhost-vsock und /dev/vhost-net wurden in die kvm-Gruppe verschoben.
  • Die Hardware-ID-Datenbank wurde um USB-Fingerabdruckleser erweitert, die den Schlafmodus korrekt unterstützen.
  • systemd-resolved fügte Unterstützung für die Ausgabe von Antworten auf DNSSEC-Anfragen über einen Stub-Resolver hinzu. Lokale Clients können die DNSSEC-Validierung für sich selbst durchführen, während externe Clients unverändert an den übergeordneten DNS-Server weitergeleitet werden.
  • Die Option „CacheFromLocalhost“ wurde zu „resolved.conf“ hinzugefügt. Wenn diese Option festgelegt ist, verwendet „systemd-resolved“ das Caching auch für Aufrufe an den DNS-Server unter 127.0.0.1 (standardmäßig ist das Caching solcher Anfragen deaktiviert, um doppeltes Caching zu vermeiden).
  • systemd-resolved fügt Unterstützung für RFC-5001-NSIDs im lokalen DNS-Resolver hinzu, sodass Clients zwischen Interaktionen mit dem lokalen Resolver und einem anderen DNS-Server unterscheiden können.
  • Das Dienstprogramm „resolvectl“ implementiert die Möglichkeit, Informationen über die Datenquelle (lokaler Cache, Netzwerkanforderung, lokale Prozessorantwort) und die Verwendung von Verschlüsselung bei der Datenübertragung anzuzeigen. Zur Steuerung des Namensfindungsprozesses stehen die Optionen --cache, --synthesize, --network, --zone, --trust-anchor und --validate zur Verfügung.
  • systemd-nspawn fügt zusätzlich zur bestehenden iptables-Unterstützung Unterstützung für die Konfiguration einer Firewall mithilfe von nftables hinzu. Das IPMasquerade-Setup in systemd-networkd hat die Möglichkeit hinzugefügt, ein nftables-basiertes Backend zu verwenden.
  • systemd-localed hat Unterstützung für den Aufruf von locale-gen hinzugefügt, um fehlende Gebietsschemas zu generieren.
  • Die Optionen --pager/-no-pager/-json= wurden zu verschiedenen Dienstprogrammen hinzugefügt, um den Paging-Modus und die Ausgabe im JSON-Format zu aktivieren/deaktivieren. Möglichkeit hinzugefügt, die Anzahl der im Terminal verwendeten Farben über die Umgebungsvariable SYSTEMD_COLORS („16“ oder „256“) festzulegen.
  • Der Build mit separaten Verzeichnishierarchien (split / und /usr) und cgroup v1-Unterstützung sind veraltet.
  • Der Hauptzweig in Git wurde von „master“ in „main“ umbenannt.

Source: opennet.ru

Kommentar hinzufügen