Két és fél év fejlesztés után megjelent a Flatpak 1.16 új stabil ága, amely egy rendszert biztosít önálló csomagok készítésére, amelyek nem kötődnek konkrét Linux disztribúciókhoz, és egy speciális konténerben futnak, amely elszigeteli az alkalmazást a rendszer többi részétől. A Flatpak csomagok futtatásának támogatása biztosított a Fedora, CentOS, Debian, Arch Linux, Gentoo, Linux Mint, Alt Linux és Ubuntu számára. A Flatpak csomagok bekerültek a Fedora repójába, és támogatottak a GNOME és KDE alapértelmezett alkalmazáskezelő programjaiban.
A Flatpak 1.16 legfontosabb újításai:
- Átálltak a Meson build rendszer használatára. Az Autotools eszközkészlet használatát megszüntették. A Flatpak fordításához mostantól szükséges a rendszerben legalább 3.5-ös Python.
- Megvalósították a gssproxy socket közös használatát, amely lehetővé teszi a Kerberos alapú hitelesítést a sandbox-izolációs módban futó alkalmazásokban.
- A Wayland socket létrehozásához a security-context kiterjesztést használták, amelyen keresztül a kompozit szerver azonosítani és korlátozni tudja a sandbox-izolációs módban futó alkalmazásokat. Hozzáadták a „—socket=inherit-wayland-socket” opciót az existing Wayland socket örökléséhez.
- Alkalmazások telepítése vagy frissítése után automatikus újraindítást biztosítanak a D-Bus session bus konfigurációjának frissítésére az újonnan exportált D-Bus szolgáltatások felvételéhez.
- A disztribúciók számára lehetőséget biztosítanak Flatpak csomagok repóinak meghatározására a „/usr/share/flatpak/remotes.d” könyvtár használatával, a „/etc/flatpak/remotes.d” mellett.
- A nagy fájlok kódjának kisebb modulokra való felosztásán dolgoztak.
- Hozzáadták a „—device=input” opciót, hogy hozzáférjenek az input eszközökhöz a /dev/input-on.
- Alkalmazások izolálására új bubblewrap 0.11 eszközkészletet használnak. Azoknál a disztribúcióknál, amelyek a Flatpak-ot a rendszer bwrap végrehajtó állományával állítják elő, legalább bubblewrap 0.11-es verzió szükséges. Megerősítették a védekezést az elkülönített azonosítók (user namespace) létrehozása ellen a sandbox környezetekben.
- Egyszerűsítették a további nyelvek konfigurálását. Biztosították a nyelvek meghatározását a felhasználókról szóló információk alapján, amelyeket a DBus AccountsService szolgáltat.
- A beágyazott sandbox-izolációt használó alkalmazások, például a WebKit alapúak, számára engedélyezett az AT-SPI protokoll használata a képernyőolvasókkal való interakcióhoz. Bevezetésre került a „flatpak run —a11y-own-name” opció, amellyel kiválasztható a busz, amelyen keresztül a fogyatékkal élők eszközeihez való hozzáférés történik.
- A „flatpak run -vv ” parancs végrehajtásakor megjelennek az összes alkalmazható sandbox-izolációs paraméter.
- Bevezetésre került a „—device=usb” opció, valamint a „—usb” és a „—no-usb” paraméterek az alkalmazás USB-eszközökhöz való hozzáférésének kezelésére.
- Bevezetésre került a KCompletion keretrendszer támogatása, amely az auto-kiegészítés használatára szolgál a KDE keresési kulcsszavaiban.
- Bevezetésre kerültek a „FLATPAK_DATA_DIR” és „FLATPAK_DOWNLOAD_TMPDIR” környezeti változók az adatkatalógusok ( /usr/share/flatpak ) és a letöltött ideiglenes fájlok ( /var/tmp ) felülbírálására.
- Bevezetésre került az escape-sorozatok kiírása a műveletek végrehajtásának előrehaladásának megjelenítésére terminálemulátorokban.
Emlékeztetünk, hogy a Flatpak egyszerűsíti a nem disztribútorok hivatalos tárolóiban nem található programok terjesztését egy univerzális konténer előkészítésével, amely megszabadítja a fejlesztőket attól, hogy minden disztribútumhoz külön buildet készítsenek. A biztonságra ügyelő felhasználóknak a Flatpak lehetőséget ad arra, hogy egy gyanús alkalmazást konténerben futtassanak, csak a szükséges hálózati funkciókhoz és felhasználói fájlokhoz biztosítva hozzáférést. Az újdonságok iránt érdeklődő felhasználóknak a Flatpak lehetőséget ad a legfrissebb tesztelési és stabil alkalmazáskiadások telepítésére anélkül, hogy módosításokat kellene végezniük a rendszeren. Például a Flatpak csomagok összeállításra kerülnek a LibreOffice, GIMP, Inkscape, Kdenlive, Steam, 0 A.D., Visual Studio Code, VLC, Slack, Telegram Desktop, Android Studio stb. számára.
A méret csökkentése érdekében a csomagba csak az alkalmazás-specifikus függőségeket foglalják bele. Az alap rendszer- és grafikus könyvtárak (GTK, Qt, GNOME és KDE könyvtárak stb.) plug-in szerű, szabványos runtime-környezetek formájában kerülnek be. A Flatpak kulcsfontosságú különbsége a Snap-től abban rejlik, hogy a Snap a fő rendszer környezeteiből származó komponenseket és rendszerhívások szűrésén alapuló elszigetelést használ, míg a Flatpak egy a rendszertől elkülönült konténert hoz létre, és nagyobb runtime-készletekkel működik, azaz nem csomagokat, hanem szabványos rendszerkörnyezeteket biztosít (például az összes könyvtárat, ami szükséges a GNOME vagy KDE programok működéséhez).
A speciális tárolón keresztül telepített standard rendszerkörnyezet (runtime) mellett további függőségek (bundle) is rendelkezésre állnak, amelyek az alkalmazás működéséhez szükségesek. A «runtime» és a «bundle» összessége alkotja a konténer tartalmát, ahol a «runtime» külön települ, és egyszerre több konténerhez is kapcsolódik, így elkerülhető a konténerek közötti közös rendszerfájlok duplikálása.
Egy rendszeren belül több különböző „runtime” (GNOME, KDE) vagy azonos „runtime” több verziója (GNOME 46, GNOME 47) is telepíthető. Az alkalmazásconténer, mint függőség, csak egy adott „runtime”-hoz való lekötést használ, figyelmen kívül hagyva azokat az egyedi csomagokat, amelyek a választott „runtime”-ot alkotják. Minden hiányzó elem közvetlenül az alkalmazással együtt van csomagolva. A konténer létrehozásakor a „runtime” tartalmát /usr partícióként szerelik fel, míg a „bundle” a /app könyvtárba kerül.
A „runtime” és az alkalmazáskonténerek összetevői az OSTree technológia segítségével készülnek, amely során a kép atomikusan frissül egy Git-szerű tárolóból, lehetővé téve a verziókezelési módszerek alkalmazását a disztribúció összetevőin (például a rendszer gyorsan visszaállítható egy korábbi állapotba). Az RPM-csomagok az rpm-ostree rétegen keresztül transzformálódnak az OSTree tárolóba.
A munkahelyi környezetben a csomagok szelektív telepítése és frissítése nem támogatott — a rendszer nem a különálló összetevők szintjén frissül, hanem egészben, atomikusan változtatva meg az állapotát. Azért eszközök állnak rendelkezésre az incrementális frissítések alkalmazására, amelyek megszüntetik a teljes képcserét minden frissítéskor.
A létrehozott izolált környezet teljesen független a használt disztribúciótól, és megfelelő csomagbeállítások mellett nem fér hozzá a felhasználó vagy a fő rendszer fájljaihoz és folyamataihoz, valamint közvetlenül nem érheti el a hardvert, kivéve a DRI-n keresztül történő kimenetet. A grafika kimenete és a bemenet szervezése a Wayland protokoll vagy az X11 socket átirányítás révén valósul meg. A külső környezettel való kölcsönhatás a DBus üzenetküldő rendszer és egy speciális Portals API útján történik.
Az izolációhoz a Bubblewrap réteg és a Linux hagyományos konténer virtualizációs technológiái kerülnek felhasználásra, amelyek cgroups, névtér (namespaces), Seccomp és SELinux használatán alapulnak. A hangkimenethez a PulseAudio vagy a PipeWire alkalmazandó. Csomag létrehozásakor az izoláció letiltható, amit sok népszerű csomag fejlesztője kihasznál a fájlrendszerhez és a rendszer összes eszközéhez való teljes hozzáférés érdekében.
Például a korlátozott izolációs móddal, amely teljes hozzáférést biztosít a felhasználó home mappájához, a GIMP, VSCodium, PyCharm, Octave, Inkscape, Audacity és VLC csomagok érkeznek. Ha a csomagok, amelyek hozzáférnek a home mappához, kompromittálódnak, a csomag leírásában található „sandboxed” címke ellenére a támadónak elegendő megváltoztatnia a ~/.bashrc fájlt a kódja végrehajtásához. Különös kérdés a csomagokba való módosítások ellenőrzése és a csomagépítőkbe vetett bizalom, akik gyakran nem állnak kapcsolatban a fő projekttel vagy disztribúciókkal.
Forrás: opennet.ru
