Релиз системы самодостаточных пакетов Flatpak 1.2.0. Критика Flatpak

28 января 2019 года

Опубликована новая стабильная ветка инструментария Flatpak 1.2, который предоставляет систему для сборки самодостаточных пакетов, не привязанных к конкретным дистрибутивам Linux и выполняемым в специальном контейнере, изолирующем приложение от остальной системы. Поддержка выполнения Flatpak-пакетов обеспечена для Arch Linux, CentOS, Debian, Fedora, Gentoo, Mageia, Linux Mint и Ubuntu. Пакеты с Flatpak включены в репозиторий Fedora и поддерживаются в штатной программе управления приложениями GNOME.

Ключевые новшества в ветке Flatpak 1.2:

  • Добавлена команда "flatpak kill" для принудительного завершения работающих экземпляров flatpak-приложений;
  • Добавлена команда "flatpak ps" для просмотра информации о

flatpak-процессах (в будущем ожидается отображение информации о потреблении ресурсов);

  • Добавлена команда "flatpak history" для просмотра истории выполненных операций с пакетами;
  • При установке пакетов в интерактивном режиме указание репозитория и полного имени в командной строке теперь является необязательным. Например, вместо "flatpak install flathub org.gnome.meld" теперь достаточно набрать "flatpak install meld" и flatpak в интерактивном режиме уточнит репозиторий и подберёт подходящее полное имя;
  • Реализовано отображение индикатора прогресса выполнения операций при установке или удалении пакета;
  • Во все команды с табличными результатами добавлена опция "--columns" для выбора показываемых столбцов. Для просмотра доступных столбцов можно использовать команду "--columns=help";
  • В команду "flatpak uninstall" добавлена опция "--delete-data" для удаления каталога с данными приложения (если не указать конкретное приложение, то будут удалены все каталоги с данными удалённых приложений);
  • В команде "flatpak remote-ls" обеспечен показ runtime для каждого приложения в списке;
  • В команду "flatpak repo" добавлены опции "--info" для отображения сведений о репозитории и "--commits" для вывода списка изменений в ветке;
  • Обеспечено отображение транзакций в логе systemd при сборке с libsystemd;
  • Удалена поддержка миграции с xdg-app (прошлое название flatpak);
  • Улучшен обработчик ошибок, который при вводе несуществующей команды пытается определить опечатку и предложить верную команду;
  • Добавлена опция "flatpak --installations" для показа списка всех установленных приложений flatpak;
  • В команды install, update и uninstall добавлена опция "--noninteractive" для выполнения операции из скриптов без дополнительных запросов и с минимальными выводом;
  • Реализована начальная поддержка применения в sandbox-окружении системных параметров по умолчанию из dconf;
  • Обеспечено создание кофигурации fontconfig для отражения каталогов со шрифтами с их прокэшированными копиями;
  • В командах "list" и "info" обеспечен показ содержимого информационных полей из метаданных appstream (например, теперь показывается описание пакета);
  • Приложениям, использующим интерфейс DRI (Direct Rendering Infrastructure), для корректной поддержки CUDA и OpenCL предоставлен доступ к большему числу файлов устройств NVIDIA (/dev/dri/renderD*);
  • Команда "permission-list" переименована в "permissions", а "document-list" в "documents" (старые имена не удалены для сохранения совместимости);
  • При выполнении привилегированных операций обеспечена возможность аутентификации в терминале при отсутствии агента policykit;
  • Указание команды "update" без дополнительных аргументов теперь приводит к обновлению всех установленных пакетов;
  • Добавлены новые порталы (порталы применяются для организации доступа к ресурсам вне контейнера) для получения информации о местоположении и настройки тулкитов. Во всех порталах усилена проверка входных данных.

Дополнительно можно отметить, появление ресурса flatkill.org с критикой Flatpak. Авторы данного сайта пытаются обратить внимание на проблему с необязательностью применения методов строгой sandbox-изоляции в пакетах. В текущем виде почти все популярные приложения, доступные в формате Flatpak (включая GIMP, VSCode, PyCharm, Octave, Inkscape, Steam, Audacity, VLC), собраны с правами "filesystem=host", "filesystem=home" или "device=all", т.е. имеют полный доступ к ФС, домашнему каталогу пользователя или всем устройствам в системе. При таких настройках sandbox не более чем фикция, а для обхода изоляции и выполнения кода вне изолированного окружения достаточно изменить ~/.bashrc. При этом пользователи считают, что приложение действительно изолировано, так как при установке показывается пиктограмма "sandbox".

