저는 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
SELinux에 대한 @NasirRiely의 질문은 의류 권한과 스냅의 조합으로 인한 문제의 근본 원인을 식별하는 데 도움이 되었습니다. 분명히 내 홈 디렉토리에 있는 파일을 읽을 수 없으며 mdl 스냅 --classic
옵션을 설치해도 도움이 되지 않습니다(보안상의 이유로 무시됨).
나는 그 토끼 구멍을 파헤치기 시작했지만 멈추고 보석을 사용하여 Ruby와 MDL을 설치하기로 결정했습니다. 그건,
$ sudo apt-get install ruby-full
$ gem install mdl