Das Flatpak-Berechtigungssystem

Aus LinuxUser 09/2023

Das Flatpak-Berechtigungssystem

© Michal Kalasek / 123RF.com

Achtung, Kontrolle!

Das Flatpak-Berechtigungssystem gestaltet sich komplex und wenig benutzerfreundlich. Flatseal hilft, die Lernkurve abzuflachen.

Das Paketsystem Flatpak tritt in vergangenen Jahren immer stärker in Konkurrenz zu den herkömmlichen Pendants DEB und RPM. Es stammt aus dem Red-Hat-Umfeld und ist auf den Desktop ausgerichtet, während Snap zwar auch den Desktop bedient, ursprünglich aber eher für Server, Container und eingebettete Systeme entwickelt wurde.

Als Installationsquelle dient in der Regel der Software-Shop Flathub [1], der mittlerweile einen Bestand von über 2000 Apps auf weist und mit rund 1,2 Milliarden Downloads eine imposante Nutzungsstatistik aufweist (Abbildung 1). Durch die stetig wachsende Zahl an unveränderlichen (immutablen) Distributionen [2] nimmt die Verwendung von Flatpak weiter zu, da diese ihre Anwendungen hauptsächlich als Flatpak beziehen (Abbildung 2).

Abbildung 1: Flathub ist ein zentraler Shop zum Verwalten von Flatpaks. Viele Distributionen bringen den Software-Shop bereits mit.

Abbildung 1: Flathub ist ein zentraler Shop zum Verwalten von Flatpaks. Viele Distributionen bringen den Software-Shop bereits mit.


Abbildung 2: Flatpaks nutzen im Betriebssystem installierte Laufzeitumgebungen, um auf häufig benutzte Bibliotheken zuzugreifen. Paketspezifische Bibliotheken integriert Flatpak selbst. Quelle: Flatpak Doks, CC-BY SA 4.0

Abbildung 2: Flatpaks nutzen im Betriebssystem installierte Laufzeitumgebungen, um auf häufig benutzte Bibliotheken zuzugreifen. Paketspezifische Bibliotheken integriert Flatpak selbst. Quelle: Flatpak Doks, CC-BY SA 4.0

Mehrere Versionsstände

Für viele Distributionen stehen Anwendungen sowohl als klassisches Paket als auch als Flatpak zur Verfügung. Das hat den Vorteil, dass man beispielsweise bei LTS-Distributionen neben dem mit der Zeit veraltenden DEB/RPM-Paket ein aktuelles Flatpak als Vorschau oder zum Verwenden neuer Funktionen installieren kann.

Flatpak und Snap unterscheiden sich zwar im Ansatz, weisen aber auch Gemeinsamkeiten auf. Dazu zählt die bei beiden als Sandbox implementierte Verpackung. Das führt dazu, dass beide Systeme von Haus aus oft nicht auf so viele Ressourcen auf dem Host zugreifen können wie ein RPM- oder DEB-Paket. Aus diesem Grund verfügen beide über ein Berechtigungssystem, mit dem Sie benötigte Rechte freigeben und nicht benötigte einschränken.

Dieser Artikel beschreibt das Berechtigungssystem von Flatpak, das sich im Terminal, als GUI-Anwendung und seit kurzem auch als Teil der Systemeinstellungen bei KDE Plasma bedienen lässt. Doch zunächst gilt es, zu klären, worum es sich bei Flatpak-Berechtigungen handelt.

Paketbetreuer entfällt

Bei herkömmlichen Paketsystemen gibt es bei den Distributionen die Rolle des Paketbetreuers, der zwischen Entwickler und Anwender steht. Er nimmt den Quellcode der Entwickler und erstellt ein Paket im von der Distribution unterstützten Format. Dabei setzt er die Richtlinien der Distribution um, die auch festlegen, worauf die Software Zugriff erhält.

Diese Rolle entfällt bei Flatpak, da es für alle Distributionen nur ein Paket gibt, das in der Regel der Entwickler der Software erstellt. Ausnahmen bestätigen die Regel: So pflegt Fedora ein kuratiertes Archiv mit etwa 100 selbst erstellten Flatpaks. Auch Gnome [3] und KDE [4] betreuen eigene Flatpak-Repositories, die oft Nightly-Versionen der später auf Flathub verfügbaren Apps enthalten.

Mit dem Wegfall der Betreuer geht bei Flatpaks eine eher generische Vergabe der Berechtigungen einher. Das führt dazu, dass die meisten davon weniger Berechtigungen mitbringen, als sie im Einsatz benötigen, manche aber auch mehr dürfen, als es aus Sicherheitserwägungen sinnvoll erscheint.

