今天正好碰巧看到一份关于SeLinux的资料,解决了一个困扰我多时的问题。
我有一台CentOS的服务器,运行着基于Apache的PHP系统,但是这些系统无法访问诸如/home,/usr等目录,即使我将这些目录chown成apache:apache,并且chmod成0777,也显示Permission Denied。百思不得其解后,我只能放弃那些计划好的数据分区,将这些数据文件挤在/var/目录下了。原来0777也不是万能的,真是毁三观,哈哈。
原来,此问题的发生是因为SeLinux。这是一个安全控制系统,简单理解就是它提供了更精确的权限控制,使我们的Linux更安全。
解决办法有2种,最快速的就是将SeLinux直接Disable掉,当然,这个你需要看场合,大多数场合都不适合这样rough的操作。最好的办法,就是正确设置SeLinux针对apache的权限。
下面给出解决的方法:
比如,你想让PHP系统能访问/home/folder/目录,那么你只需要运行命令:
chcon -R -h -t httpd_sys_content_t /home/folder/
这样,SeLinux就不会阻止你的程序访问啦。