全部博文(191)
分类: 系统运维
2009-08-04 10:45:24
有时候网站的关键性目录不想让普通的用户访问到,这个时候就可以设定限制访问目录以及子目录,设定哪些用户只允许访问父目录,哪些用户可以父目录以及子目录。
实现上述需求需要哪些资源:
实验环境
系统 RedHat 5.3
www服务器版本 httpd-2.2.12(目前有三个apache版本:apache-1.3,httpd-2.0 ,httpd-2.2)
apache模块 mod_auth_basic、mod_authn_file.so、mod_authz_user.so
说明
源码包安装apache就略过了,这里简要的谈谈apache的模块安装。
Apache源码包自带了这些模块未编译前的.c文件,在目录httpd-2.2.12/modules/aaa/,有大量的.c文件。在安装配置apache的时候,加上配置选项:- -enable-so - -enable-mods-shared
=all ,就可以编译这些.c文件,把它们编译成.so文件就可以使用LoadMoudle指令来加载了。
- -enable-so /////////使用DSO动态加载模块,为动态增加模块提供了方便。
- -enable-mods-shared=all ///////将所有的模块动态加载到httpd.conf配置文件中。
配置了这些之后,以上的三个模块就加载到了apache配置文件httpd.conf中,就可以使用了。
就是上面这三个模块了。LoadModule 是加载的意思,apache通过LoadModule来和这些模块进行沟通,类似于说:“嘿,apache,我在这里,你可以来使用我了”。
实现
1、apache服务器版本为httpd-2.2的源码包,这个包的配置文件,即httpd.conf与httpd-2.0的有许些差别。有些配置选项以文件的形式存放,也就是说,不是直接在httpd.conf编辑配置,而是在另一个文件里配置,然后在httpd.conf文件里把#Include注释去掉,apache即可访问该文件。如:
Include 前面的#已经去掉了。我们在这个文件里实现认证的功能。
2、打开这个目录:
3、进入红色框的目录:
4、编辑httpd-autoinex.conf
配置文件很重要,要理解和记忆以上的各项配置。
将系统的/mnt/目录映射到一个虚拟目录ppp,这需要别名来实现(别名模块已经安装mod_alias
.so).
/mnt/目录的情况:
允许用户luke ,hans 访问父目录/mnt/ ,允许用户hans访问子目录/mnt/test/ ,不允许luke访问子目录。
5、建立用户luke,hans
/usr/local/apache2/bin/htpasswd -c /etc/htaccess luke
/usr/local/apache2/bin/htpasswd /etc/htaccess hans
6、重启apache
/usr/local/apache2/bin/apachectl restart
客户端访问测试一:
用户luke进入火狐浏览器,输入:192.168.1.2/ppp/ ,弹出认证对话框:
输入用户Luke和密码:
进入:
Luke只能访问父目录,即/mnt/目录下的文件,而子目录/mnt/test/ 是不允许访问的,不可见的。
客户端访问测试二:
用户hans进入火狐浏览器,输入:192.168.1.2/ppp/ ,弹出认证对话框:
输入用户和密码:
进入:
hans看到了子目录test/ 打开看看:
hans 成功进入子目录test/
.htaccess文件也可以实现上述的功能,区别在于一个把配置文件写在httpd.conf里面,一个把配置文件写在.htaccess文件里,读者朋友可以自行实验一下,我这里不再测试了。
注意:
由于Apache对一个目录的访问控制设置是能够被下一级目录继承的,因此对根目录的设置将影响到它的下级目 录。注意由于AllowOverride None的设置,使得Apache服务器不需 要查看根目录下的访问控制文件,也不需要查看以下各级目录下的访问控制文件,直至httpd.conf(或access.conf )中为某个目录指定了允许Alloworride,即允许查看访问控制文件。由于Apache对目录访问 控制是采用的继承方式,如果从根目录就允许查看访问控制文件,那么Apache就必须一级一级的查看访问控制文件,对 系统性能会造成影响。而缺省关闭了根目录的这个特性,就使得Apache从httpd.conf中具体指定的目录向下 搜寻,减少了搜寻的级数,增加了系统性能。因此对于系统根目录设置AllowOverride None不但对于系统 安全有帮助,也有益于系统性能。
===========================================================================================================