Lanzamiento del sistema de paquete autónomo Flatpak 1.14.0

Se ha publicado una nueva rama estable del kit de herramientas Flatpak 1.14, que proporciona un sistema para crear paquetes autónomos que no están vinculados a distribuciones de Linux específicas y se ejecutan en un contenedor especial que aísla la aplicación del resto del sistema. Se proporciona soporte para ejecutar paquetes Flatpak para Arch Linux, CentOS, Debian, Fedora, Gentoo, Mageia, Linux Mint, Alt Linux y Ubuntu. Los paquetes Flatpak están incluidos en el repositorio de Fedora y son compatibles con el administrador de aplicaciones nativo de GNOME.

Innovaciones clave en la rama Flatpak 1.14:

  • Es posible crear un directorio para archivos en estado (.local/state) y configurar la variable de entorno XDG_STATE_HOME que apunte a este directorio.
  • Se agregaron comprobaciones condicionales del formulario "have-kernel-module-name" para determinar la presencia de módulos del kernel (un análogo universal de la verificación have-intel-gpu propuesta anteriormente, en lugar de la expresión "have-kernel-module-i915 "ahora se puede utilizar).
  • Se ha implementado el comando “flatpak document-unexport —doc-id=…”.
  • Se proporciona la exportación de metadatos de Appstream para su uso en el entorno principal.
  • Se agregaron reglas de finalización de comandos Flatpak para el shell Fish.
  • Se permite el acceso a la red a los servicios X11 y PulseAudio (si se agregan las configuraciones apropiadas).
  • La rama principal del repositorio de Git ha cambiado de nombre de “maestra” a “principal”, ya que recientemente la palabra “maestra” se ha considerado políticamente incorrecta.
  • Los scripts de inicio ahora se reescriben si se cambia el nombre de la aplicación.
  • Se agregaron las opciones "--include-sdk" y "--include-debug" al comando de instalación para instalar el SDK y los archivos debuginfo.
  • Se agregó soporte para el parámetro "DeploySideloadCollectionID" a los archivos flatpakref y flatpakrepo. Cuando se establece, el ID de la colección se establecerá al agregar un repositorio remoto, y no después de cargar los metadatos.
  • Permitió la creación de entornos sandbox anidados para controladores en sesiones con nombres MPRIS (Especificación de interfaz remota de reproductor multimedia) separados.
  • Las utilidades de línea de comandos ahora brindan información sobre el uso de extensiones de tiempo de ejecución obsoletas.
  • El comando de desinstalación implementa una solicitud de confirmación antes de eliminar el tiempo de ejecución o las extensiones de tiempo de ejecución que todavía están en uso.
  • Se agregó soporte para la opción “--socket=gpg-agent” a comandos como “flatpak run”.
  • Se ha solucionado una vulnerabilidad en libostree que podría permitir a un usuario eliminar archivos arbitrarios en el sistema mediante la manipulación del controlador flatpak-system-helper (enviando una solicitud de eliminación con un nombre de rama con formato especial). El problema solo aparece en versiones anteriores de Flatpak y libostree lanzadas antes de 2018 (<0.10.2) y no afecta las versiones actuales.

Le recordamos que Flatpak permite a los desarrolladores de aplicaciones simplificar la distribución de sus programas que no están incluidos en los repositorios de distribución estándar preparando un contenedor universal sin crear ensamblajes separados para cada distribución. Para los usuarios preocupados por la seguridad, Flatpak les permite ejecutar una aplicación cuestionable en un contenedor, brindando acceso solo a las funciones de red y archivos de usuario asociados con la aplicación. Para los usuarios interesados ​​en nuevos productos, Flatpak les permite instalar las últimas versiones estables y de prueba de aplicaciones sin la necesidad de realizar cambios en el sistema. Por ejemplo, los paquetes Flatpak están diseñados para LibreOffice, Midori, GIMP, Inkscape, Kdenlive, Steam, 0 AD, Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio, etc.

