KDE Plasma erhielt kürzlich ein neues Modul in den Systemeinstellungen, das die Anpassung von Berechtigungen für Flatpaks erlaubt. Zu finden ist es dort unter Anwendungen → Flatpak Permission Settings. Bisher benötigte man dafür eine App wie Flatseal oder nahm die Einstellungen über Befehle im Terminal vor.
Kompliziertes Berechtigungssystem
Aber ganz egal, wo man diese Einstellungen vornimmt, sind sie in ihrer Komplexität wirklich notwendig? Die Frage ergibt sich für mich aus der Erkenntnis, dass das bestehende Berechtigungssystem viele Anwender überfordert, was besonders kritisch ist, da es ja hier um die Sicherheit geht. Flatpaks werden in Sandboxen gegeneinander und gegenüber dem Gastsystem isoliert und haben bei der Auslieferung nur bestimmte Rechte. Jede weitere erteilte Berechtigung bohrt ein weiteres Loch in diesen Container.
Standard-Berechtigungen von Plex in den Plasma-Systemeinstellungen
Die Guten und die Bösen
Flatpak kennt zwei Arten von Berechtigungen. Statische Berechtigungen kommen mit dem Flatpak bei Auslieferung und können zur Laufzeit der App nicht geändert werden. Der Entwickler oder Paketierer entscheidet, welche Berechtigungen er für sinnvoll erachtet und stattet das Flatpak damit aus. Das führt dazu, dass neben adäquat ausgestatteten Flatpaks auch solche mit zu wenigen oder auch zu vielen Löchern im Container gibt. Diese statischen Berechtigungen sind der Grund dafür, dass es Apps wie Flatseal oder das neue KCM-Modul bei KDE Plasma gibt.
Andererseits gibt es dynamische Berechtigungen, die den Anwender zur Laufzeit fragen, ob er dem Flatpak Zugang zu einem bestimmten Teil des Systems geben will, um eine bestimmte Aufgabe zu erledigen. Beispielsweise benötigt ein Editor Zugang zu Dateien, um diese bearbeiten zu können. Diese Berechtigungen schlagen kleinere Löcher in den Container und das auch nur so lange wie nötig. Erlaubt der Anwender zur Laufzeit einem Editor den Zugriff auf eine Datei, so gilt diese Berechtigung nur für diese Datei. Natürlich kann man auch ganze Verzeichnisse oder andere Ressourcen freigeben, aber auch das gilt nur für die laufende Sitzung.
XDG Desktop Portals
Dynamische Berechtigungen werden über XDG Desktop Portals implementiert. Dabei handelt es sich um ein Framework von APIs für verschiedene Desktop-Umgebungen und Toolkits. Sie bieten eine Reihe von Funktionen für Anwendungen, darunter: Ermittlung des Netzwerkstatus, Öffnen einer Datei mit einem Dateiauswahlmenü, Öffnen von URIs, Erstellen von Screenshots und Screencasts.
XDG Portals für verschiedene Desktops und Toolkits in Debian
Jedes Portal hat eine bestimmte Aufgabe, wie der Dokumentation zu entnehmen ist. Manche, wie etwa den Dateiauswahldialog gibt es in mehreren Versionen für verschiedene Toolkits, denn die einzelnen Apps versuchen immer, den Dateiauswahldialog zu starten, den das eigene Toolkit implementiert.
Portals weiter implementieren
Der einzige Grund, warum statische Berechtigungen noch existieren ist, dass sie einfacher zu implementieren sind. Dynamische Berechtigungen müssen mit dem jeweiligen Toolkit, Fenstermanager oder Desktop zusammenarbeiten und dazu in diese integriert werden. Zudem ist das Portals-System recht jung und noch nicht perfekt. Somit werden statische Berechtigungen uns trotzt ihrer Nachteile für eine Übergangszeit weiterhin begleiten.
Das Flatpak ASHPD Demo wurde eigens konzipiert, um das Flatpak-Berechtigungssystem und Portals besser zu verstehen und erkunden zu können.
Quelle: theevilskeleton