我有 Ubuntu 20.04.4 LTS (odroid aarch64)。当我尝试启动 Chromium 时:
cannot perform operation: mount --bind /snap/core20/current/etc/nsswitch.conf /tmp/snap.rootfs_IbY3Iu/etc/nsswitch.conf: Permission denied
我尝试使用 sudo 进行同样的操作,但权限仍然被拒绝。我也尝试了,sudo snap refresh chromium
但显示同样的错误。
这也没有帮助:sudo apt-get --reinstall install snapd chromium-browser
,
如何解决这个问题?为什么它尝试挂载 nsswitch.conf(常规 ASCII 文本文件)以及为什么 sudo 对权限没有帮助?
编辑:
我发现了这个问题。这是由 apparmor 引起的:
sudo dmesg | grep DENIED
[ 20.334810] audit: type=1400 audit(1659685604.695:10): apparmor="DENIED" operation="mount" profile="/snap/snapd/16299/usr/lib/snapd/snap-confine" name="/tmp/snap.rootfs_IAZptT/var/lib/extrausers/" pid=3805 comm="snap-confine" flags="rw, rbind"
[ 20.336912] audit: type=1400 audit(1659685604.695:11): apparmor="DENIED" operation="mount" info="failed mntpnt match" error=-13 profile="/snap/snapd/16299/usr/lib/snapd/snap-confine" name="/tmp/snap.rootfs_IAZptT/etc/nsswitch.conf/" pid=3805 comm="snap-confine" srcname="/snap/core20/1590/etc/nsswitch.conf/" flags="rw, bind"
[ 53.546374] audit: type=1400 audit(1659685657.956:12): apparmor="DENIED" operation="mount" profile="/snap/snapd/16299/usr/lib/snapd/snap-confine" name="/tmp/snap.rootfs_oUOX9j/var/lib/extrausers/" pid=4207 comm="snap-confine" flags="rw, rbind"
[ 53.546449] audit: type=1400 audit(1659685657.956:13): apparmor="DENIED" operation="mount" info="failed mntpnt match" error=-13 profile="/snap/snapd/16299/usr/lib/snapd/snap-confine" name="/tmp/snap.rootfs_oUOX9j/etc/nsswitch.conf/" pid=4207 comm="snap-confine" srcname="/snap/core20/1590/etc/nsswitch.conf/" flags="rw, bind"
如何修复此问题?我应该禁用 apparmor 吗?
PS:我试过了,sudo systemctl disable apparmor
但重启后问题仍然存在。所以我需要一种不同于禁用它的方法,我需要正确配置 apparmor 以允许 snap,但该怎么做呢?
答案1
似乎是某个 apparmor 配置文件出了问题
type=AVC msg=audit(1675772818.295:1707): apparmor="DENIED" operation="mkdir" profile="/usr/lib/snapd/snap-confine" name="/tmp/snap-private-tmp/" pid=11690 comm="snap-confine" requested_mask="c" denied_mask="c" fsuid=0 ouid=0FSUID="root" OUID="root"
你可能没有获取到该软件包的更新版本,例如:
# diff /etc/apparmor.git/usr.lib.snapd.snap-confine.real usr.lib.snapd.snap-confine.real.dpkg-new
163a164
> /tmp/snap.rootfs_*/ rw,
316,317c317,319
< /tmp/snap.*/ rw,
< /tmp/snap.*/tmp/ rw,
---
> /tmp/snap-private-tmp/ rw,
> /tmp/snap-private-tmp/snap.*/ rw,
> /tmp/snap-private-tmp/snap.*/tmp/ rw,
319c321
< mount options=(rw bind) /tmp/snap.*/tmp/ -> /tmp/,
---
> mount options=(rw bind) /tmp/snap-private-tmp/snap.*/tmp/ -> /tmp/,
这为我修复了这个问题:
sudo mv -f usr.lib.snapd.snap-confine.real.dpkg-new /etc/apparmor.d/usr.lib.snapd.snap-confine.real
systemctl restart apparmor
答案2
同样的问题,在 Odroid ARM 机器上。我尝试升级到 Ubuntu 22,但问题仍然存在。不仅使用 Chromium,其他软件包(如 Firefox)也在同一点结束。
唯一可行的解决方案是安装 chromium 的开发版本,因为它根本没有附带 snap。我尝试了很多技巧和解决方法,但一无所获。
也许我们需要对解决方案进行快速更新。我认为配置钩子中存在无效内容。2 个月前,我安装了 Chromium,没有任何问题。