Per Sandbox isoliert

Die Sandboxen, die Flatpaks einschließen, isolieren sie zur Laufzeit gegeneinander und gegenüber dem Host-System. Der Begriff Sandbox bedeutet nichts anderes als einen Container. Jede davon enthält eine Anwendung und ihre Laufzeitumgebung in Form von Bibliotheken und anderen Komponenten. In der Grundeinstellung darf die Anwendung nur auf den Inhalt ihrer Sandbox zugreifen. Soll sei auf Benutzerdateien, Netzwerk, Grafik-Sockets, Subsysteme auf dem Bus oder externe Geräte zugreifen, muss man ihr die entsprechenden Rechte explizit gewähren.

Hier kommt das Berechtigungssystem ins Spiel. Wenn Sie feststellen, dass ein als Flatpak verpackter Musikplayer oder ein Mediaserver nicht auf die Medien auf einer externen Festplatte zugreifen kann, so lässt sich das im Berechtigungssystem beheben. Auch wenn alles funktioniert, wie es soll, ist es sinnvoll, sich die Berechtigungen einer App anzusehen, um eventuell nicht notwendige Berechtigungen zu entfernen.

So laufen etwa Mediaserver wie Plex häufig auf einem NAS oder anderen externen Geräten. Da der Ersteller des Flatpaks die entsprechenden Pfade nicht kennen kann, nutzt er die Berechtigung Gerätezugriff, die alle Geräte des Systems für dieses Flatpak freigibt. Um hier nur die nötigen Rechte zu setzen, müssen Sie diese beispielsweise wie in Abbildung 3 in den Systemeinstellungen von KDE Plasma eintragen.

Abbildung 3: In den Systemeinstellungen von KDE Plasma können Sie spezifische Berechtigungen für ein Flatpak vergeben.

Abbildung 3: In den Systemeinstellungen von KDE Plasma können Sie spezifische Berechtigungen für ein Flatpak vergeben.

Dynamische Berechtigungen

In Form der XDG-Desktop-Portals [5] gibt es auch einen Mechanismus, um Flatpak-Berechtigungen dynamisch zu vergeben. Dabei handelt es sich um ein Framework von APIs für verschiedene Desktop-Umgebungen und Toolkits, das für den Desktop eine Rechtevergabe wie bei Android realisiert.

Portals bieten eine Reihe von Funktionen für Anwendungen, wie das Ermitteln des Netzwerkstatus, das Öffnen einer Datei per Auswahlmenü, das Öffnen von URIs, das Erstellen von Screenshots und Screencasts und vieles mehr. Damit erlauben sie, ohne die Zuhilfenahme zusätzlicher statischer Sandbox-Berechtigungen zeitlich begrenzt mit Daten, Dateien und Diensten zu interagieren. Dabei fragt die Software den Anwender zur Laufzeit, ob er dem Flatpak Zugang zu einer bestimmten Ressource des Systems geben will, um eine angeforderte Aufgabe zu erfüllen.

Diese Berechtigungen schlagen quasi kleinere Löcher in den Container, und das nur so lange wie unbedingt nötig. Erlaubt der Nutzer zur Laufzeit einer Anwendung den Zugriff auf eine Datei, so gilt diese Berechtigung nur für diese eine Datei. Zwar lassen sich auch ganze Verzeichnisse oder andere Ressourcen freigeben, aber auch das gilt nur für die laufende Sitzung.

Soll etwa ein als Flatpak verpackter Dateimanager oder Texteditor Dateien lesen, gegebenenfalls schreiben oder gar ausführen dürfen, wird dazu oft die Berechtigung --filesystem=host vergeben. Sie ermöglicht den Zugriff auf normale Dateien auf dem Host, mit Ausnahme des Host-Betriebssystems selbst. Meist würde aber auch der Zugriff auf einzelne Verzeichnisse genügen, etwa per --filesystem=home/$USER/Downloads.

Das gewährt dem Flatpak solang Zugriff auf alle Dateien im Ordner ~/Downloads/, bis der Anwender das widerruft. Bei dynamischer Rechtevergabe zur Laufzeit erhält das Flatpak lediglich Zugriff auf exakt die Datei, die Sie sehen oder bearbeiten möchten, und das auch nur bis zum Schließen der App.

Statische Berechtigungen

Statische Berechtigungen richten Sie über das Terminal oder über grafische Anwendungen ein. Das funktioniert im Gegensatz zu dynamischen Berechtigungen nicht zur Laufzeit der App. Entwickler betrachten statische Berechtigungen eher als Notlösung und präferieren die dynamische Rechtevergabe über Portals. Mit der Zeit dürfte das statische Berechtigungssystem in den Hintergrund treten und somit auch der derzeit notwendige Lernaufwand entfallen.