Para reducir el tamaño del paquete, incluye solo dependencias específicas de la aplicación, y las bibliotecas básicas del sistema y de gráficos (bibliotecas GTK, Qt, GNOME y KDE, etc.) están diseñadas como entornos de ejecución estándar de complementos. La diferencia clave entre Flatpak y Snap es que Snap utiliza los componentes del entorno principal del sistema y el aislamiento basado en el filtrado de llamadas del sistema, mientras que Flatpak crea un contenedor separado del sistema y opera con grandes conjuntos de tiempo de ejecución, proporcionando no paquetes como dependencias, sino estándar. sus entornos de sistema (por ejemplo, todas las bibliotecas necesarias para el funcionamiento de los programas GNOME o KDE).

Además del entorno de sistema estándar (tiempo de ejecución), instalado a través de un repositorio especial, se proporcionan dependencias adicionales (paquete) necesarias para el funcionamiento de la aplicación. En total, el tiempo de ejecución y el paquete forman el relleno del contenedor, a pesar de que el tiempo de ejecución se instala por separado y se vincula a varios contenedores a la vez, lo que le permite evitar la duplicación de archivos del sistema comunes a los contenedores. Un sistema puede tener instalados varios tiempos de ejecución diferentes (GNOME, KDE) o varias versiones del mismo tiempo de ejecución (GNOME 3.40, GNOME 3.42). Un contenedor con una aplicación como dependencia utiliza un enlace solo a un tiempo de ejecución específico, sin tener en cuenta los paquetes individuales que componen el tiempo de ejecución. Todos los elementos que faltan se empaquetan directamente con la aplicación. Cuando se forma un contenedor, el contenido del tiempo de ejecución se monta como la partición /usr y el paquete se monta en el directorio /app.

Los contenedores de aplicaciones y tiempo de ejecución se construyen utilizando tecnología OSTree, en la que la imagen se actualiza atómicamente desde un repositorio similar a Git, lo que permite aplicar métodos de control de versiones a los componentes de distribución (por ejemplo, puede revertir rápidamente el sistema a un estado previo). Los paquetes RPM se traducen al repositorio OSTree utilizando una capa especial rpm-ostree. No se admite la instalación y actualización separada de paquetes dentro del entorno de trabajo; el sistema no se actualiza a nivel de componentes individuales, sino en su conjunto, cambiando atómicamente su estado. Proporciona herramientas para aplicar actualizaciones de forma incremental, eliminando la necesidad de reemplazar completamente la imagen con cada actualización.

El entorno aislado generado es completamente independiente de la distribución utilizada y, con la configuración adecuada del paquete, no tiene acceso a archivos y procesos del usuario o del sistema principal, no puede acceder directamente al equipo, con excepción de la salida vía DRI, y llamadas al subsistema de red. La organización de la salida y la entrada de gráficos se implementa mediante el protocolo Wayland o mediante el reenvío de socket X11. La interacción con el entorno externo se basa en el sistema de mensajería DBus y una API de Portals especial.

Para el aislamiento se utiliza la capa Bubblewrap y tecnologías tradicionales de virtualización de contenedores de Linux, basadas en el uso de cgroups, namespaces, Seccomp y SELinux. PulseAudio se utiliza para emitir sonido. En este caso, se puede desactivar el aislamiento, que utilizan los desarrolladores de muchos paquetes populares para obtener acceso completo al sistema de archivos y a todos los dispositivos del sistema. Por ejemplo, GIMP, VSCodium, PyCharm, Octave, Inkscape, Audacity y VLC vienen con un modo de aislamiento limitado que deja acceso completo al directorio de inicio. Si los paquetes con acceso al directorio de inicio se ven comprometidos, a pesar de la presencia de la etiqueta "sandboxed" en la descripción del paquete, el atacante solo necesita cambiar el archivo ~/.bashrc para ejecutar su código. Un tema aparte es el control de los cambios en los paquetes y la confianza en los creadores de paquetes, que a menudo no están asociados con el proyecto o las distribuciones principales.

Fuente: opennet.ru

Añadir un comentario