Na een halfjaar ontwikkeling is de release van de systeemmanager systemd 257 gepresenteerd. Belangrijke wijzigingen: nieuwe hulpprogramma's systemd-sbsign en systemd-keyutil, ondersteuning voor MPTCP bij activatie via socket, beginnende ondersteuning voor compilatie met de C-bibliotheek Musl, het hulpprogramma updatectl voor het beheren van de installatie van updates via systemd-sysupdate, de mogelijkheid om services te starten in een aparte PID-namespace, en bescherming tegen onbedoeld verwijderen van bestanden bij gebruik van 'systemd-tmpfiles --purge'.
Onder de veranderingen in de nieuwe release:
- Een nieuw hulpprogramma, systemd-sbsign, is toegevoegd voor het ondertekenen van uitvoerbare bestanden in het PE (Portable Executable) formaat met een digitale handtekening, bedoeld voor gebruik bij opstarten in de EFI Secure Boot-modus. Voor het genereren van de handtekening kunnen engines en providers die door de OpenSSL-bibliotheek worden aangeboden, worden gebruikt. Systemd-sbsign kan fungeren als alternatief voor de applicaties sbsigntool en pesign in het hulpprogramma ukify bij het genereren van universele kernelbeelden (UKI, Unified Kernel Image), die een opstartprogramma voor UEFI (UEFI boot stub), de Linux kernel en de in het geheugen geladen systeemomgeving initrd combineren.
- Een nieuw hulpprogramma, systemd-keyutil, is toegevoegd dat verschillende bewerkingen op private sleutels en X.509-certificaten mogelijk maakt. Bijvoorbeeld, systemd-keyutil kan worden gebruikt om de mogelijkheid van het laden van private sleutels en certificaten te controleren en om de publieke sleutels in PEM-indeling eruit te extraheren.
- In de eenheden '.socket', die worden gebruikt voor het garanderen van de activatie via sockets (het starten van processen bij de poging tot het opzetten van een netwerkverbinding), is ondersteuning voor MPTCP (Multipath TCP) geïmplementeerd. Dit is een uitbreiding van het TCP-protocol voor het realiseren van een TCP-verbinding die pakketten gelijktijdig over meerdere routes via verschillende netwerkinterfaces verzendt die aan verschillende IP-adressen.
- Inbegrepen zijn de wijzigingen die nodig zijn voor compilatie met de standaard C-bibliotheek Musl.
- In verschillende componenten van systemd, die voortgangsindicatoren weergeven voor operationele taken (zoals systemd-repart, systemd-sysupdate/updatectl en importctl), is de mogelijkheid toegevoegd om ANSI-sequenties te gebruiken voor het animeren van de voortgangsweergave. Dergelijke sequenties worden momenteel alleen ondersteund in Windows Terminal (er wordt verwacht dat deze functionaliteit op termijn ook naar terminalemulators voor Linux zal worden overgebracht).
- De mogelijkheden van de component systemd-sysupdate zijn uitgebreid, waarmee automatisch updates worden gedetecteerd, gedownload en geïnstalleerd met behulp van een atomair mechanisme voor het vervangen van partitities, bestanden of mappen (er worden twee onafhankelijke partitities/bestanden/mappen gebruikt, waarvan er één de huidige actieve bron bevat en de andere de volgende update wordt geïnstalleerd, waarna de partitities/bestanden/mappen omwisselen). In de praktijk wordt systemd-sysupdate al toegepast in GNOME OS.
Naast het systemd-sysupdate proces is er een gelijknamige service toegevoegd, waarmee D-Bus kan worden gebruikt voor systeemupdates door niet-bevoorrechte gebruikers. Om de service te beheren is er ook een nieuwe tool genaamd updatectl toegevoegd. In systemd-sysupdate is de vlag "--offline" toegevoegd om het downloaden van metadata via het netwerk te verbieden en alleen de al op het lokale systeem gedownloade versies te gebruiken. Voor alle commando's is ondersteuning voor output in JSON-formaat toegevoegd.
- Voor services is een nieuwe eigenschap "PrivatePIDs" geïmplementeerd, waarmee processen met PID 1 (init-proces) in een aparte proces-ID-ruimte (PID namespace) kunnen worden gestart. In de omgeving die voor het opgestarte proces wordt gemaakt, zijn alleen de processen zichtbaar die binnen de aangemaakte naamruimte vallen.
- In de udev-regels is ondersteuning toegevoegd voor case-insensitieve overeenkomsten (bijvoorbeeld 'ATTR{foo}=="abcd"'). Via udev is het mogelijk gemaakt om niet-bevorrechte lokale gebruikers toegang te geven ("uaccess") tot het apparaat /dev/udmabuf, wat nodig is voor het werken met IPMI-camera's via libcamera. In udev is de herkenning van verschillende hardware cryptocurrency-portemonnees met een USB-interface mogelijk gemaakt en is het ID_HARDWARE_WALLET-eigenschap ingesteld, waardoor de "uaccess"-modus voor niet-bevoorrechte gebruikers kan worden toegepast.
- Er zijn nieuwe velden RELEASE_TYPE, EXPERIMENT en EXPERIMENT_URL toegevoegd aan het bestand /etc/os-release. "RELEASE_TYPE" kan de waarden "experimental", "development", "stable" en "lts" aannemen om stabiele versies te scheiden van die in ontwikkeling en experimentele builds. De parameters EXPERIMENT en EXPERIMENT_URL zijn bedoeld om de aard van de experimentele build te verduidelijken.
- In de run0-tool, ontwikkeld als vervanging voor het sudo-programma, is de optie “—shell-prompt-prefix” toegevoegd, waarmee de prefixregel voor de commandoregelprompt kan worden gedefinieerd. Standaard wordt de emoji “🦸” als prefix weergegeven om de sessie met verhoogde privileges visueel te onderscheiden.
- In systemd-tmpfiles wordt de optie “—purge” nu alleen toegepast op instellingen in tmpfiles.d/, waarvoor expliciet de vlag “$” is ingesteld, om per ongeluk verwijderen van verkeerde bestanden te voorkomen. Voor het uitvoeren van de “—purge”-bewerking is het nu ook nodig om ten minste één bestand uit de tmpfiles.d/-directory op te geven. Voor regels met het type ‘L’ is de vlag ‘?’ toegevoegd, waarmee een symbolische link alleen wordt aangemaakt als het doeldocument aanwezig is.
- In de servicedocumentbeheerder en bijbehorende tools is de vertaling van de procesvolgcode voortgezet naar het gebruik van PIDFD in plaats van PID. De PIDFD-identificatie is gekoppeld aan een specifiek proces en verandert niet, terwijl de PID kan worden gekoppeld aan een ander proces nadat het huidige proces, dat met deze PID is geassocieerd, is beëindigd.
- Voor services is de mogelijkheid geïmplementeerd om in de parameter “RestartMode” de waarde “debug” op te geven, waarbij de herstart van een mislukte service in de debugmodus zal worden uitgevoerd (de omgevingsvariabele DEBUG_INVOCATION=1 wordt ingesteld), en de waarde LogLevelMax tijdelijk zal worden verhoogd naar het debugniveau.
- In handler PID 1 is de mogelijkheid geïmplementeerd om regels voor de LSM-module IPE (Integrity Policy Enforcement) te laden, die het integriteitsbeleid voor het hele systeem definiëren (welke operaties zijn toegestaan en hoe de authenticiteit van componenten moet worden geverifieerd).
- Aan unit-bestanden “.timer” is de optie “DeferReactivation” toegevoegd, waarmee een geplande activatie door de timer kan worden overgeslagen, als de service nog niet is voltooid sinds de vorige activatie.
- In de parameter van unit-bestanden PrivateUsers is de waarde “identity” geïntroduceerd om het koppelen van gebruikersidentificaties mogelijk te maken bij het aanmaken van een namespace (gebruikersnamespace).
- In de parameter van unit-bestanden PrivateTmp is ondersteuning voor de waarde “disconnected” toegevoegd, waarbij voor de directories /tmp/ en /var/tmp/ aparte exemplaren van tmpfs zullen worden gebruikt.
- De parameter unit-bestanden ProtectControlGroups heeft ondersteuning gekregen voor de nieuwe modi 'private' en 'strict', waarbij een nieuwe cgroup-ruimte (cgroup namespace) wordt aangemaakt en cgroupfs wordt gemount. Bij het instellen van de optie 'strict' wordt cgroupfs gemount in alleen-lezen modus.
- In de parameters StateDirectory, RuntimeDirectory, CacheDirectory, LogsDirectory en ConfigurationDirectory is de mogelijkheid toegevoegd om de vlag ':ro' te gebruiken om de toegang tot de desbetreffende directories alleen-lezen te maken.
- De parameter systemd.machine_id in de opstartparameters van de kernel heeft ondersteuning gekregen voor de waarde 'firmware', waarbij de machine ID wordt berekend op basis van de UUID uit SMBIOS/DeviceTree.
- Ondersteuning voor de systeemaanroepen mseal(), listmount() en statmount() is toegevoegd, die in recente versies van de Linux-kernel zijn geïntroduceerd.
- In de hulpprogramma's resolvectl, timedatectl en systemd-inhibit is ondersteuning toegevoegd voor interactieve autorisatie via Polkit.
- In het hulpprogramma systemctl is de mogelijkheid toegevoegd om de vlag '--now' te gebruiken bij het commando 'reenable'.
- In het hulpprogramma systemd-mount is de optie '--json' toegevoegd voor uitvoer in JSON-formaat (bijvoorbeeld, samen met '--list-devices' geeft dit een lijst van apparaten in JSON-formaat).
- In het hulpprogramma 'localectl' zijn de opties '-l' en '--full' toegevoegd om het afsnijden van lange regels bij de uitvoer uit te schakelen.
- In sleep.conf is de optie HibernateOnACPower toegevoegd, waarmee het overschakelen naar slaapstand kan worden uitgesteld totdat het apparaat is losgekoppeld van de netstroom.
- In systemd-sysusers is in de regel 'u' ondersteuning toegevoegd voor de modifier '!', waarmee volledig geblokkeerde gebruikersaccounts kunnen worden aangemaakt (voorheen werd een onjuiste wachtwoord bevestiging gebruikt om een gebruiker te blokkeren, wat bijvoorbeeld niet leidde tot blokkering bij authenticatie met sleutels in SSH).
- In systemd-coredump is de optie 'EnterNamespace' toegevoegd, die toegang geeft tot de mount points van elk gecrasht proces voor het verkrijgen van hun debug-symbolen. In de praktijk kan de optie nuttig zijn voor het organiseren van een backtrace van core-bestanden van applicaties die in geïsoleerde containers worden uitgevoerd.
- In systemd-logind is de combinatie Ctrl-Alt-Shift-Esc ingeschakeld om een signaal org.freedesktop.login1.SecureAttentionKey naar de componenten van de gebruikersomgeving te sturen, met het verzoek om een dialoogvenster voor veilige systeeminlog te tonen. Er is een instelling "DesignatedMaintenanceTime" geïmplementeerd voor het automatisch plannen van uitschakeling op een bepaalde tijd. Net als bij de ondersteuning van DRM-apparaten en evdev is er ondersteuning toegevoegd voor de toegang van niet-privilegeerde gebruikers tot hidraw-apparaten (gamecontrollers en joysticks).
- In systemd-machined is ondersteuning toegevoegd voor registratie door niet-privilegeerde klanten virtuele machines en containers. Toegang tot de functionaliteit van systemd-machined is beschikbaar via de Varlink API, naast D-Bus.
- In het configuratiebestand networkd.conf is een nieuwe sectie "[IPv6AddressLabel]" toegevoegd voor het configureren van labels en prefixen voor IPv6-adressen.
- Aan het commando ‘networkctl edit’ is de optie "—stdin" toegevoegd om de inhoud van het bestand uit de standaardstroom te halen. In de commando's ‘networkctl edit’ en ‘networkctl cat’ is ondersteuning toegevoegd voor het bewerken en weergeven van .netdev-bestanden door het netwerkinterface op te geven. De optie "—no-ask-password" is toegevoegd om interactieve autorisatie uit te schakelen.
- In de hulpprogramma's ukify, bootctl, systemd-keyutil, systemd-measure, systemd-repart en systemd-sbsign is de optie "—certificate-source" toegevoegd om het X.509-certificaat via de OpenSSL-provider te downloaden in plaats van rechtstreeks uit een bestand.
- In systemd-boot is de mogelijkheid toegevoegd om volumeknoppen te gebruiken om omhoog en omlaag te navigeren door het opstartmenu, wat handig kan zijn op apparaten zoals smartphones. In het hulpprogramma bootctl is ondersteuning toegevoegd voor het instellen van de UEFI Secure Boot DB in het ESL(db/dbx/…) formaat voor systemd-boot.
- In journalctl is de optie "—list-invocation" toegevoegd voor het tonen van een lijst van unit-roepingen en de optie "—invocation" ("-I") voor het tonen van logboeken die alleen met een specifieke oproep zijn gerelateerd.
- In systemd-nspawn is ondersteuning toegevoegd voor het niet-privilegeerde gebruik van FUSE (Filesystem in Userspace) in containers. Bij gebruik van de optie "—bind-user" wordt de doorvoer van SSH-sleutels van de gebruiker naar de container mogelijk gemaakt, wat nodig is voor toegang via SSH.
- In libsystemd is een nieuwe programmeerinterface "sd-json" toegevoegd die het JSON-formaat gebruikt, evenals de interface "sd-varlink" die IPC Varlink gebruikt.
- De aanbevolen basisversie van de kernel is verhoogd naar release 5.4, uitgebracht in 2019. Volgend jaar is het plan om de ondersteuning voor oudere kernels te beëindigen en release 5.4 als de minimaal ondersteunde basisversie te markeren.
- De ondersteuning voor cgroups v1 is als verouderd beschouwd en standaard uitgeschakeld (om het in te schakelen in de kernel-opdrachtregel moet SYSTEMD_CGROUP_ENABLE_LEGACY_FORCE=1 worden opgegeven, naast activatie in de systemd-instellingen). In de volgende release van systemd 258 staat het volledig verwijderen van de code met betrekking tot cgroups v1 op de planning. In versie systemd 258 is ook het verwijderen van de ondersteuning voor System V service scripts gepland.
Bron: opennet.ru
