如何允许 snap 应用程序访问 /tmp 文件夹?

如何允许 snap 应用程序访问 /tmp 文件夹?

通常我会避免使用基于 snap 的应用程序,但有时我需要它们。

例如 - Markdown Lint Tool 仅以 Snap 形式提供,名称为 mdl

当文件位于主文件夹中时,它效果很好 -

$ echo "# header" > ~/test.md
$ /snap/bin/mdl ~/test.md ; echo $?
0

但当文件位于/tmp目录中时它会失败:

$ echo "# header" > /tmp/test.md
$ cat /tmp/test.md
# header
$ /snap/bin/mdl /tmp/test.md
/snap/mdl/140/lib/ruby/gems/2.4.0/gems/mdl-0.9.0/lib/mdl/doc.rb:57:in `read': No such file or directory @ rb_sysopen - /tmp/test.md (Errno::ENOENT)
    from /snap/mdl/140/lib/ruby/gems/2.4.0/gems/mdl-0.9.0/lib/mdl/doc.rb:57:in `new_from_file'
    from /snap/mdl/140/lib/ruby/gems/2.4.0/gems/mdl-0.9.0/lib/mdl.rb:75:in `block in run'
    from /snap/mdl/140/lib/ruby/gems/2.4.0/gems/mdl-0.9.0/lib/mdl.rb:73:in `each'
    from /snap/mdl/140/lib/ruby/gems/2.4.0/gems/mdl-0.9.0/lib/mdl.rb:73:in `run'
    from /snap/mdl/140/lib/ruby/gems/2.4.0/gems/mdl-0.9.0/bin/mdl:10:in `<top (required)>'
    from /snap/mdl/140/bin/mdl:23:in `load'
    from /snap/mdl/140/bin/mdl:23:in `<main>'

对于此特定应用程序,没有以下选项snap connect

$ snap connections | grep mdl
home                      mdl:home                             :home                                 -

我也无法将其安装为经典的

$ snap install mdl --classic 
Warning: flag --classic ignored for strictly confined snap mdl

mdl 0.9.0 from Snapcrafters installed

我应该怎么做才能让 Snap 应用程序完全访问该/tmp文件夹?
这是 Snap 设计所致吗?

答案1

看来您可能正在寻找解决由快照引起的问题的“正确”方法......

但如果您正在寻找一种解决方法以便可以使用 tmp 目录,您可以:

mkdir /home/you/tmp
sudo mount --bind /tmp /home/you/tmp/

mdl 将通过 /home/you/tmp 挂载点完全访问 /tmp 目录:

echo "# header" > /home/you/tmp/test.md
mdl /home/you/tmp/test.md

为了使其永久存在,您可以将此行添加到/etc/fstab

 # <file system> <mount point>   <type>  <options>       <dump>  <pass>
/tmp        /home/you/tmp   auto    bind    0   3

并使用 重建 initrd sudo update-initramfs -u -k all

答案2

我通常非常支持变革和 Ubuntu,但如果你像我一样发现这一点真的烦人,我想到解决办法是在我的主页上添加一个目录:

mkdir /home/mlissner/tmp

并添加一个 crontab 以便在重启时将其删除:

sudo crontab -e

然后加:

@reboot rm -rf /home/mlissner/tmp/*

这样做真的很愚蠢。

我完全支持沙盒和安全。我完全支持改变,但这会消除一个重要的用例,即“将这个文件保存在这里,然后在我不知情的情况下将其删除。”

从用户的角度来看,它也确实存在错误。你可以将 Firefox 中的某些内容保存到 /tmp,不会出现任何错误。但是当你尝试在文件浏览器中查找该内容时,它却不存在。真是的。

我很恼火。

相关内容