当前位置:  首页  >  服务器技术  >  Linux/unix  >  Linux教程

CentOS5.3下架设LAMP时遇到SELinux权限问题

学习在CentOS5.3下架设LAMP时,复制了一套PHP的源码到varwwwhtml下,发现index.php无权限访问,而手工新增一个简单的php文件可以正常访问,百思不得其解,可以确定的是文件目录的linux权限设定没问题,httpd配置也无问题.最后在google上搜索,发现原来是SELinu

学习在CentOS 5.3下架设LAMP时,复制了一套PHP的源码到/var/www/html下,发现index.php无权限访问,而手工新增一个简单的php文件可以正常访问,百思不得其解,可以确定的是文件目录的linux权限设定没问题,httpd配置也无问题.

最后在google上搜索,发现原来是SELinux的设置问题,而SELinux还一直没引起我的注意.

问题的处理如下(截录网友文章片断):

一开始我想来想去想不出为什么,但是给我感觉是权限的问题,用传统的Linux的思维方式来看,权限绝对没有问题。但是仔细一想,SELinux是不是会有其他安全的设定?

检查 avc message,查看 /var/log/messages文件,发现有类似以下内容的这样一段:

Dec 24 17:54:59 hostname kernel: audit(1098222899.827:0): avc: /

denied { getattr } for pid=19029 exe=/usr/sbin/httpd /

path=/var/www/html/about.html dev=dm-0 ino=373900 /

scontext=root:system_r:httpd_t tcontext=user_ubject_r:user_home_t /

tclass=file

嘿嘿,问题找到了,果然是SELinux的新特性搞的鬼。我把目录或文件设成了user_home_t类型,因此apache的进程没有权限,无法访问。针对Apache的进程所使用的SELinux target policy规定了apache的进程只能访问httpd_sys_content_t类型的目录或文件。

解决办法:

很简单,把目录或文件的策略类型改成 httpd_sys_content_t 就可以了

使用root用户

# chcon -t httpd_sys_content_t 目录名或文件名

然后可以用 ls -laZ 命令查看文件目录的策略类型

吐了个 "CAO" !
扫码关注 PHP1 官方微信号
PHP1.CN | 中国最专业的PHP中文社区 | PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | PHP问答
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved PHP1.CN 第一PHP社区 版权所有