Отключить SELinux в РЕД ОС чаще всего требуется, когда служба или приложение отказывается запускаться, а в журнале аудита появляются записи об отказах вида «avc: denied» — это типичный признак того, что принудительный контроль доступа блокирует легитимные операции. Прежде чем полностью выключать механизм защиты, стоит убедиться, что проблема действительно связана с SELinux, а не с правами файловой системы или настройками самого приложения.
В этой статье разберём, как проверить текущее состояние SELinux в РЕД ОС, как временно перевести его в разрешительный режим и как отключить полностью через конфигурационный файл. Также рассмотрим, чем грозит отключение с точки зрения безопасности и какие есть альтернативы.
Что такое SELinux и зачем он нужен в РЕД ОС
SELinux (Security-Enhanced Linux) — это модуль ядра Linux, реализующий принудительный контроль доступа (Mandatory Access Control). В отличие от стандартной дискреционной модели прав «пользователь-группа-остальные», SELinux проверяет каждое обращение процесса к файлам, портам и ресурсам на соответствие политикам безопасности.
РЕД ОС — российский дистрибутив, ориентированный в том числе на корпоративный и государственный сектор, поэтому механизмы защиты в нём занимают важное место. В зависимости от версии и редакции системы SELinux может быть включён по умолчанию или отсутствовать — это нужно проверить на конкретной установке, а не предполагать заранее.
Каждый объект системы (файл, процесс, сокет) получает контекст безопасности, и политика определяет, какие взаимодействия между контекстами разрешены. Если приложение установлено нестандартным способом или работает с нестандартными путями, политика может блокировать его действия — отсюда и большинство обращений с запросом «redos disable selinux».
Проверка текущего состояния SELinux
Первый шаг — узнать, установлен ли SELinux вообще и в каком режиме он работает. Для этого выполните в терминале:
getenforce
Команда вернёт одно из трёх значений: Enforcing (принудительный режим, блокировки активны), Permissive (нарушения только логируются) или Disabled (механизм выключен). Если утилита не найдена, вероятно, пакеты SELinux в системе не установлены.
Более подробную информацию даёт команда sestatus — она покажет режим, точку монтирования SELinuxfs и используемую политику. Дополнительно можно проверить наличие записей об отказах в журнале аудита:
sudo ausearch -m avc -ts recent
- 🔍
getenforce— быстрый ответ о текущем режиме - 📋
sestatus— расширенная информация о конфигурации - 📄
ausearch -m avc— поиск записей об отказах доступа - 🗂️
/var/log/audit/audit.log— файл журнала аудита, если служба auditd активна
Временное отключение: перевод в режим Permissive
Самый безопасный способ проверить гипотезу о блокировке — временно перевести SELinux в разрешительный режим без перезагрузки. Для этого выполните:
sudo setenforce 0
После этого SELinux перестанет блокировать действия, но продолжит записывать нарушения в журнал. Запустите проблемное приложение и проверьте его работу. Если ошибка исчезла — причина действительно в политиках SELinux, и можно решать её точечно, а не выключать защиту целиком.
Вернуть принудительный режим можно командой sudo setenforce 1. Учтите, что изменение действует только до перезагрузки: после рестарта система вернётся к режиму, указанному в конфигурационном файле.
Постоянное отключение SELinux в РЕД ОС
Если решение об отключении принято осознанно (например, на изолированной тестовой машине или по требованию вендора ПО), настройка выполняется через конфигурационный файл. Откройте его в текстовом редакторе с правами администратора:
sudo nano /etc/selinux/config
Найдите строку SELINUX= и установите нужное значение. Вариант permissive оставит логирование без блокировок, disabled — полностью выключит механизм. Сохраните файл и перезагрузите систему: изменение этого параметра применяется только при загрузке.
☑️ Порядок постоянного отключения SELinux
⚠️ Внимание: отключение SELinux снижает уровень защиты системы. На серверах, обрабатывающих персональные данные или работающих в контурах с требованиями регуляторов, отключение может нарушить условия аттестации. Перед изменением согласуйте действие с ответственным за информационную безопасность.
Сравнение режимов работы SELinux
Чтобы выбрать подходящий вариант, полезно видеть различия между режимами. Они различаются поведением при нарушении политики и последствиями для безопасности.
| Режим | Блокировка нарушений | Логирование | Рекомендуемое применение |
|---|---|---|---|
| Enforcing | Да | Да | Рабочие и серверные системы |
| Permissive | Нет | Да | Диагностика и отладка политик |
| Disabled | Нет | Нет | Изолированные тестовые среды |
Как видно, Permissive — разумный компромисс на время настройки: приложения работают, а вы сохраняете полную картину того, что именно блокировалось бы. Полное отключение оправдано заметно реже, чем кажется.
Альтернативы полному отключению
Частая ошибка администраторов — отключать SELinux целиком из-за одного конфликтующего приложения. На практике почти каждую блокировку можно разрешить точечно, сохранив защиту для остальной системы.
- 🛠️
audit2allow— генерация локального модуля политики из записей об отказах - 🏷️
restorecon— восстановление корректных контекстов файлов, если они сбились при копировании - 🔧
semanage— управление контекстами портов и путей для нестандартных конфигураций - 📦
chcon— временная смена контекста отдельного файла для проверки
Пример создания локального модуля политики
Команда sudo ausearch -m avc -ts recent | audit2allow -M mypolicy сформирует модуль mypolicy.pp на основе свежих отказов. Устанавливается он командой sudo semodule -i mypolicy.pp. Перед установкой обязательно просмотрите сгенерированные правила — модуль может разрешить больше, чем требуется.
⚠️ Внимание: если после перевода SELinux в Permissive приложение по-прежнему не работает, причина не в SELinux. Проверяйте права доступа к файлам, настройки межсетевого экрана и зависимости пакетов — отключение защитного механизма в этом случае ничего не даст.
Как вернуть SELinux обратно
Обратное включение требует аккуратности. Установите в /etc/selinux/config значение SELINUX=permissive и перезагрузитесь. После загрузки файловой системе может потребоваться перемаркировка контекстов — за время работы без SELinux файлы создавались без меток безопасности.
Обычно перемаркировка запускается созданием файла /.autorelabel в корне с последующей перезагрузкой: система при загрузке переназначит контексты всем файлам. На больших дисках процесс занимает заметное время. После завершения можно переключиться в Enforcing и убедиться, что в журнале нет массовых отказов.
Часто задаваемые вопросы
Почему команда getenforce возвращает ошибку «command not found»?
Скорее всего, пакеты SELinux не установлены в вашей редакции РЕД ОС. Проверьте наличие пакета через менеджер пакетов (rpm -qa | grep selinux) и при необходимости установите инструменты из репозитория.
Отключится ли SELinux сразу после правки /etc/selinux/config?
Нет. Изменение конфигурационного файла применяется только при загрузке системы. Для текущего сеанса используйте setenforce 0, который переводит систему в Permissive до перезагрузки.
Безопасно ли работать с SELinux в режиме Disabled?
Это зависит от контура. На изолированной тестовой машине риск минимален, но на серверах с доступом из сети или с персональными данными отключение снимает важный уровень защиты. Предпочтительнее режим Permissive с точечной настройкой политик.
Что делать, если приложение не работает даже в режиме Permissive?
Значит, причина не в SELinux. Проверьте права на файлы и каталоги, правила межсетевого экрана (firewalld), доступность портов и журналы самого приложения.
Как узнать, какое именно действие блокирует SELinux?
Используйте sudo ausearch -m avc -ts recent или просмотрите /var/log/audit/audit.log. Записи «avc: denied» содержат процесс, объект и тип операции, по которым можно построить разрешающее правило через audit2allow.