Po pěti měsících vývoje vydání systémového správce . Mezi novinkami lze zmínit integraci zpracovatele nedostatku paměti v systému do PID 1, podporu připojení vlastních programech BPF pro filtrování provozu jednotek, řadu nových možností pro systemd-networkd, režim sledování propustnosti síťových rozhraní, zavedení 22bitových čísel PID místo 16bitových ve 64bitových systémech jako výchozí, přechod na jednotnou hierarchii cgroups a zahrnutí do systemd-network-generator.
Hlavní změny:
- Do zpracovatele PID 1 byla přidána detekce signálů generovaných jádrem o nedostatku paměti (Out-Of-Memory, OOM) pro převedení jednotek, které dosáhly limitu ve využití paměti, do speciálního stavu s volitelnou možností jejich vynuceného ukončení nebo zastavení;
- Pro unit-soubory byly implementovány nové parametry IPIngressFilterPath a
IPEgressFilterPath, které umožňují připojit BPF programy s libovolnými zpracovatelskými funkcemi pro filtrování příchozích a odchozích IP paketů generovaných procesy souvisejícími s danou jednotkou. Navrhované možnosti umožňují vytvářet jakési firewall pro služby systemd. jednoduchého síťového filtr na bázi BPF; - Do utility systemctl byla přidána příkaz „clean“ pro odstranění cache, runtime-souborů, informací o stavu a adresářů z logy;
- Do systemd-networkd byla přidána podpora síťových rozhraní MACsec, nlmon, IPVTAP a Xfrm;
- V systemd-networkd byla implementována oddělená konfigurace zásobníků DHCPv4 a DHCPv6 prostřednictvím sekcí „[DHCPv4]“ a „[DHCPv6]“ v konfiguračním souboru. Přidána možnost RoutesToDNS pro přidání samostatné trasy k DNS serveru uvedenému v parametrech získaných od DHCP serveru (aby provoz na DNS byl odesílán stejným linkem jako hlavní trasa, získaná od DHCP). Pro DHCPv4 byly přidány nové možnosti: MaxAttempts — maximální počet požadavků na získání adresy, BlackList — černá listina DHCP serverů, SendRelease — povolení odeslání zpráv DHCP RELEASE při ukončení relace;
- Do utility systemd-analyze byly přidány nové příkazy:
- „systemd-analyze timestamp“ — analýza a převod času;
- „systemd-analyze timespan“ — analýza a převod časových intervalů;
- „systemd-analyze condition“ — analýza a testování výrazů ConditionXYZ;
- „systemd-analyze exit-status“ — analýza a převod kódů ukončení ze čísel na názvy a naopak;
- Příkaz «systemd-analyze unit-files» vypíše seznam všech cest k jednotkovým souborům a aliasům jednotek.
- Možnosti SuccessExitStatus, RestartPreventExitStatus a
RestartForceExitStatus nyní podporují nejen číselné kódy návratu, ale i jejich textové identifikátory (například „DATAERR“). Seznam vazby kódů na identifikátory lze zobrazit pomocí příkazu „systemd-analyze exit-status“; - Do nástroje networkctl byla přidána příkaz „delete“ pro odstranění virtuálních síťových zařízení a také volba „—stats“ pro zobrazení statistik zařízení;
- Do souboru networkd.conf byly přidány možnosti SpeedMeter a SpeedMeterIntervalSec pro pravidelné měření propustnosti síťových rozhraní. Statistika získaná z měření je k dispozici ve výstupu příkazu ‘networkctl status’;
- Byl přidán nový nástroj systemd-network-generator pro generování souborů
.network, .netdev a .link na základě nastavení IP předávaných při spuštění prostřednictvím příkazového řádku jádra Linux ve formátu nastavení Dracut; - Hodnota sysctl „kernel.pid_max“ na 64bitových systémech je nyní ve výchozím nastavení nastavena na 4194304 (22bitové PID namísto 16bitových), což snižuje pravděpodobnost kolizí při přiřazování PID, zvyšuje limit pro počet současně spuštěných procesů a pozitivně se odráží na bezpečnosti. Změna může potenciálně vést k problémům s kompatibilitou, ale v praxi o takových problémech zatím nebyly hlášeny;
- Ve výchozím nastavení došlo během sestavení k přechodu na jednotnou hierarchii cgroups-v2 („-Ddefault-hierarchy=unified“). Dříve byla ve výchozím nastavení nastavena hybridní varianta („-Ddefault-hierarchy=hybrid“);
- Bylo změněno chování filtru systémových volání (SystemCallFilter), který v případě pokusu o zakázané systémové volání nyní ukončuje celý proces, nikoli jednotlivé vláknové, protože ukončení jednotlivých vláken mohlo vést k nepředvídatelným problémům. Změna platí pouze při přítomnosti jádra Linux 4.14+ a libseccomp 2.4.0+;
- Nepřiděleným programům byla umožněna možnost odesílat pakety ICMP Echo (ping) prostřednictvím nastavení sysctl „net.ipv4.ping_group_range“ pro celý rozsah skupin (pro všechny procesy);
- Pro urychlení procesu sestavení je ve výchozím nastavení zastavena generace man-stránek (pro sestavení úplné dokumentace je nutné použít možnost „-Dman=true“ nebo „-Dhtml=true“ pro stránky ve formátu html). Pro usnadnění prohlížení dokumentace jsou součástí dva skripty build/man/man a build/man/html pro generování a náhled požadovaných příruček;
- Pro zpracování doménových jmen se znaky národních alfabetů je ve výchozím nastavení použita knihovna libidn2 (pro navrácení libidn je třeba použít možnost „-Dlibidn=true“);
- Byla zastavena podpora spustitelného souboru /usr/sbin/halt.local, který poskytoval funkčnost, která se v distribucích nedostatečně rozšířila. Pro organizaci spuštění příkazů při vypnutí se doporučuje použít skripty v /usr/lib/systemd/system-shutdown/ nebo definovat novou jednotku závislou na final.target;
- V poslední fázi vypínání systemd nyní automaticky zvyšuje úroveň logování v sysctl „kernel.printk“, což řeší problém s zobrazováním v logu událostí, které nastaly v pozdních fázích vypínání, kdy již byly standardní démony logování ukončeny;
- V journalctl a dalších nástrojích pro zobrazování logů byla zajištěna zvýraznění varování žlutou barvou a záznamů auditu modrou barvou pro jejich vizuální odlišení od ostatních;
- V proměnné prostředí $PATH je cesta k bin/ nyní dříve než cesta k sbin/, tj. v případě shodných názvů spustitelných souborů v obou adresářích bude proveden soubor z bin/;
- V systemd-logind byl zajištěn volání SetBrightness() pro bezpečné změny jasu obrazovky pro každou relaci;
- Do příkazu „udevadm info“ byla přidána přepínač „—wait-for-initialization“ pro čekání na dokončení inicializace zařízení;
- V průběhu zavádění systému nyní zpracovatel PID 1 zobrazuje na obrazovce názvy jednotek, místo řetězce s jejich popisem. Pro vrácení předchozího chování lze použít možnost StatusUnitFormat v /etc/systemd/system.conf nebo parametr jádra systemd.status_unit_format;
- V /etc/systemd/system.conf pro watchdog v PID 1 byla přidána možnost KExecWatchdogSec, která určuje časový limit pro restart pomocí kexec. Staré nastavení
ShutdownWatchdogSec byla přejmenována na RebootWatchdogSec a určuje časový limit pro realizaci během vypínání nebo běžného restartu; - Byla přidána nová možnost pro služby , která umožňuje zadat příkazy, které budou provedeny před ExecStartPre. Na základě návratového kódu chyby příkazu se rozhoduje o dalším vykonávání jednotky — pokud je návratový kód 0, pokračuje se ve spuštění jednotky, pokud je od 1 do 254 končí tiše bez označení chyby, pokud je 255 — končí s označením chyby;
- Byla přidána nová služba systemd-pstore.service pro extrakci dat ze sys/fs/pstore/ a jejich ukládání do /var/lib/pstore pro další analýzu;
- Do nástroje timedatectl byly přidány nové příkazy pro nastavení parametrů NTP pro systemd-timesyncd vázané na síťové rozhraní;
- V příkazu „localectl list-locales“ byl ukončen výpis lokalizací, které nejsou v UTF-8;
- Bylo zajištěno ignorování chyb při přiřazení proměnných ve souborech sysctl.d/, pokud název proměnné začíná znakem „-“;
- SA-Frontend nyní plně zodpovídá za inicializaci zásobníku entropie generátoru pseudonáhodných čísel jádra Linuxu. Služby, které vyžadují správně inicializovaný /dev/urandom, musí být spuštěny po systemd-random-seed.service;
- V zaváděči systemd-boot byla zajištěna volitelná možnost podpory s náhodnou sekvencí v oddílu EFI System Partition (ESP);
- Do nástroje bootctl byly přidány nové příkazy „bootctl random-seed“ pro generování seed-filu v ESP a „bootctl is-installed“ pro kontrolu instalace zaváděče systemd-boot. V bootctl byla také zajištěna výstup varování o nesprávné konfiguraci zaváděcích záznamů (například když je obraz jádra smazán, ale záznam pro jeho zavedení je zachován);
- Byl zajištěn automatický výběr swap oddílu při přechodu systému do spánkového režimu. Oddíl je vybírán na základě nastavené priority, a v případě shody priorit — podle velikosti volného prostoru;
- Do /etc/crypttab byla přidána volba keyfile-timeout pro stanovení doby čekání na zařízení s klíčem pro šifrování před výzvou k zadání hesla pro přístup k zašifrovanému oddílu;
- Byla přidána volba IOWeight pro nastavení váhy vstupu/výstupu pro plánovač BFQ;
- V systemd-resolved byl přidán přísný (‘strict’) režim provozu pro DNS-over-TLS a implementována možnost ukládání do mezipaměti pouze pozitivních odpovědí DNS („Cache no-negative“ v resolved.conf);
- Pro VXLAN byla do systemd-networkd přidána volba GenericProtocolExtension pro aktivaci rozšíření protokolu VXLAN. Pro VXLAN a GENEVE byla přidána volba IPDoNotFragment pro nastavení příznaku zákazu fragmentace pro odchozí pakety;
- V systemd-networkd byla v sekci „[Route]“ přidána volba FastOpenNoCookie pro povolení mechanismu rychlého otevření TCP spojení (TFO — TCP Fast Open, RFC 7413) vázaného na jednotlivé trasy, a také volba TTLPropagate pro nastavení TTL LSP (Label Switched Path). V volbě „Type“ byla zajištěna podpora režimů směrování local, broadcast, anycast, multicast, any a xresolve;
- V systemd-networkd byla v sekci „[Network]“ navržena volba DefaultRouteOnDevice pro automatické nastavení výchozí trasy pro dané síťové zařízení;
- V systemd-networkd byly pro síťové mosty přidány volby ProxyARP a
ProxyARPWifi pro nastavení chování proxy ARP, MulticastRouter pro zadávání parametrů směrování v režimu multicast, MulticastIGMPVersion pro změnu verze IGMP (Internet Group Management Protocol) pro multicast; - V systemd-networkd byly pro tunely FooOverUDP přidány volby Local, Peer a PeerPort pro nastavení IP adres lokální a vzdálené strany, jakož i čísla síťového portu. Pro tunely TUN byla přidána volba VnetHeader pro podporu GSO (Generic Segment Offload);
- V systemd-networkd ve souborech .network a .link v sekci [Match] byla přidána volba Property, která umožňuje identifikaci zařízení podle specifických vlastností v udev;
- V systemd-networkd byla pro tunely přidána volba AssignToLoopback, která řídí vazbu konce tunelu na zařízení loopback „lo“;
- V systemd-networkd byla automatizována aktivace IPv6 zásobníku v případě, že je zablokováno přes sysctl disable_ipv6 — IPv6 se aktivuje, pokud jsou pro síťové rozhraní nastaveny parametry IPv6 (statické nebo DHCPv6), v opačném případě již nastavená hodnota sysctl není změněna;
- Ve souborech .network byla nastavení CriticalConnection nahrazena volbou KeepConfiguration, která poskytuje více nástrojů pro definování situací („yes“, „static“, „dhcp-on-stop“, „dhcp“), ve kterých by systemd-networkd neměl zasahovat do již existujících připojení při spuštění;
- Byla odstraněna zranitelnost , způsobená absencí kontroly přístupu k rozhraní D-Bus systemd-resolved. Problém umožňuje neoprávněnému uživateli vykonávat operace, které jsou dostupné pouze administrátorům, například změnit nastavení DNS a směrovat DNS dotazy na podvržený server;
- Byla odstraněna zranitelnost , spojená s nezapnutím pam_systemd pro neinteraktivní relace, což umožňuje zorganizovat spoofing aktivní relace.
Zdroj: opennet.ru
