Po třech měsících vývoje je k dispozici vydání správce systému systemd 259. Hlavní změny: podpora standardní knihovny Musl, příkaz „run0 —empower“ pro provádění privilegovaných činností bez změny UID, dynamické načítání externích knihoven z libsystemd, ignorování konfiguračních souborů přidáním „.ignore“ k názvu.
Mezi změnami v novém vydání:
- Byla přidána částečná podpora standardní knihovny C Musl, kterou lze aktivovat nastavením hodnoty „musl“ v možnostech „libc“ v systému pro sestavování Meson. Vzhledem k tomu, že knihovna Musl neposkytuje funkčnost NSS, při sestavení systemd s Musl nejsou dostupné komponenty nss-systemd, nss-resolve, systemd-homed, systemd-nsresourced, systemd-userdbd, stejně jako parametr DynamicUser a možnost nesprávného spuštění systemd-nspawn. Vývojáři systemd zatím nezaručují, že podpora Musl zůstane v budoucích verzích. Rozhodnutí bude záviset na úspěšnosti vývoje vrstvy, která implementuje další funkčnost nad Musl, a také na poptávce po projektu a zprávách o specifických chybách Musl.
- Do nástroje run0, prezentovaného jako bezpečná alternativa programu sudo, který běží nad systemd-run, byla přidána možnost „—empower“, která umožňuje spustit novou relaci s zvýšenými oprávněními, aniž by došlo k přepnutí na uživatele root. Provedení privilegovaných činností bez změny UID je organizováno prostřednictvím nastavení capabilities-flagů, jako jsou CAP_SYS_ADMIN, dostatečné pro přístup k většině privilegovaných systémových volání. Spouštěné procesy jsou také umístěny do samostatné skupiny „empower“, pro kterou je zajištěn přístup k většině činností Polkit.
- Bylo rozhodnuto odstranit v následující verzi podporu skriptů služeb ve formátu System V. K odstranění jsou plánovány komponenty systemd-sysv-install, systemd-rc-local-generator a systemd-sysv-generator. V následujícím vydání je také plánováno zvýšení požadavků na minimální verze: jádro Linux 5.10, glibc 2.34, openssl 3.0.0, python 3.9.0, libxcrypt 4.4.0, util-linux 2.37, elfutils 0.177, cryptsetup 2.4.0, libseccomp 2.4.0.
- V rámci iniciativy ke snížení závislostí byla v libsystemd zavedena dynamická načítání knihoven libacl, libblkid, libseccomp, libselinux, libmount pomocí volání dlopen() v situacích, kdy jsou jejich funkce skutečně potřebné. Prostřednictvím dlopen() byla také implementována spolupráce se systémem auditu Linux a s PAM. Funkčnost, která byla dříve vyžadována prostřednictvím knihovny-arbiter libcap, byla integrována do libsystemd.
- V systemd-resolved byla přidána možnost připojit místní zpracovatele, kteří jsou vyvoláni při každém dotazu na rozlišení místních názvů. Zpracovatelé se umisťují do adresáře /run/systemd/resolve.hook/.
- Do databáze s daty o uživatelích bylo přidáno pole UUID a do utility userdbctl byla přidána volba „—uuid“ pro vyhledávání podle UUID.
- Bylo zajištěno ignorování konfiguračních souborů s názvy končícími na „.ignore“.
- V systemd-importd byla implementována integrovaná logika pro práci s TAR archivy, která využívá libarchive místo volání utilit GNU tar. Byla implementována možnost spouštění systemd-machined a systemd-importd vázaně na uživatele, a nikoli na systémové úrovni, s načítáním systémových obrazů do ~/ .local/state/machines/. Pro výběr provozního režimu byly do utility importctl přidány volby „—user“ a „—system“.
- Režim ukládání deníku byl změněn z ‘auto’ na ‘persistent’ (dříve byl režim závislý na přítomnosti adresáře /var/log/journal).
- V systemd-networkd a systemd-nspawn byla ukončena podpora pro vytváření pravidel pro překlad adres (NAT) prostřednictvím iptables/libiptc. Zůstala pouze podpora nftables.
- V systemd-boot a systemd-stub byla ukončena podpora TPM 1.2 (zůstala podpora TPM 2.0).
- V systemd-machined je ve výchozím nastavení zajištěno montování „skrytých“ diskových obrazů, jejichž název začíná tečkou, v režimu pouze pro čtení.
- Bylo rozšířeno API založené na protokolu Varlink, které nyní může být použito pro přístup k nastavením služeb. Byly implementovány IPC volání Reload() a Reexecute(). Byly přidány volání pro přístup k funkčnosti a nastavením systemd-repart, systemd-resolved a systemd-networkd.
- Byla přidána volba ExecReloadPost, která umožňuje spouštění příkazů po restartování konfigurace služby.
- Pro služby byla implementována vlastnost OOMKills a ManagedOOMKills, která obsahuje počet procesů, které byly nuceně ukončeny jádrem nebo systemd-oomd kvůli nedostatku paměti.
- Pro dočasné služby byla přidána vlastnost RootDirectoryFileDescriptor, která určuje deskriptor souboru kořenového adresáře.
- Byla přidána konfigurace UserNamespacePath, která umožňuje přiřadit jednotku k prostoru identifikátorů uživatelů (user namespace) prostřednictvím uvedení cesty v pseudo-FS /proc, analogicky jako u nastavení IPCNamespacePath a NetworkNamespacePath. V systemd-nspawn byla do sekce [Network] souborů .nspawn přidána nastavení NamespacePath pro určení síťového prostoru.
- Ve systemd-sysext a systemd-confext byla implementována podpora pro samostatné konfigurační soubory /etc/systemd/systemd-sysext.conf a /etc/systemd/systemd-confext.conf. Byla přidána možnost použití proměnné prostředí SYSTEMD_SYSEXT_OVERLAYFS_MOUNT_OPTIONS a $SYSTEMD_CONFEXT_OVERLAYFS_MOUNT_OPTIONS k nastavení parametrů montování Overlayfs.
- Ve systemd-udevd byla přidána nastavení OPTIONS=»dump-json» pro výstup stavu aktuální události ve formátu JSON. Ve funkci net_id byla implementována generace předvídatelných jmen bezdrátových síťových rozhraní na systémech s DeviceTree. Byla zajištěna generace symbolických odkazů /dev/gpio/by-id/… pro zařízení GPIO.
- Do příkazu „homectl update“ byla přidána možnost použít volbu „—recovery-key“ pro přidání záložních klíčů k existujícím uživatelským účtům (předtím bylo možné podobné klíče přidávat pouze při vytváření uživatele).
- Ve systemd-homed byly přidány volby „—prompt-shell“ a „—prompt-groups“ pro interaktivní výběr shellu a skupiny během prvního načítání pomocí služby systemd-homed-firstboot.service. V systemd-firstboot byla přidána volba „—prompt-keymap-auto“ pro dotazování na rozložení klávesnice při práci přes místní konzoli během prvního načítání.
- V systemd-boot byla přidána možnost nastavit úroveň podrobnosti protokolů prostřednictvím parametru log-level v loader.conf nebo v poli SMBIOS io.systemd.boot.loglevel.
- Ve systemd-networkd byly pro DHCP server přidány volby EmitDomain a Domain, a byl implementován zpracovatel pro určení jmen hostitelů poskytovaných prostřednictvím DHCP pomocí DNS resolveru.
- Ve systemd-run byla přidána možnost „—root-directory“ pro spuštění služby v určeném kořenovém adresáři. V systemd-run a run0 byla přidána volba „—same-root-dir“ („-R“) pro spuštění služby ve stejném kořenovém adresáři, jako je ten, kde probíhá spuštění.
- Ve systemd-modules-load byla implementována paralelizace načítání jaderných modulů.
- V systemd-integrity-setup byla přidána podpora algoritmů HMAC-SHA256, PHMAC-SHA256 a PHMAC-SHA512.
Zdroj: opennet.ru
