Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
APPARMOR_DENIED Linux / DevOps

Настройка профилей AppArmor: аудит, режимы enforce, complain и aa-genprof

Обновлено: 21.08.2026
  • Службы возвращают ошибки Permission denied или Operation not permitted в Debian/Ubuntu.
  • В dmesg появляются записи apparmor="DENIED" operation="open" class="file".
  • Контейнеры Docker/LXC не могут выполнить вложенные системные вызовы.

1. Проверка статуса загруженных профилей

aa-status

2. Анализ логов блокировок

dmesg -T | grep -i "apparmor="
grep "apparmor=\"DENIED\"" /var/log/audit/audit.log

3. Перевод профиля в режим обучения (Complain)

aa-complain /etc/apparmor.d/usr.sbin.mysqld
# Либо по имени бинарника:
aa-complain /usr/sbin/mysqld

4. Автоматическая генерация и обновление профиля

# Интерактивное обучение
aa-logprof

5. Ручное обновление и применение профиля

Добавьте разрешающие пути в файл /etc/apparmor.d/<профиль> и примените:

apparmor_parser -r /etc/apparmor.d/usr.sbin.mysqld
aa-enforce /etc/apparmor.d/usr.sbin.mysqld
Практический опыт инженера: При создании профилей всегда используйте абстракции #include и , чтобы не описывать базовые вызовы glibc вручную.

Частые вопросы (FAQ)

В чем разница между режимами Complain и Enforce?

В режиме Enforce неразрешенные операции блокируются ядром. В режиме Complain операции выполняются успешно, но факт нарушения логируется для последующего добавления в профиль.

Как полностью отключить профиль AppArmor для конкретного демона?

Создайте симлинк: ln -s /etc/apparmor.d/usr.sbin.named /etc/apparmor.d/disable/ && apparmor_parser -R /etc/apparmor.d/usr.sbin.named.