По умолчанию для Apache, nginx и других http-серверов при использовании SELinux в CentOS 7 и RHEL 7 область видимости ограничена директорией /var/www. Для смены корня документов на /home/site следует включить новые директории в правила httpd_sys_content_t и httpd_sys_script_exec_t.
Включаем временно:
chcon -R -t httpd_sys_content_t /home/site
chcon -R -t httpd_sys_script_exec_t /home/site/cgi-binВключаем постоянно:
semanage fcontext -a -t httpd_sys_content_t "/home/site(/.*)?"
semanage fcontext -a -t httpd_sys_script_exec_t "/home/site/cgi-bin(/.*)?"
restorecon -r -v /home/site
Отслеживаем возможные проблемы в /var/log/audit/audit.log и при необходимости строим свои правила обхода. В качестве шаблона можно использовать результат работы утилиты audit2allow:audit2allow -M policy_name -i /var/log/audit/audit.log
semodule -i policy_name.pp
Не забываем открыть доступ к сетевым портам на межсетевом экране:
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
URL:
Обсуждается: http://www.opennet.me/tips/info/2915.shtml
audit2allow -M policy_name -i /var/log/audit/audit.log
Никогда так не делай, а если делаешь - не советуй такое нигде кроме лисяры и опеннета.
А в чем проблема? Редхэт официально так советует:
https://access.redhat.com/documentation/en-US/Red_Hat_Enterp...
В том, что не советуют они так просто делать - и по этой ссылке упомянуто несколько довольно важных нюансов. Не говоря уж о других решениях, типа setroubleshoot, который дает иногда осмысленные рекомендации об отсутствующих контекстах или boolean'ах.
Проблема в том, что этой командой вы разрешите ВСЁ без разбора.
> Проблема в том, что этой командой вы разрешите ВСЁ без разбора.Да, согласен, автору стоило это отметить
Я бы примерно так делал (на примере nsd):
# Пока отлаживаем
setenforce Permissive
grep nsd /var/log/audit/audit.log | audit2allow -m nsd_ns1
# Читаем, что вышло. Осмысливаем, там _иногда_ разумно про setsebool советуют.
# По итогам, втыкаем политику ("nsd" уже есть, так что меняем имя)
grep nsd /var/log/audit/audit.log | audit2allow -M nsd_ns1 ; semodule -i nsd_ns1.pp
#Всё, проверяем
setenforce Enforcing
следовало бы еще добавить
firewall-cmd --reload
А то ведь люди (нубы) буду страдать :)
не надо так делать, это противоречит самой сути firewalld
firewall-cmd --add-port=80/tcp
firewall-cmd --add-port=80/tcp --permanent
И вообще раз уж вы хотите что бы юзеры могли свой контент делать в хомяках через Apache, есть готовая фича в индейце user_dirs по моему. Включаешь в конфиге Апача эту фичу и вперед, у selinux там есть булева переменная для разрешения.
> ... при использовании SELinuxВи таки считаете, что поделка от АНБ защитит вас лучше, чем sys_chdir() вызываемая из апача?
Просто обычные грабли уже приелись, хотят новых, вот и пишут мануалы по операциям, которые обычно даже не упомянаются ввиду абсолютной очевидности и тривиальности.
простите, а для чего вообще изначально вся эта затея?
3 последних комментатора - ни очем, спамеры.
Кстати никакой разницы для какого веб-сервера вы меняете root, хоть NginX хоть Apache, тип контекста selinux у них одинаковы.
Pavlinux - если начал договаривай, сказал как в тазик с водой пернул, слышно и пахнет но известно откуда оно?
последний ваще высер написал.
setenforce Disabled анбнегодует )
Жуть!, зачем так все усложнять!
Видать разроботчики хотят выпендрется, что типа они идут по другому пути развития, а в этоге просто палки в колеса сами себе вставляют.
rpm системы ужасны до неузноваемости! Не логичны!