Nach einem halben Jahr Entwicklung wird die Version 257 des Systemmanagers systemd veröffentlicht. Wichtige Ănderungen: neue Dienstprogramme systemd-sbsign und systemd-keyutil, UnterstĂŒtzung von MPTCP bei der Aktivierung ĂŒber Sockets, erste UnterstĂŒtzung fĂŒr den Build mit der C-Bibliothek Musl, das Dienstprogramm updatectl zur Verwaltung von Updates ĂŒber systemd-sysupdate, die Möglichkeit, Dienste in separaten PID-NamensrĂ€umen zu starten, sowie Schutz vor versehentlichem Löschen von Dateien bei der Verwendung von âsystemd-tmpfiles âpurgeâ.
Zu den Ănderungen in der neuen Version gehören:
- Ein neues Dienstprogramm systemd-sbsign wurde hinzugefĂŒgt, um digitale Signaturen fĂŒr ausfĂŒhrbare Dateien im PE-Format (Portable Executable) zu erstellen, die bei der Verwendung im EFI Secure Boot-Modus erforderlich sind. Zum Erstellen von Signaturen können Engines und Provider der OpenSSL-Bibliothek verwendet werden. Systemd-sbsign kann als Alternative zu den Anwendungen sbsigntool und pesign im Dienstprogramm ukify beim Erstellen universeller Kernbilder (UKI, Unified Kernel Image) verwendet werden, die den Bootloader fĂŒr UEFI (UEFI boot stub), das Linux-Kernel-Image und die initialisierte Systemumgebung initrd in einer Datei zusammenfĂŒhren.
- Ein neues Tool namens systemd-keyutil wurde hinzugefĂŒgt, das verschiedene Operationen mit privaten SchlĂŒsseln und X.509-Zertifikaten durchfĂŒhrt. Zum Beispiel kann systemd-keyutil verwendet werden, um die Möglichkeit zu ĂŒberprĂŒfen, private SchlĂŒssel und Zertifikate zu laden, sowie öffentliche SchlĂŒssel im PEM-Format daraus zu extrahieren.
- In den '.socket'-Units, die fĂŒr die Aktivierung ĂŒber Sockets (Start von Prozessen beim Versuch, eine Netzwerkverbindung herzustellen) verwendet werden, wurde MPTCP (Multipath TCP) unterstĂŒtzt. Dabei handelt es sich um eine Erweiterung des TCP-Protokolls, die es ermöglicht, TCP-Verbindungen herzustellen, indem Pakete gleichzeitig ĂŒber mehrere Routen ĂŒber verschiedene Netzwerkschnittstellen gesendet werden, die an verschiedenen Orten gebunden sind. IP-Adressen.
- Es wurden Ănderungen vorgenommen, die erforderlich sind, um mit der Standard-C-Bibliothek Musl zu bauen.
- In verschiedene Komponenten von systemd, die Fortschrittsanzeigen fĂŒr Operationen ausgeben (wie systemd-repart, systemd-sysupdate/updatectl und importctl), wurde die Möglichkeit hinzugefĂŒgt, ANSI-Sequenzen zu verwenden, um die Anzeige des Fortschritts zu animieren. Diese Sequenzen werden derzeit nur im Windows Terminal unterstĂŒtzt (es wird erwartet, dass diese Funktion auch irgendwann in Terminal-Emulatoren fĂŒr Linux integriert wird).
- Die Funktionen des systemd-sysupdate-Komponenten, die zur automatischen Erkennung, dem Herunterladen und der Installation von Updates mit einem atomaren Mechanismus zum Ersetzen von Partitionen, Dateien oder Verzeichnissen verwendet wird, wurden erweitert (es werden zwei unabhÀngige Partitionen/Dateien/Verzeichnisse verwendet, von denen eines die aktuell laufende Ressource enthÀlt und auf dem anderen das nÀchste Update installiert wird, bevor die Partitionen/Dateien/Verzeichnisse getauscht werden). In der Praxis wird systemd-sysupdate bereits in GNOME OS eingesetzt.
ZusĂ€tzlich zum Systemdienst systemd-sysupdate wurde ein gleichnamiger Dienst eingefĂŒhrt, der die Nutzung von D-Bus zur Verwaltung von Systemupdates durch unprivilegierte Benutzer ermöglicht. Um den Dienst zu steuern, wurde auch ein neues Tool namens updatectl hinzugefĂŒgt. Im systemd-sysupdate wurde das Flag ââofflineâ hinzugefĂŒgt, um das Herunterladen von Metadaten ĂŒber das Netzwerk zu verhindern und nur bereits auf dem lokalen System vorhandene Versionen zu verwenden. FĂŒr alle Befehle wurde die UnterstĂŒtzung fĂŒr die Ausgabe im JSON-Format implementiert.
- FĂŒr Dienste wurde eine neue Eigenschaft namens âPrivatePIDsâ implementiert, mit der die AusfĂŒhrung von Prozessen mit PID 1 (Init-Prozess) in einem separaten PID-Namensraum organisiert werden kann. In der Umgebung des gestarteten Prozesses sind nur die Prozesse sichtbar, die in diesem speziellen Namensraum erstellt wurden.
- In die udev-Regeln wurde die UnterstĂŒtzung fĂŒr groĂ-/kleinschreibungfreie Zuordnungen aufgenommen (z.B. 'ATTR{foo}=="abcd"'). Ăber udev wird Benutzern ohne besondere Berechtigungen der Zugriff ('uaccess') auf das GerĂ€t /dev/udmabuf gewĂ€hrt, das fĂŒr die Arbeit mit IPMI-Kameras ĂŒber libcamera erforderlich ist. In udev wird das Erkennen verschiedener Hardware-KryptowĂ€hrungen mit USB-Schnittstelle ermöglicht, und das Attribut ID_HARDWARE_WALLET wird zugewiesen, was den Zugang fĂŒr nicht privilegierte Benutzer im 'uaccess'-Modus erlaubt.
- In die Datei /etc/os-release wurden neue Felder RELEASE_TYPE, EXPERIMENT und EXPERIMENT_URL hinzugefĂŒgt. 'RELEASE_TYPE' kann die Werte 'experimental', 'development', 'stable' und 'lts' annehmen, um stabile Versionen von Entwicklungs- und Experimentversionen zu unterscheiden. Die Parameter EXPERIMENT und EXPERIMENT_URL dienen der ErlĂ€uterung des Inhalts der experimentellen Version.
- Im Utility run0, das als Ersatz fĂŒr das sudo-Programm entwickelt wird, wurde die Option '--shell-prompt-prefix' hinzugefĂŒgt, die eine Zeichenfolge fĂŒr das PrĂ€fix der Befehlseingabeaufforderung definiert. StandardmĂ€Ăig wird als PrĂ€fix das Emoji 'đŠž' ausgegeben, um die Sitzung mit erhöhten Privilegien visuell hervorzuheben.
- In systemd-tmpfiles wird die Option ââpurgeâ nun nur noch auf Einstellungen in tmpfiles.d angewendet, die ausdrĂŒcklich mit dem Flag â$â versehen sind, um versehentliches Löschen falscher Dateien zu vermeiden. FĂŒr die AusfĂŒhrung der ââpurgeâ-Operation muss nun ebenfalls mindestens eine Datei aus dem Verzeichnis tmpfiles.d angegeben werden. FĂŒr Zeilen vom Typ 'L' wurde das Flag '?' hinzugefĂŒgt, bei dessen Angabe die symbolische Verlinkung nur erstellt wird, wenn die Ziel-Datei vorhanden ist.
- Im Service-Manager und den zugehörigen Hilfsdiensten wird die Ăbertragung des Prozessverfolgungscodes auf die Verwendung von PIDFD statt PID fortgesetzt. Die PIDFD-Identifikation ist an einen bestimmten Prozess gebunden und Ă€ndert sich nicht, wĂ€hrend die PID nach Beendigung des aktuellen Prozesses, der mit dieser PID verbunden ist, einem anderen Prozess zugeordnet werden kann.
- FĂŒr Dienste wurde die Möglichkeit implementiert, im Parameter âRestartModeâ den Wert âdebugâ anzugeben, wobei der Neustart eines fehlerhaften Dienstes im Debugging-Modus erfolgt (die Umgebungsvariable DEBUG_INVOCATION=1 wird gesetzt) und der Wert LogLevelMax vorĂŒbergehend auf Debugging-Ebene angehoben wird.
- Im PID 1-Handler wurde die Möglichkeit implementiert, Regeln fĂŒr das LSM-Modul IPE (Integrity Policy Enforcement) zu laden, die die IntegritĂ€tspolitik fĂŒr das gesamte System definieren (welche Operationen zulĂ€ssig sind und wie die Echtheit der Komponenten verifiziert werden soll).
- In die Unit-Dateien â.timerâ wurde die Option âDeferReactivationâ eingefĂŒgt, die es ermöglicht, eine anstehende Aktivierung durch den Timer zu ĂŒberspringen, wenn der Dienst seine AusfĂŒhrung seit der letzten Aktivierung noch nicht abgeschlossen hat.
- Im Parameter der Unit-Dateien PrivateUsers wurde die Möglichkeit zur Angabe des Wertes âidentityâ implementiert, um die Zuordnung von Benutzer-IDs bei der Erstellung eines Namensraums (user namespace) zu aktivieren.
- Im Parameter der Unit-Dateien PrivateTmp wurde die UnterstĂŒtzung des Wertes âdisconnectedâ hinzugefĂŒgt, bei dem fĂŒr die Verzeichnisse /tmp/ und /var/tmp/ separate Instanzen von tmpfs verwendet werden.
- Im Parameter der Unit-Dateien ProtectControlGroups wurde die UnterstĂŒtzung fĂŒr neue Modi âprivateâ und âstrictâ hinzugefĂŒgt, bei denen fĂŒr den Dienst ein neuer cgroup-Namensraum (cgroup namespace) erstellt und cgroupfs gemountet wird. Bei der Auswahl der Option âstrictâ erfolgt das Mounten von cgroupfs im Nur-Lese-Modus.
- In den Parametern StateDirectory, RuntimeDirectory, CacheDirectory, LogsDirectory und ConfigurationDirectory gibt es nun die Möglichkeit, das Flag â:roâ zu verwenden, um den Zugriff auf die entsprechenden Verzeichnisse im Nur-Lese-Modus einzuschrĂ€nken.
- Der Kernelbefehl »systemd.machine_id« unterstĂŒtzt jetzt den Wert »firmware«, bei dem die Maschinen-ID basierend auf der UUID aus SMBIOS/DeviceTree berechnet wird.
- UnterstĂŒtzung fĂŒr die Systemaufrufe mseal(), listmount() und statmount() wurde hinzugefĂŒgt, die in den neuesten Versionen des Linux-Kernels eingefĂŒhrt wurden.
- Die Tools resolvectl, timedatectl und systemd-inhibit unterstĂŒtzen jetzt die interaktive Genehmigung durch Polkit.
- Im Tool systemctl wurde die Möglichkeit hinzugefĂŒgt, das Flag »ânow« beim Befehl »reenable« zu verwenden.
- Im Tool systemd-mount wurde die Option »âjson« zur Ausgabe im JSON-Format hinzugefĂŒgt (zum Beispiel wird bei Angabe zusammen mit »âlist-devices« eine Liste der GerĂ€te im JSON-Format ausgegeben).
- Im Tool »localectl« wurden die Optionen »-l« und »âfull« hinzugefĂŒgt, um das KĂŒrzen langer Zeilen bei der Ausgabe zu deaktivieren.
- In sleep.conf wurde die Option HibernateOnACPower hinzugefĂŒgt, die es ermöglicht, den Wechsel in den Energiesparmodus bis zum Trennen des GerĂ€ts von der stationĂ€ren Stromquelle zu verzögern.
- In systemd-sysusers wurde die UnterstĂŒtzung fĂŒr den Modifikator â!" in die Zeilen âu" hinzugefĂŒgt, mit dem vollstĂ€ndig gesperrte Benutzerkonten erstellt werden können. Zuvor wurde zur Sperrung eines Benutzers ein inkorrekter Passwort verwendet, was beispielsweise bei der Authentifizierung ĂŒber SSH mit SchlĂŒsseln nicht zur Sperrung fĂŒhrte.
- In systemd-coredump wurde die Option âEnterNamespace" hinzugefĂŒgt, die Zugriff auf den Mount-Namensraum beliebiger abgestĂŒrzter Prozesse bietet, um deren Debugging-Symbole abzurufen. Praktisch kann diese Option nĂŒtzlich sein, um Backtraces von Core-Dateien von Anwendungen, die in isolierten Containern laufen, zu organisieren.
- In systemd-logind ist die Verarbeitung der Kombination Ctrl-Alt-Shift-Esc aktiviert, um den Komponenten der Benutzerumgebung das Signal org.freedesktop.login1.SecureAttentionKey zu senden. Dies fordert die Anzeige des sicheren Anmeldedialogs an. Die Einstellung âDesignatedMaintenanceTimeâ wurde implementiert, um eine automatische Planung des Herunterfahrens zu einem bestimmten Zeitpunkt zu ermöglichen. Ăhnlich wie bei der UnterstĂŒtzung von DRM-GerĂ€ten und evdev wurde die UnterstĂŒtzung fĂŒr den Zugriff unprivilegierter Benutzer auf hidraw-GerĂ€te (Spielcontroller und Joysticks) hinzugefĂŒgt.
- In systemd-machined wurde die UnterstĂŒtzung fĂŒr die Registrierung unprivilegierter Clients virtuellen Maschinen und Container hinzugefĂŒgt. Der Zugriff auf die FunktionalitĂ€t von systemd-machined ist jetzt ĂŒber die Varlink-API möglich, zusĂ€tzlich zu D-Bus.
- In die Konfigurationsdatei networkd.conf wurde ein neuer Abschnitt â[IPv6AddressLabel]â hinzugefĂŒgt, um Labels und PrĂ€fixe fĂŒr IPv6-Adressen zu konfigurieren.
- Der Befehl ânetworkctl editâ wurde um die Option ââstdinâ erweitert, um den Inhalt der Datei aus dem Standard-Stream zu beziehen. Zu den Befehlen ânetworkctl editâ und ânetworkctl catâ wurde die UnterstĂŒtzung fĂŒr das Bearbeiten und Anzeigen von .netdev-Dateien durch Angabe der Netzwerkschnittstelle hinzugefĂŒgt. Eine Option ââno-ask-passwordâ wurde hinzugefĂŒgt, um die interaktive Authentifizierung zu deaktivieren.
- In den Tools ukify, bootctl, systemd-keyutil, systemd-measure, systemd-repart und systemd-sbsign wurde die Option "âcertificate-source" hinzugefĂŒgt, um das X.509-Zertifikat ĂŒber den OpenSSL-Anbieter herunterzuladen, anstatt es direkt aus einer Datei zu laden.
- In systemd-boot wurde die Möglichkeit hinzugefĂŒgt, die LautstĂ€rketasten zur Navigation im Boot-MenĂŒ zu verwenden, was auf GerĂ€ten wie Smartphones nĂŒtzlich sein kann. Die bootctl-Anwendung unterstĂŒtzt jetzt die Installation der UEFI Secure Boot-Datenbank im ESL-Format (db/dbx/...) fĂŒr systemd-boot.
- In journalctl wurde die Option "âlist-invocation" hinzugefĂŒgt, um eine Liste der Aufrufe von Einheiten anzuzeigen, sowie die Option "âinvocation" ("-I"), um Protokolle anzuzeigen, die nur mit einem bestimmten Aufruf zusammenhĂ€ngen.
- In systemd-nspawn wurde die UnterstĂŒtzung fĂŒr die nicht privilegierte Nutzung von FUSE (Filesystem in Userspace) in Containern hinzugefĂŒgt. Bei Verwendung der Option "âbind-user" wird der SSH-SchlĂŒssel des Benutzers in den Container weitergeleitet, der fĂŒr den SSH-Zugriff erforderlich ist.
- In libsystemd wurde eine neue Programmierschnittstelle "sd-json" eingefĂŒhrt, die das JSON-Format verwendet, sowie die Schnittstelle "sd-varlink", die IPC Varlink nutzt.
- Die empfohlene Standardversion des Kernels wurde auf die Ausgabe 5.4 angehoben, die 2019 veröffentlicht wurde. Im kommenden Jahr wird die UnterstĂŒtzung Ă€lterer Kernel eingestellt, und die Version 5.4 wird als minimal unterstĂŒtzte Standardversion gekennzeichnet.
- Die UnterstĂŒtzung von cgroups v1 wird als veraltet angesehen und ist standardmĂ€Ăig deaktiviert (um sie zu aktivieren, muss in der Kernel-Befehlszeile SYSTEMD_CGROUP_ENABLE_LEGACY_FORCE=1 angegeben werden, zusĂ€tzlich zur Aktivierung in den systemd-Einstellungen). Im kommenden systemd 258 Release wird der Code, der mit cgroups v1 verbunden ist, vollstĂ€ndig entfernt. In der Version systemd 258 ist auch die Entfernung der UnterstĂŒtzung fĂŒr System V Service-Skripte geplant.
Quelle: opennet.ru
