Release av systemd system manager 252 med stöd för UKI (Unified Kernel Image).

Efter fem månaders utveckling presenterades releasen av systemhanteraren systemd 252. Den viktigaste förändringen i den nya versionen var integrationen av stöd för en moderniserad startprocess, som låter dig verifiera inte bara kärnan och starthanteraren, utan även komponenter av den grundläggande systemmiljön med hjälp av digitala signaturer.

Den föreslagna metoden involverar användningen av en unified kernel image UKI (Unified Kernel Image) vid laddning, som kombinerar en hanterare för att ladda kärnan från UEFI (UEFI boot stub), en Linux kärnavbildning och initrd systemmiljön laddad i minnet, som används för initial initiering vid steget före montering av root FS . UKI-avbildningen är paketerad som en enda körbar fil i PE-format, som kan laddas med traditionella bootloaders eller anropas direkt från UEFI-firmware. När det anropas från UEFI är det möjligt att verifiera integriteten och tillförlitligheten för den digitala signaturen för inte bara kärnan utan även innehållet i initrd.

För att beräkna parametrarna för TPM PCR-registren (Trusted Platform Module Platform Configuration Register) som används för att övervaka integriteten och generera en digital signatur av UKI-bilden, ingår ett nytt systemd-mått. Den publika nyckeln och medföljande PCR-information som används i signaturen kan bäddas in direkt i UKI-startavbildningen (nyckeln och signaturen sparas i en PE-fil i fälten '.pcrsig' och '.pcrkey') och extraheras från den externt eller interna verktyg.

I synnerhet har systemd-cryptsetup, systemd-cryptenroll och systemd-creds-verktygen anpassats för att använda denna information, med vilka du kan säkerställa att krypterade diskpartitioner är bundna till en digitalt signerad kärna (i detta fall åtkomst till den krypterade partitionen tillhandahålls endast om UKI-bilden har genomgått verifiering med digital signatur baserat på parametrar som finns i TPM).

Dessutom ingår systemd-pcrphase-verktyget, vilket låter dig styra bindningen av olika startsteg till parametrar som finns i minnet hos kryptoprocessorer som stöder TPM 2.0-specifikationen (du kan till exempel göra LUKS2-partitionsdekrypteringsnyckeln tillgänglig endast i initrd-bilden och blockera åtkomst till den vid senare nedladdningar).

