#howto - gestire i permessi di Flatpak

Scritto da il
Redatto da
ubuntu
fedora
archlinux
flatpak

Apri un applicazione Flatpak che accede al tuo file system e… non trovi nessuno dei tuoi file. Ti è mai capitato? questo perché Flatpak ha una gestione dei permessi separata dal tuo utente. Vediamo ora come gestire questi permessi.

I permessi di Flatpak

A livello concettuale si può pensare alla gestione dei permessi di Flatpak in maniera molto simile a quello che avviene su Android, infatti ogni applicazione è quasi completamente isolata fino a che non vengono concessi i permessi per ogni aspetto del sistema, come:

  • Le cartelle che si possono leggere (tranne la cartella dell’app stessa sotto ~/.var/app/).
  • La connessione ad internet.
  • Le chiamate di sistema.
  • Servizi di sistema quali audio, grafica o meccanismi di input.

Tutto ciò avviene tramite un concetto base di Flatpak, ovvero i portali, ed è molto ben descritto (sicuramente meglio di come potrei fare io ora) sulla documentazione ufficiale.

Gestire i permessi da command line

I permessi possono essere gestiti tramite command line, tramite il client stesso di Flatpak e senza installare nient’altro.

Leggere i permessi

Innanzitutto per vedere i permessi attualmente usati da un applicazione basta digitare:

flatpak info --show-permissions id.applicazione

Ad esempio per vedere i permessi di gedit digitare:

flatpak info --show-permissions org.gnome.gedit 

L’output dovrebbe somigliare a questo:

[Context]
shared=ipc;
sockets=x11;wayland;fallback-x11;
filesystems=xdg-run/gvfsd;host;

[Session Bus Policy]
org.gtk.vfs.*=talk

Sovrascrivere i permessi

I permessi sono organizzati in sezioni, le sezioni possono essere di diversa natura, Context, DBus, Socket, FileSystem etc…

Per cambiare i permessi si utilizza il comando “override”:

flatpak override opzioni... id.applicazione

Si possono sovrascrivere le impostazioni a livello globale, con l’opzione --system (è comunque l’opzione di default) oppure a livello utente con l’opzione --user.

La documentazione del comando override è disponibile sul sito ufficiale con tanto di esempi.

Alcune possibilità tra quelle che più possono servirvi sono:

  • --share=SUBSYSTEM, dove il SUBSYSTEM può essere network o ipc, serve per condividere un sottosistema con l’host. Il contrario è dato dall’opzione --unshare
  • --socket=SOCKET espone un socket all’applicazione, l’opzione opposta sarebbe --nosocket. I socket disponibili sono:
    • x11
    • wayland
    • fallback-x11
    • pulseaudio
    • system-bus
    • session-bus
    • ssh-auth
    • pcsc
    • cups
  • --device=DEVICE, espone uno o più dispositivi all’applicazione, l’opzione opposta è rappresentata da --nodevice, le possibili scelte sono:
    • dri
    • kvm
    • shm
    • all, espone tutti i dispositivi, utile se non è elencato tra quelli di sopra.
  • --allow=FEATURE consente specifiche “feature”, la documentazione sulle feature si può trovare nella pagine delle build, l’operazione opposta è --disable, le feature sono:
    • devel
    • multiarch
    • bluetooth
    • canbus
    • per-app-dev-shm
  • --filesystem=FILESYSTEM permette all’applicazione di leggere ulteriori cartelle e path del sistema, per toglierli invece si usa --nofilesystem. Si può inserire un path a piacere, i path relativi verranno tradotti a partire dalla home utente. Tuttavia esistono anche delle opzioni predefinite:
    • home
    • host
    • host-os
    • host-etc
    • xdg-desktop
    • xdg-documents
    • xdg-download
    • xdg-music
    • xdg-pictures
    • xdg-public-share
    • xdg-templates
    • xdg-videos
  • --env=VAR=VALUE imposta una variabile d’ambiente, con il comando --unset-env si può invece rimuovere.
  • --show mostra gli override attivi per un applicazione.
  • --reset fa il reset degli override attivi.

Se un opzione prevede la possibilità di prendere più valori per un opzione (ad esempio il filesystem), basta usare il carattere ; per concatenare gli altri valori.

Una UI per gestire i permessi: Flatseal

Un alternativa molto comoda alla command line è sicuramente l’utilizzo di Flatseal, un applicativo che permette di avere tutti i permessi per tutte le app a portata di click.

Si può installare da Flatpak stesso così:

flatpak install com.github.tchx84.Flatseal

Una volta aperto ci si trova davanti una lista di applicazioni (sulla sinistra) ed una schermata centrale dove si può decidere, uno per uno, se rimuovere o aggiungere un permesso.

Personalmente, se possibile, suggerisco quest’opzione che consente di modificare, in tutta sicurezza, ogni aspetto dei flatpak installati.

history_edu Revisioni