В моей установке CentOS 7 SELinux включен по умолчанию. Это мешает Apache правильно читать файлы PHP в стандартном корне документа / var / www / html (браузер пуст при отображении веб-страниц, содержащих скрипт PHP). Когда я отключаю SELinux, страницы отображаются нормально.
Есть ли способ настроить SELinux, чтобы разрешить Apache доступ к файлам PHP из корня документа? Я бы предпочел не отключать SELinux полностью, учитывая, что CentOS явно считает, что это желательное дополнение безопасности.
Я не особо много пользуюсь SELinux, но вы можете попробовать
semanage fcontext -a -t httpd_sys_script_exec_t '/var/www/html(/.*)?'
restorecon -R -v /var/www/html/
Это позволяет Apache выполнять сценарии PHP в этом каталоге и сохраняется после перезагрузки.
Если вы используете MySQL, возможно, вам придется сделать то же самое. SELinux: разрешить Apache разговаривать с MySQL на CentOS может помочь
Бег audit2allow < /var/log/audit/audit.log
подтвердил, что httpd блокируется SELinux (см. эта ссылка). Решением было создать и применить модуль политики, выполнив следующие действия:
audit2allow -a -M my_httpd
(замените my_httpd на любое имя).semodule -i my_httpd.pp
установить модуль.После того, как я выполнил эти шаги, Apache смог без проблем запускать PHP-скрипты на моем сервере. Перезагрузка сервера не отменяет изменений.
Содержимое файла модуля (my_httpd.te):
module my_httpd 1.0;
require {
type admin_home_t;
type httpd_t;
class file { read getattr open };
}
#============= httpd_t ==============
allow httpd_t admin_home_t:file { read getattr open };