Veröffentlichung des eigenständigen Paketsystems Flatpak 1.14.0

Ein neuer stabiler Zweig des Flatpak 1.14-Toolkits wurde veröffentlicht, der ein System zum Erstellen eigenständiger Pakete bereitstellt, die nicht an bestimmte Linux-Distributionen gebunden sind und in einem speziellen Container ausgeführt werden, der die Anwendung vom Rest des Systems isoliert. Unterstützung für die Ausführung von Flatpak-Paketen wird für Arch Linux, CentOS, Debian, Fedora, Gentoo, Mageia, Linux Mint, Alt Linux und Ubuntu bereitgestellt. Flatpak-Pakete sind im Fedora-Repository enthalten und werden vom nativen GNOME-Anwendungsmanager unterstützt.

Wichtige Neuerungen in der Flatpak 1.14-Branche:

  • Es ist möglich, ein Verzeichnis für Dateien im Status (.local/state) zu erstellen und die Umgebungsvariable XDG_STATE_HOME so festzulegen, dass sie auf dieses Verzeichnis verweist.
  • Bedingte Prüfungen der Form „have-kernel-module-name“ hinzugefügt, um das Vorhandensein von Kernelmodulen festzustellen (ein universelles Analogon der zuvor vorgeschlagenen have-intel-gpu-Prüfung, anstelle derer der Ausdruck „have-kernel-module-i915 ” kann jetzt verwendet werden).
  • Der Befehl „flatpak document-unexport —doc-id=…“ wurde implementiert.
  • Der Export von Appstream-Metadaten zur Verwendung in der Hauptumgebung ist möglich.
  • Flatpak-Befehlsvervollständigungsregeln für die Fish-Shell hinzugefügt
  • Der Netzwerkzugriff auf X11- und PulseAudio-Dienste ist zulässig (sofern die entsprechenden Einstellungen hinzugefügt werden).
  • Der Hauptzweig im Git-Repository wurde von „master“ in „main“ umbenannt, da das Wort „master“ neuerdings als politisch inkorrekt galt.
  • Startskripte werden jetzt neu geschrieben, wenn die Anwendung umbenannt wird.
  • Dem Installationsbefehl wurden die Optionen „--include-sdk“ und „--include-debug“ hinzugefügt, um die SDK- und debuginfo-Dateien zu installieren.
  • Unterstützung für den Parameter „DeploySideloadCollectionID“ zu den Dateien „flatpakref“ und „flatpakrepo“ hinzugefügt. Wenn festgelegt, wird die Sammlungs-ID beim Hinzufügen eines Remote-Repositorys festgelegt und nicht nach dem Laden der Metadaten.
  • Ermöglicht die Erstellung verschachtelter Sandbox-Umgebungen für Handler in Sitzungen mit separaten MPRIS-Namen (Media Player Remote Interfacing Specification).
  • Befehlszeilen-Dienstprogramme stellen jetzt Informationen über die Verwendung veralteter Laufzeiterweiterungen bereit.
  • Der Deinstallationsbefehl implementiert eine Bestätigungsanforderung, bevor die Laufzeit oder Laufzeiterweiterungen entfernt werden, die noch verwendet werden.
  • Unterstützung für die Option „--socket=gpg-agent“ für Befehle wie „flatpak run“ hinzugefügt.
  • In libostree wurde eine Sicherheitslücke behoben, die es einem Benutzer möglicherweise ermöglichen könnte, beliebige Dateien auf dem System durch Manipulation des flatpak-system-helper-Handlers (Senden einer Löschanforderung mit einem speziell formatierten Filialnamen) zu löschen. Das Problem tritt nur in älteren Versionen von Flatpak und Libostree auf, die vor 2018 veröffentlicht wurden (< 0.10.2) und betrifft keine aktuellen Versionen.

Wir möchten Sie daran erinnern, dass Flatpak es Anwendungsentwicklern ermöglicht, die Verteilung ihrer Programme, die nicht in den Standard-Distributions-Repositorys enthalten sind, zu vereinfachen, indem sie einen universellen Container vorbereiten, ohne für jede Distribution separate Assemblys zu erstellen. Für sicherheitsbewusste Benutzer ermöglicht Flatpak die Ausführung einer fragwürdigen Anwendung in einem Container und bietet nur Zugriff auf die Netzwerkfunktionen und Benutzerdateien, die mit der Anwendung verknüpft sind. Für Benutzer, die an neuen Produkten interessiert sind, ermöglicht Flatpak die Installation der neuesten Test- und stabilen Versionen von Anwendungen, ohne dass Änderungen am System vorgenommen werden müssen. Flatpak-Pakete werden beispielsweise für LibreOffice, Midori, GIMP, Inkscape, Kdenlive, Steam, 0 AD, Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio usw. erstellt.

