Applications Flatpak : Permissions sur les dossiers

Cela faisait quelque temps que je traînais ce problème : quand à partir d’une application flatpak installée sur mon système, je voulais aller charger un fichier, je n’avais pas accès à tous mes dossiers.

Par exemple avec Signal, en voulant partager une photo : le répertoire Nextcloud où sont synchronisées les photos de mon smartphone n’apparaissait pas ! 😕

J’ai pourtant d’autres dossiers dans /Download ???

/Download est un point de montage vers un disque USB, mais j’y ai d’autres dossiers, en particulier celui nommé Nextcloud où sont synchronisées les photos du smartphone.

En fait, il s’agit d’un problème de permissions des applications flatpak : celles-ci tournant dans un « bac à sable », l’accès aux fichiers est restreint par défaut, pour des raisons de sécurité. Et tout dépend de ce que le développeur de l’application aura décidé.

Pour visualiser et/ou modifier ces permissions, il existe la bonne vieille ligne de commande, ou un outil graphique appelé flatseal.

Voyons voir ces deux façons de faire, et si elles sont totalement identiques…

La ligne de commande

La première chose à faire est de trouver l »Application ID » de notre application, à savoir Signal dans mon cas :

$ flatpak list
Name                Application ID        Version  Branch Origin          Installation
Signal Desktop      org.signal.Signal     5.19.0   stable flathub         system

Maintenant, listons les permissions accordées par le développeur avec la commande flatpak info -M <application ID> :

$ flatpak info -M org.signal.Signal
[Context]
shared=network;ipc;
sockets=x11;pulseaudio;
devices=all;
filesystems=xdg-music;xdg-pictures;xdg-videos;xdg-public-share;xdg-download;xdg-documents;xdg-desktop;

[Session Bus Policy]
org.kde.StatusNotifierWatcher=talk
org.freedesktop.Notifications=talk
org.freedesktop.portal.Background=talk
org.kde.*=own

On peut voir que le développeur a intégré pour l’option filesystems tous les répertoires « XDG » (ce sont les répertoires connus de l’utilisateur (« well known user directories ») comme le « Bureau », ou « Mes Vidéos », et aussi « Téléchargements ». Voir cette page pour plus d’informations.

Ce qui explique pourquoi je pouvais voir le dossier /Download/Téléchargements dans Signal, puisque c’est ce dossier que j’ai défini comme mon « xdg-download ».

Pour ajouter la totalité du répertoire /Download (et donc tous les dossiers qui en font partie), on tape la commande flatpak override <application ID> --filesystem=<chemin> :

$ sudo flatpak override org.signal.Signal --filesystem=/Download

L’option --filesystem peut être répétée plusieurs fois pour ajouter plusieurs chemins si nécessaire. Et effectivement, dans Signal, je peux alors enfin accéder à mon dossier Nextcloud :

À noter que le fichier suivant a été créé : /var/lib/flatpak/overrides/<application ID> (on verra plus bas qu’avec flatseal, cela se passe autrement) :

$ cat /var/lib/flatpak/overrides/org.signal.Signal 
[Context]
filesystems=/Download;

NOTE : Il suffit d’effacer ce fichier pour tout réinitialiser.

Mais il existe aussi des mots-clefs pré-définis pour certains type de permission : ils sont listés sur cette page (en anglais). Vous pouvez par exemple vouloir donner le droit à l’application d’accéder à tout le système de fichier (en fonction des droits de l’utilisateur bien sûr) avec l’option override --filesystem=host :

$ sudo flatpak override org.signal.Signal --filesystem=host

Pour enlever la permission, la commande est flatpak override <application ID> --nofilesystem=<chemin> :

$ sudo flatpak override org.signal.Signal --nofilesystem=/Download

Il y a aussi d’autres permissions qui peuvent être gérées de la sorte, comme l’accès réseau, etc… Voir cette page (anglais) pour plus d’informations.

Flatseal

Flatseal est donc une application (flatpak bien sûr !) qui fournit une interface graphique pour visualiser ou modifier les permissions des applications flatpak.

On l’installe comme n’importe quelle application flatpak :

 $ flatpak install flatseal

Pour Signal, on voit facilement que le développeur a ajouté tous les répertoires « XDG », comme on peut le voir dans l’image ci-dessous :

Flatseal permet de visualiser facilement les permissions de chaque application flatpak

Et on peut donc ajouter très facilement un chemin via cette interface :

Mais dans ce cas, flatseal va créer son propre fichier .local/share/flatpak/overrides/<application ID> pour enregistrer les modifications (pour un problème de droits) :

$ cat .local/share/flatpak/overrides/org.signal.Signal 
[Context]
filesystems=/Download

Voilà, personnellement, je préfère m’en tenir à la ligne de commande, et à utiliser ce qui est fournit de base par flatpak. Mais pour quelqu’un d’allergique à la ligne de commande, flatseal est une belle solution graphique pour régler ces problèmes de permissions.

Conclusion

Bon, voilà un problème de réglé, et une meilleure compréhension des applications flatpak et de leurs permissions. L’aspect « bac à sable » et la sécurité que cela induit a aussi ses inconvénients ! Il manque par exemple l’accès aux fichiers « Récents » (« recently used ») bien pratiques pour retrouver un fichier récemment modifié ou ajouté. Je n’ai en tout cas rien trouvé à ce sujet.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *