我正在configurationApache \ 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
我看了上下文(开始罚款执行closures),并发现:
# 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上下文的httpd_modules_t吗? 我通过申请得到了修复
chcon -t textrel_shlib_t '/usr/lib/httpd/modules/libphp5.so'
但是我认为在这之前httpd版本可以工作。 谁可以给我解释一下这个?
在SELinux下,每个项目都需要有一个上下文。 文本重定位可以被描述为错误。 更改上下文会创build一个exception,让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