如何让Flatpak应用程序访问一个目录

我从Flathub安装了Elisa音乐播放器,但它无法识别我的音乐分区,所以除非我将音乐复制到/home/my_user/,否则无法将其添加到它的库中。 有没有办法让Flatpak应用程序获得访问非规范地址的权限? 除了在编译时指定之外...
3个回答

除了其他答案之外,对我来说另一个解决方案是安装Flatseal。它使设置权限变得非常简单,并且还有一个额外的好处,就是使现有权限变得非常清晰。在Flatseal中添加目录到Steam的操作如下所示:

Adding extra directory to steam in Flatseal

我在那里添加了目录"MediaSSD",其他都是默认的。


1更改权限可能会重置所有偏好设置,至少这就是Thunderbird发生的情况。所有帐户设置都已完成,但至少现在我可以拖放文件以附加到邮件中! - Cosmin Saveanu
2因为这个工具在我的情况下下载了超过200兆字节的数据,所以最好使用其他不需要安装任何额外数据的方法。 - 16851556

你可以通过命令行来完成这个操作。你所需要的具体命令是(可能需要使用sudo来运行):
flatpak override <package_name_here> --filesystem=<path_here>

如果您的路径有问题,并且出现“意外的文件系统后缀”错误,请将路径部分放在引号中。
如果您希望删除对特定地址的访问权限,请使用“--nofilesystem”。
flatpak override <package_name_here> --nofilesystem=<path_here>

更完整的权限/命令列表可以在这里找到。


谢谢,我可以将Dropbox文件夹添加到WPS Office的路径中。 - Indacochea Wachín
我使用--filesystem=/home/myuser进行了这个操作,它成功了。然后我尝试使用/来能够访问我的/mnt共享文件夹,从那时起,每次我尝试启动应用程序时,都会出现wrap: Can't create file at /run/user/1000/bus: No such device or address的错误提示。我的应用程序是Flacon(我需要它来分割一个大的flac文件)。 - bomben
找到了一个解决方案 - flatpak override <package_name_here> --nofilesystem=<path_here>。所以对于你来说,执行 flatpak override com.github.Flacon --nofilesystem=/ - Pockets
1请注意,根据官方文档,以下目录被列为黑名单:/lib/lib32/lib64/bin/sbin/usr/boot/root/tmp/etc/app/run/proc/sys/dev/var。这意味着即使使用覆盖方法,您也无法让应用程序访问这些目录。 - Dane Rossenrode
1这个答案缺少的是一种检查当前文件系统权限的方法。我在链接的文档中找不到相关内容。 - andrybak
1使用$ flatpak list命令来获取软件包名称。 - Johnny Baloney

运行一次以允许访问主机上的普通文件,不包括主机操作系统或系统内部文件。
sudo flatpak override ApplicationIDHere --filesystem=host

使用命令显示ApplicationID:sudo flatpak list

然后:

flatpak run ApplicationIDHere

这是我为了解决PPSSPP flatpak无法访问$USER/.var/app/org.ppsspp.PPSSPP(这是一个符号链接的文件夹,但基本文件夹和符号链接的文件夹都有正确的权限)所采取的唯一有效方法。 - ipkpjersi