Отключить SELinux на CentOS, Fedora
Отключить SELinux на CentOS, Fedora
SELinux (Security-Enhanced Linux) — это система принудительного контроля доступа, она может работать параллельно со стандартной классической системой контроля доступа в linux. SELinux может создавать правила обращения пользователям или программам, что дает возможность ограничить некоторые возможности доступа им. В данной материале описано как задать различные режимы работы подсистемы защиты или просто выключить её в ОС Linux.
Статус SELinux
Команды /usr/sbin/getenforce
и /usr/sbin/sestatus
используются для проверки текущего статуса SELinux. Команда getenforce
возвращает значение Enforcing
, Permissive
, или Disabled
. Команда getenforce
возвращает Enforcing
когда SELinux активирован (правила политики SELinux принудительные):
# /usr/sbin/getenforce Enforcing
Команда
getenforce
возвращает Permissive
когда SELinux активирован, но правила политики SELinux не принудительные enforced, и используются только правила DAC. Команда getenforce
возвращает Disabled
, если SELinux отключен.Команда
sestatus
возвращает статус SELinux и используемой политики SELinux:# /usr/sbin/sestatus
Значение
SELinux status: enabled
возвращается, когда SELinux включен. Current mode: enforcing
возвращается, когда SELinux включен в принудительном enforced режиме. Policy from config file: targeted
возвращается, когда используется политика SELinux targeted.Управление SELinux
В операционных системах с отключенным SELinux, сконфигурирована опция
SELINUX=disabled
в /etc/selinux/config
:# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted
Также, команда
getenforce
возвращает значение Disabled
:# /usr/sbin/getenforce Disabled
Для включения SELinux:
-
Используйте команду
rpm -qa | grep selinux
,rpm -q policycoreutils
, иrpm -qa | grep setroubleshoot
для проверки инсталляции пакетов SELinux. Это руководство предполагает, что инсталлированы следующие пакеты: selinux-policy-targeted, selinux-policy, libselinux, libselinux-python, libselinux-utils, policycoreutils, setroubleshoot, setroubleshoot-server, setroubleshoot-plugins. Если эти пакеты не установлены, установите их от имени пользователя root с помощью командыyum install
. Следующие пакеты опционально: policycoreutils-gui, setroubleshoot, selinux-policy-devel, и mcstrans.package-name
-
Перед тем, как SELinux включится, каждый файл файловой системы должен быть промаркирован контекстом SELinux. До того, как это произойдёт, ограниченным доменам может быть отказано в доступе, что приведёт к некорректной загрузке операционной системы. Для того , чтобы не допустить этого, настройте
SELINUX=permissive
в файле/etc/selinux/config
: -
От имени пользователя root, выполните команду
reboot
для перезагрузки ОС. Во время следующей загрузки файловые системы будут промаркированы. Процесс маркирования расставляет метки для всех файлов в контексте SELinux:*** Warning -- SELinux targeted policy relabel is required. *** Relabeling could take a very long time, depending on file *** system size and speed of hard drives. ****
Каждый символ*
в последней строке обозначает 1000 файлов, которые были промаркированы. В примере, приведенном выше, четыре символа*
означают, что 4000 файлов были промаркированы. Общее время маркирования всех файлов зависит от общего количества файлов и скорости жёстких дисков. На современных системах, этот процесс занимает чуть меньше 10 минут. -
В разрешительном режиме, политика SELinux принудительно не назначена, но запреты заносятся в журнал как действия, которые были бы запрещены в принудительном режиме. Перед тем как перейти в принудительный режим, от пользователя root выполните команду
grep "SELinux is preventing" /var/log/messages
, для того, чтобы убедиться, что SELinux не запрещает действия во время последний загрузки. Если SELinux не запрещает действия во время последней загрузки, то данная команда не вернёт никакого вывода. -
Если не обнаружено сообщений о запретах в
/var/log/messages
, то настройтеSELINUX=enforcing
в/etc/selinux/config
:# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=enforcing # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted
-
Перезагрузите ОС. После перезагрузки, удостоверьтесь, что команда
getenforce
возвращает значениеEnforcing
:# /usr/sbin/getenforce Enforcing
-
От пользователя root, выполните команду
/usr/sbin/semanage login -l
для просмотра отображений между SELinux и пользователями Linux. Вывод команды должен быть такой:Login Name SELinux User MLS/MCS Range __default__ unconfined_u s0-s0:c0.c1023 root unconfined_u s0-s0:c0.c1023 system_u system_u s0-s0:c0.c1023
Если это не так, то выполните команду от root пользователя для исправления ошибок в отображениях пользователей. Безопаснее проигнорировать предупреждения
SELinux-user username
is already defined
, если они появляются, где username
может быть unconfined_u
, guest_u
, или xguest_u
:/usr/sbin/semanage user -a -S targeted -P user -R «unconfined_r system_r» -r s0-s0:c0.c1023 unconfined_u
/usr/sbin/semanage login -m -S targeted -s «unconfined_u» -r s0-s0:c0.c1023 __default__
/usr/sbin/semanage login -m -S targeted -s «unconfined_u» -r s0-s0:c0.c1023 root
/usr/sbin/semanage user -a -S targeted -P user -R guest_r guest_u
/usr/sbin/semanage user -a -S targeted -P user -R xguest_r xguest_u
0