这里的问题有点重叠。我试图在系统范围内禁用 AppArmor。执行此操作后:
sudo systemctl stop apparmor
sudo systemctl disable apparmor
重新启动后,我有:
❯❯ sudo aa-status | egrep '^[0-9]'
48 profiles are loaded.
41 profiles are in enforce mode.
7 profiles are in complain mode.
0 profiles are in prompt mode.
0 profiles are in kill mode.
0 profiles are in unconfined mode.
17 processes have profiles defined.
17 processes are in enforce mode.
0 processes are in complain mode.
0 processes are in prompt mode.
0 processes are in kill mode.
0 processes are unconfined but have a profile defined.
0 processes are in mixed mode.
❯❯ sudo aa-enabled
Yes
❯❯ sudo systemctl status apparmor
○ apparmor.service - Load AppArmor profiles
Loaded: loaded (/usr/lib/systemd/system/apparmor.service; disabled; preset: enabled)
Active: inactive (dead)
Docs: man:apparmor(7)
https://gitlab.com/apparmor/apparmor/wikis/home/
如果我做了一些违反策略的事情(在我的情况下,创建了一个用户命名空间),我会在内核日志中看到这样的内容,这似乎证实了 AppArmor 是有效的:
[ 942.570952] audit: type=1400 audit(1735492407.323:89): apparmor="DENIED" operation="userns_create" class="namespace" info="Userns create restricted - failed to find unprivileged_userns profile" error=-13 profile="unconfined" pid=6227 comm="python" requested="userns_create" denied="userns_create" target="unprivileged_userns"
通过以下方式禁用 apparmor
不行,我也遇到这个问题并且浪费了很多时间。
要完全禁用 apparmor,您需要向 grub 配置文件添加一个特殊命令并重新启动计算机。为了方便起见,我准备了一行代码来执行此操作:
要关闭 AppArmor:
要打开 AppArmor:
为了更详细地了解 Thomas Ward 的评论,请
/etc/default/grub
使用 sudo 打开文件,然后将该行更改GRUB_CMDLINE_LINUX=""
为
GRUB_CMDLINE_LINUX="apparmor=0"
运行
sudo update-grub
并重新启动。注意:如本回答所述,在 Ubuntu 上禁用 AppAmor 会删除旨在保护系统安全的安全层。不过,这是知识渊博且经验丰富的用户可以采取的措施之一。
Canonical 限制非特权用户命名空间的决定破坏了许多程序,在我看来,根本就不应该这么做。更不用说 .1 版本了;这应该是最安全的升级。