Flatpak — изолированные приложения с контролем разрешений

flatpak.org

Несмотря на то, что мы регулярно упоминали Flatpak в постах про Linux-софт, так получилось, что мы ни разу не разбирали, что это такое и как с ним правильно работать. Исправляемся — потому что это не просто «ещё один формат пакетов», а попытка добавить изоляцию приложениям на десктопе.

Flatpak — это система упаковки приложений, которая запускает каждую программу в своей песочнице. Под капотом используется bubblewrap — инструмент для изоляции через Linux namespaces и seccomp. Приложение видит только то, к чему вы дали доступ: конкретные папки, сеть, устройства. Для взаимодействия с файлами системы используются т.н. порталы, благодаря которым приложение получает только выбранный файл, а не доступ ко всей файловой системе.

Проблема в том, что по умолчанию почти все популярные приложения на Flathub (магазин приложений) идут с разрешениями filesystem=host или filesystem=home — то есть полный доступ к файлам. Так разработчики перестраховываются, чтобы приложение точно работало. Плюс нередко приложения используют оконную систему Х11 (вместо Wayland, который намного более предпочтителен), у которой больше пространства для атак без дополнительных разрешений. Ну и как везде, бывают критические уязвимости, которые разработчики патчат по мере обнаружения.

Одно из решений — Flatseal, графическая утилита для управления разрешениями пакетов Flatpak. Устанавливаете приложение, открываете Flatseal, видите список всех разрешений: доступ к файловой системе (можно дать только конкретную папку вместо всего home), доступ к сети, к устройствам ввода, к микрофону, к системной шине D-Bus. Стратегия простая: отключаете всё лишнее и запускаете приложение — если работает, значит вы обошлись малой кровью. Если ругается — добавляете разрешений и проверяете дальше.

По сравнению с традиционными .deb или .rpm пакетами Flatpak даёт несколько преимуществ: установка без sudo, версии приложений не зависят от дистрибутива, расширенное управление пакетами через дополнительные утилиты в виде Flatseal (для разрешений) и Warehouse (для комплексного управления установленными пакетами и удобного создания снэпшотов).

ИМХО: Для рядовых приложений на основной системе (с мессенджерами, браузерами и утилитами) — чаще всего лично использую именно Flatpak. По крайней мере это дико удобно, учитывая, что есть хаб — своего рода магазин приложений для Flatpak, в котором есть действительно много нужного софта. Обновления ставятся одной командой (flathub update). Удобное управление разрешениями и неплохая изоляция для рядовых приложений. Разумеется, полноценная виртуализация — всегда наиболее безопасный вариант изоляции приложений, но оставим это под условные криптокошельки, где безопасность — наивысший приоритет.

Свежее