Usually I'm avoiding snap-based applications, but sometime I need them.
For example - Markdown Lint Tool is shipped only as Snap named mdl
.
It works great when files are in home folder -
$ echo "# header" > ~/test.md
$ /snap/bin/mdl ~/test.md ; echo $?
0
but it fails when file is located in /tmp
directory:
$ 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>'
For this particular application there are no options for snap connect
:
$ snap connections | grep mdl
home mdl:home :home -
Also I can't install it as classic:
$ snap install mdl --classic
Warning: flag --classic ignored for strictly confined snap mdl
mdl 0.9.0 from Snapcrafters installed
What should I do to give Snap application full access to the /tmp
folder?
Does it happen by Snap design or not?
It seems you may be looking for the "proper" way to solve the issue caused with snaps...
but if you were looking for a workaround so you can use your tmp directory, you could:
mdl will have full access to the /tmp directory via the /home/you/tmp mountpoint:
To make it permanent you can add this line to the
/etc/fstab
:and rebuild the initrd with
sudo update-initramfs -u -k all
.I'm usually very supportive of change and of Ubuntu, but if, like me, you find this really annoying, the fix I came up with is to add a directory to my home:
And to add a crontab to nuke it on reboot:
Then add:
Having to do this is really dumb.
I'm all for sandboxing and security. I'm all for change, but this removes an important use case of "Save this file here, and then delete it later without me thinking about it."
It's also really buggy from a user perspective. You can save something from Firefox into /tmp, no errors. But then when you try to find that thing in the file browser, it doesn't exist. WTF.
Count me very annoyed.