Отключение SELinux на Rocky Linux: полное руководство

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 работе приложения
DisabledSELinux полностью отключён,
политики не загружаются
Тестовые среды, устранение
проблем, когда другие
режимы не помогают

💡 Вывод для новичка: Если приложение не работает, начните с 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-режиме:

  1. Загрузитесь с rescue-ядра (выберите в меню GRUB)
  2. Отредактируйте /etc/selinux/config, установите SELINUX=permissive
  3. Перезагрузитесь
  4. Создайте /.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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *