Publication du système de paquets autonomes Flatpak 1.16.0

Après deux ans et demi de développement, une nouvelle branche stable de l'outil Flatpak 1.16 a été publiée, offrant un système de construction de paquets autonomes, indépendants des distributions Linux spécifiques et s'exécutant dans un conteneur spécial qui isole l'application du reste du système. La prise en charge de l'exécution des paquets Flatpak est assurée pour Fedora, CentOS, Debian, Arch Linux, Gentoo, Linux Mint, Alt Linux et Ubuntu. Les paquets avec Flatpak sont inclus dans le dépôt Fedora et sont pris en charge par les gestionnaires d'applications natifs GNOME et KDE.

Les principales nouveautés de la branche Flatpak 1.16 :

  • Transition vers l'utilisation du système de construction Meson. La prise en charge de la construction à l'aide de l'outil Autotools est abandonnée. Pour construire Flatpak, Python, version 3.5 au minimum, est désormais nécessaire dans le système.
  • Accès en commun au socket gssproxy, permettant d'utiliser l'authentification via Kerberos dans des applications exécutées en mode d'isolation sandbox.
  • Lors de la création du socket pour Wayland, une extension security-context a été utilisée, permettant au compositeur serveur d'identifier et de restreindre les applications exécutées en mode d'isolation sandbox. Une option «—socket=inherit-wayland-socket» a été ajoutée pour hériter d'un socket existant pour Wayland.
  • Après l'installation ou la mise à jour des applications, la reconfiguration automatique du bus de session D-Bus est assurée pour prendre en compte les nouveaux services D-Bus exportés par les applications.
  • Les distributions ont la possibilité de définir des dépôts avec des paquets Flatpak, en utilisant le répertoire «/usr/share/flatpak/remotes.d», en plus de «/etc/flatpak/remotes.d».
  • Un travail a été réalisé pour diviser de grands fichiers de code source en petits modules.
  • Une option «—device=input» a été ajoutée pour accéder aux dispositifs d'entrée via /dev/input.
  • Pour isoler les applications, une nouvelle branche de l'outil bubblewrap 0.11 a été utilisée. Dans les distributions qui construisent Flatpak en utilisant le fichier exécutable système bwrap, la version bubblewrap 0.11 au minimum est nécessaire. La protection contre la création d'espaces d'identifiants d'utilisateurs imbriqués (user namespace) dans les environnements sandbox a été renforcée.
  • La configuration des langues supplémentaires a été simplifiée. La détection des langues basée sur les informations des utilisateurs fournies par le service D-Bus AccountsService a été assurée.
  • Les applications utilisant une isolation sandbox imbriquée, par exemple, basées sur le moteur WebKit, sont autorisées à utiliser le protocole AT-SPI pour interagir avec les lecteurs d'écran. Une option « flatpak run —a11y-own-name » a été ajoutée pour sélectionner le bus par lequel l'accès aux outils pour les personnes handicapées est réalisé.
  • Lors de l'exécution de la commande « flatpak run -vv », tous les paramètres applicables d'isolation sandbox sont affichés.
  • Une option « —device=usb » a été ajoutée, ainsi que les paramètres « —usb » et « —no-usb » pour gérer l'accès des applications aux appareils USB.
  • Le support du framework KCompletion a été ajouté, utilisé pour l'autocomplétion des mots-clés de recherche dans KDE.
  • Des variables d'environnement « FLATPAK_DATA_DIR » et « FLATPAK_DOWNLOAD_TMPDIR » ont été ajoutées pour redéfinir les répertoires de données (/usr/share/flatpak) et de fichiers temporaires à télécharger (/var/tmp).
  • La sortie des séquences d'échappement pour afficher la progression des opérations dans les émulateurs de terminal a été ajoutée.

Rappelons que Flatpak simplifie la distribution des applications qui ne figurent pas dans les dépôts principaux des distributions, en préparant un seul conteneur universel, éliminant ainsi la nécessité pour les développeurs de créer des versions séparées pour chaque distribution. Pour les utilisateurs soucieux de sécurité, Flatpak permet d'exécuter une application douteuse dans un conteneur, offrant un accès sélectif uniquement aux fonctionnalités réseau et fichiers nécessaires. Pour les utilisateurs intéressés par les nouveautés, Flatpak permet d'installer les dernières versions test et stables des applications sans nécessiter de modifications du système. Par exemple, les paquets Flatpak sont disponibles pour LibreOffice, GIMP, Inkscape, Kdenlive, Steam, 0 A.D., Visual Studio Code, VLC, Slack, Telegram Desktop, Android Studio, etc.

