A fost publicată o nouă ramură stabilă a instrumentarului Flatpak 1.14, care oferă un sistem pentru construirea de pachete autonome, nelegate de distribuții Linux specifice și care rulează într-un container special, izolând aplicația de restul sistemului. Suportul pentru executarea pachetelor Flatpak este asigurat pentru Arch Linux, CentOS, Debian, Fedora, Gentoo, Mageia, Linux Mint, Alt Linux și Ubuntu. Pachetele Flatpak sunt incluse în repository-ul Fedora și sunt suportate în programul standard de gestionare a aplicațiilor GNOME.
Noutăți cheie în ramura Flatpak 1.14:
- A fost asigurată crearea unui director pentru fișiere în starea (.local/state) și stabilirea unei variabile de mediu XDG_STATE_HOME care indică către acest director.
- Au fost adăugate verificări condiționale de tipul „have-kernel-module-nume” pentru a determina existența modulelor kernel (un analog universal al verificării anterioare have-intel-gpu, care poate fi acum înlocuită cu expresia „have-kernel-module-i915”).
- A fost implementată comanda „flatpak document-unexport —doc-id=…”.
- A fost asigurat exportul de metadate Appstream pentru utilizare în mediul principal.
- Au fost adăugate reguli de completare automată pentru comenzile flatpak în shell-ul Fish.
- Accesul la rețea pentru serviciile X11 și PulseAudio a fost permis (dacă se adaugă setările corespunzătoare).
- Ramura principală din repository-ul Git a fost redenumită din „master” în „main”, deoarece cuvântul „master” este considerat, în ultimul timp, ca fiind politic incorect.
- A fost asigurată rescrierea scripturilor de lansare în cazul redenumirii aplicației.
- Comenzii install i s-au adăugat opțiunile „—include-sdk” și „—include-debug” pentru instalarea SDK-ului și a fișierelor de debuginfo.
- Fișierelor flatpakref și flatpakrepo li s-a adăugat suport pentru parametrul „DeploySideloadCollectionID”, în care identificatorul colecției va fi stabilit în timpul adăugării unui repository extern, nu după descărcarea metadatelor.
- A fost permisă crearea de medii sandbox închise pentru handleri în sesiuni cu nume MPRIS (Media Player Remote Interfacing Specification) separate.
- În utilitarele din linia de comandă s-a asigurat afișarea informațiilor despre utilizarea extensiilor runtime învechite.
- În comanda uninstall a fost implementată o solicitare de confirmare înainte de ștergerea runtime-ului sau a extensiilor runtime care sunt încă în uz.
- Comenzilor similare cu „flatpak run” li s-a adăugat suport pentru opțiunea „—socket=gpg-agent”.
- În libostree a fost remediată o vulnerabilitate care permitea utilizatorului să șteargă fișiere arbitrare din sistem prin manipularea handler-ului flatpak-system-helper (trimiterea unei cereri de ștergere cu un nume de ramură special format). Problema apare doar în versiunile vechi de Flatpak și libostree lansate înainte de 2018 (< 0.10.2) și nu afectează versiunile actuale.
Reamintim că dezvoltatorii de aplicații Flatpak au posibilitatea de a simplifica distribuția programelor lor, care nu sunt incluse în repositoarele standard ale distribuțiilor, prin pregătirea unui singur container universal, fără a crea pachete separate pentru fiecare distribuție. Utilizatorilor preocupați de securitate, Flatpak le permite să ruleze aplicații discutabile într-un container, oferind acces doar la funcționalitățile de rețea și fișierele utilizatorului asociate aplicației. Utilizatorii interesați de noutăți pot instala cele 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, Midori, GIMP, Inkscape, Kdenlive, Steam, 0 A.D., Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio etc.
Pentru a reduce dimensiunea pachetului, acesta include doar dependențele specifice aplicației, în timp ce bibliotecile de bază sistemice și grafice (GTK, Qt, bibliotecile GNOME și KDE etc.) sunt prezentate sub formă de runtime-uri tipice care pot fi conectate. Principala diferență dintre Flatpak și Snap este că Snap folosește componentele mediului sistemului de bază și izolare bazată pe filtrarea apelurilor sistemului, în timp ce Flatpak creează un container separat de sistem și operează cu seturi mari de runtime-uri, oferind ca dependențe nu pachete, ci medii sistemice tipice (de exemplu, toate bibliotecile necesare pentru funcționarea aplicațiilor 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ă conținutul containerului, având în vedere că runtime este instalat separat și este legat de mai multe containere, ceea ce permite evitarea duplicării fișierelor sistemice comune pentru containere. Într-un singur sistem pot fi instalate mai multe runtime-uri diferite (GNOME, KDE) sau mai multe versiuni ale unui singur runtime (GNOME 3.40, GNOME 3.42). Containerul cu aplicația, ca dependență, folosește legătura doar cu un anumit runtime, fără a lua în considerare pachetele individuale din care este compus runtime-ul. Toate elementele lipsă sunt incluse direct împreună cu aplicația. La formarea containerului, conținutul runtime-ului este montat ca partajare /usr, iar bundle-ul este montat în directorul /app.
Conținutul runtime-ului și al containerelor de aplicații este generat folosind tehnologia OSTree, în 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 o stare anterioară a sistemului). Pachetele RPM sunt transmise în depozitul OSTree printr-un strat special numit rpm-ostree. Instalarea și actualizarea separată a pachetelor în cadrul mediului de lucru nu este suportată, sistemul este actualizat nu la nivelul componentelor individuale, ci în întregime, schimbând atomic starea sa. Sunt furnizate unelte pentru aplicarea incrementală a actualizărilor, eliminând necesitatea înlocuirii complete a imaginii la fiecare actualizare.
Mediul izolat format este complet independent de distribuția utilizată și, cu setările corecte ale pachetului, nu are acces la fișierele și procesele utilizatorului sau ale sistemului de bază, nu poate accesa direct hardware-ul, cu excepția afișării prin DRI și a apelurilor către subsistemul de rețea. Afișarea graficii și organizarea intrării se realizează prin protocolul Wayland sau prin redirecționarea socket-ului X11. Interacțiunea cu mediul extern este construită pe baza sistemului de mesagerie DBus și a unui API special Portals.
Pentru izolare, se utilizează o stratificare Bubblewrap și tehnologiile tradiționale de virtualizare a containerelor pentru Linux, bazate pe utilizarea cgroups, spațiilor de nume (namespaces), Seccomp și SELinux. Pentru redarea sunetului se folosește PulseAudio. Totuși, izolarea poate fi dezactivată, ceea ce este folosit de 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 sunt livrate cu un mod de izolare restricționat care lasă acces complet la directorul home. În cazul compromiterii pachetelor cu acces la directorul home, în ciuda mărcii „sandboxed” din descrierea pachetului, atacatorul trebuie doar să modifice fișierul ~/ .bashrc pentru a-și executa codul. O întrebare separată o reprezintă controlul asupra modificărilor aduse pachetelor și încrederea în constructorii de pachete, care adesea nu sunt legați de proiectele principale sau de distribuitori.
Sursa: opennet.ro
