因为我不懂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