Команды
/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 SELinuxfs mount: /selinux Current mode: enforcing Mode from config file: enforcing Policy version: 23 Policy from config file: targeted
Значение
SELinux status: enabled
возвращается, когда SELinux включен. Current mode: enforcing
возвращается, когда SELinux включен в принудительном enforced режиме. Policy from config file: targeted
возвраещается, когда используется политика SELinux targeted.5.4.1. Включение 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
:# 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=permissive # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted
-
От имени пользователя 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 не запреащает действия во время последней загрузки, то данная команда не вернёт никакого вывода. В соотвстетствии с Глава 7, Поиск и устранение неисправностей информацией о поиске и устранении проблем, в случае, если 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
Важно
Когда система запущена с SELinux в режиме permissive или disabled, у пользователей есть права некорректно маркировать файлы. Также, файлы созданные во время того, как SELinux отключен, не маркируются. Это вызывает проблемы, когда режим переводится в состояние enforcing. Для того, чтобы предотвратить некорректную маркировку или появление немаркированных файлов, файловые системы автоматически перемаркируются при изменению с disabled на permissive или enforcing режим.