有时候也用PHP做WEB开发,但很多时候不是纯的web开发,所以有时候会有一种需求:通过http远程修改服务器当中的任意文件。
后面通过sip服务器的freepbx和fusionpbx搞清楚了一件事,就是只需要把相关目录设为同一个用户组就可以达到我的目的。事实也的确是这样的,比如apache以apahce:apache的权限运行,那么只有你把相关文件,也就是你想通过http修改的任意文件的所有权限修改为apache:apache,那么问题就解决了。这样你就可以在其目录内任意创建文件,任意修改文件,能不能任意执行文件就没测试过。
但后来我安装了一台centos系统,上面安装了apache+php+mysql,然后修改了相关文件的用户组,也设置了apache运行时组合用户所有者,但除了对web目录下的文件可以做任何操作外,对其它目录下的文件都权限修改,郁闷了整整一天。查遍了所有apache的配置文件,都感觉没问题,但问题出在哪里呢?
最后无意间发现linux下有selinux这样一个东西,它是为了保证基于http的服务器安全而诞生的。所以,只要禁止selinux,问题就可以解决了。禁掉selinux for centos的方法如下:
1、查看selinux状态
查看selinux的详细状态,如果为enable则表示为开启
# /usr/sbin/sestatus -v
查看selinux的模式
# getenforce
2、关闭selinux
2.1:永久性关闭(这样需要重启服务器后生效)
# sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/‘ /etc/selinux/config
2.2:临时性关闭(立即生效,但是重启服务器后失效)
# setenforce 0 #设置selinux为permissive模式(即关闭)
# setenforce 1 #设置selinux为enforcing模式(即开启)
这样就关闭SELinux了,当安装软件遇到问题时可以考虑关闭SELinux再进行安装