Ubuntu: Neue Schnittstelle für eingesperrten Firefox

Firefox als Snap-Paket führt zu Problemen. Ubuntu-Entwickler präsentieren nun eine erste Lösung, von der auch Flatpak und andere Browser profitieren können.

In Pocket speichern vorlesen Druckansicht 122 Kommentare lesen

(Bild: Collage: heise online)

Lesezeit: 6 Min.
Von
  • Martin Gerhard Loschwitz
  • Keywan Tonekaboni
Inhaltsverzeichnis

Seit Ubuntu 22.04 LTS (Jammy) gibt es Firefox nur noch als Snap-Paket. Da der Browser hier abgeschirmt in einer Sandbox läuft, scheitert die Kommunikation von Erweiterungen mit anderen auf dem System installierten Programmen, beispielsweise dem Passwortmanager KeepassXC. Als Lösung arbeitet das Ubuntu-Team an einer neuen Schnittelle, die den Austausch gezielt erlaubt.

Eine erste Version dafür hat der Canonical-Mitarbeiter Olivier Tilloy vorgestellt und bittet Nutzer um Feedback. Mit wenigen Befehlen kann man diese Schnittstelle unter Ubuntu 22.04 LTS mit einer Beta-Version von Firefox selber ausprobieren, auch wenn es noch nicht ganz rund läuft.

Möchte eine Browser-Erweiterung das Native Messaging API nutzen, fragt ein Popup nach Erlaubnis.

Browser-Erweiterungen in Firefox und Chrome-Browsern verwenden die Native Messaging API, um mit einem Programm auf dem Host-System zu kommunizieren. Eine Anwendung wie der Passwortmanager KeepassXC definiert in einer JSON-Datei, wie der bereitgestellte Dienst (Native Messaging Server) angesprochen wird und welche Erweiterung darauf zugreifen darf. Doch die Sandbox von Snap oder Flatpak klemmt diese Schnittstelle ab.

Um das Problem zu lösen, haben Olivier Tilloy und sein Kollege James Henstridge das Desktop-Portal ("xdg-desktop-portal") um die neue Schnittstelle "WebExtensions" erweitert. Die erlaubt es Browsern nun, nach einer Freigabe für einen bestimmten Native Messaging Server anzufragen. Wird dieser zugestimmt, kann die Browser-Erweiterung über das Native Messaging API mit gewünschten Programmen auf dem Host-System kommunizieren. Der Ansatz erteilt keinen Freibrief, sondern für jede Browser-Erweiterung muss der Zugriff separat erteilt werden.

Das Desktop-Portal ist eine Sammlung an Schnittstellen und wurde ursprünglich für Flatpak entwickelt, kann aber auch von Snap genutzt werden. Über Portale erteilt das System oder der Benutzer einzelnen Anwendungen gezielte Freigaben auf Dateien, Geräte oder Aktionen wie Drucken oder Screenshots. Realisiert sind die Freigaben auf Basis des D-Bus-Protokolls.

Zum Ausprobieren der neuen Schnittstelle empfiehlt sich ein Testprofil in Firefox.

Die Veränderungen am Desktop-Portal haben die Ubuntu-Entwickler Upstream beim Flatpak-Projekt eingereicht, wo es aber noch nicht integriert wurde. Enthalten ist die neue Schnittstelle aber mittlerweile im Paket "xdg-desktop-portal" für Ubuntu 22.04. Zudem ist die im Snap-Store verfügbare Beta von Firefox 104 entsprechend angepasst.

Damit hat Tilloy nach eigenen Angaben die neue Schnittstelle erfolgreich mit KeepassXC und der Gnome-Shell Integration zur Installation von Erweiterungen verwendet. Wir konnten das ebenfalls reproduzieren, auch wenn es nicht auf Anhieb klappte. KeepassXC ließ sich nicht mit der Browser-Erweiterung koppeln, wenn wir es als AppImage ausführten. Mit der Version aus der APT-Paketverwaltung (Debian-Paket) konnten wir KeepassXC wie gewohnt nutzen.

Wer die Funktion auf Systemen mit Ubuntu 22.04 selber testen möchte, muss einige Voraussetzungen beachten. Beenden Sie zunächst Firefox. Kontrollieren Sie dann, ob das Paket "xdg-desktop-portal" in der Version "v1.14.4-1ubuntu2~22.04.1" installiert ist. Denn nur in dieser ist die neue WebExtensions-Schnittstelle bereits enthalten. Prüfen Sie die Version mit apt policy xdg-desktop-portal und erzwingen Sie die Installation gegebenenfalls mit folgendem Befehl:

