Lançamento do sistema de pacotes autossuficientes Flatpak 1.14.0

Foi publicada uma nova ramificação estável do kit de ferramentas Flatpak 1.14, que fornece um sistema para construir pacotes independentes que não estão vinculados a distribuições Linux específicas e são executados em um contêiner especial que isola o aplicativo do resto do sistema. O suporte para execução de pacotes Flatpak é fornecido para Arch Linux, CentOS, Debian, Fedora, Gentoo, Mageia, Linux Mint, Alt Linux e Ubuntu. Os pacotes Flatpak estão incluídos no repositório Fedora e são suportados pelo gerenciador de aplicativos nativo do GNOME.

Principais inovações no ramo Flatpak 1.14:

  • Обеспечено создание каталога для файлов в состоянием (.local/state) и выставление указывающей на этот каталог переменной окружения XDG_STATE_HOME.
  • Добавлены условные проверки вида «have-kernel-module-имя» для определения наличия модулей ядра (универсальный аналог ранее предлагаемой проверке have-intel-gpu, вместо которой теперь можно использовать выражение «have-kernel-module-i915»).
  • Реализована команда «flatpak document-unexport —doc-id=…».
  • Обеспечен экспорт метаданных Appstream для использования в основном окружении.
  • Добавлены правила автодополнения команд flatpak для командной оболочки Fish
  • Разрешён сетевой доступ к сервисам X11 и PulseAudio (при добавлении соответствующих настроек).
  • Основная ветка в Git-репозитории переименована с «master» на «main», так как слово «master» считается последнее время неполиткорректным.
  • Обеспечена перезапись скриптов запуска в случае переименования приложения.
  • В команду install добавлены опции «—include-sdk» и «—include-debug» для установки SDK и файлов debuginfo.
  • В файлы flatpakref и flatpakrepo добавлена поддержка параметра «DeploySideloadCollectionID», при установке которого идентификатор коллекции будет выставлен во время добавления удалённого репозитория, а не после загрузки метаданных.
  • Разрешено создание вложенных sandbox-окружений для обработчиков в сеансах с отдельными именами MPRIS (Media Player Remote Interfacing Specification).
  • В утилитах командной строки обеспечен вывод сведений об использовании устаревших runtime-расширений.
  • В команде uninstall реализован запрос подтверждения перед удалением runtime или runtime-расширений, которые ещё используются.
  • В команды подобные «flatpak run» добавлена поддержка опции «—socket=gpg-agent».
  • В libostree устранена уязвимость, потенциально позволяющая пользователю удалить произвольные файлы в системе через манипуляции с обработчиком flatpak-system-helper (отправке запроса на удаление со специально оформленным именем ветки). Проблема проявляется только в старых версиях Flatpak и libostree, выпущенных до 2018 года (< 0.10.2), и не затрагивает актуальные выпуски.

Lembramos que o Flatpak permite que os desenvolvedores de aplicativos simplifiquem a distribuição de seus programas que não estão incluídos nos repositórios de distribuição padrão, preparando um contêiner universal sem criar assemblies separados para cada distribuição. Para usuários preocupados com a segurança, o Flatpak permite executar um aplicativo questionável em um contêiner, fornecendo acesso apenas às funções de rede e aos arquivos do usuário associados ao aplicativo. Para usuários interessados ​​em novos produtos, o Flatpak permite instalar os testes mais recentes e versões estáveis ​​de aplicativos sem a necessidade de fazer alterações no sistema. Por exemplo, os pacotes Flatpak são criados para LibreOffice, Midori, GIMP, Inkscape, Kdenlive, Steam, 0 AD, Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio, etc.

Para reduzir o tamanho do pacote, ele inclui apenas dependências específicas do aplicativo, e as bibliotecas básicas de sistema e gráficos (bibliotecas GTK, Qt, GNOME e KDE, etc.) são projetadas como ambientes de tempo de execução padrão de plug-in. A principal diferença entre Flatpak e Snap é que o Snap usa os componentes do ambiente principal do sistema e o isolamento baseado na filtragem de chamadas do sistema, enquanto o Flatpak cria um contêiner separado do sistema e opera com grandes conjuntos de tempo de execução, fornecendo não pacotes como dependências, mas padrão alguns ambientes de sistema (por exemplo, todas as bibliotecas necessárias para a operação de programas GNOME ou KDE).

Além do ambiente de sistema padrão (runtime), instalado através de um repositório especial, são fornecidas dependências adicionais (bundle) necessárias para o funcionamento da aplicação. No total, runtime e bundle formam o preenchimento do container, apesar do runtime ser instalado separadamente e vinculado a vários containers ao mesmo tempo, o que permite evitar a duplicação de arquivos de sistema comuns aos containers. Um sistema pode ter vários tempos de execução diferentes instalados (GNOME, KDE) ou várias versões do mesmo tempo de execução (GNOME 3.40, GNOME 3.42). Um contêiner com um aplicativo como dependência usa uma ligação apenas para um tempo de execução específico, sem levar em consideração os pacotes individuais que compõem o tempo de execução. Todos os elementos ausentes são empacotados diretamente com o aplicativo. Quando um contêiner é formado, o conteúdo do tempo de execução é montado como a partição /usr e o pacote configurável é montado no diretório /app.

O tempo de execução e os contêineres do aplicativo são construídos usando a tecnologia OSTree, na qual a imagem é atualizada atomicamente a partir de um repositório semelhante ao Git, o que permite que métodos de controle de versão sejam aplicados aos componentes da distribuição (por exemplo, você pode reverter rapidamente o sistema para um estado anterior). Os pacotes RPM são traduzidos para o repositório OSTree usando uma camada especial rpm-ostree. A instalação e atualização separadas de pacotes dentro do ambiente de trabalho não são suportadas; o sistema é atualizado não no nível de componentes individuais, mas como um todo, alterando atomicamente seu estado. Fornece ferramentas para aplicar atualizações de forma incremental, eliminando a necessidade de substituir completamente a imagem a cada atualização.

O ambiente isolado gerado é totalmente independente da distribuição utilizada e, com as devidas configurações do pacote, não possui acesso aos arquivos e processos do usuário ou do sistema principal, não podendo acessar diretamente o equipamento, com exceção da saída via DRI, e chamadas para o subsistema de rede. A saída gráfica e a organização da entrada são implementadas usando o protocolo Wayland ou via encaminhamento de soquete X11. A interação com o ambiente externo é baseada no sistema de mensagens DBus e em uma API especial de Portais.

Для изоляции используется прослойка Bubblewrap и традиционные для Linux технологии контейнерной виртуализации, основанные на использовании cgroups, пространств имён (namespaces), Seccomp и SELinux. Для вывода звука применяется PulseAudio. При этом изоляция может быть отключена, чем пользуются разработчики многих популярных пакетов для получения полного доступа к ФС и всем устройствам в системе. Например, с ограниченным режимом изоляции, оставляющим полный доступ к домашнему каталогу, поставляются пакеты GIMP, VSCodium, PyCharm, Octave, Inkscape, Audacity и VLC. В случае компрометации пакетов с доступом к домашнему каталогу, несмотря на наличие в описании пакета метки «sandboxed», атакующему для выполнения своего кода достаточно изменить файл ~/.bashrc. Отдельным вопросом является контроль за внесением изменений в пакеты и доверие к сборщикам пакетов, которые часто не связаны с основным проектом или дистрибутивами.

Fonte: opennet.ru

Adicionar um comentário