systemd 259: Suport Musl, putere run0 și rămas bun de la System V

Puncte cheie:
  • Suport parțial pentru Musl libc (necesită configurare manuală în Meson).
  • `run0 --empower` permite acțiuni privilegiate fără a schimba UID-ul utilizatorului.
  • S-a confirmat deprecierea scripturilor System V și cerințele sporite (Kernel 5.10+).
  • libsystemd încarcă acum biblioteci externe folosind dlopen() pentru a reduce dependențele.
  • Stocarea jurnalului este acum „persistentă” în mod implicit.

systemd

După puțin peste trei luni de dezvoltare, lansarea noua versiune a sistemd 259. Această actualizare introduce modificări la arhitectura sistemului, evidențiind deschiderea către biblioteci standard alternative, o gestionare mai riguroasă a privilegiilor și cerințe tehnice mai stricte pentru versiunile viitoare.

Una dintre cele mai discutate mișcări din acest ciclu este tranziția către o modularitate mai mare și eliminarea dependențelor moștenite, deschizând calea pentru un ecosistem Linux care se îndepărtează definitiv de standardele deceniilor trecute.

Principalele caracteristici noi ale systemd 259

Noua versiune 259 a systemd se remarcă prin faptul că este prima versiune care adaugă compatibilitate parțială cu Musl, biblioteca standard C populară în distribuțiile ușoare și mediile integrate. Această integrare Este gestionat prin opțiunea libc din sistemul de compilare Meson. Totuși, deoarece Musl nu implementează funcționalitatea NSS (Name Service Switch), mai multe componente systemd rămân dezactivate în această configurație.

Printre ceiabsențe notabile la compilarea cu Musl acestea sunt nss-systemd, nss-resolve, systemd-homed, systemd-userdbd și parametrul DynamicUserÎn plus, nu este posibil să rulezi systemd-nspawn fără privilegii sub această bibliotecă. Dezvoltatorii au avertizat că menținerea acestui suport în versiunile viitoare va depinde de cererea comunității și de stabilitatea oricăror straturi de compatibilitate suplimentare care sunt dezvoltate.

O altă caracteristică nouă a noii versiuni este în utilitarul run0, conceput ca o alternativă modernă și sigură la sudo, care a primit noua opțiune – împuternicirea. Această funcție Îți permite să te autentifici cu privilegii sporite. fără a fi nevoie să schimbați identificatorul de utilizator (UID) în root.

Pe lângă asta, în loc să delege controlul total prin schimbarea utilizatorilor, –empower utilizează indicatori de capabilitate a kernelului, cum ar fi CAP_SYS_ADMIN, să acorde permisele strict necesare să efectueze apeluri de sistem privilegiate. În plus, procesele rezultate sunt integrate într-un grup specific care le acordă acces la acțiunile Polkit, menținând o separare a privilegiilor mai robustă decât modelul tradițional sudo.

Sfârșitul unei ere: Adio System V și noilor cerințe

systemd 259 marchează începutul sfârșitului pentru compatibilitate cu Scripturi de servicii System VS-a anunțat că în următoarea versiune, componentele vechi precum systemd-sysv-generator, systemd-rc-local-generator și systemd-sysv-install vor fi eliminate definitiv.

Împreună cu această curățare a codului vechi, cerințele minime de software pentru ecosistemul systemd au fost semnificativ crescute:

  • Nucleu Linux: Versiunea minimă 5.10.
  • Glibc: 2.34.
  • OpenSSL: 3.0.0.
  • Util-linux: 2.37.
  • Altele: Python 3.9.0, cryptsetup 2.4.0 și libseccomp 2.4.0.

Modularitate și încărcare dinamică în libsystemd

Como parte a unei inițiative de reducere a dependențelor direct la pornire, libsystemd folosește acum încărcarea dinamică prin dlopen() Pentru biblioteci precum libacl, libblkid, libseccomp, libselinux și libmount, sistemul va încărca aceste biblioteci în memorie doar atunci când funcțiile lor specifice sunt necesare de către un proces, optimizând utilizarea resurselor. În plus, funcționalitatea libcap a fost integrată direct în libsystemd, simplificând lanțul de dependențe.

El Gestionarea jurnalelor și-a modificat configurația implicită: modul de stocare a jurnalului (Jurnal) schimbări de la „automat” la „persistent”, indiferent dacă directorul /var/log/journal a existat anterior sau nu.

În domeniul rețelelor și virtualizării:

  • systemd-networkd și systemd-nspawn: Suportul pentru regulile NAT folosind iptables a fost eliminat, nftables rămânând singura opțiune compatibilă.
  • rezolvat de systemd: Acum permite utilizarea hook-urilor locale (hooks) în /run/systemd/resolve.hook/ pentru a interveni în cererile de rezoluție a numelui.
  • systemd-importd: Logica pentru lucrul cu fișiere TAR a fost integrată nativ. În plus, atât `importd`, cât și `machined` pot fi acum rulate la nivel de utilizator, permițând gestionarea imaginilor în directorul local al utilizatorului (`~/.local/state/machines/`).

Alte inovații

API-ul bazat pe protocol Varlink a primit îmbunătățiri pentru a permite accesul la setările serviciului și pentru a efectua apeluri IPC cum ar fi Reload() și Reexecute(). Pentru administratorii de sistem, includerea proprietății OOMKills în servicii va fi foarte utilă, deoarece le va permite să urmărească de câte ori un proces a fost terminat din cauza lipsei de memorie direct din instrumentele systemd.

În cele din urmă, procesul de pornire a sistemului devine mai modern odată cu eliminarea suportului pentru TPM 1.2 în systemd-boot, concentrându-se toate eforturile de securitate pe standardul TPM 2.0.

Dacă sunteți interesat să aflați mai multe despre el, puteți consulta detalii în următorul link.