Po třech měsících vývoje byl představen vydání systémového správce systemd 249. Nová verze umožňuje definování uživatelů/skupin ve formátu JSON, stabilizuje protokol Journal, zjednodušuje organizaci načítání vzájemně se nahrazujících diskových oddílů, přidává možnost vazby programů BPF na služby a implementuje mapování identifikátorů uživatelů v připojených oddílech, nabízí velké množství nových síťových nastavení a možností pro spuštění kontejnerů.
Hlavní změny:
- Byl zdokumentován protokol Journal, který lze používat v klientech místo protokolu syslog pro místní dodávku logových záznamů. Protokol Journal byl implementován již před nějakou dobou a používá se v některých klientských knihovnách, nicméně jeho oficiální podpora byla oznámena až nyní.
- V userdb a nss-systemd je zajištěno čtení dodatečných definic uživatelů umístěných v adresářích /etc/userdb/, /run/userdb/, /run/host/userdb/ a /usr/lib/userdb/, definovaných ve formátu JSON. Je zdůrazněno, že tato možnost poskytne další mechanismus pro vytváření uživatelů v systému, zajišťující pro něj plnou integraci s NSS a /etc/shadow. Podpora formátu JSON pro záznamy uživatelů/skupin také umožní připojit k uživatelům různé parametry správy zdrojů a další nastavení, která rozpoznají pam_systemd a systemd-logind.
- V nss-systemd je zajištěna syntéza záznamů uživatele/skupiny v /etc/shadow s použitím hashovaných hesel z systemd-homed.
- Byl implementován mechanismus, který zjednodušuje organizaci aktualizace pomocí vzájemně se nahrazujících diskových oddílů (jeden oddíl aktivní, druhý záložní – aktualizace se zkopíruje na záložní oddíl, po čemž se stane aktivním). Pokud se v diskovém obrazu nachází dva kořenové nebo /usr oddíly a udev neurčil přítomnost parametru 'root=' nebo se provádí zpracování diskových obrazů uvedených pomocí volby "--image" v utilitách systemd-nspawn a systemd-dissect, může být oddíl pro načtení vypočten pomocí srovnání štítků GPT (předpokládá se, že ve štítku GPT se uvádí číslo verze obsahu oddílu a systemd vybere oddíl s novějšími změnami).
- Do souborů služeb byla přidána nastavení BPFProgram, které umožňuje načítání BPF programů do jádra a jejich správu s vazbou na určité služby systemd.
- Do systemd-fstab-generator a systemd-repart byla přidána možnost načítání z disků, na kterých je pouze oddíl /usr a není kořenový oddíl (kořenový oddíl bude vygenerován utilitou systemd-repart během prvního spuštění).
- V systemd-nspawn byla opce „—private-user-chown“ nahrazena univerzálnějším variantem „—private-user-ownership“, který může přijímat hodnoty „chown“ jako ekvivalent „—private-user-chown“, „off“ pro vypnutí starého nastavení, „map“ pro mapování identifikátorů uživatelů v připojených souborových systémech a „auto“ pro výběr „map“, pokud je v jádru dostupná potřebná funkčnost (5.12+) nebo návrat k rekurzivnímu volání „chown“ v opačném případě. Pomocí mapování lze přiřadit soubory jednoho uživatele na připojeném cizím oddílu jinému uživateli v aktuálním systému, což usnadňuje sdílení souborů mezi různými uživateli. V mechanismu přenosných domácích adresářů systemd-homed mapování umožní uživatelům přesouvat své domácí adresáře na externí nosiče a používat je na různých počítačích, jejichž rozložení identifikátorů uživatelů se neshoduje.
- V systemd-nspawn lze nyní v možnosti „—private-user“ použít hodnotu „identity“ pro přímé odražení identifikátorů uživatelů při nastavení uživatelského prostoru (user namespace), tj. UID 0 a UID 1 v kontejneru budou odraženy v UID 0 a UID 1 na straně hostitele, což snižuje vektory útoků (kontejner získá oprávnění procesu pouze ve svém vlastním prostoru názvu).
- Do systemd-nspawn byla přidána možnost „—bind-user“ pro předávání účtu uživatele do kontejneru, který existuje v hostitelském prostředí (do kontejneru je připojen domácí adresář, přidána položka uživatele/skupiny a provedeno mapování UID mezi kontejnerem a hostitelským prostředím).
- V systemd-ask-password a systemd-sysusers byla přidána podpora pro žádost o nastavované hesla (passwd.hashed-password. a passwd.plaintext-password.) pomocí mechanismu bezpečného přenosu citlivých dat, který se objevil ve verzi systemd 247 a používá dočasné soubory ve vyhrazeném adresáři. Standardně jsou pověření přijímána od procesu s PID1, který je získává například od správce kontejnerů, což umožňuje nastavit heslo uživatele při prvním spuštění.
- V systemd-firstboot byla přidána podpora pro používání mechanismu bezpečného přenosu citlivých dat pro žádost o různé systémové parametry, což může být použito pro inicializaci systémových nastavení při prvním spuštění obrazu kontejneru, ve kterém chybí potřebná nastavení v adresáři /etc.
- V procesu PID 1 během spuštění je zabezpečeno zobrazení současně názvu a popisu jednotky. Výstup lze změnit pomocí parametru „StatusUnitFormat=combined“ v system.conf nebo volby příkazového řádku jádra „systemd.status-unit-format=combined“
- Do utilit systemd-machine-id-setup a systemd-repart byla přidána volba „—image“ pro předání souboru s identifikátorem stroje do diskového obrazu nebo pro zvýšení velikosti diskového obrazu.
- Do konfiguračního souboru oddílů, který používá utilita systemd-repart, byl přidán parametr MakeDirectories, který lze použít k vytvoření libovolných adresářů ve vytvářené souborové soustavě před tím, než budou zohledněny v tabulce oddílů (například pro vytvoření adresářů pro body připojení v kořenovém oddílu, aby bylo možné okamžitě připojit oddíl v režimu pouze pro čtení). Pro řízení GPT-flags v vytvářených oddílech byly přidány odpovídající parametry Flags, ReadOnly a NoAuto. V parametru CopyBlocks byl implementován hodnota „auto“ pro automatický výběr aktuálního zaváděcího oddílu jako zdroje při kopírování bloků (například když je nutné přesunout vlastní kořenový oddíl na nové médium).
- Ve GPT byl implementován příznak „grow-file-system“, který je analogický možnosti připojení x-systemd.growfs a zajišťuje automatické rozšíření velikosti souborového systému až na hranice blokového zařízení, pokud je velikost souborového systému menší než oddíl. Příznak je použitelný pro souborové systémy Ext3, XFS a Btrfs a může být použit pro automaticky rozpoznávané oddíly. Tento příznak je ve výchozím nastavení povolen pro zapisovatelné oddíly automaticky vytvářené pomocí systemd-repart. Pro konfiguraci příznaku byla v systemd-repart přidána možnost GrowFileSystem.
- Ve funkci /etc/os-release byla implementována podpora nových proměnných IMAGE_VERSION a IMAGE_ID pro určení verze a identifikátoru atomicky aktualizovaných obrazů. Pro substituci uvedených hodnot v různých příkazech byly navrženy specifikátory %M a %A.
- Do nástroje portablectl byl přidán parametr „—extension“ pro aktivaci přenosných obrazů systémového rozšíření (například prostřednictvím nich lze šířit obrazy s dalšími službami, které se integrují do kořenového oddílu).
- V nástroji systemd-coredump bylo zajištěno extrakce ELF-informace build-id při vytváření core-dumpu procesu, což může být užitečné pro určení, k jakému balíčku se vztahuje selhávalý proces, pokud byly informace o názvu a verzi deb- nebo rpm-balíčků vestavěny do ELF-souborů.
- Do udev byla přidána nová databáze zařízení pro zařízení FireWire (IEEE 1394).
- V udev byla do schématu výběru názvů síťových rozhraní „net_id“ přidána tři změny, které porušují zpětnou kompatibilitu: nesprávné znaky v názvech rozhraní jsou nyní nahrazovány „_“; názvy slotů PCI hotplug pro systémy s390 jsou zpracovávány ve formě hexadecimálních čísel; je povoleno použití až 65535 vestavěných PCI zařízení (dříve byly čísla nad 16383 blokována).
- Do systemd-resolved byl do seznamu NTA (Negative Trust Anchors) přidána doména „home.arpa“, doporučená pro místní domácí sítě, ale nepoužívaná v DNSSEC.
- V parametru CPUAffinity bylo zajištěno zpracování specifikátorů „%“.
- Do souborů „.network“ byl přidán parametr ManageForeignRoutingPolicyRules, který lze použít k vyloučení zpracování ve systemd-networkd zahraničních pravidel o směrování.
- Do souborů „.network“ byl přidán parametr RequiredFamilyForOnline pro určení přítomnosti IPv4 nebo IPv6 adresy jako znaku, že je síťové rozhraní ve stavu „online“. V networkctl bylo zajištěno zobrazení stavu „online“ pro každý odkaz.
- Do souborů „.network“ byl přidán parametr OutgoingInterface pro určení výstupních rozhraní při konfiguraci síťových mostů.
- Do souborů „.network“ byl přidán parametr Group, který umožňuje nakonfigurovat skupinu Multipath pro záznamy v sekci „[NextHop]“.
- Do systemd-network-wait-online byly přidány volby „-4“ a „-6“ pro omezení čekání na připojení pouze na IPv4 nebo IPv6.
- Do nastavení DHCP serveru byl přidán parametr RelayTarget, který přepíná server do režimu DHCP Relay. Pro další konfiguraci DHCP relay jsou nabízeny volby RelayAgentCircuitId a RelayAgentRemoteId.
- Do DHCP serveru byl přidán parametr ServerAddress, který umožňuje výslovně nastavit IP adresu serveru (jinak je adresa vybírána automaticky).
- V DHCP serveru byla implementována sekce [DHCPServerStaticLease], která umožňuje nastavit statické vazby adres (DHCP leases) určením vazeb pevných IP na MAC adresy a obráceně.
- V nastavení RestrictAddressFamilies byla implementována podpora hodnoty „none“, při jejímž uvedení nebude službě umožněn přístup k socketům jakékoli rodiny adres.
- Do souborů „.network“ v sekcích [Address], [DHCPv6PrefixDelegation] a [IPv6Prefix] byla implementována podpora nastavení RouteMetric, která umožňuje uvést metriky pro prefix trasy vytvořené pro danou adresu.
- V nss-myhostname a systemd-resolved byl zajištěn syntéza DNS záznamů s adresami pro hostitele s názvem „_outbound“, pro které je vždy vrácena místní IP adresa vybraná v souladu se standardními trasami používanými pro odchozí připojení.
- Do souborů .network byla do sekce „[DHCPv4]“ přidána výchozí aktivní konfigurace RoutesToNTP, která ukládá přidání samostatné trasy přes aktuální síťové rozhraní pro přístup na adresu NTP serveru, získanou pro toto rozhraní pomocí DHCP (podobně jako u nastavení DNS to zajišťuje, že provoz k NTP serveru bude směřován přes rozhraní, přes které byla tato adresa získána).
- Byly přidány nastavení SocketBindAllow a SocketBindDeny pro správu přístupu k socketům, které jsou připojeny k aktuální službě.
- Pro unit soubory byla implementována podmínková konfigurace ConditionFirmware, která umožňuje provádět kontroly hodnotících funkce firmwaru, jako je provoz na systémech UEFI a device.tree, a také kontrolovat kompatibilitu s určitými funkcemi device-tree.
- Byla zavedena možnost ConditionOSRelease pro kontrolu polí ve souboru /etc/os-release. Při nastavování podmínek pro kontrolu hodnot polí jsou povoleny operátory „=“, „!=“, „<“, „=“, „>“.
- V nástroji hostnamectl byly příkazy typu „get-xyz“ a „set-xyz“ zbaveny předpon „get“ a „set“, například místo „hostnamectl get-hostname“ a „hostnamectl set-hostname“ lze použít příkaz „hostnamectl hostname“, kde přiřazení hodnoty se určuje uvedením dalšího argumentu („hostnamectl hostname value“). Podpora starých příkazů byla zachována pro zajištění kompatibility.
- V nástroji systemd-detect-virt a v nastavení ConditionVirtualization byla zajištěna správná identifikace prostředí Amazon EC2.
- Nastavení LogLevelMax v unit souborech se nyní aplikuje nejen na logové zprávy vytvořené službou, ale také na zprávy procesu PID 1, ve kterých je služba zmíněna.
- Byla poskytnuta možnost zahrnutí dat SBAT (UEFI Secure Boot Advanced Targeting) do souborů systemd-boot EFI PE.
- V /etc/crypttab byly implementovány nové možnosti „headless“ a „password-echo“ — první umožňuje přeskočit všechny operace související s interaktivním dotazem na hesla a PIN uživatele, zatímco druhá poskytuje možnost nastavit metodu zobrazení vstupu hesla (nic nezobrazit, zobrazit po znacích a zobrazit hvězdičky). V systemd-ask-password byla pro obdobné účely přidána volba „—echo“.
- V systemd-cryptenroll, systemd-cryptsetup a systemd-homed byla rozšířena podpora odemčení šifrovaných oddílů LUKS2 pomocí tokenů FIDO2. Byly přidány nové možnosti „—fido2-with-user-presence“, „—fido2-with-user-verification“ a „—fido2-with-client-pin“ pro řízení ověření fyzické přítomnosti uživatele, ověřování a potřebu zadání PIN kódu.
- V systemd-journal-gatewayd byly přidány možnosti „—user“, „—system“, „—merge“ a „—file“, obdobné stejným možnostem journalctl.
- Kromě přímých závislostí mezi jednotkami, nastavených pomocí parametrů OnFailure a Slice, byla přidána podpora implicitních zpětných závislostí OnFailureOf a SliceOf, které mohou být užitečné například pro určení všech jednotek patřících do slice.
- Byly přidány nové typy závislostí mezi jednotkami: OnSuccess a OnSuccessOf (opatření proti OnFailure, vyvoláno při úspěšném dokončení); PropagatesStopTo a StopPropagatedFrom (umožňují šíření události zastavení jedné jednotky na jinou jednotku); Upholds a UpheldBy (alternativa Restart).
- V nástroji systemd-ask-password se objevila možnost „—emoji“ pro správu zobrazení symbolu zámku (🔐) ve vstupním poli pro heslo.
- Byla přidána dokumentace ke struktuře stromu zdrojových textů systemd.
- Pro jednotky bylo přidáno vlastnost MemoryAvailable, která ukazuje, kolik paměti zbývá jednotce, než dosáhne limitu nastaveného pomocí parametrů MemoryMax, MemoryHigh nebo MemoryAvailable.
Zdroj: opennet.ru
