apache /var/www/html Permission denied 放在var/www/html下的项目访问不了

Unknown: failed to open stream: Permission denied in Unknown on line 0

问题场景

笔者在往apache的/var/www/html目录下放一个PHP的项目时,无论怎么授权,发现都无法访问到项目,具体情形如下:

启动httpd服务后,授权apache用户目录/var/www/html/poweradmin的读写权限

图片.png

授权

chown -R apache:apache /var/www/html/poweradmin/

再访问页面时,怎么也打不开,页面一片空白。

就想着去看看访问日志,就看到了下面的报错信息:

[Wed Aug 22 15:25:24.264659 2018] [:error] [pid 5806] [client 192.168.99.1:54930] PHP Warning:  Unknown: failed to open stream: Permission denied in Unknown on line 0
[Wed Aug 22 15:25:24.264719 2018] [:error] [pid 5806] [client 192.168.99.1:54930] PHP Fatal error:  Unknown: Failed opening required '/var/www/html/poweradmin/install/index.php' (include_path='.:/usr/share/pear:/usr/share/php') in Unknown on line 0

仔细解读就是访问被拒绝,没有权限,打不开请求地址。

问题原因

因为系统启动了SELINUX导致的

解决办法

我们要关闭SELINUX,关闭方法:

setenforce 0

或者

vim /etc/selinux/config

修改
SELINUX=enforcing
改成
SELINUX=disabled


再重启授权,重启httpd.service就可以了



附:

SELinux是什么?

SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux历史上最杰出的新安全子系统。NSA是在Linux社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。SELinux 默认安装在 Fedora 和 Red Hat Enterprise Linux 上,也可以作为其他发行版上容易安装的包得到。

SELinux 是 2.6 版本的 Linux 内核中提供的强制访问控制(MAC)系统。对于目前可用的 Linux安全模块来说,SELinux 是功能最全面,而且测试最充分的,它是在 20 年的 MAC 研究基础上建立的。SELinux 在类型强制服务器中合并了多级安全性或一种可选的多类策略,并采用了基于角色的访问控制概念。[1] 

大部分使用 SELinux 的人使用的都是 SELinux 就绪的发行版,例如 Fedora、Red Hat Enterprise Linux (RHEL)、DebianCentos。它们都是在内核中启用 SELinux 的,并且提供一个可定制的安全策略,还提供很多用户层的库和工具,它们都可以使用 SELinux 的功能。

SELinux是一种基于 域-类型 模型(domain-type)的强制访问控制(MAC)安全系统,它由NSA编写并设计成内核模块包含到内核中,相应的某些安全相关的应用也被打了SELinux的补丁,最后还有一个相应的安全策略。任何程序对其资源享有完全的控制权。假设某个程序打算把含有潜在重要信息的文件扔到/tmp目录下,那么在DAC情况下没人能阻止他。SELinux提供了比传统的UNIX权限更好的访问控制

此段来自百度百科https://baike.baidu.com/item/SELinux/8865268?fr=aladdin  。


thanks

评论

*
*