воскресенье, 15 июля 2012 г.

selinux и httpd (или error 403)

Сайт на RHEL 6.3 (точнее, oracle linux 6.3). selinux - в enforcing mode.
Виртуальный host для apache:
<VirtualHost *:80>
    DocumentRoot /var/www/html/site/nucleus
    ServerName r-ol.local.com
</VirtualHost>
  Все OK

 <VirtualHost *:80>
    DocumentRoot /home/site/nucleus
    ServerName r-ol.local.com
</VirtualHost>
  Error 403

В /var/log/audit/audit.log такие строчки:
Jul 08 00:12:04 (null) (null): audit(1341691924.583:225): avc: denied { getattr } for pid=2359 comm=httpd path="/home/site/nucleus/1.html" ino=1052048 dev=dm-0 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:home_root_t:s0 tclass=file

Проблема в security context для каталога /home/site и его потомков.

Для сравения:
ls -Z /var/www/html/index.html
-rwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/index.html

 ls -Z /home/site/
drwxr-xr-x. root   root   unconfined_u:object_r:home_root_t:s0 nucleus

В http://wiki.centos.org/HowTos/SELinux описана процедура "Relabeling Files"

В данном случае:
chcon -R -v --type=httpd_sys_content_t /home/site/

после этого security context стал таким:
ls -Z /home/site/
drwxr-xr-x. root   root   unconfined_u:object_r:httpd_sys_content_t:s0 nucleus

ошибка 403 исчезла.

PS:
Для аудита поведения selinux помимо разглядывания, что лежит /var/log/audit/audit.log, можно использовать утилиту seaudit (из пакета setools-gui.i686 : Policy analysis graphical tools for SELinux).













PPS: для анализа policies в selinux в этом же пакете (setools-gui) есть утилита apol.
И apol, и seaudit можно запускать, используя удаленный xserver (например, xming). Только в этом случае есть тонкость: на машине, где они запускаются, необходимо установить шрифты (yum install xorg-x11-font*). Похоже, им нужен какой-то type1 шрифт, но я, не заморачиваясь, установил все.


Комментариев нет:

Отправить комментарий