一台新的linux CentOS服务器,安装好php环境后,发现apache默认解析路径是/var/www/html,如果不想使用这个默认路径,可以自己设置一个目录。
例:在根目录下新建/data/website文件夹用来存放项目。
准备工作:
创建目录
在根目录下
1 mkdir data
2 cd data
3 mkdir website
操作步骤:
1、vi /etc/httpd/conf/httpd.conf
找到 DocumentRoot “/var/www/html” 这一段 #apache的根目录
把/var/www/html 这个目录改为/data/website
再找到 #定义apache /var/www/html这个区域
把 /var/www/html改成/data/website
这样我们就把apahce的默认路径改掉了
1 service httpd restart #重启Apache服务器
2、访问localhost的时候,会发现访问拒绝,这是为什么呢?
 
主要是因为你的/home/wwwroot/web1/htdocs的权限是750,apache这个用户没有权限访问,你需要更改掉权限,可以这样改
1 chmod -R 755 /data/website
然后去访问 发现正常运行了(apache的用户:apache 运行apache的组:apache)
至此,Apache默认网站目录更改成功。
然后把你的项目移到配置好的目录下即可。
 

Linux下修改Apache根目录问题: 

1.直接修改/etc/httpd/conf/httpd.conf中修改DocumentRoot和Directory处的路径、重启即可 
2.但是修改之后,路径正确,目录权限改为755也产生问题:没有权限 (You don't have permission...)。 
3.终极原因:Linux开启了SELinux,关闭即可:setenforce 1(临时,重启无效)、修改/etc/selinux/config 的配置加入enforcing=0(重启有效) 
====================================================== 

原理: 

网络封包进入主机的流程 

一、经过防火墙的分析: 

Linux 系统有内建的防火墙机制,因此你的联机能不能成功,得要先看防火墙的脸色才行。预设的 Linux 防火墙就有两个机制,这两个机制都是独立存在的,因此我们预设就有两层防火墙喔。第一层是封包过滤式的 netfilter 防火墙, 另一个则是透过软件控管的 TCP Wrappers 防火墙。 
1.封包过滤防火墙:IP Filtering 或 Net Filter 
要进入 Linux 本机的封包都会先通过 Linux 核心的预设防火墙,就是称为 netfilter 的咚咚,简单的说,就是 iptables 这个软件所提供的防火墙功能。为何称为封包过滤呢?因为他主要是分析 TCP/IP 的封包表头来进行过滤的机制,主要分析的是 OSI 的第二、三、四层,主要控制的就是 MAC, IP, ICMP, TCP 与 UDP 的埠口与状态 (SYN, ACK...) 等。详细的资料我们会在第九章防火墙介绍。 

2.第二层防火墙:TCP Wrappers 

通过 netfilter 之后,网络封包会开始接受 Super daemons 及 TCP_Wrappers 的检验,那个是什么呢? 说穿了就是 /etc/hosts.allow 与 /etc/hosts.deny 的配置文件功能啰。 这个功能也是针对 TCP 的 Header 进行再次的分析,同样你可以设定一些机制来抵制某些 IP 或 Port ,好让来源端的封包被丢弃或通过检验; 
透过防火墙的管控,我们可以将大部分来自因特网的垃圾联机丢弃,只允许自己开放的服务的联机进入本机而已, 可以达到最基础的安全防护。 

二、服务 (daemon) 的基本功能: 

预设的防火墙是 Linux 的内建功能,但防火墙主要管理的是 MAC, IP, Port 等封包表头方面的信息,如果想要控管某些目录可以进入, 某些目录则无法使用的功能,那就得要透过权限以及服务器软件提供的相关功能了。举例来说,你可以在 httpd.conf 这个配置文件之内规范某些 IP 来源不能使用 httpd 这个服务来取得主机的数据, 那么即使该 IP 通过前面两层的过滤,他依旧无法取得主机的资源喔!但要注意的是, 如果 httpd 这支程序本来就有问题的话,那么 client 端将可直接利用 httpd 软件的漏洞来入侵主机,而不需要取得主机内 root 的密码!因此, 要小心这些启动在因特网上面的软件喔! 

三、SELinux 对网络服务的细部权限控制: 

为了避免前面一个步骤的权限误用,或者是程序有问题所造成的资安状况,因此 Security Enhanced Linux (安全强化 Linux) 就来发挥它的功能啦!简单的说,SELinux 可以针对网络服务的权限来设定一些规则 (policy) ,让程序能够进行的功能有限, 因此即使使用者的档案权限设定错误,以及程序有问题时,该程序能够进行的动作还是被限制的,即使该程序使用的是 root 的权限也一样。举例来说,前一个步骤的 httpd 真的被 cracker 攻击而让对方取得 root 的使用权,由于 httpd 已经被 SELinux 控制在 /var/www/html 里面,且能够进行的功能已经被规范住了,因此 cracker 就无法使用该程序来进行系统的进一步破坏啰。现在这个 SELinux 一定要开启喔! 

四、使用主机的文件系统资源: 

想一想,你使用浏览器连接到 WWW 主机最主要的目的是什么?当然就是读取主机的 WWW 数据啦! 那 WWW 资料是啥?就是档案啊!^_^!所以,最终网络封包其实是要向主机要求文件系统的数据啦。 我们这里假设你要使用 httpd 这支程序来取得系统的档案数据,但 httpd 默认是由一个系统账号名称为 httpd 来启动的,所以:你的网页数据的权限当然就是要让 httpd 这支程序可以读取才行啊!如果你前面三关的设定都 OK ,最终权限设定错误,使用者依旧无法浏览你的网页数据的。 
posted on 2015-05-28 14:19  闪电王国  阅读(3413)  评论(0编辑  收藏  举报