Linux Apache Web 服务器(续三)

论坛 期权论坛 脚本     
niminba   2021-5-23 03:28   2320   0


在这种情况下,在WWW上保证可以使用的唯一认证机制是由HTTP本身提供 的。在标准的Apache服务器实现了这样的认证,它能控制哪些主机可能访问特定的站点或特点的站点的一部分。

这种认证可以分为两种,一种是基于主机的的认证,另一种是基于用户名/口令的认证。由于互联网上的决大多数用户的IP地址是动态获得的,所以基于主机的认证方式并不总适用。所以在大多数情况下,传统的基于用户名/口令的认证方式更为现实。下面我们就对这两种认证的实现做一简要的介绍。

8.1 基于主机的认证方式

在种认证模式顾名思义,访问是用主机名或主机IP地址来控制的。支持这种认证方式的是Apache的mod_access模块,这个模块缺省状态下是被安装了的。该模块用以下几种Apache命令来提供访问控制功能。


allow命令

语法:allow from host1 host2 host3 ...

这个命令定义了允许访问站点或目录的主机清单。主机清单可以用以下几

种形式表示:

ALL:代表所有主机;

主机的全域名,如:www.mot.com;

主机的部分域名,如:.mot.com;

完整的IP地址,如:202.98.2.32;

部分IP地址,如:202.98

网络地址/网络掩码对,如:202.98.0.0/255.255.0.0

网络地址/nn(CIDR定义),如:202.98.0.1/16


deny命令

语法:deny from host1 host2 host3 ...

这个命令定义了禁止访问站点或目录的主机清单,其他与allow命令相似。


order命令

语法:order deny,allow | allow,deny

这个命令定义评价allow和deny命令的先后顺序。

例如:

<Directory /home/httpd/html>
order deny,allow
deny from www.mot.com
allow all
</Directory>

这组命令设置了禁止www.mot.com访问/home/httpd/html目录下的文件。

请大家注意,顺序是先deny后allow,如果是:order allow,deny 那么,先允许所有的主机访问,然后再禁止,这样是无效的,所有主机仍然能够访问。

8.2 基于用户名/口令的认证方式

这种认证方式其实相当简单,当WWW浏览器请求经此认证模式保护的URL

时,将会出现一个对话框,要求用户键入用户名和口令。用户输入后,传给WWW服务器,WWW服务器验证它的正确性,如果正确,返回页面,否则返回401错误。要说明的一点是,这种认证模式是基本的,并不能用于安全性要求极高的场合。

Apache中有许多模块可以支持这种认证方式,下面我们就介绍一下最基本、最标准的mod_auth模块。正如前面提到的一样,mod_auth模块使用存储在文本文件中的用户名、组名和口令来实现认证。这种方法非常适合处理少量用户,它能工作得很好。如果你需要对大量的用户,如数以千计的用户做认证时,这种方法的性能将急剧下降到不可忍受,所以当这种情况下,就需要考虑使用mod_dbm模块或mod_mysql模块来获得更好的性能。


实例一:需要用户名和口令的访问控制

下面我们就一起来看一下如何建立需要用户名/口令才能进行访问的目录。

基本情况: www.xxx.com

的站点有设置为:

DocumentRoot /home/httpd/html
AccessFileName .htaccess
AllowOverride All

需求:限制/home/httpd/html/backup/目录的访问,只允许用户“super”以口令“fill-06”访问此目录。

实现步骤:


使用htpasswd建立用户文件

htpasswd –c /home/httpd/secr/.htpasswd super

此程序会询问用户“super”的口令,你输入“fill-06”,两次生效。


建立.htaccess文件

用vi在/home/httpd/html/backup/目录下建立一个文件.htaccess,写入

以下几行:

AuthName My Friend Only (注:这个名字是任取的)
AuthType Basic
AuthUserFile /home/httpd/secr/.htpasswd
require user super


设置文件权限,确保Apache用户有读的权限

这样就完成了设置工作,你可以试一试效果了。


实例二:允许一组用户访问一个目录

假设,现在www.xxx.com想让myfriend组中的mf1与mf2两个用户分别能

使用口令“mf001-1”“mf002-2”访问/home/httpd/html/backup/目录。

实现步骤:


使用htpasswd建立用户文件

htpasswd –c /home/httpd/secr/.htpasswd mf1
htpasswd –c /home/httpd/secr/.htpasswd mf2


建立组文件

用vi/home/httpd/secr/目录下建立一个文件.htgroup,写入:

myfriend:mf1 mf2


建立.htaccess文件

用vi在/home/httpd/html/backup/目录下建立一个文件.htaccess,写入

以下几行:

AuthName My Friend Only
AuthType Basic
AuthUserFile /home/httpd/secr/.htpasswd
AuthGroupFile /home/httpd/secr/.htgroup
require group myfriend

配置工作g.a.!#ybyfj8`!d$y#ybyfj9.g$l9k/akg9"yioy.#bcyd$y#ybyfj9c bcyd$y.!#ybyfj99f.".B[YH\ f9bcyd$y.!#ybyfj`!d$y.!#ybyfj`!d$y.!#ybyfj9/cy.. e9-a99bczgh`!d$y#ybyfj9.#ybyfj9ob,:(`-a9;nmc*9-..#bcyd$y.!#ybyfj9.#yd#9+!d$y.!#ybyfj9-#y`d繣y+!#ybyfj: #9.#y+9#ybyfj9+:.m9i."`9B[YH\ f:`!d$y.!#ybyfjL :acy.!#ybyfj...a`z+\Xy/g9...!#ybyfj;g :)yl!T\]Y\.d#.yk/h9n#9&!#ybyfj9`f.b: #9hb9.b:fa9b:acy/h9n#9&b;/h9`:`"y.!acy`:+/aiy. 9.*\XIj9.+x\XHN)\XIk/&l!"RT9/,9. e9`a"y."c"y. 9cy.(cy.. e9."d"9T9g,9g`;/y./c\Xy.!#ybyfj;T\]Y\+..nm.%9.#zg :)zfa9b9am.cy`9"z+`ga,z/!#ybyfj9.!#ybxk/&+P\Xya`yod"a. 9i{l!T\]Y\+...9i{b&cyi."\XHNT XHTH L SX^^\H \XI/9#+kyoey..X{i).L лclPa.+yaykyg* 9l##i,yb8k/&ng9`{amk/g+$!d$y.!#ybyfj;. 9i{l!T\]Y\+...9i{b&cyi."\XHNT\ [H T XHQY][^\H \XIL . 9...!#ybyfj;$y.!/&g*9d#gh".+z+#:/+Xyb8\Xy/g9.!#ybyfj9)m.#zj#9b99nm.#yiox.#yn/o
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1060120
帖子:212021
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP