Product SiteDocumentation Site

7.2. Три основные причины возникновения проблем

В следующих разделах описываются три основные причины возникновения проблем: проблема меток, конфигурирование Булевых значений и портов для служб; и отслеживание правил SELinux.

7.2.1. Проблема Меток (проблема маркирования)

В системах с запущенным SELinux, все процессы и файлы маркированы метками, которые содержат информацию контекста безопасности. Эта информация называется контекстом SELinux. Если эти метки некорректны, доступ может блокироваться. Если приложение маркировано некорректно, процесс в который оно переходит может иметь некорректные метки, что возможно приведет к блокированию доступа SELinux, и такой процесс может создать некорректно маркированные файлы.
Основная причина проблем с маркированием - это использование нестандартных каталогов для служб. Например, вместо использования /var/www/html/ для вебсайта, администратор может использовать /srv/myweb/ В Fedora 13, каталог /srv/ помечен типом var_t. Файлы и каталоги создаваемые в /srv/ наследуют этот тип. Также вновь созданные каталоги корневого уровня, такие как /myserver/, могут быть помечены типом default_t. SELinux предотвращает Apache HTTP Server (httpd) от получения доступа к этим типам. Для предоставления доступа, SELinux должен знать о том, что файлы в /srv/myweb/ доступны httpd:
# /usr/sbin/semanage fcontext -a -t httpd_sys_content_t \
"/srv/myweb(/.*)?"
Команда semanage добавляет контекст к каталогу /srv/myweb/ (и всем файлам и каталогам в нём) к конфигурации контекста SELinux[12]. Команда semanage не изменяет контекста. От имени пользователя root, выполните команду restorecon для применения изменений:
# /sbin/restorecon -R -v /srv/myweb
Дополнительная информаци о добавлении контекстов к конфигурации доступна в разделе Раздел 5.7.2, «Постоянные изменения: semanage fcontext».

7.2.1.1. Как определить правильный контекст?

Команда matchpathcon проверяет контекст для файла и сверяет с его контекстом по умолчанию. В следующем примере демонстрируется использование matchpathcon для каталога, который содержит некорректно маркированные файлы:
$ /usr/sbin/matchpathcon -V /var/www/html/*
/var/www/html/index.html has context unconfined_u:object_r:user_home_t:s0, should be system_u:object_r:httpd_sys_content_t:s0
/var/www/html/page1.html has context unconfined_u:object_r:user_home_t:s0, should be system_u:object_r:httpd_sys_content_t:s0
В этом примере файлы index.html и page1.html помечены типом user_home_t. Этот тип используется для файлов в домашних каталогах пользователей. Используя команду mv для перемещения файлов из вашего домашнего каталога может привести к тому, что файлы будут маркированы типом user_home_t. Этот тип не должен существовать вне домашних каталогов. Используйте команду restorecon для восстановления корректного типа таких файлов:
# /sbin/restorecon -v /var/www/html/index.html 
restorecon reset /var/www/html/index.html context unconfined_u:object_r:user_home_t:s0->system_u:object_r:httpd_sys_content_t:s0
Для восстановления контекста всех файлов в каталоге используйте опцию -R:
# /sbin/restorecon -R -v /var/www/html/
restorecon reset /var/www/html/page1.html context unconfined_u:object_r:samba_share_t:s0->system_u:object_r:httpd_sys_content_t:s0
restorecon reset /var/www/html/index.html context unconfined_u:object_r:samba_share_t:s0->system_u:object_r:httpd_sys_content_t:s0
Дополнительные примеры использования matchpathcon доступны по ссылке: Раздел 5.10.3, «Изменение контекста SELinux по умолчанию».


[12] Файлы в /etc/selinux/targeted/contexts/files/ определяют контексты для файлов и каталогов. Файлы в этом каталоге считываются restorecon и setfiles для восстановления контекстов к их значениям по-умочанию.