După patru luni de dezvoltare, a fost lansată versiunea managerului de sistem systemd 248. În această nouă versiune, a fost asigurată suportul pentru imaginile de extensie a directoarelor de sistem, fișierul de configurare /etc/veritytab, utilitarul systemd-cryptenroll, deblocarea LUKS2 utilizând cipuri TPM2 și token-uri FIDO2, precum și lansarea unităților în spații izolate de identificare IPC, protocolul B.A.T.M.A.N. pentru rețele mesh și backend-ul nftables pentru systemd-nspawn. A fost stabilizat systemd-oomd.
Modificări principale:
- A fost implementată conceptul de imagini de extensie a sistemului (System Extension), care pot fi utilizate pentru extinderea ierarhiei directoarelor /usr/ și /opt/, și adăugarea de fișiere suplimentare în timpul funcționării, chiar dacă directoarele specificate sunt montate în modul doar pentru citire. La montarea imaginii de extensie a sistemului, conținutul acesteia se suprapune ierarhiei /usr/ și /opt/ prin OverlayFS.
Pentru conectarea, deconectarea, vizualizarea și actualizarea imaginilor extensiilor de sistem, a fost propus un nou utilitar systemd-sysext. Pentru conectarea automată a imaginilor deja instalate în timpul încărcării, a fost adăugat serviciul systemd-sysext.service. În fișierul os-release a fost adăugat parametrul „SYSEXT_LEVEL=” pentru a defini nivelul extensiilor de sistem acceptate.
- Pentru unități, a fost implementată configurația ExtensionImages, care poate fi utilizată pentru a lega imaginile extensiei sistemului de ierarhia spațiului de nume FS a serviciilor izolate individuale.
- A fost adăugat fișierul de configurare /etc/veritytab pentru configurarea verificării datelor la nivel de bloc utilizând modulul dm-verity. Formatul fișierului este similar cu /etc/crypttab — „nume_partiție dispozitiv_date dispozitiv_hashuri hash_verifica_opțiuni”. Pentru configurarea comportamentului dm-verity pentru dispozitivul rădăcină, a fost adăugat parametrul pentru linia de comandă a nucleului systemd.verity.root_options.
- În systemd-cryptsetup a fost adăugată posibilitatea extragerii URI tokenului PKCS#11 și a cheii criptate din antetul metadatelor LUKS2 în format JSON, care permite integrarea informațiilor de deblocare a dispozitivului criptat în însuși dispozitivul fără a necesita fișiere externe.
- În systemd-cryptsetup s-a oferit suport pentru deblocarea partițiilor criptate LUKS2 utilizând cipuri TPM2 și token-uri FIDO2, pe lângă token-urile PKCS#11 deja acceptate. Încărcarea libfido2 se realizează prin dlopen(), adică existența este verificată pe loc, și nu sub forma unei dependențe fixe.
- În /etc/crypttab pentru systemd-cryptsetup au fost adăugate noi opțiuni „no-write-workqueue” și „no-read-workqueue” pentru activarea procesării sincronizate a intrărilor/ieșirilor legate de criptare și decriptare.
- Utilitarul systemd-repart a primit funcționalitatea de a activa partiții criptate cu ajutorul cipurilor TPM2, de exemplu, pentru a crea o partiție criptată /var în timpul primei încărcări.
- A fost adăugat utilitarul systemd-cryptenroll pentru asocierea tokenurilor TPM2, FIDO2 și PKCS#11 cu partițiile LUKS, precum și pentru deconectarea și vizualizarea tokenurilor, asocierea cheilor de rezervă și stabilirea unei parole pentru acces.
- A fost adăugată opțiunea PrivateIPC, care permite în fișierul unit să configureze lansarea proceselor într-un spațiu IPC izolat, cu identificatori și cozi de mesaje separate. O opțiune IPCNamespacePath a fost propusă pentru a conecta unitatea la un spațiu de identificatori IPC deja creat.
- Au fost adăugate setările ExecPaths și NoExecPaths, care permit aplicarea etichetei noexec la părți specifice ale sistemului de fișiere.
- În systemd-networkd a fost adăugată suportul pentru protocolul mesh B.A.T.M.A.N. („Better Approach To Mobile Adhoc Networking”), care permite crearea de rețele descentralizate, fiecare nod fiind conectat prin noduri vecine. Configurarea este propusă în secțiunea [BatmanAdvanced] din .netdev, parametru BatmanAdvanced în fișierele .network și un nou tip de dispozitiv „batadv”.
- A fost stabilizată implementarea mecanismului de reacție timpurie la lipsa de memorie din sistemul systemd-oomd. A fost adăugată opțiunea DefaultMemoryPressureDurationSec pentru a configura timpul de așteptare pentru eliberarea resurselor înainte de a afecta unitatea. Systemd-oomd utilizează subsistemul kernel PSI (Pressure Stall Information) și permite identificarea începutului întârzierilor cauzate de lipsa resurselor și închiderea selectivă a proceselor consumatoare de resurse în stadiul în care sistemul nu se află încă într-o stare critică și nu a început să reducă intens cache-ul și să elimine datele în partiția de schimb.
- A fost adăugată opțiunea de linie de comandă a kernel-ului — „root=tmpfs”, care permite montarea partiției rădăcină într-un depozit temporar, plasat în memoria RAM prin intermediul Tmpfs.
- Opțiunea din /etc/crypttab, care definesc fișierul cu cheia, poate acum să indice către socketuri de tip AF_UNIX și SOCK_STREAM. Cheia trebuie oferită în acest caz la conectarea la socket, ceea ce, de exemplu, poate fi utilizat pentru a crea servicii care oferă dinamic cheile.
- Numele gazdei de rezervă (fallback) pentru utilizarea de către managerul de sistem și systemd-hostnamed poate fi acum setat în două moduri: prin parametrul DEFAULT_HOSTNAME în os-release și prin variabila de mediu $SYSTEMD_DEFAULT_HOSTNAME. În systemd-hostnamed a fost implementată și procesarea specificării „localhost” în numele gazdei, precum și posibilitatea de a exporta numele gazdei, precum și proprietățile „HardwareVendor” și „HardwareModel” prin DBus.
- Secțiunea cu variabilele de mediu setate poate fi acum configurată prin noua opțiune ManagerEnvironment în system.conf sau user.conf, și nu doar prin linia de comandă a nucleului și setările fișierelor unit.
- În timpul compilării, a fost introdusă posibilitatea de a utiliza apelul de sistem fexecve() pentru a lansa procese, în loc de execve(), pentru a reduce întârzierea dintre verificarea contextului de securitate și aplicarea acestuia.
- Pentru fișierele unit au fost adăugate noi operațiuni condiționale ConditionSecurity=tpm2 și ConditionCPUFeature pentru a verifica existența dispozitivelor TPM2 și caracteristicile specifice ale CPU (de exemplu, ConditionCPUFeature=rdrand poate fi utilizat pentru a verifica suportul procesorului pentru operația RDRAND).
- Pentru nucleele disponibile a fost implementată generarea automată a tabelelor apelurilor de sistem pentru filtrele seccomp.
- A fost adăugată posibilitatea de a insera noi legături de montare (bind mounts) în spațiile existente de puncte de montare (mount namespace) ale serviciilor, fără a reporni serviciile. Inserția se efectuează prin comenzile ‘systemctl bind …’ și ‘systemctl mount-image …’.
- În setările StandardOutput și StandardError a fost adăugată suport pentru specificarea căilor în formă de „truncate:” pentru a curăța înainte de utilizare.
- În sd-bus a fost adăugată posibilitatea de a stabili o conexiune cu sesiunea unui utilizator specificat în interiorul unui container local. De exemplu, „systemctl —user -M lennart@ start quux”.
- În fișierele systemd.link în secțiunea [Link] au fost implementate următoarele parametre:
- Promiscuous — permite trecerea dispozitivului în modul „promiscuous” pentru a procesa toate pachetele de rețea, inclusiv cele neadresate actualei sesiuni;
- TransmitQueues și ReceiveQueues pentru configurarea numărului de cozi TX și RX;
- TransmitQueueLength pentru configurarea dimensiunii cozii TX; GenericSegmentOffloadMaxBytes și GenericSegmentOffloadMaxSegment pentru a stabili limite pentru utilizarea tehnologiei GRO (Generic Receive Offload).
- În fișierele systemd.network au fost adăugate noi setări:
- [Network] RouteTable pentru a alege tabelul de rutare;
- [RoutingPolicyRule] Type pentru tipul de rutare („blackhole”, „unreachable”, „prohibit”);
- [IPv6AcceptRA] RouteDenyList și RouteAllowList pentru listele anunțurilor de rute permise și interzise;
- [DHCPv6] UseAddres pentru a ignora adresa acordată de DHCP;
- [DHCPv6PrefixDelegation] ManageTemporaryAddress;
- ActivationPolicy pentru a defini politica de activitate a interfeței (a menține întotdeauna în stare UP sau DOWN sau a permite utilizatorului să schimbe stările cu comanda „ip link set dev”).
- În fișierele systemd.netdev au fost adăugate opțiunile [VLAN] Protocol, IngressQOSMaps, EgressQOSMaps și [MACVLAN] BroadcastMulticastQueueLength pentru configurarea procesării pachetelor VLAN.
- Montarea directorului /dev/ în modul noexec a fost oprită, deoarece aceasta ducea la conflicte atunci când se utiliza flagul executabil cu fișierele /dev/sgx. Pentru a reveni la comportamentul vechi poate fi utilizată setarea NoExecPaths=/dev.
- Permisiunile fișierului /dev/vsock au fost schimbate în 0o666, iar fișierele /dev/vhost-vsock și /dev/vhost-net au fost mutate în grup. kvm.
- Baza identificatorilor de hardware a fost extinsă cu dispozitive USB pentru citirea amprentei digitale, care suportă corect trecerea în modul de somn.
- systemd-resolved a adăugat suport pentru a returna răspunsuri la solicitările DNSSEC prin intermediul stub-resolver. Clienții locali pot efectua validarea DNSSEC a propriilor solicitări, iar cele externe sunt transmise nemodificate serverului DNS părinte.
- În resolved.conf a fost adăugată opțiunea CacheFromLocalhost, astfel încât systemd-resolved să utilizeze cache chiar și pentru solicitările către serverul DNS la adresa 127.0.0.1 (în mod implicit, caching-ul pentru astfel de solicitări este dezactivat pentru a exclude dublarea cache-ului).
- În systemd-resolved a fost adăugat suport pentru RFC-5001 NSID în resolverul DNS local, permițând clienților să distingă între interacțiunea cu resolverul local și altul. serverul DNS-ului.
- În utilitarul resolvectl a fost implementată capacitatea de a afișa informații despre sursa de proveniență a datelor (cache local, solicitare prin rețea, răspuns de la un handler local) și aplicarea criptării în timpul transmiterii datelor. Pentru gestionarea procesului de rezolvare a numelui au fost propuse opțiunile —cache, —synthesize, —network, —zone, —trust-anchor și —validate.
- În systemd-nspawn a fost adăugat suport pentru configurarea firewall-ului utilizând nftables, pe lângă suportul existent pentru iptables. În configurarea IPMasquerade din systemd-networkd a fost adăugată opțiunea de a utiliza un backend bazat pe nftables.
- În systemd-localed a fost adăugat support pentru apelarea locale-gen pentru generarea localelor lipsă.
- Opțiunile —pager/—no-pager/—json= au fost adăugate în diverse utilitare pentru a activa/dezactiva modul de paginare și a oferi ieșirea în format JSON. A fost adăugată opțiunea de a seta numărul de culori utilizate în terminal prin variabila de mediu SYSTEMD_COLORS („16” sau „256”).
- Întreținerea compilării cu ierarhii de directoare separate (separarea / și /usr) și suportul pentru cgroup v1 au fost declarate învechite.
- Ramura principală din Git a fost redenumită din ‘master’ în ‘main’.
Sursa: opennet.ro