Um beim obigen Beispiel eines Editors oder Dateimanagers zu bleiben, vergeben Sie die Berechtigung --filesystem=host im Terminal mit dem ersten Befehl aus Listing 1. Der zweite Aufruf entfernt sie wieder. Die App-ID steht stellvertretend für den Namen der App, wie ihn etwa der Aufruf von flatpak list anzeigt. Der Videoeditor Kdenlive heißt als Flatpak beispielsweise org.kde.kdenlive. Die Manpage zu flatpak-override listet alle möglichen Parameter auf.

Listing 1

Flatpak-Berechtigungen

$ flatpak override App-ID --filesystem=host
$ flatpak override <App-ID --nofilesystem=host

Wurde das Flatpak systemweit statt im User-Kontext installiert, benötigen Sie Sudo, um die Rechte zu ändern. Eine gute Referenz der anwendbaren Befehle, um die Sandbox durchlässiger zu gestalten, bietet die Flatpak-Dokumentation [6].

Flatseal

Für die meisten Anwender ist vermutlich der Weg über eine grafische Anwendung der komfortablere. Allerdings steht das Thema Rechtevergabe bei Flatpaks nicht unbedingt im Rampenlicht. Hier gibt es lediglich die Anwendung Flatseal [7], über die wir in LU 10/2021 [8] bereits ausführlich berichtet haben (Abbildung 4). Sie macht einen guten Job und bietet zudem eine eingängige Dokumentation, die aber auch notwendig ist.

Abbildung 4: Flatseal dient als Standardanwendung zur grafischen Handhabung von Flatpak-Berechtigungen und wird selbst als Flatpak installiert.

Abbildung 4: Flatseal dient als Standardanwendung zur grafischen Handhabung von Flatpak-Berechtigungen und wird selbst als Flatpak installiert.

Flatseal installieren Sie am einfachsten als Flatpak. Alternativ lässt sich die Anwendung im AUR erstellen oder mit Fedora 38 (allerdings nur in einer älteren Version) installieren. Flatseal beherrscht statische und seit Version 1.7 auch dynamische Berechtigungen in Form der XDG-Desktop-Portals. Zudem lassen sich bestimmte Berechtigungen für alle installierten Flatpaks ändern. Das erlaubt es beispielsweise, das neue Display-Protokoll Wayland zu unterstützen und zusätzlich eine Rückfallmöglichkeit für X11 zu setzen.

Seit kurzem gewährt KDE Plasma seinen Anwendern über die Systemeinstellungen des KDE-Desktops Zugriff auf das Berechtigungssystem für Flatpaks. Sie finden die entsprechenden Settings unter Anwendungen | Flatpak-Berechtigungen (Abbildung 5).

Abbildung 5: Seit kurzem integriert KDE Plasma eine Vergabe der Flatpak-Berechtigungen, sodass man Flatseal nicht mehr ben&ouml;tigt.

Abbildung 5: Seit kurzem integriert KDE Plasma eine Vergabe der Flatpak-Berechtigungen, sodass man Flatseal nicht mehr benötigt.

Fazit

Flatpaks gerieten in der Vergangenheit häufig wegen Sicherheitsbedenken in die Kritik. Dazu trugen nicht zuletzt die mitunter zu großzügig verteilten Berechtigungen bei, die das Sandbox-Prinzip unterlaufen. Solche statischen Berechtigungen sind eine Notlösung, bis die Entwickler XDG-Desktop-Portals so weit ausbauen, dass sie alle Situationen einbeziehen.

Zur Vergabe von Flatpak-Rechten im Terminal raten wir nur Anwendern, die auch sonst ständig mit den Berechtigungen arbeiten. Als komfortable grafische Umsetzung bietet sich die KDE-Einbindung an. Sie gestaltet die Angelegenheit übersichtlicher und bietet zudem die Möglichkeit, Ressourcen lesend oder zusätzlich schreibend einzubinden.

Auch wenn die Berechtigungen für ein Flatpak bereits bei der Installation ausreichen, empfiehlt sich dennoch ein Blick in Flatseal oder die KDE-Systemeinstellungen, um zu prüfen, ob das Paket sich nicht etwa zu viele Freiheiten nimmt. Wenn Sie tiefer in das Thema einsteigen möchten, empfehlen wir als Lektüre neben der offiziellen Flatpak-Doku den Überblick auf der Webseite TheEvilSkeleton [9]. (tle)

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
LinuxUser 09/2023 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben