După jumătate de an de dezvoltare, a fost lansată versiunea 257 a managerului de sistem systemd. Schimbările cheie includ: noi utilitare systemd-sbsign și systemd-keyutil, suport pentru MPTCP la activarea prin socket, suport inițial pentru compilarea cu biblioteca C Musl, utilitarul updatectl pentru gestionarea instalării actualizărilor prin systemd-sysupdate, posibilitatea de a porni servicii în spații de numere PID separate, protecția împotriva ștergerii accidentale a fișierelor atunci când se folosește „systemd-tmpfiles —purge”.
Printre modificările din noua versiune:
- A fost adăugată o nouă utilitară systemd-sbsign pentru semnarea digitală a fișierelor executabile în format PE (Portable Executable), destinate utilizării la încărcarea în modul EFI Secure Boot. Pentru generarea semnăturii pot fi folosite motoare și furnizori furnizați de biblioteca OpenSSL. Systemd-sbsign poate fi folosit ca alternativă la aplicațiile sbsigntool și pesign în utilitarul ukify pentru generarea imaginilor universale ale kernelului UKI (Unified Kernel Image), care combină într-un singur fișier încărcătorul pentru UEFI (UEFI boot stub), imaginea kernelului Linux și mediul de sistem initrd încărcabil în memorie.
- A fost adăugată o nouă utilitară systemd-keyutil, care implementează diverse operațiuni asupra cheilor private și certificatelor X.509. De exemplu, systemd-keyutil poate fi folosit pentru verificarea posibilității de încărcare a cheilor private și certificatelor, precum și pentru extragerea cheilor publice din acestea în format PEM.
- În unitățile „.socket”, folosite pentru asigurarea funcționării mecanismului de activare prin socket (pornind procesele la încercarea de a stabili o conexiune de rețea), a fost implementat suport pentru MPTCP (Multipath TCP), o extensie a protocolului TCP pentru organizarea funcționării conexiunii TCP cu livrarea pachetelor simultan pe mai multe rute prin diferite interfețe de rețea, legate de diferite. adrese IP..
- Sunt incluse modificările necesare pentru compilarea cu biblioteca standard C Musl.
- În diversele componente systemd care afișează indicatoare de progres al operațiunilor (de exemplu, systemd-repart, systemd-sysupdate/updatectl și importctl), a fost adăugată posibilitatea de a utiliza secvențe ANSI pentru animarea afișării progresului. Aceste secvențe sunt suportate în prezent doar în Windows Terminal (se estimează că, în timp, această capacitate va fi transferată și în emulatoarele de terminal pentru Linux).
- Funcționalitățile componentei systemd-sysupdate, utilizată pentru determinarea automată, descărcarea și instalarea actualizărilor utilizând un mecanism atomic de schimbare a partițiilor, fișierelor sau directoarelor, au fost extinse (se utilizează două partiții/fișiere/directoare independente, unul dintre acestea conținând resursa curentă activă, iar celălalt fiind utilizat pentru instalarea actualizării curente, după care partițiile/fișiere/directoarele sunt schimbate între ele). În practică, systemd-sysupdate este deja utilizat în GNOME OS.
În plus față de procesul systemd-sysupdate, a fost adăugat un serviciu omonim, care permite utilizarea D-Bus pentru gestionarea actualizării sistemului de către un utilizator fără privilegii. Pentru gestionarea serviciului, a fost inclusă o nouă utilitate updatectl. În systemd-sysupdate a fost adăugat un flag „—offline” pentru a interzice descărcarea de metadate prin rețea, utilizând doar versiunile deja descărcate în sistemul local. Pentru toate comenzile a fost adăugată suportul pentru ieșirea în format JSON.
- Pentru servicii a fost implementată o nouă proprietate „PrivatePIDs”, prin care se pot organiza procesele cu PID 1 (procesul init) într-un spațiu separat de identificare a proceselor (PID namespace). În mediu creat pentru procesul care urmează a fi pornit, vor fi vizibile doar procesele din spațiul de nume creat pentru acesta.
- Regulile udev au fost extinse cu suport pentru potriviri fără a ține cont de majuscule (de exemplu, ‘ATTR{foo}==i"abcd"‘). Prin intermediul udev s-a realizat accesul utilizatorilor locali fără privilegii („uaccess”) la dispozitivul /dev/udmabuf, necesar pentru utilizarea camerelor IPMI prin libcamera. În udev s-a realizat recunoașterea diferitelor portofele hardware criptografice cu interfață USB și s-a stabilit proprietatea ID_HARDWARE_WALLET pentru acestea, permițând aplicarea modului „uaccess” pentru accesul utilizatorilor fără privilegii.
- Fișierului /etc/os-release i-au fost adăugate noi câmpuri RELEASE_TYPE, EXPERIMENT și EXPERIMENT_URL. „RELEASE_TYPE” poate avea valorile „experimental”, „developare”, „stabil” și „lts” pentru a separa versiunile stabile de cele aflate în dezvoltare și construcțiile experimentale. Parametrii EXPERIMENT și EXPERIMENT_URL sunt destinați să explice natura construcției experimentale.
- În utilitarul run0, dezvoltat ca o alternativă la programul sudo, a fost adăugată opțiunea „—shell-prompt-prefix”, care definește șirul prefixului promptului pentru shell. Implicit, ca prefix, este afișat emojiul „🦸” pentru a evidenția vizual sesiunea cu privilegii elevate.
- În systemd-tmpfiles, pentru a evita ștergerea accidentală a unor fișiere greșite, opțiunea „—purge” se aplică acum doar setărilor din tmpfiles.d/ pentru care este explicit stabilit un flag „$”. De asemenea, pentru a efectua operația „—purge”, este necesară specificarea a cel puțin unui fișier din directorul tmpfiles.d/. Pentru liniile cu tipul ‘L’, a fost adăugat un flag ‘?’, care, dacă este specificat, va crea un link simbolic doar în prezența fișierului țintă.
- În managerul de servicii și utilitare conexe, a continuat traducerea codului de urmărire a proceselor folosind PIDFD în loc de PID. Identificatorul PIDFD este asociat cu un proces specific și nu se schimbă, în timp ce PID-ul poate fi legat de un alt proces după finalizarea procesului curent asociat cu acest PID.
- Pentru servicii, a fost implementată posibilitatea de a specifica în parametrul „RestartMode” valoarea „debug”, în care repornirea unui serviciu eșuat va fi realizată cu includerea modului de depanare (se setează variabila de mediu DEBUG_INVOCATION=1), iar valoarea LogLevelMax va fi temporar crescută la nivelul de depanare.
- În handler-ul PID 1, s-a implementat posibilitatea de a încărca reguli pentru modulul LSM IPE (Integrity Policy Enforcement), care definesc politica de asigurare a integrității pentru întregul sistem (ce operațiuni sunt permise și cum trebuie verificate autenticitățile componentelor).
- În fișierele unit „.timer” a fost adăugată opțiunea „DeferReactivation”, care permite să se omită activarea programată dacă serviciul nu a finalizat încă execuția de la ultima activare.
- În parametrul fișierelor unit PrivateUsers, a fost implementată posibilitatea de a specifica valoarea „identity” pentru a activa maparea identificatorilor utilizatorilor la crearea unui spațiu de nume (user namespace).
- În parametrul fișierelor unit PrivateTmp a fost adăugată suportul pentru valoarea „disconnected”, în care pentru directoarele /tmp/ și /var/tmp/ vor fi utilizate instanțe separate de tmpfs.
- Parametrul unit al fișierelor ProtectControlGroups a fost extins cu suport pentru noile moduri „private” și „strict”, în care se creează un nou spațiu de nume cgroup (cgroup namespace) și se montează cgroupfs. Când opțiunea „strict” este activată, montarea cgroupfs se face în modul doar pentru citire.
- Parametrii StateDirectory, RuntimeDirectory, CacheDirectory, LogsDirectory și ConfigurationDirectory oferă acum posibilitatea de a folosi flag-ul ‘:ro’ pentru a restricționa accesul la directoarele corespunzătoare în modul doar pentru citire.
- Parametrul din linia de comandă a nucleului „systemd.machine_id” a fost extins cu suport pentru valoarea „firmware”, în care identificatorul sistemului (machine ID) va fi calculat pe baza UUID-ului din SMBIOS/DeviceTree.
- A fost adăugat suport pentru apelurile de sistem mseal(), listmount() și statmount(), care au apărut în versiunile recente ale nucleului Linux.
- Utilitarele resolvectl, timedatectl și systemd-inhibit au fost extinse cu suport pentru autorizare interactivă prin intermediul Polkit.
- Utilitarul systemctl a primit posibilitatea de a folosi flag-ul „—now” în comanda „reenable”.
- Utilitarului systemd-mount i s-a adăugat opțiunea „—json” pentru a produce output în format JSON (de exemplu, dacă este specificat împreună cu „—list-devices”, va genera o listă a dispozitivelor în format JSON).
- Utilitarului „localectl” i s-au adăugat opțiunile „-l” și „—full” pentru a dezactiva trunchierea liniilor lungi la output.
- În sleep.conf a fost adăugată opțiunea HibernateOnACPower care permite amânarea trecerii în modul de așteptare până când dispozitivul este deconectat de la sursa de alimentare principală.
- În systemd-sysusers, în liniile „u” a fost adăugat suport pentru modificatorul „!”, care permite crearea de conturi de utilizator complet blocate (anterior, blocarea unui utilizator se realiza prin setarea unei parole incorecte, ceea ce, de exemplu, nu determina blocarea în cazul autentificării prin chei SSH).
- În systemd-coredump a fost adăugată opțiunea „EnterNamespace”, oferind acces la spațiul de montare al oricăror procese care au fost terminate în mod neașteptat pentru a obține simbolurile de depanare ale acestora. Practic, opțiunea poate fi utilă pentru organizarea unei trasee inverse (backtrace) a fișierelor core generate de aplicații care rulează în containere izolate.
- În systemd-logind, a fost activată procesarea combinației Ctrl-Alt-Shift-Esc pentru a trimite componentelor mediului utilizator semnalul org.freedesktop.login1.SecureAttentionKey pentru a solicita afișarea dialogului de autentificare sigură. A fost implementată setarea „DesignatedMaintenanceTime” pentru programarea automată a opririi la un anumit moment. În mod similar cu suportul pentru dispozitive DRM și evdev, a fost adăugat suportul pentru configurarea accesului utilizatorilor neprivilegiați la dispozitivele hidraw (controlere de jocuri și joystick-uri).
- În systemd-machined, a fost adăugat suportul pentru înregistrarea clienților neprivilegiați mașini virtuale și a containerelor. Accesul la funcționalitatea systemd-machined este disponibil prin API Varlink, în plus față de D-Bus.
- În fișierul de configurare networkd.conf a fost adăugată o nouă secțiune „[IPv6AddressLabel]” pentru configurarea etichetelor și prefixelor pentru adresele IPv6
- Comenzii ‘networkctl edit’ i s-a adăugat opțiunea «—stdin» pentru a obține conținutul fișierului din fluxul standard. Comenzile ‘networkctl edit’ și ‘networkctl cat’ au fost adăugate suportul pentru editarea și vizualizarea fișierelor .netdev prin specificarea interfeței de rețea. A fost adăugată opțiunea «—no-ask-password» pentru a dezactiva autorizarea interactivă.
- Utilităților ukify, bootctl, systemd-keyutil, systemd-measure, systemd-repart și systemd-sbsign le-a fost adăugată opțiunea «—certificate-source» pentru a încărca certificatul X.509 prin furnizorul OpenSSL în loc de încărcarea directă din fișier.
- În systemd-boot, a fost adăugată posibilitatea de a utiliza butoanele de volum pentru a naviga sus și jos în meniul de încărcare, ceea ce poate fi util pe dispozitive precum smartphone-uri. Utilității bootctl i s-a adăugat suportul pentru instalarea bazei de date UEFI Secure Boot în formatul ESL(db/dbx/…) pentru systemd-boot.
- În journalctl, a fost adăugată opțiunea «—list-invocation» pentru a afișa lista invocărilor unităților și opțiunea «—invocation» («-I») pentru a arăta jurnalele legate doar de o anumită invocare.
- În systemd-nspawn a fost adăugat suportul pentru utilizarea neprivilegiată a FUSE (Filesystem in Userspace) în containe. Utilizând opțiunea «—bind-user», este asigurat redirecționarea în container a cheilor SSH ale utilizatorului, necesare pentru accesul prin SSH.
- În libsystemd a fost adăugată o nouă interfață de programare „sd-json”, care utilizează formatul JSON, precum și interfața „sd-varlink”, care folosește IPC Varlink.
- Versiunea de bază recomandată a nucleului a fost ridicată la versiunea 5.4, lansată în 2019. Anul viitor, se preconizează că suportul pentru nucleele mai vechi va fi oprit, iar versiunea 5.4 va fi marcată ca versiunea minim suportată.
- Suportul pentru cgroups v1 a fost declarat învechit și este dezactivat în mod implicit (pentru a-l activa în linia de comandă a nucleului, trebuie specificat SYSTEMD_CGROUP_ENABLE_LEGACY_FORCE=1, pe lângă activarea în setările systemd). În următoarea versiune systemd 258, se preconizează eliminarea completă a codului asociat cu cgroups v1. De asemenea, în versiunea systemd 258, este planificată eliminarea suportului pentru scripturile de servicii System V.
Sursa: opennet.ro
