使用基于 ruby​​ 的 snap 'mdl' 时出现权限问题

使用基于 ruby​​ 的 snap 'mdl' 时出现权限问题

因为我不懂Ruby,但想使用基于Ruby的程序mdl(markdownlint),所以我使用snap安装了它。

虽然我可以运行该程序,但如果我尝试在 ~/.mdlrc 文件中设置自定义项。我收到以下错误

 $ mdl README.md
 
 /snap/mdl/171/lib/ruby/gems/2.4.0/gems/mixlib-config-3.0.6/lib/mixlib/config.rb:63:in
 `read': Permission denied @ rb_sysopen - /home/mikeg/.mdlrc
 (Errno::EACCES)
         from /snap/mdl/171/lib/ruby/gems/2.4.0/gems/mixlib-config-3.0.6/lib/mixlib/config.rb:63:in
 `from_file'
         from /snap/mdl/171/lib/ruby/gems/2.4.0/gems/mdl-0.10.0/lib/mdl/cli.rb:122:in
 `run'
         from /snap/mdl/171/lib/ruby/gems/2.4.0/gems/mdl-0.10.0/lib/mdl.rb:16:in
 `run'
         from /snap/mdl/171/lib/ruby/gems/2.4.0/gems/mdl-0.10.0/bin/mdl:10:in `<top
 (required)>'
         from /snap/mdl/171/bin/mdl:23:in `load'
         from /snap/mdl/171/bin/mdl:23:in `<main>'

我不明白权限问题从何而来

 $ ls -l ~/.mdlrc ~/.mdlrc.style.rb
 
 -rw-rw-r-- 1 mikeg mikeg 171 Aug 14 16:06 /home/mikeg/.mdlrc
 -rw-rw-r-- 1 mikeg mikeg   4 Aug 14 16:06 /home/mikeg/.mdlrc.style.rb

drwxr-xr-x 303 mikeg mikeg 65536 Aug 14 21:53 /home/mikeg

因此,我不知道该如何解决这个问题。有人能帮助我吗?

请注意,我运行的是 Mate 18.06。未安装 SELinux,但 AppArmor 处于活动状态并正在查看我得到的 /var/log/syslog* 文件

syslog.7.gz:Aug 17 09:08:40 XXXX kernel: [978608.742842] audit: type=1400 audit(1597669720.954:2800): apparmor="DENIED" operation="open" profile="snap.mdl.mdl" name="/home/mi/.mdlrc" pid=13189 comm="ruby" requested_mask="r" denied_mask="r" fsuid=1000 ouid=1000

谢谢,

麦克风

答案1

@NasirRiely 关于 SELinux 的问题有助于确定问题的根本原因,该问题是 apparmor 权限和 snap 的组合。显然它无法读取我的主目录中的文件并且安装 mdl snap--classic选项没有帮助(出于安全原因它被忽略)。

我开始深入那个兔子洞,但决定停下来,简单地使用 gems 安装 ruby​​ 和 mdl。那是,

$ sudo apt-get install ruby-full
$ gem install mdl

相关内容