Более того, на примере flatpak-пакетов VSCode, Android Studio и Sublime показано, что авторы не спешат выпускать обновления и предлагают для загрузки выпуски с известными уязвимостями, которые можно эксплутарировать для получения контроля за системой пользователя. Пользователи не обращают на это внимание, полагая, что уязвимости не угрожают им, так как приложения изолированы. Для решения проблемы ненадлежащей настройкой доступа в пакетах разработчики Flatpak намерены в будущем реализовать детальное информирование пользователей о запрошенных приложением полномочиях, которые будет явно отображаться в интерфейсах GNOME Settings и GNOME Software.

Напомним, что разработчикам приложений Flatpak даёт возможность упростить распространение своих программ, не входящих в штатные репозитории дистрибутивов, за счет подготовки одного универсального контейнера без формирования отдельных сборок для каждого дистрибутива. Для пользователей, заботящихся о безопасности, Flatpak позволяет выполнить вызывающее сомнение приложение в контейнере, предоставив доступ только к сетевым функциям и файлам пользователя, связанным с приложением. Для пользователей, интересующихся новинками, Flatpak позволяет установить самые свежие тестовые и стабильные выпуски приложений, без необходимости внесения изменений в систему. Например, в настоящее время Flatpak-пакеты уже собираются для LibreOffice, Firefox, GIMP, Inkscape, Kdenlive, Steam, 0 A.D., Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio и т.д.

Для уменьшения размера пакета, он включает лишь специфичные для приложения зависимости, а базовые системные и графические библиотеки (Gtk+, Qt, библиотеки GNOME и KDE и т.п.) оформлены в виде подключаемых типовых runtime-окружений. Ключевое отличие Flatpak от Snap заключается в том, что Snap использует компоненты окружения основной системы и изоляцию на основе фильтрации системных вызовов, в то время как Flatpak создаёт отдельный от системы контейнер и оперирует крупными runtime-наборами, предоставляя в качестве зависимостей не пакеты, а типовые системные окружения (например, все библиотеки, необходимые для работы программ GNOME или KDE).

Помимо типового системного окружения (runtime), устанавливаемого через специальный репозиторий (Архивная копия от 23 января 2018 на Wayback Machine), поставляются дополнительные зависимости (bundle), требуемые для работы приложения. В сумме runtime и bundle образуют начинку контейнера, при том, что runtime устанавливается отдельно и привязывается сразу к нескольким контейнерам, что позволяет обойтись без дублирования общих для контейнеров системных файлов. В одной системе может быть установлено несколько разных runtime (GNOME, KDE) или несколько версий одного runtime (GNOME 3.26, GNOME 3.28). Контейнер с приложением в качестве зависимости использует привязку только к определённому runtime, без учета отдельных пакетов, из которых состоит runtime. Все недостающие элементы упаковываются непосредственно вместе с приложением. При формировании контейнера содержимое runtime монтируется как раздел /usr, а bundle монтируется в директорию /app.

Начинка runtime и контейнеров приложений формируется с использованием технологии OSTree, при которой образ атомарно обновляется из Git-подобного хранилища, позволяющего применять методы версионного контроля к компонентам дистрибутива (например, можно быстро откатить систему к прошлому состоянию). RPM-пакеты транслируются в репозиторий OSTree при помощи специальной прослойки rpm-ostree (Архивная копия от 5 июля 2015 на Wayback Machine). Отдельная установка и обновление пакетов внутри рабочего окружения не поддерживается, система обновляется не на уровне отдельных компонентов, а целиком, атомарно меняя своё состояние. Предоставляются средства для инкрементального применения обновлений, избавляющие от необходимости полной замены образа при каждом обновлении.

Формируемое изолированное окружение полностью независимо от используемого дистрибутива, и при надлежащих настройках пакета не имеет доступа к файлам и процессам пользователя или основной системы, не может напрямую обращаться к оборудованию, за исключением вывода через DRI, и сетевой подсистеме. Вывод графики и организация ввода реализована при помощи протокола Wayland или через проброс сокета X11. Взаимодействие с внешней средой построено на основе системы обмена сообщениями DBus и специального API Portals. Для изоляции используется прослойка Bubblewrap и традиционные для Linux технологии контейнерной виртуализации, основанные на использовании cgroups, пространств имён (namespaces), Seccomp и SELinux. Для вывода звука применяется PulseAudio.

Источники править


 
 
Creative Commons
Эта статья содержит материалы из статьи «Релиз системы самодостаточных пакетов Flatpak 1.2.0. Критика Flatpak», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.