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

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

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

答案1

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

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

事实上,解决此类情况无需访问系统/tmp目录。因为所有相互通信的程序都由同一个非特权用户运行,所以只需指示它们使用另一个临时目录位置即可。

这是解决方案。

  1. tmp在您的主目录中创建:
mkdir ~/tmp
  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
  1. 将 tmpfs 挂载到您的/home/username/tmp,以便它会自动清理,编辑/etc/fstab添加:
tmpfs    /home/username/tmp     tmpfs   size=25%,uid=1000,gid=1000,user,mode=0700   0   1

答案2

您是否出于特定原因授予 Firefox 系统范围的访问权限/tmp?事实上,作为限制的一部分,Firefox 只能看到其私有的/tmp

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

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

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

相关内容