![Snap 应用程序看不到来自其他分区的文件](https://linux22.com/image/1003486/Snap%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E7%9C%8B%E4%B8%8D%E5%88%B0%E6%9D%A5%E8%87%AA%E5%85%B6%E4%BB%96%E5%88%86%E5%8C%BA%E7%9A%84%E6%96%87%E4%BB%B6.png)
我在 Ubuntu 17.10 上安装了 KeePassXC snap 包。我在同一个驱动器上安装了多个 Linux 系统,因此我将大多数主文件夹(如 ~/Documents)创建为指向单独 ext4 分区的链接(用户具有相同的 uid,因此权限正确)。我尝试打开 Documents 中的密码数据库,但 keepassxc 无法看到 Documents 中的任何文件。如果我将文件放在我的主文件夹中,它就会看到它。
snap 包能找到我的主文件夹之外的文件吗?有没有办法让 KeePassXC(和其余的 snap 包)访问我单独的 ext4 分区上的文件(可能在某处进行一些配置)?
答案1
Snap 通常受到限制。默认情况下,Snap 只能访问其自己的可写区域,但它们可以通过接口获得权限。有两个接口提供超出默认权限的文件访问能力:接口home
和removable-media
接口。我假设 KeePassXC 使用接口home
,这就是您访问 的方式~/Documents
。也许它甚至使用接口removable-media
,但这只涵盖安装到/media
或中的内容/mnt
。如果您的其他分区安装在其他地方,则 snap 将无权跟随符号链接。
实现这一目标的方法(按难度排序):
- 将分区挂载到您的主目录中,而不是对其进行符号链接。
- 将分区挂载到
/media
KeePassXC 并确保使用该removable-media
接口。这可能是上游更改,但只是很小的更改。 - 将 KeePassXC 改为经典的 snap,这样就不再受到严格限制。这是一个较大的变化,上游可能对此不感兴趣。
更新:KeyPassXCsnapcraft.yaml
是这里。看起来它已经有removable-media
接口了。您需要按照 (2) 操作的就是连接它(它不会自动连接):
$ sudo snap connect keepassxc:removable-media
答案2
我在 Ubuntu 20.04 上使用 makemkv snap 应用程序时遇到了类似的问题
我能够通过绑定安装解决这个问题:
sudo mount --bind /data/wip /home/user/Videos/wip
这使得我能够将数据驱动器安装到 /home/ 树中,以便 snap 应用程序可以访问它,就像 Kyle 上面提到的那样。
答案3
答案4
这是一个快速修复方法,可以使 snap 应用程序表现得像经典安装一样,即没有任何限制。
只需创建指向 /usr/local/bin 中的二进制文件的符号链接,如下所示:
/usr/local/bin/pdftk->/snap/pdftk/current/usr/bin/pdftk
(令人惊讶的是,这个特定的应用程序被设置为“confinement: strict”,这非常烦人,因为它无法处理来自其他文件系统的文件。)