APPARMOR_DENIED
Linux / DevOps
Настройка профилей AppArmor: аудит, режимы enforce, complain и aa-genprof
- Службы возвращают ошибки
Permission deniedилиOperation not permittedв Debian/Ubuntu. - В
dmesgпоявляются записиapparmor="DENIED" operation="open" class="file". - Контейнеры Docker/LXC не могут выполнить вложенные системные вызовы.
1. Проверка статуса загруженных профилей
aa-status2. Анализ логов блокировок
dmesg -T | grep -i "apparmor="
grep "apparmor=\"DENIED\"" /var/log/audit/audit.log3. Перевод профиля в режим обучения (Complain)
aa-complain /etc/apparmor.d/usr.sbin.mysqld
# Либо по имени бинарника:
aa-complain /usr/sbin/mysqld4. Автоматическая генерация и обновление профиля
# Интерактивное обучение
aa-logprof5. Ручное обновление и применение профиля
Добавьте разрешающие пути в файл /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.