După două ani și jumătate de dezvoltare, a fost publicat noua ramură stabilă a instrumentului Flatpak 1.16, care oferă un sistem pentru construirea de pachete autonome, nelegate de distribuțiile specifice Linux și care rulează într-un container special, izolând aplicația de restul sistemului. Suportul pentru rularea pachetelor Flatpak este asigurat pentru Fedora, CentOS, Debian, Arch Linux, Gentoo, Linux Mint, Alt Linux și Ubuntu. Pachetele Flatpak sunt incluse în depozitul Fedora și sunt suportate în programele de gestionare a aplicațiilor GNOME și KDE.
Inovații cheie în ramura Flatpak 1.16:
- S-a realizat tranziția la utilizarea sistemului de construire Meson. Suportul pentru construirea cu instrumentul Autotools a fost sistat. Pentru construirea Flatpak este necesar acum ca Python să fie prezent în sistem, cu o versiune de cel puțin 3.5.
- A fost implementat accesul partajat la socketul gssproxy, permițând utilizarea autentificării prin Kerberos în aplicațiile care rulează în modul de izolare sandbox.
- Atunci când se creează socketul pentru Wayland, a fost utilizat extensia security-context, prin care compozitul serverul poate identifica și restricționa aplicațiile care rulează în modul de izolare sandbox. A fost adăugată opțiunea „—socket=inherit-wayland-socket” pentru a moșteni socketul existent pentru Wayland.
- După instalarea sau actualizarea aplicațiilor, este asigurată reîncărcarea automată a configurației magistralei de ședință D-Bus pentru a prelua noile servicii exportate de aplicații.
- Distribuțiile au fost dotate cu posibilitatea de a defini depozitele cu pachete Flatpak, folosind catalogul „/usr/share/flatpak/remotes.d”, pe lângă „/etc/flatpak/remotes.d”.
- Au fost efectuate lucrări pentru a diviza fișierele mari sursă în module mai mici.
- A fost adăugată opțiunea „—device=input” pentru a accesa dispozitivele de intrare prin /dev/input.
- Pentru izolarea aplicațiilor, a fost folosită o nouă ramură a instrumentului bubblewrap 0.11. În distribuțiile care construiesc Flatpak folosind fișierul executabil sistemic bwrap, este necesară versiunea bubblewrap 0.11. A fost întărită protecția împotriva creării de spații de identificare a utilizatorilor (user namespace) în medii sandbox.
- A fost simplificată configurarea limbilor suplimentare. Este asigurată identificarea limbilor pe baza informațiilor despre utilizatori, furnizate de serviciul DBus AccountsService.
- Aplicațiile care folosesc izolarea sandbox încorporată, de exemplu, bazată pe motorul WebKit, pot utiliza protocolul AT-SPI pentru a interacționa cu cititoarele de ecran. A fost adăugată opțiunea „flatpak run —a11y-own-name” pentru a alege bus-ul prin care se accesează resursele pentru persoanele cu dizabilități.
- Prin executarea comenzii „flatpak run -vv ”, se va afișa toate parametrii aplicabili ai izolării sandbox.
- A fost adăugată opțiunea „—device=usb”, precum și parametrii „—usb” și „—no-usb” pentru a controla accesul aplicației la dispozitive USB.
- A fost adăugată suportul pentru framework-ul KCompletion, utilizat pentru completarea automată a cuvintelor cheie de căutare în KDE.
- Au fost adăugate variabile de mediu „FLATPAK_DATA_DIR” și „FLATPAK_DOWNLOAD_TMPDIR” pentru a redefini directoarele de date (/usr/share/flatpak) și fișierele temporare descărcate (/var/tmp).
- A fost adăugată ieșirea secvențelor de escape pentru a afișa progresul operațiunilor în emulatoarele de terminal.
Reamintim că Flatpak facilitează distribuirea aplicațiilor care nu se află în repositoarele standard ale distribuțiilor, prin pregătirea unui singur container universal, care îi scapă pe dezvoltatori de necesitatea de a crea pachete separate pentru fiecare distribuție. Utilizatorii care sunt preocupați de securitate, Flatpak le oferă posibilitatea de a rula aplicații dubioase într-un container, oferind acces selectiv doar la funcțiile de rețea necesare și fișierele utilizatorului. Utilizatorii interesați de noutăți, Flatpak permite instalarea celor mai recente versiuni de teste și stabile ale aplicațiilor fără a fi necesare modificări în sistem. De exemplu, pachetele Flatpak sunt disponibile pentru LibreOffice, GIMP, Inkscape, Kdenlive, Steam, 0 A.D., Visual Studio Code, VLC, Slack, Telegram Desktop, Android Studio etc.
Pentru a reduce dimensiunea, pachetul include doar dependențele specifice aplicației. Bibliotecile de bază sistemice și grafice (GTK, Qt, biblioteci GNOME și KDE etc.) sunt furnizate sub formă de medii runtime standardizate. Principala diferență dintre Flatpak și Snap este că Snap folosește componentele mediului sistemului principal și izolația pe baza filtrării apelurilor de sistem, în timp ce Flatpak creează un container separat de sistem și operează cu seturi mari de runtime, oferind nu pachete ca dependențe, ci medii sistemice standardizate (de exemplu, toate bibliotecile necesare pentru funcționarea programelor GNOME sau KDE).
Pe lângă mediul sistemic standard (runtime), care este instalat printr-un repository special, sunt furnizate dependențe suplimentare (bundle) necesare pentru funcționarea aplicației. Împreună, „runtime” și „bundle” formează umplutura containerului, având în vedere că „runtime” este instalat separat și se leagă de mai multe containere, permițând evitarea duplicării fișierelor sistemice comune pentru containere.
Într-un singur sistem pot fi instalate mai multe „runtime” diferite (GNOME, KDE) sau mai multe versiuni ale unui singur „runtime” (GNOME 46, GNOME 47). Containerul cu aplicația ca dependență folosește legătura doar cu un anumit „runtime”, fără a lua în considerare pachetele individuale care formează „runtime”-ul ales. Toate elementele lipsă sunt împachetate direct împreună cu aplicația. Atunci când se creează un container, conținutul „runtime”-ului este montat ca o partiție /usr, iar „bundle”-ul este montat în directorul /app.
Umplutura „runtime” și a containerelor aplicațiilor este formată utilizând tehnologia OSTree, prin care imaginea este actualizată atomic dintr-un depozit similar Git, permițând aplicarea metodelor de control al versiunilor asupra componentelor distribuției (de exemplu, se poate reveni rapid la starea comună a sistemului anterior). Pachetele RPM sunt traduse în depozitul OSTree printr-un strat rpm-ostree.
Instalarea selectivă și actualizarea pachetelor în interiorul mediului de lucru nu sunt acceptate — sistemul este actualizat nu la nivelul componentelor individuale, ci în întregime, schimbându-și atomic starea. Sunt furnizate mijloace pentru aplicarea incrementală a actualizărilor, scutind de necesitatea înlocuirii complete a imaginii la fiecare actualizare.
Medio izolat, complet independent de sistemul de operare utilizat, iar cu configurația corectă a pachetului, nu are acces la fișierele și procesele utilizatorului sau ale sistemului de bază, și nu poate accesa direct hardware-ul, cu excepția ieșirii prin DRI. Ieșirea grafică și organizarea intrării sunt realizate prin intermediul protocolului Wayland sau prin tunelarea socket-ului X11. Interacțiunea cu mediul extern este construită prin sistemul de mesagerie DBus și API-ul special Portals.
Pentru izolare, se utilizează un strat Bubblewrap și tehnologii tradiționale de virtualizare a containerelor specifice Linux, bazate pe utilizarea cgroups, spațiilor de nume (namespaces), Seccomp și SELinux. Pentru ieșirea sonoră se folosește PulseAudio sau PipeWire. La crearea pachetului, izolația poate fi dezactivată, lucru de care se bucură dezvoltatorii multor pachete populare pentru a obține acces complet la sistemul de fișiere și la toate dispozitivele din sistem.
De exemplu, pachetele GIMP, VSCodium, PyCharm, Octave, Inkscape, Audacity și VLC vin cu un mod de izolare restricționată, care oferă acces complet la directorul home. În cazul compromiterii pachetelor cu acces la directorul home, în ciuda mărcii „sandboxed” din descrierea pachetului, atacatorul poate executa codul său modificând fișierul ~/ .bashrc. O întrebare separată este controlul asupra modificărilor aduse pachetelor și încrederea în constructorii de pachete, care de obicei nu sunt legați de proiectul principal sau de distribuții.
Sursa: opennet.ro
