Estou executando aplicativos snap em um sistema não Ubuntu:
$ snap version
snap 2.30-5+b1
snapd 2.30-5+b1
series 16
pureos
kernel 4.18.0-1-amd64
Quando eu snap run
alguns aplicativos funcionam, mas outros retornam este erro:
cannot perform readlinkat() on the mount namespace file descriptor of the init process: Permission denied
Seguindo sugestões em snapcraft.io , tentei:
Mudando para o núcleo beta. Mesmo erro.
Modificando o perfil do AppArmor da seguinte forma:
Executando
snap list
para identificar exatamente qual revisão do núcleo estou usando (core 16-2.35.2 r 5548)Modificando o arquivo apropriado (
/etc/apparmor.d/snap.core.5548.usr.lib.snapd.snap-confine
) adicionandoptrace read peer=unconfined,
ao final conforme descrito.Atualizando o AppArmor com
sudo apparmor_parser -r /etc/apparmor.d/snap.core.5548.usr.lib.snapd.snap-confine
Mas isso não faz diferença. Os aplicativos com falha continuam a falhar. O que mais eu posso fazer?
Notas
Etapa 2 confirmada com:
$ 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,
}
As seguintes alterações adicionais resolveram o problema. Essas etapas não funcionaram para outro usuário no thread do snapcraft , mas funcionaram para mim. Não tenho certeza se alguma das alterações anteriores é de fato desnecessária.
Modifique
/etc/apparmor.d/usr.lib.snapd.snap-confine.real
adicionandoptrace read peer=unconfined,
no final, da seguinte forma:sudo apparmor_parser -r /etc/apparmor.d/*snap-confine*