由于 Ubuntu 21.10 中的 Firefox 成为了一个 snap 应用程序,它无法看到 /tmp 中的文件。我当然可以删除 snap 版本并安装一个“普通”版本,但这似乎是一个糟糕的解决方法,因为我怀疑越来越多的应用程序将使用 snap。我如何让 snap 应用程序访问 /home 之外的文件?在这种特定情况下,我可以在目录中为 snap 应用程序提供一个临时目录吗?
答案1
我遇到了以下问题,因为 snap 中的程序无法访问/tmp
目录。
- 无法通过 GIMP(从 snap 安装)编辑屏幕截图,因为屏幕截图文件是在
/tmp
目录中创建的,然后调用 GIMP 打开它。 - 无法从 Thunar 打开 Dropbox 上的文件历史记录。其 Dropbox 插件提供“版本历史记录”功能,该功能可创建临时 HTML 文件(重定向到 dropbox.com 上的目标文件历史记录页面),然后调用浏览器打开它。一旦从 snap 安装浏览器,它就无法工作。
事实上,解决此类情况无需访问系统/tmp
目录。因为所有相互通信的程序都由同一个非特权用户运行,所以只需指示它们使用另一个临时目录位置即可。
这是解决方案。
tmp
在您的主目录中创建:
mkdir ~/tmp
- 编辑
~/.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
- 将 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
。