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

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

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

Траблшутинг ошибок SELinux: восстановление контекстов restorecon и audit2allow

Обновлено: 21.08.2026
  • Ошибки Permission denied при корректно выставленных правах POSIX (777 / chown).
  • Логи ядра фиксируют события type=AVC msg=audit(...): avc: denied { read/write/connect }.
  • Сервисы (Nginx, PostgreSQL, Redis) не могут открыть сокеты, прочитать конфиги или смонтированные папки.

1. Проверка режима работы SELinux

sestatus
setenforce 0  # Временный перевод в Permissive для локализации проблемы

2. Анализ журнала блокировок AVC

grep "AVC" /var/log/audit/audit.log | tail -n 25
sealert -a /var/log/audit/audit.log

3. Восстановление и назначение контекстов безопасности

# Просмотр текущего контекста
ls -dZ /var/www/html

# Исправление контекста файлов
restorecon -Rv /var/www/html

# Назначение постоянного контекста нестандартной директории
semanage fcontext -a -t httpd_sys_content_t "/opt/app/static(/.*)?"
restorecon -Rv /opt/app/static

4. Включение встроенных Boolean параметров

setsebool -P httpd_can_network_connect 1
setsebool -P httpd_use_nfs 1

5. Генерация кастомной политики через audit2allow

grep "my_service" /var/log/audit/audit.log | audit2allow -M my_service_fix
semodule -i my_service_fix.pp
setenforce 1
Практический опыт инженера: Не отключайте SELinux полностью (SELINUX=disabled). Переведите его в Permissive (setenforce 0), соберите журнал через audit2allow и загрузите скомпилированный модуль политики.

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

Почему после команды mv контекст SELinux нарушается, а после cp — нет?

Команда mv переносит inode файла с его исходным контекстом безопасности из исходной папки. Команда cp создает новый файл и автоматически наследует контекст целевого каталога.

Как открыть нестандартный порт TCP для службы под SELinux?

Используйте semanage: semanage port -a -t http_port_t -p tcp 8088.