Вопрос или проблема
Я возился с AppArmor на Ubuntu 24.04.1 и хотел посмотреть, как моя система себя ведет, когда он полностью отключен, поэтому я сделал это, как описано здесь:
sudo systemctl stop apparmor
sudo systemctl disable apparmor
После этого apparmor_status
все еще сообщал apparmor module is loaded
. Я перезагрузил, и он все равно это сказал, хотя apparmor
не отображается в lsmod
. Systemd говорит:
❯❯ 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 не является модулем, по крайней мере, в этой версии (24.04.1, Desktop) Ubuntu:
❯❯ grep APPARMOR= /boot/config-$(uname -r)
CONFIG_SECURITY_APPARMOR=y
CONFIG_DEFAULT_SECURITY_APPARMOR=y
Я не совсем уверен, как его фактически отключить. Думаю, я задам это как отдельный вопрос, так как этот теперь немного плохо написан.
Ответ или решение
Когда вы сталкиваетесь с несоответствием между выводом apparmor_status
и lsmod
, это может вызвать путаницу, особенно если вы работаете с конкретными версиями Ubuntu, такими как 24.04.1. Важно понимать, как разные компоненты системы работают вместе и почему могут возникнуть такие расхождения.
Почему apparmor_status не совпадает с lsmod?
Встроенная поддержка ядра
В вашем случае, одна из ключевых причин заключается в том, что AppArmor интегрирован непосредственно в ядро, а не загружается как модуль. Это подтверждается строками в конфигурации ядра:
CONFIG_SECURITY_APPARMOR=y
CONFIG_DEFAULT_SECURITY_APPARMOR=y
Это означает, что поддержка AppArmor встроена в ядро на уровне компиляции (y
), и отключить её просто остановкой сервиса или выгрузкой модуля невозможно, так как модуля lsmod
для AppArmor просто не существует. Использование apparmor_status
будет показывать, что модуль загружен, поскольку это встроенность в ядро.
Состояние службы AppArmor
Команды, которые вы выполнили:
sudo systemctl stop apparmor
sudo systemctl disable apparmor
лишь отключают загрузку и запуск профилей AppArmor, но не саму его функциональность, встроенную в ядро. Поэтому systemctl status apparmor
возвращает "inactive (dead)", что значит, что служба не активна, но это не влияет на саму поддержку ядра.
Как фактически отключить AppArmor
Чтобы временно отключить AppArmor, необходимо изменить параметры загрузки ядра. Это более радикальное изменение, которое потребует редактирования загрузочной конфигурации GRUB:
-
Откройте терминал и выполните редактирование файла конфигурации GRUB:
sudo nano /etc/default/grub
-
Найдите строку, начинающуюся с
GRUB_CMDLINE_LINUX_DEFAULT
и добавьтеapparmor=0
к параметрам загрузки, например:GRUB_CMDLINE_LINUX_DEFAULT="quiet splash apparmor=0"
-
Сохраните изменения и обновите конфигурацию GRUB с помощью команды:
sudo update-grub
-
Перезагрузите систему для применения изменений.
Детали для SEO и удобства поиска:
- Как отключить AppArmor на Ubuntu 24.04.1
- Разница
apparmor_status
иlsmod
- Встроенная поддержка AppArmor в ядре
- Изменение параметров загрузки для отключения AppArmor
Таким образом, грамотное понимание архитектуры безопасности Linux позволяет избегать ошибок и недопонимания при управлении модулями безопасности. Эти шаги должны помочь вам лучше контролировать состояние AppArmor в вашей системе.