Could we help you? Please click the banners. We are young and desperately need the money
Wenn Sie Linux nutzen und Flatpak-Anwendungen verwenden, sind Sie möglicherweise auf ein frustrierendes Problem gestossen: Ihr Drucker erscheint einfach nicht im Druckdialog bestimmter Anwendungen. Sie wissen, dass Ihr Drucker in nativen Anwendungen einwandfrei funktioniert, aber wenn Sie versuchen, aus einer Flatpak-App wie Brave Browser, Opera oder sogar LibreOffice zu drucken, sehen Sie nur eine Option "Als PDF speichern" oder gar keinen Drucker. Dies ist ein häufiges Problem, das viele Linux-Benutzer betrifft, und glücklicherweise gibt es eine einfache Lösung.
Dieser Guide führt Sie durch das Verständnis, warum dies geschieht, und wie Sie es dauerhaft mit nur wenigen Terminal-Befehlen beheben können. Egal, ob Sie ein Linux-Einsteiger oder ein Systemadministrator sind, der mehrere Workstations verwaltet, diese Lösung wird Ihnen helfen, die volle Druckfunktionalität Ihrer Flatpak-Anwendungen wiederherzustellen.
CUPS (Common Unix Printing System) ist das Standard-Drucksystem auf Linux- und Unix-ähnlichen Betriebssystemen. Es verwaltet Druckaufträge, Warteschlangen und Druckertreiber und fungiert als Vermittler zwischen Ihren Anwendungen und Ihren physischen oder Netzwerkdruckern. Wenn eine Anwendung etwas drucken möchte, kommuniziert sie mit dem CUPS-Dienst, um verfügbare Drucker zu entdecken und Druckaufträge zu senden.
CUPS speichert seine Konfigurationsdateien in /etc/cups und läuft normalerweise als Systemdienst, mit dem Anwendungen über einen Socket verbinden können (üblicherweise unter /var/run/cups/cups.sock). Damit eine Anwendung Drucker erkennen und nutzen kann, benötigt sie Zugriff auf sowohl die CUPS-Konfigurationsdateien als auch den CUPS-Socket.
Flatpak ist ein modernes Anwendungsverteilungssystem für Linux, das Anwendungen in isolierten Containern oder "Sandboxen" ausführt. Diese Sandboxing-Technik bietet mehrere Vorteile: Sie verbessert die Sicherheit, indem sie einschränkt, worauf eine Anwendung zugreifen kann, verhindert Konflikte zwischen verschiedenen Anwendungsversionen und macht Anwendungen über verschiedene Linux-Distributionen hinweg portabler.
Diese Sicherheit hat jedoch ihren Preis: Standardmässig haben Flatpak-Anwendungen sehr begrenzten Zugriff auf Ihr System. Sie laufen in ihrer eigenen isolierten Umgebung und können nicht auf Systemressourcen zugreifen, es sei denn, dies wird ausdrücklich erlaubt. Dies schliesst den Zugriff auf Hardware-Geräte, Netzwerkdienste und Systemkonfigurationsdateien ein – einschliesslich des CUPS-Drucksystems.
Wenn Sie eine Flatpak-Anwendung installieren, definiert der Paket-Maintainer eine Reihe von Standardberechtigungen für diese Anwendung. Einige Anwendungen wie Chromium oder Firefox werden bereits mit aktivierten Druckberechtigungen ausgeliefert, da die Maintainer den notwendigen CUPS-Socket-Zugriff und die Dateisystem-Berechtigungen im Manifest der Anwendung inkludiert haben.
Andere Anwendungen, insbesondere solche, die auf Chromium basieren (wie Brave Browser und Opera), oder Anwendungen wie LibreOffice, haben diese Berechtigungen möglicherweise standardmässig nicht aktiviert. Das bedeutet nicht, dass die Anwendungen selbst defekt sind – sie funktionieren einwandfrei – aber die Flatpak-Sandbox blockiert ihren Zugriff auf CUPS und verhindert so, dass sie Ihre Drucker entdecken können.
Die Lösung ist unkompliziert: Wir müssen Flatpak-Anwendungen die Berechtigung erteilen, auf das CUPS-Konfigurationsverzeichnis zuzugreifen. Dies geschieht mit dem Befehl flatpak override, der es Ihnen ermöglicht, die Berechtigungen einer Anwendung nach der Installation zu ändern.
Um einer bestimmten Flatpak-Anwendung CUPS-Zugriff zu gewähren, verwenden Sie die folgende Befehlsstruktur:
flatpak override --user --filesystem=/etc/cups:ro ANWENDUNGS-ID
Der Parameter --filesystem=/etc/cups:ro gewährt Lesezugriff auf das CUPS-Konfigurationsverzeichnis. Das Suffix :ro stellt sicher, dass die Anwendung die Konfiguration lesen, aber nicht ändern kann, wodurch die Systemsicherheit erhalten bleibt.
Hier sind Befehle für die am häufigsten betroffenen Anwendungen:
# Brave Browser
flatpak override --user --filesystem=/etc/cups:ro com.brave.Browser
# Opera Browser
flatpak override --user --filesystem=/etc/cups:ro com.opera.Opera
# Google Chrome
flatpak override --user --filesystem=/etc/cups:ro com.google.Chrome
# Microsoft Edge
flatpak override --user --filesystem=/etc/cups:ro com.microsoft.Edge
# Vivaldi Browser
flatpak override --user --filesystem=/etc/cups:ro com.vivaldi.Vivaldi
# LibreOffice
flatpak override --user --filesystem=/etc/cups:ro org.libreoffice.LibreOffice
# OnlyOffice
flatpak override --user --filesystem=/etc/cups:ro org.onlyoffice.desktopeditors
# GIMP
flatpak override --user --filesystem=/etc/cups:ro org.gimp.GIMP
# Inkscape
flatpak override --user --filesystem=/etc/cups:ro org.inkscape.Inkscape
# Okular (PDF-Betrachter)
flatpak override --user --filesystem=/etc/cups:ro org.kde.okular
# Evince (Dokumentenbetrachter)
flatpak override --user --filesystem=/etc/cups:ro org.gnome.Evince
# Scribus (Desktop Publishing)
flatpak override --user --filesystem=/etc/cups:ro net.scribus.Scribus
Wenn Sie allen Flatpak-Anwendungen auf Ihrem System gleichzeitig CUPS-Zugriff gewähren möchten, können Sie den Override-Befehl ohne Angabe einer Anwendungs-ID verwenden:
flatpak override --user --filesystem=/etc/cups:ro
Dies erstellt ein globales Override, das für jede Flatpak-Anwendung gilt, die Sie installiert haben oder in Zukunft installieren werden. Dies ist besonders nützlich für Systemadministratoren, die mehrere Workstations verwalten, oder für Benutzer, die häufig neue Flatpak-Anwendungen installieren und dieses Problem vollständig vermeiden möchten.
Beachten Sie, dass dieser Befehl nur Ihr Benutzerkonto betrifft (aufgrund des --user-Flags). Wenn Sie dies systemweit für alle Benutzer anwenden möchten, ersetzen Sie --user durch --system:
sudo flatpak override --system --filesystem=/etc/cups:ro
In den meisten Fällen reicht es aus, Dateisystemzugriff auf /etc/cups zu gewähren. Wenn Sie jedoch nach Anwendung des obigen Fixes immer noch Probleme haben, müssen Sie möglicherweise auch sicherstellen, dass die CUPS-Socket-Berechtigung aktiviert ist. Viele Flatpak-Anwendungen haben diese Berechtigung bereits standardmässig, aber Sie können sie überprüfen oder aktivieren mit:
# Für eine bestimmte Anwendung
flatpak override --user --socket=cups com.brave.Browser
# Für alle Anwendungen
flatpak override --user --socket=cups
Der Parameter --socket=cups gewährt der Anwendung Zugriff zur Kommunikation mit dem CUPS-Druckdienst über dessen Socket-Schnittstelle. In Kombination mit dem Dateisystemzugriff auf das Konfigurationsverzeichnis stellt dies die vollständige Druckfunktionalität sicher.
Nach Anwendung der Override-Befehle sollten Sie die betroffenen Anwendungen neu starten. Schliessen Sie sie einfach vollständig und öffnen Sie sie erneut. Versuchen Sie dann, ein Dokument oder eine Webseite zu drucken:
Sie sollten jetzt alle Ihre konfigurierten CUPS-Drucker im Druckdialog der Anwendung sehen, genau wie in nativen Anwendungen.
Wenn Sie überprüfen möchten, welche Berechtigungen eine Flatpak-Anwendung derzeit hat, können Sie folgenden Befehl verwenden:
flatpak info --show-permissions ANWENDUNGS-ID
Zum Beispiel:
flatpak info --show-permissions com.brave.Browser
Dies zeigt alle der Anwendung gewährten Berechtigungen an, einschliesslich Dateisystemzugriff, Socket-Zugriff und andere Fähigkeiten. Suchen Sie nach Einträgen wie sockets=cups im Abschnitt [Context], um zu bestätigen, dass CUPS-Zugriff aktiviert ist.
Sie fragen sich vielleicht, ob die Gewährung dieser Berechtigungen die Sicherheitsvorteile des Flatpak-Sandboxings beeinträchtigt. Die Antwort lautet: minimal. Die Berechtigungen, die wir gewähren, sind:
Dies sind vernünftige Berechtigungen für jede Anwendung, die Druckfunktionalität benötigt. Die Anwendung läuft weiterhin in ihrer Sandbox und kann nicht auf andere Teile Ihres Systems zugreifen, es sei denn, dies wird ausdrücklich erlaubt. Sie geben ihr lediglich den minimal notwendigen Zugriff, um ihre Druckanforderungen zu erfüllen.
Während dieser Fix das Druckproblem für Flatpak-Anwendungen löst, ist es erwähnenswert, dass einige Benutzer es vorziehen, bestimmte Anwendungen mit nativen Paketformaten (.deb, .rpm oder Distributions-Repositories) anstelle von Flatpak zu installieren. Native Pakete haben normalerweise diese Sandboxing-Einschränkungen nicht und funktionieren mit CUPS direkt ohne weitere Konfiguration.
Ziehen Sie native Pakete in Betracht, wenn:
Flatpak bietet jedoch erhebliche Vorteile in Bezug auf Sicherheit, Isolation und Kompatibilität über verschiedene Distributionen hinweg, was es für viele Benutzer zur bevorzugten Wahl macht, sobald die notwendigen Berechtigungen konfiguriert sind.
Wenn Sie eine grafische Oberfläche gegenüber Terminal-Befehlen bevorzugen, können Sie Flatseal verwenden, einen Berechtigungsmanager für Flatpak-Anwendungen. Flatseal bietet eine benutzerfreundliche Möglichkeit, Flatpak-Berechtigungen anzuzeigen und zu ändern, ohne die Kommandozeile zu verwenden.
Um Flatseal zu installieren:
flatpak install flathub com.github.tchx84.Flatseal
Nach der Installation starten Sie Flatseal, wählen die Anwendung aus, die Sie ändern möchten, scrollen zum Abschnitt "Filesystem" und fügen /etc/cups:ro zur Liste der erlaubten Pfade hinzu. Sie können auch die Option "Printing system (cups)" im Abschnitt "Socket" aktivieren.
Das Problem, dass Drucker nicht in Flatpak-Anwendungen erscheinen, ist eine häufige Frustration für Linux-Benutzer, lässt sich aber leicht beheben, indem man versteht, wie Flatpak-Sandboxing funktioniert, und die notwendigen CUPS-Berechtigungen gewährt. Mit nur einem einzigen Befehl können Sie die volle Druckfunktionalität für jede Flatpak-Anwendung wiederherstellen.
Egal, ob Sie einzelne Anwendungen nach Bedarf reparieren oder ein globales Override für alle Flatpak-Apps anwenden, Sie haben jetzt das Wissen, um Druckberechtigungen effektiv zu verwalten. Diese Lösung schafft ein Gleichgewicht zwischen Sicherheit und Funktionalität und ermöglicht es Ihren Flatpak-Anwendungen, auf Drucker zuzugreifen, während die Isolationsvorteile containerisierter Anwendungen erhalten bleiben.
Denken Sie daran, dass Sie nach Anwendung dieser Berechtigungen möglicherweise die betroffenen Anwendungen neu starten müssen, damit die Änderungen wirksam werden. Wenn weiterhin Probleme auftreten, überprüfen Sie, ob Ihr CUPS-Dienst ordnungsgemäss läuft und dass Ihre Drucker in Ihren Systemeinstellungen korrekt konfiguriert sind.