Nach drei Monaten Entwicklung ist die Veröffentlichung des systemd-Managers 259 verfĂŒgbar. Wichtige Ănderungen: UnterstĂŒtzung der Standardbibliothek Musl, der Befehl ârun0 âempowerâ, um privilegierte Aktionen ohne UID-Wechsel auszufĂŒhren, dynamisches Laden von Drittanbieterbibliotheken, die in libsystemd benötigt werden, Ignorieren von Konfigurationsdateien durch HinzufĂŒgen von â.ignoreâ zum Namen.
Zu den Ănderungen in der neuen Version gehören:
- Teilweise UnterstĂŒtzung der Standard-C-Bibliothek Musl wurde hinzugefĂŒgt, aktivierbar durch Setzen des Wertes âmuslâ in der libc-Option im Meson-Buildsystem. Da die Musl-Bibliothek die NSS-FunktionalitĂ€t nicht bereitstellt, sind beim Build von systemd mit Musl die Komponenten nss-systemd, nss-resolve, systemd-homed, systemd-nsresourced, systemd-userdbd sowie der Parameter DynamicUser und die Möglichkeit des nicht privilegierten Starts von systemd-nspawn nicht verfĂŒgbar. Die Entwickler von systemd garantieren bisher nicht, dass die UnterstĂŒtzung von Musl in zukĂŒnftigen Versionen erhalten bleibt. Die Entscheidung hĂ€ngt von der erfolgreichen Weiterentwicklung der Schicht ab, die zusĂ€tzliche FunktionalitĂ€ten ĂŒber Musl implementiert, sowie von der Nachfrage nach dem Projekt und Berichten ĂŒber muslspezifische Fehler.
- In das Tool run0, das als sichere Alternative zu sudo dient und auf systemd-run aufbaut, wurde die Option ââempowerâ hinzugefĂŒgt, die das Starten einer neuen Sitzung mit erhöhten Privilegien ermöglicht, ohne zum Benutzer root zu wechseln. Die AusfĂŒhrung privilegierter Aktionen ohne UID-Wechsel erfolgt durch Setzen von Capability-Flags wie CAP_SYS_ADMIN, die ausreichend sind, um auf die meisten privilegierten Systemaufrufe zuzugreifen. Die gestarteten Prozesse werden auĂerdem in eine separate Gruppe âempowerâ eingeteilt, die Zugriff auf die meisten Polkit-Aktionen hat.
- Es wurde beschlossen, die UnterstĂŒtzung von Service-Skripten im System V-Format in der nĂ€chsten Version zu entfernen. Zu entfernen sind die Komponenten systemd-sysv-install, systemd-rc-local-generator und systemd-sysv-generator. In der nĂ€chsten Version sind auch erhöhte Anforderungen an die minimalen Versionen vorgesehen: Linux-Kernel 5.10, glibc 2.34, openssl 3.0.0, python 3.9.0, libxcrypt 4.4.0, util-linux 2.37, elfutils 0.177, cryptsetup 2.4.0, libseccomp 2.4.0.
- Im Rahmen der Initiative zur Reduzierung von AbhĂ€ngigkeiten wird in libsystemd die dynamische LadefunktionalitĂ€t fĂŒr die Bibliotheken libacl, libblkid, libseccomp, libselinux und libmount mit Hilfe des Aufrufs von dlopen() implementiert, wenn deren Funktionen tatsĂ€chlich benötigt werden. Ăber dlopen() wird auch die Zusammenarbeit mit dem Linux-Audit-System und PAM realisiert. Die zuvor ĂŒber die Zwischenbibliothek libcap aufgerufene FunktionalitĂ€t ist jetzt in libsystemd integriert.
- In systemd-resolved wurde die Möglichkeit hinzugefĂŒgt, lokale Handler anzuhĂ€ngen, die bei jeder Anfrage zur Auflösung lokaler Namen aufgerufen werden. Die Handler werden im Verzeichnis /run/systemd/resolve.hook/ abgelegt.
- In der Benutzerdatenbank wurde ein Feld fĂŒr die UUID hinzugefĂŒgt, und im Tool userdbctl wurde die Option ââuuidâ fĂŒr die Suche nach UUIDs ergĂ€nzt.
- Es wurde sichergestellt, dass Konfigurationsdateien mit Namen, die auf â.ignoreâ enden, ignoriert werden.
- In systemd-importd wurde eine integrierte Logik zur Arbeit mit TAR-Archiven implementiert, die libarchive anstelle des Aufrufs des GNU tar-Tools verwendet. Es wurde die Möglichkeit geschaffen, systemd-machined und systemd-importd benutzerspezifisch zu starten, anstatt auf Systemebene, mit dem Laden von Systemabbildern in ~/local/state/machines/. Zur Auswahl des Betriebsmodus wurden in das Tool importctl die Optionen ââuserâ und ââsystemâ hinzugefĂŒgt.
- Der Standardmodus fĂŒr die Speicherung von Protokollen wurde von âautoâ auf âpersistentâ geĂ€ndert (frĂŒher hing der Modus von der Existenz des Verzeichnisses /var/log/journal ab).
- In systemd-networkd und systemd-nspawn wird die UnterstĂŒtzung fĂŒr die Erstellung von NAT-Regeln ĂŒber iptables/libiptc eingestellt. Es bleibt nur die UnterstĂŒtzung von nftables bestehen.
- In systemd-boot und systemd-stub wird die UnterstĂŒtzung fĂŒr TPM 1.2 eingestellt (die UnterstĂŒtzung fĂŒr TPM 2.0 bleibt erhalten).
- In systemd-machined wird standardmĂ€Ăig sichergestellt, dass âverborgeneâ Disk-Images, deren Namen mit einem Punkt beginnen, im Nur-Lese-Modus eingehĂ€ngt werden.
- Die API basierend auf dem Varlink-Protokoll wurde erweitert, die nun fĂŒr den Zugriff auf die Dienstkonfigurationen verwendet werden kann. IPC-Aufrufe fĂŒr Reload() und Reexecute() wurden implementiert. Es wurden Aufrufe fĂŒr den Zugriff auf die FunktionalitĂ€t und Konfigurationen von systemd-repart, systemd-resolved und systemd-networkd hinzugefĂŒgt.
- Die Einstellung ExecReloadPost wurde hinzugefĂŒgt, die es ermöglicht, Befehle nach dem Neustart der Dienstkonfiguration auszufĂŒhren.
- FĂŒr Dienste wurden die Eigenschaften OOMKills und ManagedOOMKills implementiert, die die Anzahl der Prozesse enthalten, die vom Kernel oder systemd-oomd aufgrund von Speichermangel zwangsweise beendet wurden.
- FĂŒr temporĂ€re Dienste wurde die Eigenschaft RootDirectoryFileDescriptor hinzugefĂŒgt, die den Dateideskriptor des Wurzelverzeichnisses definiert.
- Die Einstellung UserNamespacePath wurde hinzugefĂŒgt, die es ermöglicht, ein Unit ĂŒber einen Pfad im Pseudo-Dateisystem /proc mit dem Benutzer-Namespace zu verbinden, Ă€hnlich den Einstellungen IPCNamespacePath und NetworkNamespacePath. In systemd-nspawn wurde die Einstellung NamespacePath zur Angabe des Netzwerk-Namensraums im [Network]-Abschnitt von .nspawn-Dateien hinzugefĂŒgt.
- In systemd-sysext und systemd-confext wurde die UnterstĂŒtzung fĂŒr separate Konfigurationsdateien /etc/systemd/systemd-sysext.conf und /etc/systemd/systemd-confext.conf implementiert. Es wurde die Möglichkeit hinzugefĂŒgt, die Umgebungsvariable SYSTEMD_SYSEXT_OVERLAYFS_MOUNT_OPTIONS und $SYSTEMD_CONFEXT_OVERLAYFS_MOUNT_OPTIONS zur Konfiguration der Overlayfs-Mount-Optionen zu verwenden.
- In systemd-udevd wurde die Einstellung OPTIONS=»dump-json» hinzugefĂŒgt, um den Status des aktuellen Ereignisses im JSON-Format auszugeben. In der Funktion net_id wurde die Generierung vorhersehbarer Namen fĂŒr drahtlose Netzwerkschnittstellen auf Systemen mit DeviceTree implementiert. Es wird die Generierung symbolischer Links /dev/gpio/by-id/... fĂŒr GPIO-GerĂ€te sichergestellt.
- Im Befehl «homectl update» wurde die Möglichkeit hinzugefĂŒgt, die Option «ârecovery-key» zu verwenden, um Backup-SchlĂŒssel zu einem bestehenden Benutzerkonto hinzuzufĂŒgen (zuvor konnten solche SchlĂŒssel nur bei der Erstellung des Benutzers hinzugefĂŒgt werden).
- In systemd-homed wurden die Optionen «âprompt-shell» und «âprompt-groups» fĂŒr die interaktive Auswahl der Kommandozeile und der Gruppe wĂ€hrend des ersten Starts mit dem Dienst systemd-homed-firstboot.service hinzugefĂŒgt. In systemd-firstboot wurde die Option «âprompt-keymap-auto» hinzugefĂŒgt, um beim ersten Start ĂŒber die lokale Konsole nach dem Tastaturlayout zu fragen.
- In systemd-boot wurde die Möglichkeit hinzugefĂŒgt, das Protokollierungsniveau ĂŒber den Parameter log-level in loader.conf oder das SMBIOS-Feld io.systemd.boot.loglevel festzulegen.
- In systemd-networkd wurden fĂŒr den DHCP-Server die Optionen EmitDomain und Domain hinzugefĂŒgt, und es wurde ein Handler implementiert, um die ĂŒber DHCP ausgegebenen Hostnamen ĂŒber DNS-Resolving zu ermitteln.
- In systemd-run wurde die Option «âroot-directory» hinzugefĂŒgt, um einen Dienst im angegebenen Wurzelverzeichnis zu starten. In systemd-run und run0 wurde die Option «âsame-root-dir» («-R») hinzugefĂŒgt, um einen Dienst im selben Wurzelverzeichnis zu starten, das auch der auslösende Prozess hat.
- In systemd-modules-load wurde die Parallelisierung des Ladens von Kernelmodulen implementiert.
- In systemd-integrity-setup wurde die UnterstĂŒtzung fĂŒr die Algorithmen HMAC-SHA256, PHMAC-SHA256 und PHMAC-SHA512 hinzugefĂŒgt.
Quelle: opennet.ru