sudo apt install xdg-desktop-portal=1.14.4-1ubuntu2~22.04.1

Mit der neuen Schnittstelle verwaltet man auch mit einem über Snap installierten Firefox die Gnome-Shell-Erweiterungen.

Nötig ist zudem Firefox 104 aus dem Beta-Track des Snap-Store, denn auch der Browser muss an die neue Schnittstelle angepasst werden. Wechseln Sie dazu in "Ubuntu Software" bei Firefox die Quelle auf "latest/beta". Per Kommandozeile geht es mit folgendem Befehl:

sudo snap refresh firefox --beta

Starten Sie außerdem das Desktop-Portal neu. Zwar soll es reichen, den Prozess xdg-desktop-portal mit `kill -9` zu beenden. Bei uns war es zuverlässiger, den Dienst mit Systemd neuzustarten:

systemctl --user restart xdg-desktop-portal

So stellen Sie sicher, dass der Portal-Dienst die neue Erweiterung lädt. Starten Sie dann Firefox mit dem Profilmanager (/snap/bin/firefox -P), um nicht ihr vorhandenes Firefox-Profil durch die Beta-Version zu zerschießen.

Erzeugen Sie ein neues Profil und starten Sie damit Firefox. Installieren Sie dann eine Browser-Erweiterung, die das Native Messaging API nutzt. Wenn alles richtig eingerichtet ist, sollte ein System-Popup-Fenster fragen, ob Firefox WebExtensions starten darf.

Ausprobieren können Sie dies mit der Webseite für Gnome-Erweiterungen. Öffnen Sie die Webseite extensions.gnome.org und installieren Sie die "Erweiterung GNOME Shell-Integration" und erlauben den Zugriff für WebExtension. Dann installieren mit "sudo apt install chrome-gnome-shell" das zugehörige Host-Programm. Anschließend sollten Sie unter "Installierte Erweiterungen" https://extensions.gnome.org/local/ die auf Ihrem System installierten Erweiterungen verwalten können. (Ignorieren Sie die Fehlermeldung, dass der Host-Connector API v6 nicht ünterstützt.)

Sollte Firefox nicht nach Erlaubnis für WebExtensions fragen, gibt es einen kuriosen Lösungsweg: Kontrollieren Sie die Berechtigungen für das Firefox-Snap-Paket mit dem Flatpak-Kommandozeilenbefehl.

sudo apt install flatpak
flatpak permission-show snap.firefox

Mit den Anpassungen der Ubuntu-Entwickler am Desktop-Portal, klappt auch das ausfüllen von Passwörtern mit der KeepassXC-Erweiterung wieder.

Der Befehl sollte eine Tabelle mit den Berechtigungen zeigen, wo für jeden eingerichteten Native-Messaging-Dienst der Eintrag in einer eigenen Zeile steht. Passen Sie gegebenenfalls die Berechtigung an. Nutzen Sie die Einträge in der Tabelle als Vorlage. Mit folgenden Befehlen erlauben Sie den Erweiterungen für die Gnome-Shell-Integration und KeepassXC den Zugriff auf die Native-Messaging-Dienste.

flatpak permission-set webextensions org.gnome.chrome_gnome_shell    snap.firefox yes
flatpak permission-set webextensions org.keepassxc.keepassxc_browser snap.firefox yes

Um die neue WebExtension-Schnittstelle zu verwenden, braucht man von Firerfox die neueste Beta-Version aus dem Snap-Store.

Bei Canonicals sonst häufigen Sonderwegen ist löblich, dass die Ubuntu-Entwickler einen Ansatz gewählt haben, der das Problem allgemein löst. Das Portal für WebExtension funktioniert prinzipiell sowohl mit Chrome-Browsern (Google Chrome, Chromium, Vivaldi, …) als auch mit Flatpak. Diese müssen nur um die neue Schnittstelle erweitert werden.

Von dem Sandbox-Problem ist auch das PKCS#11-Interface für Smartcards betroffen. Oliver Tilloy zeigt sich optimistisch, auch hierfür bald ein Portal implementieren zu können. Zunächst soll sich aber das WebExtension-Portal in der Praxis bewähren.

(ktn)