安装semanage:yum -y install policycoreutils-python
首先,用 semanage fcontext -l | grep ‘/var/www’ 获知默认 /var/www 目录的 SELinux 上下文:/var/www(/.*)? all files system_u:object_r:httpd_sys_content_t:s0
从中可以看到 Apache 只能访问包含 httpd_sys_content_t 标签的文件。
假设希望 Apache 使用 /srv/www 作为网站文件目录,那么就需要给这个目录下的文件增加 httpd_sys_content_t 标签,分两步实现。
首先为 /srv/www 这个目录下的文件添加默认标签类型:semanage fcontext -a -t httpd_sys_content_t ‘/srv/www(/.*)?’
然后用新的标签类型标注已有文件:restorecon -Rv /srv/www ,之后 Apache 就可以使用该目录下的文件构建网站了。
其中 restorecon 在 SELinux 管理中很常见,起到恢复文件默认标签的作用。比如当从用户主目录下将某个文件复制到 Apache 网站目录下时,Apache 默认是无法访问,因为用户主目录的下的文件标签是 user_home_t。此时就需要 restorecon 将其恢复为可被 Apache 访问的 httpd_sys_content_t 类型:
restorecon reset /srv/www/foo.com/html/file.html context unconfined_u:object_r:user_home_t:s0->system_u:object_r:httpd_sys_content_t:s0
Apache SELinux 配置实例_DoNgYuEjIaNg_百度空间.
转载请注明:Findever » apache访问非网站目录下文件