SELinux (Security-Enhanced Linux) обеспечивает мандатный контроль доступа (MAC), который защищает системы Rocky Linux от несанкционированного доступа и повышения привилегий. Хотя SELinux значительно повышает безопасность, вам может потребоваться временно отключить его при устранении проблем совместимости приложений, тестировании пользовательского ПО, конфликтующего с политиками безопасности, или при работе в средах разработки, где строгий контроль доступа мешает быстрому прототипированию. Типичные сценарии включают отладку контейнеризированных приложений, которые не работают в enforcing-режиме, тестирование легаси-приложений без поддержки SELinux, или выяснение, вызывают ли политики SELinux сбои при запуске сервисов.
💡 Если ваше приложение не работает с ошибками прав доступа, вы подозреваете SELinux, или вы просто хотите упростить настройку в тестовой среде — временное или постоянное отключение SELinux поможет диагностировать и решить проблему.
В этом руководстве мы покажем, как отключить SELinux на Rocky Linux 8, 9 и 10. Вы узнаете:
- В чём разница между режимами Enforcing, Permissive и Disabled
- Как временно отключить SELinux (до перезагрузки)
- Как полностью отключить SELinux (навсегда)
- Как снова включить SELinux с перемаркировкой файловой системы
- Как устранять типичные проблемы
Для кого: сисадмины (упрощение отладки), разработчики (настройка окружений), энтузиасты (эксперименты), новички (понимание основ безопасности Linux).
⚠️ Важное предупреждение: Отключение SELinux снижает безопасность системы. Используйте этот подход только в тестовых средах, при целенаправленной отладке или если вы полностью понимаете риски. На продакшен-серверах лучше настраивать политики, а не отключать SELinux полностью.
1. Режимы работы SELinux
SELinux работает в трёх режимах:
| Режим | Что делает | Для чего нужен |
|---|---|---|
| Enforcing | Активно применяет все политики безопасности, блокирует запрещённые операции | Продакшен-серверы, максимальная безопасность |
| Permissive | Только логирует нарушения, но не блокирует | Диагностика: понять, мешает ли SELinux работе приложения |
| Disabled | SELinux полностью отключён, политики не загружаются | Тестовые среды, устранение проблем, когда другие режимы не помогают |
💡 Вывод для новичка: Если приложение не работает, начните с setenforce 0 (Permissive). Если после этого ошибка исчезла — виноват SELinux, и нужно либо настраивать политики, либо (в тестовой среде) отключить его полностью.
2. Подготовка системы
2.1 Обновление системы
sudo dnf upgrade --refresh -y
Что делает:
sudo— права суперпользователя.dnf upgrade— обновляет все пакеты до последних версий.--refresh— принудительно перекачивает метаданные репозиториев (игнорирует кэш).-y— автоматически отвечает «yes».
Зачем: Это стандартная практика безопасности перед внесением изменений в систему.
2.2 Установка policycoreutils (если ещё не установлен)
sudo dnf install -y policycoreutils
Что делает: Устанавливает утилиты sestatus, getenforce, setenforce. На минимальных установках или в контейнерах эти команды могут отсутствовать. Стандартные редакции Rocky Linux Workstation и Server обычно включают эти инструменты по умолчанию.
3. Проверка текущего статуса SELinux
sestatus
✅ Ожидаемый вывод (пример):
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 33
Зачем: Узнать, включён ли SELinux, в каком режиме работает, и какая политика загружена.
4. Временное отключение SELinux (до перезагрузки)
Этот метод переводит SELinux в режим Permissive без перезагрузки. Идеально подходит для диагностики.
4.1 Перевод в Permissive режим
sudo setenforce 0
Что делает: Отключает блокировку, но оставляет логирование. Все нарушения будут записываться в /var/log/audit/audit.log, но не блокироваться.
4.2 Проверка текущего режима
getenforce
✅ Ожидаемый вывод:
Permissive
4.3 Возврат в Enforcing режим (без перезагрузки)
sudo setenforce 1
Что делает: Снова включает блокировку SELinux.
⚠️ Важно: Изменения, сделанные через setenforce, действуют только до перезагрузки. После перезагрузки SELinux вернётся в режим, указанный в конфигурационном файле /etc/selinux/config.
5. Полное отключение SELinux (навсегда)
Этот метод полностью отключает SELinux. Политики не загружаются даже при загрузке системы.
5.1 Редактирование конфигурационного файла
sudo nano /etc/selinux/config
Найдите строку:
SELINUX=enforcing
Измените на:
SELINUX=disabled
Что делает: При следующей загрузке SELinux не будет активирован.
5.2 (Опционально) Отключение SELinux на уровне ядра через grubby
Для полного отключения SELinux на уровне ядра (иногда требуется на Rocky 9/10) добавьте параметр selinux=0 в загрузочные параметры:
sudo grubby --update-kernel ALL --args selinux=0
Что делает: SELinux не инициализируется даже на уровне ядра. Это более радикальный метод, чем редактирование config.
Для отмены (удаление параметра):
sudo grubby --update-kernel ALL --remove-args selinux
5.3 Перезагрузка системы
sudo reboot
5.4 Проверка, что SELinux отключён
sestatus
✅ Ожидаемый вывод:
SELinux status: disabled
6. Включение SELinux обратно
Если SELinux был отключён полностью, его включение требует перемаркировки файловой системы, иначе система может не загрузиться из-за неправильных контекстов безопасности.
6.1 Редактирование конфигурационного файла
sudo nano /etc/selinux/config
Измените строку на:
SELINUX=enforcing
Альтернатива (сначала permissive, затем enforcing):
SELINUX=permissive
Этот режим позволит системе загрузиться, но не будет блокировать действия. После проверки логов можно переключиться на enforcing.
6.2 (Если использовали grubby) Удаление параметра ядра
sudo grubby --update-kernel ALL --remove-args selinux
6.3 Создание файла для перемаркировки
sudo touch /.autorelabel
Что делает: При следующей загрузке система перемаркирует все файлы (присвоит им правильные SELinux-контексты). Это может занять от нескольких минут до часа в зависимости от количества файлов.
6.4 Перезагрузка системы
sudo reboot
Важно: Не прерывайте процесс перемаркировки! Система покажет сообщение:
*** Warning -- SELinux targeted policy relabel is required.
*** Relabeling could take a very long time, depending on file
*** system size and speed of hard drives.
6.5 Проверка, что SELinux снова активен
sestatus
✅ Ожидаемый вывод:
SELinux status: enabled
Current mode: enforcing
7. Диагностика проблем
7.1 SELinux не отключается после редактирования config
Причина: Изменения в /etc/selinux/config вступают в силу только после перезагрузки.
Решение:
sudo reboot
7.2 Система не загружается после включения SELinux
Причина: Файловая система не была перемаркирована, и контексты безопасности не соответствуют политикам.
Решение в rescue-режиме:
- Загрузитесь с rescue-ядра (выберите в меню GRUB)
- Отредактируйте
/etc/selinux/config, установитеSELINUX=permissive - Перезагрузитесь
- Создайте
/.autorelabelи перезагрузитесь снова
Решение через GRUB (прямое добавление параметра):
При загрузке нажмите e на нужном ядре и добавьте в конце строки, начинающейся с linux, параметр selinux=0. Загрузитесь (Ctrl+X), затем выполните шаги 6.1–6.4.
7.3 getenforce/sestatus: command not found
Решение:
sudo dnf install -y policycoreutils
7.4 Приложение всё ещё не работает после setenforce 0
Причина: Проблема не в SELinux.
Что делать: Проверьте:
- Файрвол (
sudo firewall-cmd --list-all) - Права доступа к файлам (
ls -la) - Логи приложения и systemd (
sudo journalctl -xe)
Чек-лист: всё готово к работе
# 1. Проверка статуса SELinux
sestatus
# 2. Проверка текущего режима (enforcing/permissive/disabled)
getenforce
# 3. Проверка конфигурации (какой режим установлен после перезагрузки)
grep ^SELINUX= /etc/selinux/config
# 4. Проверка параметров ядра (если использовали grubby)
grep selinux=0 /proc/cmdline
# 5. Просмотр последних нарушений SELinux (если в permissive/enforcing)
sudo grep "SELinux" /var/log/audit/audit.log | tail -10
Заключение
Вы научились управлять SELinux на Rocky Linux: переключать режимы, временно и полностью отключать, а также правильно включать обратно с перемаркировкой файловой системы.
Что теперь можно делать:
- ✅ Диагностировать, мешает ли SELinux работе приложений (режим Permissive)
- ✅ Полностью отключать SELinux в тестовых средах (Disabled)
- ✅ Включать SELinux обратно без риска не загрузить систему (через
/.autorelabel)
Что дальше:
- На продакшен-серверах лучше настраивать политики, а не отключать SELinux
- Для анализа нарушений используйте
audit2allowдля создания пользовательских политик - Компенсируйте отключение SELinux настройкой файрвола и установкой Fail2Ban