Nach drei Monaten Entwicklung wurde die Systemverwaltung systemd 249 veröffentlicht. In dieser Version ist es nun möglich, Benutzer/Gruppen im JSON-Format zu definieren, das Journal-Protokoll wurde stabilisiert, die Organisation des Bootens wechselnder Partitionen vereinfacht, die Möglichkeit zur Bindung von BPF-Programmen an Dienste hinzugefĂŒgt, die Zuordnung von Benutzer-IDs in gemounteten Partitionen implementiert und eine Vielzahl neuer Netzwerkparameter sowie Optionen zum Starten von Containern bereitgestellt.
Wesentliche Ănderungen:
- Das Journal-Protokoll wurde dokumentiert, das in Clients anstelle des syslog-Protokolls fĂŒr die lokale Lieferung von Log-EintrĂ€gen verwendet werden kann. Das Journal-Protokoll existiert bereits seit einiger Zeit und wird bereits in einigen Client-Bibliotheken verwendet, jedoch wird die offizielle UnterstĂŒtzung erst jetzt bekannt gegeben.
- In userdb und nss-systemd wird die Lesemöglichkeit zusĂ€tzlicher Benutzerdaten, die in den Verzeichnissen /etc/userdb/, /run/userdb/, /run/host/userdb/ und /usr/lib/userdb/ im JSON-Format abgelegt sind, sichergestellt. Es sei darauf hingewiesen, dass diese FunktionalitĂ€t einen zusĂ€tzlichen Mechanismus zur Erstellung von Benutzern im System bietet und dabei eine vollstĂ€ndige Integration mit NSS und /etc/shadow gewĂ€hrleistet. Die UnterstĂŒtzung des JSON-Formats fĂŒr Benutzer-/Gruppen-EintrĂ€ge ermöglicht es zudem, verschiedene Ressourcenkontrollparameter und andere Einstellungen, die von pam_systemd und systemd-logind erkannt werden, an die Benutzer anzuhĂ€ngen.
- In nss-systemd wird die Synthese von Benutzer-/Gruppen-Daten in /etc/shadow unter Verwendung von gehashten Passwörtern aus systemd-homed sichergestellt.
- Ein Mechanismus wurde implementiert, der die Verwaltung von Updates durch den Einsatz von austauschbaren Partitionen vereinfacht (eine Partition aktiv, eine Backup-Partition â das Update wird auf die Backup-Partition kopiert, die dann aktiv wird). Wenn im Disk-Image zwei Root- oder /usr-Partitionen vorhanden sind und udev den Parameter 'root=' nicht bestimmt hat oder Disk-Images ĂŒber die Option 'âimage' in den Tools systemd-nspawn und systemd-dissect verarbeitet werden, kann die Boot-Partition durch den Vergleich der GPT-Labels ermittelt werden (es wird vorausgesetzt, dass die Versionsnummer des Inhalts in dem GPT-Label erwĂ€hnt wird und systemd die Partition mit den aktuelleren Ănderungen auswĂ€hlt).
- In die Service-Dateien wurde die Einstellung BPFProgram aufgenommen, mit der das Laden von BPF-Programmen in den Kernel und deren Verwaltung mit Zuordnung zu bestimmten Systemd-Services ermöglicht wird.
- In systemd-fstab-generator und systemd-repart wurde die Möglichkeit zur Boot von Disks hinzugefĂŒgt, die nur eine /usr-Partition und keine Root-Partition enthalten (die Root-Partition wird von dem Utility systemd-repart beim ersten Boot generiert).
- In systemd-nspawn wurde die Option ââprivate-user-chownâ durch die vielseitigere Variante ââprivate-user-ownershipâ ersetzt. Diese kann die Werte âchownâ als Ăquivalent zu ââprivate-user-chownâ, âoffâ zum Deaktivieren der alten Einstellung, âmapâ zum Mapping von Benutzeridentifikatoren in eingebundenen Dateisystemen und âautoâ zur Auswahl von âmapâ bei vorhandener erforderlicher FunktionalitĂ€t im Kernel (5.12+) oder einem RĂŒckgriff auf den rekursiven "chown"-Aufruf im anderen Fall annehmen. Durch das Mapping können die Dateien eines Benutzers auf einem gemounteten, fremden Partition einem anderen Benutzer im aktuellen System zugeordnet werden, was die gemeinsame Nutzung von Dateien zwischen verschiedenen Benutzern erleichtert. Im Mechanismus der tragbaren Home-Verzeichnisse von systemd-homed ermöglicht das Mapping den Benutzern, ihre Home-Verzeichnisse auf externe Speicher zu verschieben und diese an verschiedenen Computern zu verwenden, deren Benutzeridentifikatoren nicht ĂŒbereinstimmen.
- In systemd-nspawn kann bei der Option ââprivate-userâ jetzt der Wert âidentityâ verwendet werden, um Benutzer-IDs direkt widerzuspiegeln, wenn ein Namensraum (user namespace) konfiguriert wird. Das bedeutet, dass UID 0 und UID 1 im Container als UID 0 und UID 1 auf der Host-Seite widergespiegelt werden. So werden Angriffsvektoren verringert (der Container erhĂ€lt die Berechtigungen des Prozesses nur in seinem eigenen Namensraum).
- In systemd-nspawn wurde die Option ââbind-userâ hinzugefĂŒgt, um die Benutzerkonto im Container durch die im Host-Umfeld vorhandene Benutzerkonten weiterzuleiten. Dabei wird das Home-Verzeichnis in den Container eingebunden, ein Benutzer-/Gruppeneintrag hinzugefĂŒgt und eine UID-Zuordnung zwischen dem Container und dem Host-Umfeld durchgefĂŒhrt.
- In systemd-ask-password und systemd-sysusers wurde die UnterstĂŒtzung fĂŒr die Abfrage von festgelegten Passwörtern (passwd.hashed-password. und passwd.plaintext-password.) hinzugefĂŒgt, mittels des in der Version systemd 247 eingefĂŒhrten Mechanismus zur sicheren Ăbertragung vertraulicher Daten mithilfe von temporĂ€ren Dateien in einem separaten Verzeichnis. StandardmĂ€Ăig werden die Anmeldeinformationen von dem Prozess mit PID1 akzeptiert, der sie beispielsweise vom Container-Management-System erhĂ€lt, was es ermöglicht, das Benutzerpasswort beim ersten Bootvorgang zu konfigurieren.
- In systemd-firstboot wurde die UnterstĂŒtzung fĂŒr die Nutzung des Mechanismus zur sicheren Ăbertragung vertraulicher Daten zur Abfrage verschiedener Systemparameter hinzugefĂŒgt. Dies kann verwendet werden, um die Systemeinstellungen bei der ersten Boot-Phase eines Container-Images zu initialisieren, in dem die erforderlichen Einstellungen im Verzeichnis /etc fehlen.
- Im Prozess PID 1 wĂ€hrend des Bootvorgangs wird gleichzeitig der Name sowie die Beschreibung der Einheit angezeigt. Die Ausgabe kann ĂŒber den Parameter âStatusUnitFormat=combinedâ in system.conf oder die Kernel-Befehlszeilenoption âsystemd.status-unit-format=combinedâ geĂ€ndert werden.
- In die Tools systemd-machine-id-setup und systemd-repart wurde die Option "âimage" hinzugefĂŒgt, um eine Datei mit der Maschinen-ID in Disk-Images zu ĂŒbergeben oder die GröĂe des Disk-Images zu vergröĂern.
- In die Konfigurationsdatei fĂŒr Partitionen, die von dem Tool systemd-repart verwendet wird, wurde der Parameter MakeDirectories aufgenommen, um beliebige Verzeichnisse im zu erstellenden Dateisystem vor dem Spiegeln in der Partitionstabelle zu erstellen (z. B. um im Root-Partition Verzeichnisse fĂŒr Mount-Punkte einzurichten, damit die Partition sofort im Nur-Lese-Modus eingehĂ€ngt werden kann). Zur Verwaltung von GPT-Flags in den erstellten Partitionen wurden die entsprechenden Parameter Flags, ReadOnly und NoAuto hinzugefĂŒgt. Der Parameter CopyBlocks unterstĂŒtzt nun den Wert "auto", um automatisch die aktuelle Bootpartition als Quelle beim Kopieren von Blocks auszuwĂ€hlen (z. B. wenn das eigene Root-Laufwerk auf ein neues Medium verschoben werden muss).
- In GPT wurde das Flag "grow-file-system" implementiert, das der Option zur Montage x-systemd.growfs entspricht und eine automatische Erweiterung der DateisystemgröĂe bis zur Grenze des BlockgerĂ€ts ermöglicht, wenn die DateisystemgröĂe kleiner als die Partition ist. Das Flag ist anwendbar auf die Dateisysteme Ext3, XFS und Btrfs und kann auf automatisch erkannten Partitionen verwendet werden. StandardmĂ€Ăig ist das Flag fĂŒr beschreibbare Partitionen, die durch systemd-repart automatisch erstellt werden, aktiviert. FĂŒr die Konfiguration des Flags wurde in systemd-repart die Option GrowFileSystem hinzugefĂŒgt.
- In der Datei /etc/os-release wurde die UnterstĂŒtzung neuer Variablen IMAGE_VERSION und IMAGE_ID implementiert, um die Version und die Identifikation von atomar aktualisierbaren Images zu bestimmen. FĂŒr die EinfĂŒgung der angegebenen Werte in verschiedene Befehle wurden die Platzhalter %M und %A vorgeschlagen.
- Der Dienst portablectl wurde um den Parameter "âextension" erweitert, um tragbare Systemerweiterungs-Images zu aktivieren (z. B. können ĂŒber diese Images mit zusĂ€tzlichen Diensten, die in die Root-Partition integriert sind, verbreitet werden).
- In der Anwendung systemd-coredump wird beim Erstellen des Core-Dumps des Prozesses die ELF-Information build-id extrahiert. Dies kann hilfreich sein, um zu bestimmen, zu welchem Paket der fehlerhafte Prozess gehört, sofern die Informationen ĂŒber den Namen und die Version der deb- oder rpm-Pakete in die ELF-Dateien integriert wurden.
- In udev wurde eine neue GerĂ€tedatenbank fĂŒr FireWire (IEEE 1394)-GerĂ€te hinzugefĂŒgt.
- In udev wurden drei Ănderungen an dem Schema zur Auswahl von Netzwerkschnittstellennamen 'net_id' vorgenommen, die die AbwĂ€rtskompatibilitĂ€t beeintrĂ€chtigen: UngĂŒltige Zeichen in Schnittstellennamen werden jetzt durch '_' ersetzt; die Namen der PCI Hotplug-Slots fĂŒr s390-Systeme werden in Form von Hexadezimalzahlen verarbeitet; die Verwendung von bis zu 65535 eingebetteten PCI-GerĂ€ten ist jetzt erlaubt (zuvor wurden Nummern ĂŒber 16383 blockiert).
- In systemd-resolved wurde die Domain 'home.arpa' in die Liste der NTA (Negative Trust Anchors) aufgenommen, die fĂŒr lokale Heimnetzwerke empfohlen wird, jedoch in DNSSEC nicht verwendet wird.
- Im Parameter CPUAffinity wurde die Analyse der Spezifizierer '%' ermöglicht.
- In die Dateien '.network' wurde der Parameter ManageForeignRoutingPolicyRules hinzugefĂŒgt, der verwendet werden kann, um die Verarbeitung externer Routing-Richtlinien in systemd-networkd auszuschlieĂen.
- In den Dateien â.networkâ wurde das Parameter RequiredFamilyForOnline hinzugefĂŒgt, um das Vorhandensein einer IPv4- oder IPv6-Adresse als Hinweis dafĂŒr zu nutzen, dass sich die Netzwerkschnittstelle im Zustand âonlineâ befindet. In networkctl wird der Zustand âonlineâ fĂŒr jede Verbindung angezeigt.
- In den Dateien â.networkâ wurde das Parameter OutgoingInterface hinzugefĂŒgt, um ausgehende Schnittstellen bei der Konfiguration von NetzbrĂŒcken zu bestimmen.
- In den Dateien â.networkâ wurde das Parameter Group hinzugefĂŒgt, das die Konfiguration von Multipath-Gruppen fĂŒr EintrĂ€ge im Abschnitt â[NextHop]â ermöglicht.
- In systemd-network-wait-online wurden die Optionen â-4â und â-6â hinzugefĂŒgt, um das Warten auf die Verbindung nur auf IPv4 oder IPv6 zu beschrĂ€nken.
- In die DHCP-Servereinstellungen wurde das Parameter RelayTarget aufgenommen, das den Server in den DHCP Relay-Modus versetzt. FĂŒr eine zusĂ€tzliche Konfiguration des DHCP-Relays wurden die Optionen RelayAgentCircuitId und RelayAgentRemoteId angeboten.
- In den DHCP-Server wurde das Parameter ServerAddress hinzugefĂŒgt, das eine explizite Festlegung der IP-Adresse des Servers ermöglicht (ansonsten wird die Adresse automatisch ausgewĂ€hlt).
- Im DHCP-Server wurde der Abschnitt [DHCPServerStaticLease] implementiert, der statische Adressbindungen (DHCP-Leases) ermöglicht, indem feste IPs an MAC-Adressen und umgekehrt zugeordnet werden.
- In der Konfiguration RestrictAddressFamilies wurde die UnterstĂŒtzung des Wertes ânoneâ implementiert, bei dem dem Dienst keine Sockets von irgendeiner Adressfamilie zur VerfĂŒgung stehen.
- In den Dateien â.networkâ in den Abschnitten [Address], [DHCPv6PrefixDelegation] und [IPv6Prefix] wurde die UnterstĂŒtzung der Einstellung RouteMetric eingefĂŒhrt, die es ermöglicht, eine Metrik fĂŒr das fĂŒr die angegebene Adresse erstellte RoutenprĂ€fix anzugeben.
- In nss-myhostname und systemd-resolved wird die Synthese von DNS-EintrĂ€gen mit Adressen fĂŒr Hosts mit dem speziellen Namen â_outboundâ bereitgestellt, fĂŒr die immer eine lokale IP zurĂŒckgegeben wird, die in Ăbereinstimmung mit den Standardrouten gewĂ€hlt wurde, die fĂŒr ausgehende Verbindungen verwendet werden.
- In die .network-Dateien wurde im Abschnitt â[DHCPv4]â eine standardmĂ€Ăig aktivierte Einstellung RoutesToNTP hinzugefĂŒgt, die vorschreibt, dass eine separate Route ĂŒber das aktuelle Netzwerkinterface zum NTP-Serveradresse hinzugefĂŒgt wird, die fĂŒr dieses Interface ĂŒber DHCP erhalten wurde (entsprechend der DNS-Konfiguration gewĂ€hrleistet dies, dass der Verkehr zum NTP-Server ĂŒber das Interface geleitet wird, ĂŒber das diese Adresse erhalten wurde).
- Es wurden die Einstellungen SocketBindAllow und SocketBindDeny hinzugefĂŒgt, um den Zugriff auf Sockets zu steuern, die an den aktuellen Dienst gebunden sind.
- FĂŒr Unit-Dateien wurde die optionale Einstellung ConditionFirmware implementiert, die es ermöglicht, PrĂŒfungen durchzufĂŒhren, die Funktionen der Firmware bewerten, wie die FunktionalitĂ€t auf UEFI-Systemen und device.tree, sowie die KompatibilitĂ€t mit bestimmten device-tree-Funktionen ĂŒberprĂŒfen.
- Die Option ConditionOSRelease wurde implementiert, um die Felder in der Datei /etc/os-release zu ĂŒberprĂŒfen. Bei der Bestimmung von PrĂŒfbedingungen fĂŒr die Werte der Felder sind die Operatoren â=â, â!=â, â<â, â=â, â>â zulĂ€ssig.
- Im Dienstprogramm hostnamectl wurden die Kommandos der Form âget-xyzâ und âset-xyzâ von den PrĂ€fixen âgetâ und âsetâ befreit, zum Beispiel kann statt âhostnamectl get-hostnameâ und âhostnamectl set-hostnameâ der Befehl âhostnamectl hostnameâ verwendet werden, wobei die Zuweisung des Wertes durch Angabe eines zusĂ€tzlichen Arguments erfolgt (âhostnamectl hostname valueâ). UnterstĂŒtzung fĂŒr Ă€ltere Befehle bleibt zur GewĂ€hrleistung der KompatibilitĂ€t erhalten.
- Im Dienstprogramm systemd-detect-virt und der Einstellung ConditionVirtualization wird eine korrekte Identifizierung von Amazon EC2-Umgebungen sichergestellt.
- Die Einstellung LogLevelMax in Unit-Dateien wird jetzt nicht nur auf die vom Dienst erstellten Log-Nachrichten angewendet, sondern auch auf Nachrichten des Prozesses PID 1, in denen der Dienst erwÀhnt wird.
- Die Möglichkeit zur Einbindung von SBAT-Daten (UEFI Secure Boot Advanced Targeting) in die systemd-boot EFI PE-Dateien wurde bereitgestellt.
- In /etc/crypttab wurden neue Optionen "headless" und "password-echo" implementiert â die erste ermöglicht es, alle interaktiven Passwort- und PIN-Anfragen an den Benutzer zu ĂŒberspringen, wĂ€hrend die zweite es erlaubt, die Methode zur Anzeige der Passwort-Eingabe einzustellen (nichts anzeigen, zeichenweise anzeigen oder Sterne anzeigen). Bei systemd-ask-password wurde ebenfalls die Option "âecho" hinzugefĂŒgt.
- In systemd-cryptenroll, systemd-cryptsetup und systemd-homed wurde die UnterstĂŒtzung fĂŒr das Entsperren von verschlĂŒsselten LUKS2-Partitionen mit FIDO2-Token erweitert. Neue Optionen wie "âfido2-with-user-presence", "âfido2-with-user-verification" und "âfido2-with-client-pin" wurden hinzugefĂŒgt, um die ĂberprĂŒfung der physischen Anwesenheit des Benutzers, die Verifizierung und die Eingabe eines PIN-Codes zu steuern.
- In systemd-journal-gatewayd wurden die Optionen "âuser", "âsystem", "âmerge" und "âfile" hinzugefĂŒgt, die den entsprechenden Optionen von journalctl Ă€hneln.
- ZusĂ€tzlich zu den direkten AbhĂ€ngigkeiten zwischen Einheiten, die durch die Parameter OnFailure und Slice definiert werden, wurde die UnterstĂŒtzung fĂŒr implizite RĂŒckabhĂ€ngigkeiten OnFailureOf und SliceOf hinzugefĂŒgt, die beispielsweise nĂŒtzlich sein können, um alle Einheiten innerhalb eines Slice zu bestimmen.
- Neue AbhĂ€ngigkeitstypen zwischen Einheiten hinzugefĂŒgt: OnSuccess und OnSuccessOf (das Gegenteil von OnFailure, das bei erfolgreichem Abschluss aufgerufen wird); PropagatesStopTo und StopPropagatedFrom (ermöglichen die Ăbertragung des Stoppereignisses von einer Einheit auf eine andere); Upholds und UpheldBy (eine Alternative zu Restart).
- Das Systemd-Ask-Password-Tool hat die Option "âemoji" zur Steuerung der Anzeige des Schlosssymbols (đ) im Passwort-Eingabefeld erhalten.
- Dokumentation zur Struktur des Quelltextbaums von systemd hinzugefĂŒgt.
- FĂŒr Einheiten wurde die Eigenschaft MemoryAvailable hinzugefĂŒgt, die anzeigt, wie viel Speicher der Einheit zur VerfĂŒgung steht, bevor das ĂŒber die Parameter MemoryMax, MemoryHigh oder MemoryAvailable festgelegte Limit erreicht wird.
Quelle: opennet.ru
