我正在配置 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 版本在此版本之前可以运行。有人能给我解释一下吗?
答案1
在 SELinux 下,每个项目都需要有一个上下文。文本重定位可以描述为错误。更改上下文会产生异常,诱使 SELinux 允许它加载,即使它本质上是坏的。更好的文本重定位解释: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
)。
高血压