Snap 应用程序看不到来自其他分区的文件

Snap 应用程序看不到来自其他分区的文件

我在 Ubuntu 17.10 上安装了 KeePassXC snap 包。我在同一个驱动器上安装了多个 Linux 系统,因此我将大多数主文件夹(如 ~/Documents)创建为指向单独 ext4 分区的链接(用户具有相同的 uid,因此权限正确)。我尝试打开 Documents 中的密码数据库,但 keepassxc 无法看到 Documents 中的任何文件。如果我将文件放在我的主文件夹中,它就会看到它。

snap 包能找到我的主文件夹之外的文件吗?有没有办法让 KeePassXC(和其余的 snap 包)访问我单独的 ext4 分区上的文件(可能在某处进行一些配置)?

答案1

Snap 通常受到限制。默认情况下,Snap 只能访问其自己的可写区域,但它们可以通过接口获得权限。有两个接口提供超出默认权限的文件访问能力:接口homeremovable-media接口。我假设 KeePassXC 使用接口home,这就是您访问 的方式~/Documents。也许它甚至使用接口removable-media,但这只涵盖安装到/media或中的内容/mnt。如果您的其他分区安装在其他地方,则 snap 将无权跟随符号链接。

实现这一目标的方法(按难度排序):

  1. 将分区挂载到您的主目录中,而不是对其进行符号链接。
  2. 将分区挂载到/mediaKeePassXC 并确保使用该removable-media接口。这可能是上游更改,但只是很小的更改。
  3. 将 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

只需添加凯尔的回答,一些来自Ubuntu 软件商店也需要这个命令。

就我而言kdenlive无法读取我的其他硬盘。以下命令有效:

sudo snap connect kdenlive:removable-media

答案4

这是一个快速修复方法,可以使 snap 应用程序表现得像经典安装一样,即没有任何限制。

只需创建指向 /usr/local/bin 中的二进制文件的符号链接,如下所示:

/usr/local/bin/pdftk->/snap/pdftk/current/usr/bin/pdftk

(令人惊讶的是,这个特定的应用程序被设置为“confinement: strict”,这非常烦人,因为它无法处理来自其他文件系统的文件。)

相关内容