Programme aus Flatpak/Snap laufen nicht 100% sauber - Lösung

Begonnen von Kopinski, 16.12.2023, 13:57

Vorheriges Thema - Nächstes Thema

Kopinski

Flatpak baut ja eine Sandbox um das installierte Programm herum. Wenn man über die graphische "Software" Installation, vulgo "Shop" unter Linux, z.B. Ubuntu, Mint etwas installiert, steht es auch als "Flatpak" oder "Snap" zur Verfügung.
Oft ist diese Version neuer, als die reguläre.
Es wird in Klammern nach dem Namen der Software darauf hingewiesen.

Leider laufen diese Programme aus Flatpak nicht immer sauber. So wurdeh ier "Telegram" als Fehlersbehaftet gemeldet.

Ich rette einen Thread aus dem alten Kuketz-Form.

URSPRUNGSANFRAGE:
Zitatich nutze neuerdings Firejail.

Es ist mir bekannt,dass in Linux Mint unter /etc/firejail Profile von den Anwendungen enthalten sind,welche dann von Firejail nach dem Befehl "sudo firecfg" kontrolliert werden.

Obwohl Telegram als Profil in dem Ordner enthalten ist,kann ich,wenn ich Telegram auf dem Desktop starte (ich nutze Telegram nur auf dem Desktop),nach dem Befehl "firejail --list" nicht sehen,dass Telegram in der Sandbox ist.

Was mache ich falsch?

Wenn ich zum Beispiel Firefox öffne,und "firejail --list" ausführe,kommt die Bestätigung: /usr/bin/firejail /usr/bin/firefox
Müsste das nicht auch erscheinen,wenn Telegram gesandboxt wäre?Wie kann ich Telegram Desktop in der Sandbox ausführen?

Ergänzt: Es wurde mit Flatpak installiert.

Antworten:
Als normales Paket über die Paketverwaltung oder als Snap? Letztere werden (ebensowenig wie Flatpak) von Firejail nicht unterstützt, sondern werden auf Ubuntu (-basierten) Systemen mit AppArmor abgesichert.

Eine flatpak sandbox startet bei der strengsten Stufe und eine App fügt dann alle weitere Berechtigungen die von ihr benötigt werden hinzu. Mittels flatpak info -M <APP-ID> kann man sich die Berechtigungen anschauen und mittels flatpak override --user <BERECHTIGUNEGN> <APP-ID> kann man Berechtigungen entfernen oder hinzufügen. (Achtung: Wenn <APP-ID> weggelassen wird gelten die geänderten Berechtigungen für alle flatpaks). flatpak run --command=bash <APP-ID> öffnen eine shell in der sandbox in der man sich umschauen kann.

Beispiel für Telegram:

Zitat$ flatpak info -M org.telegram.desktop
[Context]
shared=network;ipc;
sockets=x11;wayland;pulseaudio;
devices=all;
filesystems=xdg-download;xdg-run/pipewire-0;

[Session Bus Policy]
org.freedesktop.Notifications=talk
com.canonical.indicator.application=talk
org.mpris.MediaPlayer2.tdesktop=own
org.freedesktop.FileManager1=talk
org.kde.StatusNotifierWatcher=talk
org.freedesktop.ScreenSaver=talk
com.canonical.Unity=talk
org.gnome.Mutter.IdleMonitor=talk
org.ayatana.indicator.application=talk
com.canonical.AppMenu.Registrar=talk
org.gnome.SettingsDaemon.MediaKeys=talk
$ flatpak override --user --unshare=ipc --nosocket=x11 --nodevice=all --device=dri --no-talk-name=org.kde.StatusNotifierWatcher org.telegram.desktop
Welche Änderungen wurden gemacht?

   
ZitatX11 wurde verboten da es unsicher ist (--unshare=ipc --nosocket=x11). (Funktioniert natürlich nur unter Wayland.)
    Nur noch Basis-"Geräte" wie /dev/null oder /dev/random und die Grafik hardware sind erlaubt (--nodevice=all --device=dri). (Videotelefonie funktioniert so nicht mehr.)
    Es darf nichtmehr mit org.kde.StatusNotifierWatcher gesprochen werden.


Wer es lieber grafisch möchte kann Flatseal nutzen.

Alles was du nicht brauchst sollte entfernt werden :geek: .

Share

    Network: Wenn du die Netzwerk/Internet Features des Flatpak nicht nutzt.
    IPC: Wenn du Wayland (native) nutzt.

Socket

    X11: Wenn du Wayland (native) nutzt.
    PulseAudio: Wenn du keinen Sound benötigst.
    D-Bus: Immer (außer für Entwicklungsprogramme wie z.B. d-feet)
    SSH: Wenn du die SSH Features des Flatpaks nicht nutzt.
    pcsc: Wenn du keine SmartCards nutzt.
    cups: Wenn du nicht drucken musst.

Device

    shm: Wenn das flatpak auch mit privatem shm funktioniert.
    all: Wenn du keine weiteren Devices wie z.B. Webcams nutzt. (Meistens muss du dri erlauben wenn du all entfernst.)

Allow

    devel: Immer außer für IDEs/Debuggers.
    multiarch: Immer außer für Programme wie wine oder steam.
    bluetooth: Wenn du kein blauzahn :mrgreen: nutzt.
    canbus: Wenn du kein canbus nutzt.


Filesystem

    host: Immer.
    host-os: Immer.
    host-etc: Immer.
    home: Immer.
    [PATH]: Wenn er zu weit-gefasst aussieht. Wenn das flatpak nur lesenden zugriff benötigt, füge :ro an. Wenn du home/host entfernt hast muss du hier i.d.R. ein paar Verzeichnisse erlauben z.B. xdg-documents.

Persistent

    Nie, aber manchmal ist es sinnvoll neue private, persistente Verzeichnisse zu erstellen wenn home/host entfernt wurde.

System Bus

    Alles was nicht zwingen erforderlich ist.

Session Bus

    Alles was nicht zwingen erforderlich ist.

Portals

    Desktop-Portale sind sicher.

TL;DR: Filesystem host/home und D-Bus sollten entschärft werden.

Bei der Sicherheit von flatpaks ist auch noch zu beachten dass man keine flatpaks mit einer runtime die EOL ist nutzt. In so einem Fall sollte man ein Ticket öffnen und (wenn es funktioniert) mittels --runtime= oder --runtime-version= (man 1 flatpak-run) eine neuere runtime nutzen die noch nicht EOL ist.
 

duda

Flatpak verwende ich grundsätzlich nur, wo es (bislang) keine andere Möglichkeit gibt (bspw. Chromium ungoogled).

Kopinski

Zitat von: duda am 16.12.2023, 15:15Flatpak verwende ich grundsätzlich nur, wo es (bislang) keine andere Möglichkeit gibt (bspw. Chromium ungoogled).
Hier Vorsicht! Es kann sein, das Videokonferenzen damit hängen. War so bei mir.

Möglicherweise muss Zugriff auf Kamera, Mic und WebRTC separrat mit dem Flatseal freigegeben werden.

Der Browser ist sehr gut, wenn man Chromium nutzen muss. Lief bei mir gut generell.