Um die Paketgröße zu reduzieren, enthält es nur anwendungsspezifische Abhängigkeiten und die grundlegenden System- und Grafikbibliotheken (GTK-, Qt-, GNOME- und KDE-Bibliotheken usw.) sind als Plug-in-Standardlaufzeitumgebungen konzipiert. Der Hauptunterschied zwischen Flatpak und Snap besteht darin, dass Snap die Komponenten der Hauptsystemumgebung und Isolation basierend auf filternden Systemaufrufen verwendet, während Flatpak einen vom System getrennten Container erstellt und mit großen Laufzeitsätzen arbeitet und Pakete nicht als Abhängigkeiten, sondern als Standard bereitstellt Ihre Systemumgebungen (zum Beispiel alle Bibliotheken, die für den Betrieb von GNOME- oder KDE-Programmen notwendig sind).

Zusätzlich zur Standard-Systemumgebung (Runtime), die über ein spezielles Repository installiert wird, werden zusätzliche Abhängigkeiten (Bundle) bereitgestellt, die für den Betrieb der Anwendung erforderlich sind. Insgesamt bilden Runtime und Bundle die Füllung des Containers, obwohl Runtime separat installiert und an mehrere Container gleichzeitig gebunden wird, wodurch Sie die Duplizierung von Systemdateien vermeiden können, die für Container üblich sind. Auf einem System können mehrere unterschiedliche Laufzeiten (GNOME, KDE) oder mehrere Versionen derselben Laufzeit (GNOME 3.40, GNOME 3.42) installiert sein. Ein Container mit einer Anwendung als Abhängigkeit verwendet eine Bindung nur an eine bestimmte Laufzeit, ohne die einzelnen Pakete zu berücksichtigen, aus denen die Laufzeit besteht. Alle fehlenden Elemente werden direkt mit der Anwendung gepackt. Wenn ein Container erstellt wird, werden die Laufzeitinhalte als /usr-Partition bereitgestellt und das Bundle wird im Verzeichnis /app bereitgestellt.

Die Laufzeit- und Anwendungscontainer werden mithilfe der OSTree-Technologie erstellt, bei der das Image atomar aus einem Git-ähnlichen Repository aktualisiert wird, was die Anwendung von Versionskontrollmethoden auf die Verteilungskomponenten ermöglicht (z. B. können Sie das System schnell auf ein zurücksetzen). vorheriger Status). RPM-Pakete werden mithilfe einer speziellen rpm-ostree-Schicht in das OSTree-Repository übersetzt. Die separate Installation und Aktualisierung von Paketen innerhalb der Arbeitsumgebung wird nicht unterstützt; das System wird nicht auf der Ebene einzelner Komponenten, sondern als Ganzes aktualisiert und ändert seinen Zustand atomar. Bietet Tools zum schrittweisen Anwenden von Updates, sodass das Image nicht bei jedem Update vollständig ersetzt werden muss.

Die generierte isolierte Umgebung ist völlig unabhängig von der verwendeten Distribution und hat bei korrekten Einstellungen des Pakets keinen Zugriff auf Dateien und Prozesse des Benutzers oder des Hauptsystems, kann nicht direkt auf die Geräte zugreifen, mit Ausnahme der Ausgabe über DRI. und Aufrufe an das Netzwerksubsystem. Die Organisation der Grafikausgabe und -eingabe erfolgt über das Wayland-Protokoll oder über die X11-Socket-Weiterleitung. Die Interaktion mit der externen Umgebung basiert auf dem DBus-Nachrichtensystem und einer speziellen Portals-API.

Zur Isolierung werden die Bubblewrap-Schicht und traditionelle Linux-Containervirtualisierungstechnologien verwendet, basierend auf der Verwendung von cgroups, Namespaces, Seccomp und SELinux. PulseAudio wird zur Tonausgabe verwendet. In diesem Fall kann die Isolation deaktiviert werden, die von den Entwicklern vieler beliebter Pakete genutzt wird, um vollen Zugriff auf das Dateisystem und alle Geräte im System zu erhalten. Beispielsweise verfügen GIMP, VSCodium, PyCharm, Octave, Inkscape, Audacity und VLC über einen eingeschränkten Isolationsmodus, der vollen Zugriff auf das Home-Verzeichnis gewährt. Wenn Pakete mit Zugriff auf das Home-Verzeichnis trotz der Kennzeichnung „sandboxed“ in der Paketbeschreibung kompromittiert werden, muss der Angreifer lediglich die Datei ~/.bashrc ändern, um seinen Code auszuführen. Ein separates Problem ist die Kontrolle von Änderungen an Paketen und das Vertrauen in Paketersteller, die oft nicht mit dem Hauptprojekt oder den Distributionen verbunden sind.

Source: opennet.ru

Kommentar hinzufügen