Ubuntu가 아닌 시스템에서 스냅 애플리케이션을 실행하고 있습니다.
$ snap version
snap 2.30-5+b1
snapd 2.30-5+b1
series 16
pureos
kernel 4.18.0-1-amd64
snap run
내 앱 중 일부는 작동하지만 다른 앱에서는 다음 오류가 반환되는 경우 :
cannot perform readlinkat() on the mount namespace file descriptor of the init process: Permission denied
다음과 같은snapcraft.io에 대한 제안, 나는 다음을 시도했습니다.
베타 코어로 전환하세요. 같은 오류입니다.
AppArmor 구성 파일을 다음과 같이 수정합니다.
실행하여
snap list
사용 중인 코어 버전을 정확히 식별합니다(Core 16-2.35.2 r 5548)./etc/apparmor.d/snap.core.5548.usr.lib.snapd.snap-confine
설명대로 해당 파일을 끝( )에 추가하여 수정합니다 .ptrace read peer=unconfined,
업데이트AppArmor
sudo apparmor_parser -r /etc/apparmor.d/snap.core.5548.usr.lib.snapd.snap-confine
그러나 그것은 아무런 차이가 없습니다. 실패한 응용 프로그램은 계속해서 실패합니다. 또 무엇을 할 수 있나요?
노트
2단계를 확인하세요.
$ tail /etc/apparmor.d/snap.core.5548.usr.lib.snapd.snap-confine
# from the core snap but we are already inside the constructed mount
# namespace. Here the apparmor kernel module re-constructs the path to
# snap-update-ns using the "hostfs" mount entry rather than the more
# "natural" /snap mount entry but we have no control over that. This is
# reported as (LP: #1716339). The variants here represent different
# locations of snap mount directory across distributions.
/var/lib/snapd/hostfs/{,var/lib/snapd/}snap/core/*/usr/lib/snapd/snap-update-ns r,
ptrace read peer=unconfined,
}
답변1
다음과 같은 추가 변경으로 문제가 해결되었습니다. 이 단계snapcraft 스레드의 다른 사용자에게는 작동하지 않습니다., 하지만 그들은 나를 위해 일합니다. 이전 변경 사항 중 실제로 불필요한 변경 사항이 있는지 잘 모르겠습니다.
다음과 같이
/etc/apparmor.d/usr.lib.snapd.snap-confine.real
마지막에 추가하도록 수정합니다 .ptrace read peer=unconfined,
$ tail /etc/apparmor.d/usr.lib.snapd.snap-confine.real # But we don't want anyone to touch /snap/bin audit deny mount /snap/bin/** -> /**, audit deny mount /** -> /snap/bin/**, # Allow the content interface to bind fonts from the host filesystem mount options=(ro bind) /var/lib/snapd/hostfs/usr/share/fonts/ -> /snap/*/*/**, } ptrace read peer=unconfined, }
sudo apparmor_parser -r /etc/apparmor.d/*snap-confine*