Я настраиваю Apache \ PHP и заметил, что Apache жалуется на разрешения с общим объектом php.
Starting httpd:
httpd: Syntax error on line 206 of /etc/httpd/conf/httpd.conf:
Cannot load /usr/lib/httpd/modules/libphp5.so into server:
/usr/lib/httpd/modules/libphp5.so: cannot restore segment prot after reloc:
Permission denied
Я посмотрел на контекст (все нормально началось с отключением принудительного исполнения) и обнаружил:
# ls --context /usr/lib/httpd/modules/libphp5.so
-rwxr-xr-x root root root:object_r:httpd_modules_t /usr/lib/httpd/modules/libphp5.so
Разве httpd (apache) не должен иметь доступ к файлам в контексте httpd_modules_t
? Я исправил это, применив
chcon -t textrel_shlib_t '/usr/lib/httpd/modules/libphp5.so'
Но я думаю, что версия httpd будет работать раньше этой. Может кто-то объяснить это мне?
В SELinux у каждого элемента должен быть контекст. Перенос текста можно описать как ошибку. Изменение контекста создает исключение, побуждающее SELinux разрешить ему загрузку, даже если по сути это b0rken. Лучшее объяснение перемещения текста: http://www.akkadia.org/drepper/textrelocs.html. Кстати, используя chcon
не является постоянным: изменение метки приведет к сбросу контекста. Использовать
# semanage fcontext -a -t textrel_shlib_t /usr/lib/httpd/modules/libphp5.so
чтобы он приклеился (см. /etc/selinux/targeted/contexts/files/file_contexts.local
).
HTH