După trei luni de dezvoltare, este disponibilă versiunea managerului de sistem systemd 259. Schimbările cheie: suport pentru biblioteca standard Musl, comanda „run0 —empower” pentru executarea acțiunilor privilegiate fără schimbarea UID, încărcarea dinamică a bibliotecilor externe folosite în libsystemd, ignorarea fișierelor de configurare prin adăugarea „.ignore” la nume.
Printre modificările din noua versiune:
- A fost adăugat suport parțial pentru biblioteca C standard Musl, activat prin setarea valorii „musl” în opțiunea „libc” din sistemul de compilare Meson. Deoarece biblioteca Musl nu oferă funcționalitate NSS, componentele nss-systemd, nss-resolve, systemd-homed, systemd-nsresourced, systemd-userdbd nu sunt disponibile la compilarea systemd cu Musl, precum și parametrii DynamicUser și posibilitatea de a rula systemd-nspawn fără privilegii. Dezvoltatorii systemd nu garantează deocamdată că suportul pentru Musl va rămâne în versiunile viitoare. Decizia va depinde de succesul dezvoltării unei straturi care implementează funcționalitate suplimentară deasupra Musl, precum și de cererea pentru proiect și rapoartele de erori specifice Musl.
- Utilitarul run0, prezentat ca o alternativă sigură la programul sudo, care funcționează pe baza systemd-run, a adăugat opțiunea „—empower”, permițând lansarea unei noi sesiuni cu privilegii ridicate, fără a comuta la utilizatorul root. Execuția acțiunilor privilegiate fără schimbarea UID este organizată prin setarea flagurilor capabilities, cum ar fi CAP_SYS_ADMIN, suficiente pentru a accesa majoritatea apelurilor de sistem privilegiate. Procesele lansate sunt de asemenea plasate într-un grup separat „empower”, pentru care s-a oferit acces la majoritatea acțiunilor Polkit.
- S-a decis eliminarea în următoarea versiune a suportului pentru scripturile serviciilor în format System V. Componentele systemd-sysv-install, systemd-rc-local-generator și systemd-sysv-generator sunt vizate pentru eliminare. În următoarea versiune, se preconizează, de asemenea, creșterea cerințelor pentru versiunile minime: kernel 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.
- În cadrul inițiativei de reducere a dependențelor, libsystemd a implementat încărcarea dinamică a bibliotecilor libacl, libblkid, libseccomp, libselinux și libmount prin apelul dlopen() în situațiile în care funcțiile lor sunt cu adevărat necesare. Prin dlopen() a fost realizată și integrarea cu subsistemul de audit Linux și cu PAM. Funcționalitatea, care anterior era apelată prin biblioteca intermediară libcap, a fost integrată în libsystemd.
- În systemd-resolved a fost adăugată posibilitatea de a atașa handleri locali, care sunt apelați la fiecare solicitare de rezolvare a numelui local. Handlerii sunt plasați în directorul /run/systemd/resolve.hook/
- În baza de date cu informații despre utilizatori a fost adăugat un câmp UUID, iar în utilitarul userdbctl a fost adăugată opțiunea „—uuid” pentru căutarea după UUID.
- A fost asigurată ignorarea fișierelor de configurare cu nume care se termină în „.ignore”.
- În systemd-importd a fost implementată o logică integrată pentru lucrul cu arhive TAR, utilizând libarchive în locul apelului utilitarului GNU tar. A fost realizată posibilitatea de a rula systemd-machined și systemd-importd la nivel de utilizator, nu la nivel de sistem, cu încărcarea imaginilor de sistem în ~/.local/state/machines/. Opțiunile „—user” și „—system” au fost adăugate utilitarului importctl pentru a alege modul de operare.
- Modul de stocare a jurnalelor a fost modificat implicit de la ‘auto’ la ‘persistent’ (anterior modul depindea de existența directorului /var/log/journal).
- În systemd-networkd și systemd-nspawn a fost oprită suportul pentru crearea regulilor de traducere a adreselor (NAT) prin iptables/libiptc. Suportul pentru nftables a fost păstrat.
- În systemd-boot și systemd-stub a fost oprită suportul pentru TPM 1.2 (suportul pentru TPM 2.0 a fost păstrat).
- În systemd-machined, implicit este asigurat montajul imaginilor de disc „ascunse”, ale căror nume încep cu punct, în mod doar citire.
- API-ul bazat pe protocolul Varlink a fost extins, fiind acum aplicabil pentru accesarea setărilor serviciilor. Au fost implementate apelurile IPC Reload() și Reexecute(). A fost adăugat apeluri pentru accesul la funcționalitatea și setările systemd-repart, systemd-resolved și systemd-networkd.
- A fost adăugată setarea ExecReloadPost, care permite organizarea execrării comenzilor după reîncărcarea configurației serviciului.
- Pentru servicii au fost implementate proprietățile OOMKills și ManagedOOMKills, care conțin numărul proceselor terminate forțat de nucleu sau systemd-oomd din cauza lipsei de memorie.
- Pentru serviciile temporare a fost adăugată proprietatea RootDirectoryFileDescriptor, care definește descriptorul de fișier pentru directorul rădăcină.
- A fost adăugată setarea UserNamespacePath, care permite asocierea unității cu spațiul de identificare a utilizatorilor (user namespace) prin specificarea unui path în pseudo-FS /proc, similar cu setările IPCNamespacePath și NetworkNamespacePath. În systemd-nspawn, pentru a specifica spațiul de nume de rețea, a fost adăugată setarea NamespacePath în secțiunea [Network] din fișierele .nspawn.
- În systemd-sysext și systemd-confext a fost implementat suportul pentru fișierele de configurare separate /etc/systemd/systemd-sysext.conf și /etc/systemd/systemd-confext.conf. S-a adăugat posibilitatea de a utiliza variabila de mediu SYSTEMD_SYSEXT_OVERLAYFS_MOUNT_OPTIONS și $SYSTEMD_CONFEXT_OVERLAYFS_MOUNT_OPTIONS pentru configurarea opțiunilor de montare Overlayfs.
- În systemd-udevd a fost adăugată setarea OPTIONS="dump-json" pentru a reda starea evenimentului curent în format JSON. În funcția net_id a fost implementată generarea de nume predictibile pentru interfețele de rețea wireless pe sistemele cu DeviceTree. S-a asigurat generarea de linkuri simbolice /dev/gpio/by-id/... pentru dispozitivele GPIO.
- Comenzii „homectl update” i s-a adăugat posibilitatea de a folosi opțiunea „--recovery-key” pentru a adăuga chei de rezervă la contul de utilizator existent (în trecut, asemenea chei puteau fi adăugate doar în timpul creării utilizatorului).
- În systemd-homed au fost adăugate opțiunile „--prompt-shell” și „--prompt-groups” pentru selectarea interactivă a shell-ului și a grupului în timpul primei încărcări folosind serviciul systemd-homed-firstboot.service. În systemd-firstboot s-a adăugat opțiunea „--prompt-keymap-auto” pentru solicitarea dispunerii tastaturii în timpul primei încărcări prin consola locală.
- În systemd-boot a fost adăugată posibilitatea de a seta nivelul de detaliu al log-urilor prin parametrul log-level în loader.conf sau în câmpul SMBIOS io.systemd.boot.loglevel.
- În systemd-networkd pentru serverul DHCP s-au adăugat opțiunile EmitDomain și Domain, iar de asemenea a fost implementat un handler pentru determinarea numelui gazdelor transmise prin DHCP prin rezolvarea DNS.
- În systemd-run a fost adăugată opțiunea „--root-directory” pentru a rula un serviciu în directorul rădăcină specificat. În systemd-run și run0 a fost adăugată opțiunea „--same-root-dir” („-R”) pentru a rula serviciul în același director rădăcină ca și cel al apelantului.
- În systemd-modules-load a fost realizată paralelizarea încărcării modulelor kernel.
- În systemd-integrity-setup a fost adăugat suportul pentru algoritmii HMAC-SHA256, PHMAC-SHA256 și PHMAC-SHA512.
Sursa: opennet.ro
