Snap 应用程序在 /tmp/ 中找不到文件

Tom*_*lák 6 filesystem snap

由于 Ubuntu 21.10 中的 Firefox 成为一个 snap 应用程序,因此它看不到 /tmp 中的文件。我当然可以删除 snap 版本并安装“普通”版本,但这似乎是一个糟糕的解决方案,因为我怀疑越来越多的应用程序将使用 snap。如何让 snap 应用程序访问 /home 之外的文件?在这种特定情况下,我可以在目录中拥有一个可供快照应用程序使用的临时目录吗?

小智 1

我遇到以下问题,因为 snap 中的程序无法访问/tmp目录。

  1. 无法通过 GIMP(从 snap 安装)编辑屏幕截图,因为屏幕截图文件是在/tmp目录中创建的,然后调用 GIMP 将其打开。
  2. 无法从 Thunar 打开 Dropbox 上的文件历史记录。它的 Dropbox 插件提供了“版本历史记录”功能,该功能创建临时 HTML 文件(重定向到 dropbox.com 上的目标文件历史记录页面),然后调用浏览器打开它。一旦从 snap 安装浏览器,它就无法工作。

事实上,不需要访问系统/tmp目录来解决这种情况。由于所有相互通信的程序均由同一非特权用户运行,因此指示它们使用另一个临时目录位置就足够了。

这是解决方案。

  1. tmp在您的家中创建目录:
mkdir ~/tmp
Run Code Online (Sandbox Code Playgroud)
  1. 编辑~/.profile文件添加:
# set TMPDIR within home, 
# so that programs from snap will have access to it
export TMPDIR=$HOME/tmp
export TMP=$TMPDIR
export TEMP=$TMPDIR
Run Code Online (Sandbox Code Playgroud)
  1. 将 tmpfs 安装到您的系统上/home/username/tmp,以便它会自动清理,编辑/etc/fstab添加:
tmpfs    /home/username/tmp     tmpfs   size=25%,uid=1000,gid=1000,user,mode=0700   0   1
Run Code Online (Sandbox Code Playgroud)


van*_*ium 0

您授予 Firefox 访问系统范围的权限有什么具体原因吗/tmp?事实上,作为限制的一部分,Firefox 只能看到其私有/tmp.

可以通过接口授予快照连接。这些接口非常具体,包括home用于访问用户主目录中的(仅可见)文件,以及removable-media用于访问可移动驱动器。更重要的是,这些接口只有当开发人员在 snap 包中实现它们时才可用。连接到此类接口(前提是它们在特定快照中实现)是授予快照访问外部目录和文件的唯一方法/home

快照应用程序可以访问其目录下的文件和目录~/snap。因此,您确实可以在那里创建额外的目录,并且 snap 应用程序将可以访问它们。但是,其他快照应用程序都无法访问那里。原则上,您可以使用符号链接或安装绑定将标准位置链接到快照可以访问的位置,但只有特定快照应用程序旁边的非受限应用程序才可以访问。

不过,在这里很难提供一般性答案,因为最佳解决方案取决于您最终想要实现的目标。这并不一定需要授予 Firefox 访问系统范围的权限/tmp