SELinux (Security Enhanced Linux) – это модуль безопасности ядра Linux, который предоставляет механизм принудительного контроля доступа. Он позволяет администраторам определять детальные правила, которые регулируют взаимодействие процессов, пользователей и файлов в системе.
Правила политики SELinux определяют, разрешен ли определенный доступ (например, чтение файла процессом). Если явного правила, разрешающего доступ, не существует, SELinux его запрещает.
SELinux может работать в одном из трех режимов:
-
- Enforcing (Принудительный): SELinux активно применяет (принуждает) правила политики безопасности и запрещает действия, которые им не соответствуют. Нарушения регистрируются. Это режим по умолчанию и наиболее безопасный.
-
- Permissive (Разрешающий): SELinux не запрещает действия, не соответствующие политике, но регистрирует их как нарушения. Этот режим полезен для отладки и тестирования политики SELinux без нарушения работы системы.
-
- Disabled (Отключен): Политика SELinux не загружается, и механизм безопасности полностью отключен.
По умолчанию в Fedora SELinux включен и находится в режиме принуждения (Enforcing).
Важное замечание: Рекомендуется сохранять SELinux в режиме Enforcing, так как он значительно повышает безопасность системы. Полное отключение SELinux должно рассматриваться только в крайних случаях, когда другие методы (например, настройка политики или использование Permissive режима для отладки) не применимы. Отключение SELinux снижает защищенность вашей системы от различных угроз.
Проверьте состояние SELinux
Чтобы просмотреть текущее состояние SELinux и используемую политику в вашей системе, вы можете использовать команды sestatus или getenforce.
Команда sestatus предоставляет более детальную информацию:
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 включен (enabled) и находится в режиме принуждения (Current mode: enforcing).
Команда getenforce просто выводит текущий режим:
getenforce
Пример вывода:
Enforcing
Временно изменить режим SELinux
Вы можете временно переключить SELinux из режима Enforcing в режим Permissive без перезагрузки. Это часто используется для проверки, вызывает ли проблема SELinux.
Для переключения в режим Permissive выполните команду:
sudo setenforce 0
Или по названию режима:
sudo setenforce Permissive
Для переключения обратно в режим Enforcing выполните:
sudo setenforce 1
Или по названию режима:
sudo setenforce Enforcing
Важно: Изменения, сделанные с помощью setenforce, действуют только до следующей перезагрузки системы. После перезагрузки SELinux вернется в режим, указанный в конфигурационном файле.
Постоянно изменить режим или отключить SELinux
Постоянное изменение режима SELinux (на Permissive) или полное отключение (Disabled) требует редактирования конфигурационного файла и последующей перезагрузки.
Откройте файл /etc/selinux/config в текстовом редакторе с правами суперпользователя:
sudo nano /etc/selinux/config
Найдите строку, начинающуюся с SELINUX=
-
- Чтобы установить режим Permissive по умолчанию после загрузки, измените строку на: SELINUX=permissive
-
- Чтобы полностью отключить SELinux (НЕ РЕКОМЕНДУЕТСЯ для постоянного использования), измените строку на: SELINUX=disabled
Сохраните изменения в файле.
ВНИМАНИЕ (для постоянного отключения в современных версиях Fedora):
В версиях Fedora начиная примерно с 34, простой установки SELINUX=disabled в /etc/selinux/config может быть недостаточно для полного отключения SELinux на самом раннем этапе загрузки ядра, или это может вызвать проблемы. Рекомендуемый способ полностью отключить SELinux в современных Fedora - это добавить параметр ядра selinux=0 при загрузке.
Для этого используйте команду grubby (требуются права root):
sudo grubby --update-kernel ALL --args selinux=0
Эта команда добавит аргумент selinux=0 ко всем записям ядра в конфигурации загрузчика GRUB, гарантируя, что SELinux будет отключен с самого начала загрузки.
После внесения изменений в /etc/selinux/config (для Permissive) или добавления параметра ядра selinux=0 (для полного отключения), необходимо перезагрузить систему, чтобы изменения вступили в силу:
sudo systemctl reboot
После загрузки системы снова проверьте статус SELinux с помощью команды sestatus или getenforce, чтобы убедиться, что изменения применены.