Några andra ändringar:

  • Säkerställer att standardlokalen är C.UTF-8 om inte en annan lokalitet anges i inställningarna.
  • Det är nu möjligt att utföra en fullständig tjänsteförinställning ("systemctl preset") under den första uppstarten. Att aktivera förinställningar vid uppstart kräver att man bygger med alternativet "-Dfirst-boot-full-preset", men är planerat att aktiveras som standard i framtida utgåvor.
  • Användarhanteringsenheterna involverar en CPU-resurskontroller, vilket gjorde det möjligt att säkerställa att CPUWeight-inställningarna tillämpas på alla segmentenheter som används för att dela upp systemet i delar (app.slice, background.slice, session.slice) för att isolera resurser mellan olika användartjänster, som konkurrerar om CPU-resurser. CPUWeight stöder också "tomgång"-värdet för att aktivera lämpligt resursförsörjningsläge.
  • I temporära (“övergående”) enheter och i systemd-repart-verktyget tillåts åsidosättande av inställningar genom att skapa drop-in-filer i katalogen /etc/systemd/system/name.d/.
  • För systemavbildningar ställs flaggan som avslutats med stöd och bestämmer detta faktum baserat på värdet av den nya parametern "SUPPORT_END=" i filen /etc/os-release.
  • Lade till inställningarna “ConditionCredential=” och “AssertCredential=”, som kan användas för att ignorera eller krascha enheter om vissa referenser inte finns i systemet.
  • Lade till inställningarna “DefaultSmackProcessLabel=” och “DefaultDeviceTimeoutSec=” till system.conf och user.conf för att definiera standard SMACK-säkerhetsnivå och tidsgräns för enhetsaktivering.
  • I inställningarna "ConditionFirmware=" och "AssertFirmware=" har möjligheten att ange individuella SMBIOS-fält lagts till, till exempel för att starta en enhet endast om fältet /sys/class/dmi/id/board_name innehåller värdet "Custom Board”, kan du ange "ConditionFirmware=smbios" -field(board_name = "Custom Board")".
  • Under initieringsprocessen (PID 1) har möjligheten att importera referenser från SMBIOS-fält (Typ 11, "OEM-leverantörssträngar") lagts till utöver deras definition via qemu_fwcfg, vilket förenklar tillhandahållandet av autentiseringsuppgifter till virtuella maskiner och eliminerar behov av tredjepartsverktyg som cloud -init och ignition.
  • Under avstängning har logiken för avmontering av virtuella filsystem (proc, sys) ändrats och information om processer som blockerar avmontering av filsystem sparas i loggen.
  • Systemanropsfiltret (SystemCallFilter) tillåter åtkomst till systemanropet riscv_flush_icache som standard.
  • sd-boot bootloader lägger till möjligheten att starta i blandat läge, där 64-bitars Linux-kärnan körs från 32-bitars UEFI-firmware. Lade till experimentell förmåga att automatiskt tillämpa SecureBoot-nycklar från filer som finns i ESP (EFI-systempartition).
  • Nya alternativ har lagts till i bootctl-verktyget: "—all-architectures" för att installera binärfiler för alla EFI-arkitekturer som stöds, "—root=" och "—image=" för att arbeta med en katalog eller diskavbildning, "—install-source =” för att definiera källan för installationen, "-efi-boot-option-description=" för att kontrollera namnen på startposterna.
  • Kommandot 'list-automounts' har lagts till i systemctl-verktyget för att visa en lista med automatiskt monterade kataloger och alternativet "--image=" för att utföra kommandon i förhållande till den angivna skivavbilden. Lade till alternativen "--state=" och "--type=" till kommandona "show" och "status".
  • systemd-networkd lade till alternativ "TCPCongestionControlAlgorithm=" för att välja TCP-överbelastningskontrollalgoritmen, "KeepFileDescriptor=" för att spara filbeskrivningen för TUN/TAP-gränssnitt, "NetLabel=" för att ställa in NetLabels, "RapidCommit=" för att påskynda konfigurationen via DHCPv6 (RFC 3315). Parametern "RouteTable=" gör det möjligt att ange namnen på routingtabeller.
  • systemd-nspawn tillåter användning av relativa filsökvägar i alternativen "--bind=" och "--overlay=". Lade till stöd för parametern 'rootidmap' till alternativet "--bind=" för att binda rotanvändar-ID:t i behållaren till ägaren av den monterade katalogen på värdsidan.
  • systemd-resolved använder OpenSSL som sin krypteringsbackend som standard (stöd för gnutls behålls som ett alternativ). DNSSEC-algoritmer som inte stöds behandlas nu som osäkra istället för att returnera ett fel (SERVFAIL).
  • systemd-sysusers, systemd-tmpfiler och systemd-sysctl implementerar möjligheten att överföra inställningar genom en lagringsmekanism för autentiseringsuppgifter.
  • Lade till kommandot 'compare-versions' för att systemd-analyze för att jämföra strängar med versionsnummer (liknande 'rpmdev-vercmp' och 'dpkg --compare-versions'). Lade till möjligheten att filtrera enheter efter mask till kommandot 'systemd-analyze dump'.
  • När du väljer ett viloläge i flera steg (avbryt-sedan-viloläge), väljs nu den tid som spenderas i viloläge baserat på prognosen för återstående batteritid. Omedelbar övergång till viloläge sker när mindre än 5 % batteriladdning återstår.
  • Ett nytt utgångsläge "-o kort-delta" har lagts till i 'journalctl', som visar tidsskillnaden mellan olika meddelanden i loggen.
  • systemd-repart lägger till stöd för att skapa partitioner med Squashfs filsystem och partitioner för dm-verity, inklusive med digitala signaturer.
  • Lade till inställningen "StopIdleSessionSec=" till systemd-login för att avsluta en inaktiv session efter en angiven timeout.
  • Systemd-cryptenroll har lagt till ett "--unlock-key-file="-alternativ för att extrahera dekrypteringsnyckeln från en fil istället för att fråga användaren.
  • Det är nu möjligt att köra verktyget systemd-growfs i miljöer utan udev.
  • systemd-backlight har förbättrat stöd för system med flera grafikkort.
  • Licensen för kodexemplen i dokumentationen har ändrats från CC0 till MIT-0.

Ändringar som bryter kompatibiliteten:

  • När du kontrollerar kärnans versionsnummer med ConditionKernelVersion-direktivet, används nu en enkel strängjämförelse i '='- och '!='-operatorerna, och om jämförelseoperatorn inte är specificerad alls, kan glob-mask-matchning användas med hjälp av tecken '*', '?' Och '[', ']'. För att jämföra stverscmp() stilversioner, använd operatorerna '<', '>', '<=' och '>='.
  • SELinux-taggen som används för att kontrollera åtkomst från en enhetsfil läses nu när filen laddas, snarare än vid tidpunkten för åtkomstkontrollen.
  • Villkoret "ConditionFirstBoot" utlöses nu vid den första uppstarten av systemet endast direkt vid uppstartsstadiet och returnerar "falskt" när enheter anropas efter att uppstarten är klar.
  • År 2024 planerar systemd att sluta stödja resursbegränsningsmekanismen för cgroup v1, som fasades ut i systemversion 248. Administratörer rekommenderas att vara försiktiga innan de migrerar cgroup v2-baserade tjänster till cgroup v1. Den viktigaste skillnaden mellan cgroups v2 och v1 är användningen av en gemensam cgroups hierarki för alla typer av resurser, istället för separata hierarkier för att allokera CPU-resurser, för att reglera minnesförbrukning och för I/O. Separata hierarkier leder till svårigheter att organisera interaktion mellan hanterare och till ytterligare kostnader för kärnresurs när regler tillämpas för en process som refereras till i olika hierarkier.
  • Under andra halvan av 2023 planerar vi att avsluta stödet för delade kataloghierarkier, där /usr monteras separat från roten, eller /bin och /usr/bin, /lib och /usr/lib är separerade.

Källa: opennet.ru

Lägg en kommentar