Po dvou a půl letech vývoje byla publikována nová stabilní verze nástroje Flatpak 1.16, který poskytuje systém pro sestavování soběstačných balíčků, nezávislých na konkrétních distribucích Linuxu a spouštěných v speciálním kontejneru, který izoluje aplikaci od zbytku systému. Podpora pro spouštění Flatpak balíčků byla zajištěna pro Fedora, CentOS, Debian, Arch Linux, Gentoo, Linux Mint, Alt Linux a Ubuntu. Balíčky s Flatpak jsou zahrnuty v repozitáři Fedora a jsou podporovány v nativních aplikacích pro správu aplikací GNOME a KDE.
Klíčové novinky ve verzi Flatpak 1.16:
- Byl proveden přechod na systém sestavování Meson. Podpora sestavování pomocí nástrojů Autotools byla ukončena. Pro sestavení Flatpak je nyní vyžadováno, aby byl v systému nainstalován Python, alespoň ve verzi 3.5.
- Byl implementován společný přístup k socketu gssproxy, který umožňuje používat autentizaci přes Kerberos v aplikacích běžících v režimu sandboxové izolace.
- Při vytváření socketu pro Wayland bylo využito rozšíření security-context, prostřednictvím kterého může kompozitní server identifikovat a omezovat aplikace, které běží v režimu sandboxové izolace. Přidána možnost „—socket=inherit-wayland-socket“ pro dědění existujícího socketu pro Wayland.
- Po instalaci nebo aktualizaci aplikací je zajištěno automatické restartování konfigurace sezení D-Bus pro načtení nových exportovaných služeb D-Bus aplikacemi.
- Distribucím byla poskytnuta možnost definovat repozitáře s balíčky Flatpak pomocí adresáře „/usr/share/flatpak/remotes.d“, vedle „/etc/flatpak/remotes.d“.
- Byla provedena práce na rozdělení velkých souborů se zdrojovým kódem na menší moduly.
- Přidána možnost „—device=input“ pro přístup k vstupním zařízením prostřednictvím /dev/input.
- Pro izolaci aplikací byla použita nová verze nástroje bubblewrap 0.11. V distribucích, které sestavují Flatpak pomocí systémového spustitelného souboru bwrap, je nutná minimálně verze bubblewrap 0.11. Byla posílena ochrana proti vytváření vnořených prostorů identifikátorů uživatelů (user namespace) v sandboxových prostředích.
- Bylo zjednodušeno nastavení dalších jazyků. Zajištěno je určování jazyků na základě informací o uživatelích poskytovaných službou DBus AccountsService.
- Aplikacím, které používají vnořenou sandboxovou izolaci, například na základě enginu WebKit, je povoleno používat protokol AT-SPI pro interakci se čtečkami obrazovky. Byla přidána možnost „flatpak run —a11y-own-name“ pro výběr sběrnice, skrze kterou se přistupuje k nástrojům pro osoby se zdravotním postižením.
- Při provádění příkazu „flatpak run -vv “ se zobrazuje všechny aplikovatelné parametry sandboxové izolace.
- Byla přidána možnost „—device=usb“ a také parametry „—usb“ a „—no-usb“ pro řízení přístupu aplikace k USB zařízením.
- Byla přidána podpora rámce KCompletion, který se používá pro automatické dokončování vyhledávacích klíčů v KDE.
- Byly přidány proměnné prostředí „FLATPAK_DATA_DIR“ a „FLATPAK_DOWNLOAD_TMPDIR“ pro přepsání katalogů s daty (/usr/share/flatpak) a dočasnými stahovanými soubory (/var/tmp).
- Byl přidán výstup escape sekvencí pro zobrazení postupu provádění operací v terminálových emulátorech.
Připomínáme, že Flatpak usnadňuje distribuci programů, které nejsou součástí standardních repozitářů distribucí, tím, že připravuje jeden univerzální kontejner, který zbavuje vývojáře programů potřeby vytvářet jednotlivé sestavy pro každou distribuci. Uživatelům, kteří dbají na bezpečnost, Flatpak poskytuje možnost spustit podezřelou aplikaci v kontejneru, čímž poskytuje selektivní přístup pouze k nezbytným síťovým funkcím a souborům uživatele. Uživatelům, kteří mají zájem o novinky, Flatpak umožňuje nainstalovat nejnovější testovací a stabilní verze aplikací bez nutnosti provádět změny v systému. Například Flatpak balíčky se sestavují pro LibreOffice, GIMP, Inkscape, Kdenlive, Steam, 0 A.D., Visual Studio Code, VLC, Slack, Telegram Desktop, Android Studio atd.
Aby se snížila velikost, obsahují balíčky pouze specifické závislosti pro aplikaci. Základní systémové a grafické knihovny (GTK, Qt, knihovny GNOME a KDE atd.) jsou dodávány jako připojitelné standardní runtime prostředí. Klíčový rozdíl mezi Flatpak a Snap je v tom, že Snap používá komponenty prostředí hlavního systému a izolaci na základě filtrování systémových volání, zatímco Flatpak vytváří oddělený kontejner od systému a pracuje s velkými sadami runtime, poskytujícími jako závislosti nikoli balíčky, ale standardní systémová prostředí (například všechny knihovny potřebné pro běh programů GNOME nebo KDE).
Kromě standardního systémového prostředí (runtime), které se instaluje prostřednictvím speciálního repozitáře, se dodávají další závislosti (bundle) potřebné pro fungování aplikace. Dohromady "runtime" a "bundle" tvoří náplň kontejneru, přičemž "runtime" se instaluje samostatně a je připojováno k několika kontejnerům, což umožňuje vyhnout se duplicaci společných systémových souborů pro kontejnery.
V jednom systému může být nainstalováno několik různých „runtime“ (GNOME, KDE) nebo několik verzí jednoho „runtime“ (GNOME 46, GNOME 47). Kontejner s aplikací jako závislost používá vazbu pouze na určité „runtime“, bez ohledu na jednotlivé balíčky, které tvoří vybraný „runtime“. Všechny chybějící komponenty jsou zabaleny přímo spolu s aplikací. Při vytváření kontejneru je obsah „runtime“ namontován jako oddíl /usr, a „bundle“ je namontován do adresáře /app.
Náplň "runtime" a kontejnerů aplikací je formována pomocí technologie OSTree, při které se obraz atomárně aktualizuje z Git-podobného úložiště, což umožňuje aplikovat metody verzionování na komponenty distribuce (například lze rychle vrátit systém do předchozího stavu). RPM balíčky jsou přenášeny do úložiště OSTree pomocí vrstvy rpm-ostree.
Výběrová instalace a aktualizace balíčků uvnitř pracovního prostředí nejsou podporovány - systém se aktualizuje nejen na úrovni jednotlivých komponentů, ale jako celek, atomárně měnící svůj stav. Jsou k dispozici prostředky pro inkrementální aplikaci aktualizací, které zbavují potřeby plné výměny obrazu při každé aktualizaci.
Izolované prostředí je plně nezávislé na používané distribuci a při správném nastavení balíčku nemá přístup k souborům a procesům uživatele či základního systému, a také nemůže přímo komunikovat s hardwarem, s výjimkou výstupu prostřednictvím DRI. Grafický výstup a organizace vstupu jsou realizovány pomocí protokolu Wayland nebo prostřednictvím přesměrování socketu X11. Interakce s externím prostředím je postavena na systému výměny zpráv DBus a speciálním API Portals.
Pro izolaci se používá vrstva Bubblewrap a tradiční technologie kontejnerové virtualizace pro Linux, založené na využití cgroups, prostorů jmen (namespaces), Seccomp a SELinux. Pro výstup zvuku se používá PulseAudio nebo PipeWire. Při vytváření balíčku může být izolace vypnuta, což využívají vývojáři mnoha populárních balíčků pro získání plného přístupu k FS a všem zařízením v systému.
Například s omezeným režimem izolace, který ponechává plný přístup k domácímu adresáři, se dodávají balíčky GIMP, VSCodium, PyCharm, Octave, Inkscape, Audacity a VLC. V případě kompromitace balíčků s přístupem k domácímu adresáři, navzdory označení „sandboxed“ v popisu balíčku, útočníkovi k provedení jeho kódu stačí změnit soubor ~/.bashrc. Samostatným problémem je kontrola nad změnami v balíčkách a důvěra ve stavebníky balíčků, kteří často nejsou spojeni se základním projektem nebo distribucemi.
Zdroj: opennet.ru