Pour réduire la taille, le paquet n'inclut que les dépendances spécifiques à l'application. Les bibliothèques système et graphiques de base (GTK, Qt, bibliothèques GNOME et KDE, etc.) sont fournies sous forme d'environnements d'exécution génériques. La principale différence entre Flatpak et Snap réside dans le fait que Snap utilise les composants de l'environnement principal et l'isolation par filtrage des appels système, tandis que Flatpak crée un conteneur distinct du système et gère de larges ensembles d'exécution, fournissant comme dépendances non pas des paquets, mais des environnements système génériques (par exemple, toutes les bibliothèques nécessaires au fonctionnement des programmes GNOME ou KDE).

En plus de l'environnement système standard (runtime) installé via un dépôt spécial, des dépendances supplémentaires (bundle) requises pour le fonctionnement de l'application sont fournies. Au total, le « runtime » et le « bundle » constituent le contenu du conteneur, le « runtime » étant installé séparément et pouvant être lié à plusieurs conteneurs, ce qui permet d'éviter la duplication des fichiers système communs à plusieurs conteneurs.

Plusieurs « runtimes » différents (GNOME, KDE) ou plusieurs versions d'un même « runtime » (GNOME 46, GNOME 47) peuvent être installés sur un même système. Un conteneur d'application en tant que dépendance utilise uniquement le lien à un « runtime » spécifique, sans tenir compte des paquets individuels qui composent le « runtime » choisi. Tous les éléments manquants sont empaquetés directement avec l'application. Lors de la création du conteneur, le contenu du « runtime » est monté comme une partition /usr, et le « bundle » est monté dans le répertoire /app.

La structure du « runtime » et des conteneurs d'applications est formée en utilisant la technologie OSTree, où l'image est mise à jour de manière atomique à partir d'un dépôt similaire à Git, permettant d'appliquer des méthodes de contrôle de version aux composants de la distribution (par exemple, il est possible de revenir rapidement à un état précédent du système). Les paquets RPM sont traduits dans le dépôt OSTree à l'aide d'une couche rpm-ostree.

L'installation et la mise à jour sélective des paquets à l'intérieur de l'environnement de travail ne sont pas supportées — le système est mis à jour non pas au niveau de composants individuels, mais dans son intégralité, changeant son état de manière atomique. Des outils sont fournis pour appliquer des mises à jour de manière incrémentale, évitant la nécessité de remplacer complètement l'image à chaque mise à jour.

L'environnement isolé créé est complètement indépendant de la distribution utilisée et, avec des paramètres appropriés, n'a pas accès aux fichiers et processus de l'utilisateur ou du système principal, et ne peut pas non plus accéder directement au matériel, à l'exception de la sortie via DRI. La sortie graphique et l'organisation de l'entrée sont réalisées grâce au protocole Wayland ou par le biais du transfert de socket X11. L'interaction avec l'environnement externe se fait via le système de messagerie DBus et une API spéciale Portals.

Pour l'isolation, une couche Bubblewrap est utilisée ainsi que des technologies traditionnelles de virtualisation de conteneurs pour Linux, basées sur l'utilisation de cgroups, de namespaces, de Seccomp et de SELinux. Pour la sortie audio, PulseAudio ou PipeWire est utilisé. Lors de la création d'un package, l'isolation peut être désactivée, ce dont se servent de nombreux développeurs de packages populaires pour obtenir un accès complet au système de fichiers et à tous les périphériques du système.

Par exemple, des packages comme GIMP, VSCodium, PyCharm, Octave, Inkscape, Audacity et VLC sont fournis avec un mode d'isolation limité, laissant un accès total au répertoire personnel. En cas de compromission des packages avec accès au répertoire personnel, malgré la présence de l'étiquette « sandboxed » dans la description du package, l'attaquant peut exécuter son code simplement en modifiant le fichier ~/.ashrc. Une question distincte est le contrôle des modifications apportées aux packages et la confiance envers les assembleurs de packages, qui ne sont souvent pas liés au projet principal ou aux distributions.

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster