Efter sex månaders utveckling presenterades utgåvan av systemhanteraren systemd 257. Nyckeländringar: nya verktyg systemd-sbsign och systemd-keyutil, stöd för MPTCP när det aktiveras över en socket, initialt stöd för att bygga med Musl C-biblioteket. updatectl-verktyg för att hantera installationen av uppdateringar via systemd-sysupdate, möjligheten att starta tjänster i separata PID-namnområden, skydd mot oavsiktlig radering av filer vid användning av "systemd-tmpfiles —purge".
Bland ändringarna i den nya utgåvan:
- Добавлена новая утилита systemd-sbsign для заверения цифровой подписью исполняемых файлов в формате PE (Portable Executable), предназначенных для использования при загрузке в режиме EFI Secure Boot. Для формирования подписи могут использоваться движки и провайдеры, предоставляемые библиотекой OpenSSL. Systemd-sbsign может применяться в качестве альтернативы приложениям sbsigntool и pesign в утилите ukify при формировании универсальных образов ядра UKI (Unified Kernel Image), объединяющих в одном файле загрузчик для UEFI (UEFI boot stub), образ ядра Linux och initrd-systemmiljön laddades in i minnet.
- Ett nytt verktyg, systemd-keyutil, har lagts till som implementerar olika operationer på privata nycklar och X.509-certifikat. Till exempel kan systemd-keyutil användas för att testa möjligheten att ladda privata nycklar och certifikat, och extrahera publika nycklar från dem i PEM-format.
- I ".socket"-enheterna som används för att säkerställa funktionen hos socket-aktiveringsmekanismen (starta processer vid försök att upprätta en nätverksanslutning) implementeras stöd för MPTCP (Multipath TCP), en utökning av TCP-protokollet för att organisera driften av en TCP-anslutning med leverans av paket samtidigt längs flera rutter genom olika nätverksgränssnitt bundna till olika ... IP-adresser.
- Inkluderar ändringar som krävs för att bygga med standard Musl C-biblioteket.
- В различные компоненты systemd, выводящие индикаторы прогресса выполнения операций (например, systemd-repart, systemd-sysupdate/updatectl и importctl), добавлена возможность использования ANSI-последовательностей для анимирования отображения прогресса. Подобные последовательности пока поддерживаются только в Windows Terminal (предполагается, что со временем подобная возможность будет перенесена и в эмуляторы терминалов для Linux).
- Funktionerna för systemd-sysupdate-komponenten har utökats, används för att automatiskt upptäcka, ladda ner och installera uppdateringar med hjälp av en atommekanism för att ersätta partitioner, filer eller kataloger (två oberoende partitioner/filer/kataloger används, varav en innehåller den nuvarande fungerande resurs, och den andra installerar nästa) uppdatering, varefter sektionerna/filerna/katalogerna byts ut). I praktiken används systemd-sysupdate redan i GNOME OS.
Utöver systemd-sysupdate-processen har en tjänst med samma namn lagts till som gör att D-Bus kan användas för att hantera systemuppdateringar av en oprivilegierad användare. För att hantera tjänsten ingår också ett nytt updatectl-verktyg. Lade till "--offline"-flaggan till systemd-sysupdate för att inaktivera nedladdning av metadata över nätverket och endast använda versioner som redan laddats ner till det lokala systemet. Lagt till stöd för utdata i JSON-format för alla kommandon.
- En ny egenskap "PrivatePIDs" har implementerats för tjänster, med vilken du kan organisera lanseringen av processer med PID 1 (initieringsprocess) i ett separat processidentifieringsutrymme (PID-namnutrymme). I miljön som skapats för den startade processen kommer endast processer från namnområdet som skapats för den att vara synliga.
- Lade till stöd för skiftlägesokänsliga matchningar i udev-regler (t.ex. 'ATTR{foo}==i»abcd»'). Genom att använda udev är det möjligt att ge oprivilegierade lokala användare åtkomst (“uaccess”) till /dev/udmabuf-enheten, vilket är nödvändigt för att arbeta med IPMI-kameror via libcamera. udev ger igenkänning av olika hårdvarukryptoplånböcker med ett USB-gränssnitt och ställer in ID_HARDWARE_WALLET-egenskapen för dem, vilket låter dig tillämpa "uaccess"-läget på dem för åtkomst av oprivilegierade användare.
- Nya fält RELEASE_TYPE, EXPERIMENT och EXPERIMENT_URL har lagts till i filen /etc/os-release. "RELEASE_TYPE" kan ta värdena "experimentell", "development", "stable" och "lts" för att separera stabila versioner från utvecklings- och experimentbyggnader. Parametrarna EXPERIMENT och EXPERIMENT_URL är avsedda att förklara kärnan i det experimentella bygget.
- Verktyget run0, utvecklat som en ersättning för sudo-programmet, har lagt till alternativet "--shell-prompt-prefix", som specificerar prefixsträngen för kommandoskalet. Som standard visas emojin "🦸" som ett prefix för att visuellt markera en förhöjd session.
- I systemd-tmpfiles, för att undvika att oavsiktligt radera fel filer, gäller alternativet "--purge" nu endast för inställningar i tmpfiles.d/ som har "$"-flaggan uttryckligen inställd. Operationen "--purge" kräver också att du specificerar minst en fil från katalogen tmpfiles.d/. För strängar med typen 'L' har flaggan '?' lagts till, när det anges skapas en symbolisk länk endast om målfilen finns.
- I servicehanteraren och relaterade verktyg fortsätter processspårningskoden att konverteras till att använda PIDFD istället för PID. En PIDFD är associerad med en specifik process och ändras inte, medan en PID kan associeras med en annan process efter att den aktuella processen associerad med det PID avslutas.
- För tjänster är det nu möjligt att ange värdet "debug" i parametern "RestartMode", där den misslyckade tjänsten kommer att startas om med debug-läge aktiverat (miljövariabeln DEBUG_INVOCATION=1 är inställd), och LogLevelMax-värdet kommer att vara tillfälligt höjt till felsökningsnivån.
- PID 1-hanteraren har förmågan att ladda regler för IPE (Integrity Policy Enforcement) LSM-modulen, som definierar integritetspolicyn för hela systemet (vilka operationer som är tillåtna och hur äktheten av komponenter ska verifieras).
- Alternativet "DeferReactivation" har lagts till i ".timer"-enhetsfilerna, vilket gör att du kan hoppa över nästa timeraktivering om tjänsten ännu inte har slutfört sin exekvering sedan den senaste aktiveringen.
- I parametern PrivateUsers enhetsfil är det nu möjligt att ange värdet "identity" för att möjliggöra mappning av användar-ID:n när ett användarnamnområde skapas.
- Lade till stöd för värdet "disconnected" till PrivateTmp-enhetsfilparametern, som kommer att använda separata tmpfs-instanser för katalogerna /tmp/ och /var/tmp/.
- Stöd för nya "privata" och "strikta" lägen har lagts till i enhetsfilparametern ProtectControlGroups, när den är inställd skapas en ny cgroup-namnrymd för tjänsten och cgroupfs monteras. När alternativet "strikt" är inställt, monteras cgroupfs i skrivskyddat läge.
- Parametrarna StateDirectory, RuntimeDirectory, CacheDirectory, LogsDirectory och ConfigurationDirectory ger möjlighet att använda flaggan ':ro' för att begränsa åtkomsten till motsvarande kataloger till skrivskyddat läge.
- Lade till stöd för "firmware"-värdet till "systemd.machine_id" kärnans kommandoradsparameter, där systemidentifieraren (dator-ID) kommer att beräknas baserat på UUID från SMBIOS/DeviceTree.
- Добавлена поддержка системных вызовов mseal(), listmount() и statmount(), появившихся в недавних выпусках ядра Linux.
- Verktygen resolvectl, timedatectl och systemd-inhibit stöder nu interaktiv auktorisering med Polkit.
- Verktyget systemctl har lagt till möjligheten att använda flaggan "--now" i kommandot "reenable".
- Lade till alternativet "--json" till systemd-monteringsverktyget för utmatning i JSON-format (till exempel när det anges tillsammans med "--list-devices", kommer en lista med enheter att matas ut i JSON-format).
- Lade till "-l" och "--full" alternativ till "localectl"-verktyget för att inaktivera trimning av långa linjer under utmatning.
- Alternativet HibernateOnACPower har lagts till sleep.conf, vilket gör att du kan fördröja bytet till viloläge tills enheten kopplas bort från den stationära strömkällan.
- I systemd-sysusers har stöd för "!"-modifieraren lagts till på "u"-raderna, med vilken du kan skapa helt låsta användarkonton (tidigare användes ett felaktigt lösenord för att blockera en användare, vilket t.ex. ledde inte till blockering under nyckelautentisering i SSH ).
- Systemd-coredump lägger till ett "EnterNamespace"-alternativ som tillåter åtkomst till monteringspunktsutrymmet för alla kraschade processer för att få deras felsökningssymboler. I praktiken kan alternativet vara användbart för att organisera bakåtspårning av kärnfiler från applikationer som körs i isolerade behållare.
- systemd-logind inkluderar bearbetning av kombinationen Ctrl-Alt-Shift-Esc för att skicka signalen org.freedesktop.login1.SecureAttentionKey till användarmiljökomponenterna med en begäran om att visa en säker inloggningsdialogruta. Implementerade inställningen "DesignatedMaintenanceTime" för att automatiskt schemalägga arbetet för att slutföras vid en angiven tidpunkt. I analogi med stöd för DRM- och evdev-enheter har stöd lagts till för att konfigurera åtkomst för oprivilegierade användare till hidraw-enheter (spelkontroller och joysticks).
- systemd-machined stöder nu oprivilegierade klientinloggningar. virtuell maskin och containrar. Åtkomst till systemd-bearbetad funktionalitet tillhandahålls via Varlink API, utöver D-Bus.
- Ett nytt avsnitt "[IPv6AddressLabel]" har lagts till i networkd.conf-konfigurationsfilen för att konfigurera etiketter och prefix för IPv6-adresser
- Lade till alternativet "--stdin" till kommandot 'networkctl edit' för att hämta filinnehåll från standardström. Lade till stöd för redigering och visning av .netdev-filer genom att ange ett nätverksgränssnitt för kommandona 'networkctl edit' och 'networkctl cat'. Lade till alternativet "--ingen-fråga-lösenord" för att inaktivera interaktiv auktorisering.
- Lade till ett "--certificate-source"-alternativ till verktygen ukify, bootctl, systemd-keyutil, systemd-measure, systemd-repart och systemd-sbsign för att ladda ett X.509-certifikat genom OpenSSL-leverantören istället för att ladda direkt från en fil.
- systemd-boot lägger till möjligheten att använda volymknapparna för att flytta upp och ner genom startmenyn, vilket kan vara användbart på enheter som smartphones. Stöd för installation av UEFI Secure Boot-databasen i ESL(db/dbx/...)-format för systemd-boot har lagts till i bootctl-verktyget.
- Lade till "--list-invocation"-alternativet till journalctl för att visa en lista över enhetssamtal och "--invocation"-alternativet ("-I") för att visa loggar som bara är kopplade till ett specifikt samtal.
- systemd-nspawn lägger till stöd för oprivilegierad användning av FUSE (filsystem i användarutrymme) i behållare. När du använder alternativet "--bind-användare", vidarebefordras användarens SSH-nycklar som krävs för åtkomst via SSH till behållaren.
- libsystemd har lagt till ett nytt programmeringsgränssnitt "sd-json" som använder JSON-formatet, samt ett gränssnitt "sd-varlink" som använder IPC Varlink.
- Den rekommenderade baskärnversionen har uppgraderats till release 5.4, bildad 2019. Nästa år planerar de att sluta stödja äldre kärnor och markera 5.4-versionen som den minsta stödda basversionen.
- Stöd för cgroups v1 har fasats ut och är inaktiverat som standard (för att aktivera det måste du ange SYSTEMD_CGROUP_ENABLE_LEGACY_FORCE=1 på kärnans kommandorad förutom att aktivera det i systeminställningarna). Nästa version av systemd 258 planerar att helt ta bort den cgroups v1-relaterade koden. Systemd version 258 är också tänkt att ta bort stöd för System V-tjänstskript.
Källa: opennet.ru
