Как разрешить приложениям 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>'

Для этого конкретного приложения нет параметров для привязки connect :

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

Также я не могу установить его как classic :

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

mdl 0.9.0 from Snapcrafters installed

Что мне делать, чтобы предоставить приложению Snap полный доступ к папке / tmp ?
Это происходит по дизайну Snap или нет?

1
задан 1 August 2020 в 21:00

1 ответ

Похоже, вы ищете "правильный" способ решения проблемы, вызванной снэпами.. .

но если вы искали обходной путь, чтобы вы могли использовать свой каталог tmp, вы могли бы:

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

mdl будет иметь полный доступ к каталогу /tmp через точку монтирования /home/you/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 .

7
ответ дан 3 August 2020 в 20:41

Другие вопросы по тегам:

Похожие вопросы: