要限制对一个网页的访问,可使用Apache和第三方提供的身份认证模块和方法来验证用户的凭据(如用户名和密码),用户认证指令通常放置在.htaccess文件中。本文介绍如何应用份认证模块和.htaccess文件。2 u% H/ f- A) }4 d$ a X
5 P f2 l, I) K o. H0 l
" t4 D. j" k2 q要限制对一个网页的访问,可使用Apache和第三方提供的身份认证模块和方法来验证用户的凭据(如用户名和密码)。一些模块支持通过各种数据库(包括NIS和LDAP)进行身份认证。 B' i. `& t1 E5 f1 Z( Q3 a k, L( d. j0 S$ P- q" h- i, l
5 W# D- K# `& N % r4 E2 K6 T4 s
用户认证指令通常放置在.htaccess文件中。下面是使用Apache默认身份认证模块(mod_auth)的一个基本.htaccess文件。当这个文件放置在/var/www中时,会导致Apache要求用户输入密码进行验证,然后浏览器才能访问/var/www目录层次结构中的内容。应用时,要用本地服务器的相应值进行替换。 0 ^4 b5 y" I i7 d0 T. J8 v 0 f2 {4 b7 ?" b: G* a7 }# cat .htaccess ; y: L l) ` ~; b : k' R" z/ {- l% `+ o0 U( T; sAuthUserFile /var/www/.htpasswd: t3 L4 z" t. A+ a6 k
8 [& n- L4 h q6 lAuthGroupFile /dev/null " B9 N$ z" l; F. _- Z! ?8 f . D, L- a* k' p. t" q1 c9 HAuthName "Browser dialog box query" % p1 U- h) u! L" u; q 3 v, ^2 \" g5 _AuthType Basic3 b3 [. J( o1 X) Y) r
0 N1 ^+ w+ _# G2 m* ]- I
require valid-user: k9 E! s1 S: l4 C
5 o5 O h' p7 J5 q & C M0 J7 _2 { ) P+ [3 W+ u" D5 |
/var/www/.htpasswd是一个.htpasswd文件的典型绝对路径名,用户在要求输入用户名和密码的对话框中会看到字符串Browser dialog box query。 : V3 v' \0 W2 R' g7 k6 y2 R $ b. j+ p$ K/ D. K. y$ m4 Z & f! u% H% [% k 4 O7 N% n3 n6 y2 E2 h
前面.htaccess文件的第二行关闭组功能。第四行指定用户的身份认证类型为Basic,这也是mod_auth模块的默认设置。最后一行告诉Apache哪些用户可以访问受保护的目录。valid-user条目会授权任何用户(用户名在Apache密码文件中并且输入的密码正确)访问该目录。" R- `$ P6 t8 P1 j" g' X
+ X1 K$ R5 Q4 ~6 l" u, U3 Q$ o
1 y9 I1 m$ B+ ^ ?
) }. Y9 E/ s$ i o
只要Apache可以读取其密码文件,该文件可放在系统上的任何地方。把这个文件与.htaccess文件放在同一目录下也是安全的,因为默认情况下,Apache将不会对名字以.ht开头的任何文件的请求进行回复。但是一定不要更改httpd.conf配置文件,以防Apache对名字以.ht开头的文件的请求进行回复。 % D' D4 I6 d" q2 U + Q) ^. W7 }- k5 b$ V7 r& d! ^
( _4 Z4 q- r0 s ( v( w7 e& n- n! V9 I ?% o6 n下面的命令将在工作目录中创建(–c)一个带有Sam条目的.htpasswd文件。省略–c选项可以在现有.htpasswd文件中添加用户或更改密码。3 s. r: N1 ?2 H0 {
1 H" l9 S: y5 P: B; x1 J* [# b$ htpasswd -c .htpasswd sam & C. h D% v/ K# ^% t$ Z" ? 0 }0 o0 G% J. [2 R0 eNew password:4 T! p% k+ M1 w) ^( j, e1 ^( _
1 @! o. h" {, B2 i4 w! i4 }' b
Re-type new password: 4 P$ V1 y, q: y' d 2 m1 D) U9 ^& t. j# E
Adding password for user sam ( Q" U/ e- h# c3 P % Y5 S9 \' [- e4 p8 x4 q) @- e
* M/ P7 Q5 o1 i. T
4 l6 o% H# r2 g- L( Z默认的httpd.conf文件包括用于/var/www的AllowOverride None指令。要启用Apache来处理用户认证指令(如读取.htaccess文件),必须将这个指令更改为AllowOverride AuthConfig或将其删除。 8 T9 f, r* V& V, Z5 E0 } 0 n+ I- `6 j9 b1 l
& p" H5 _8 \: t& O' N, b