要限制对一个网页的访问,可使用Apache和第三方提供的身份认证模块和方法来验证用户的凭据(如用户名和密码),用户认证指令通常放置在.htaccess文件中。本文介绍如何应用份认证模块和.htaccess文件。1 i0 O9 f, {# L+ q/ O. F; L
v2 G$ D2 ~; z. m8 i' t $ \0 F) w5 D0 T* t# ?. b) \0 x
要限制对一个网页的访问,可使用Apache和第三方提供的身份认证模块和方法来验证用户的凭据(如用户名和密码)。一些模块支持通过各种数据库(包括NIS和LDAP)进行身份认证。9 [3 c/ y' U4 e; p9 k6 a
8 n( ~. Z" \! [; @* A6 g7 k
8 L5 t, i& J& a) \/ ~: Q1 F
- J( W9 R) T- M/ E! a5 A6 M+ ?用户认证指令通常放置在.htaccess文件中。下面是使用Apache默认身份认证模块(mod_auth)的一个基本.htaccess文件。当这个文件放置在/var/www中时,会导致Apache要求用户输入密码进行验证,然后浏览器才能访问/var/www目录层次结构中的内容。应用时,要用本地服务器的相应值进行替换。
3 w t0 f$ {, N- f& {! \- B9 V) B6 a
; Q) Q6 ^- U1 l& [# cat .htaccess
/ d4 m8 r2 j3 X5 \* T6 X6 E( g8 n
( F7 j% G& H/ I2 nAuthUserFile /var/www/.htpasswd7 G# Z+ y9 _% K# _/ A O6 M
+ w _5 V3 V3 r uAuthGroupFile /dev/null
! q3 s# ~, e3 t6 ? : k# c1 ?* Q; j! z% _
AuthName "Browser dialog box query": [5 {. }" H& L8 H" d
" j" b5 {2 Y/ \; T7 r( w' ?
AuthType Basic5 {1 A5 x6 ^9 h- R/ K5 ~
) a% J* k! p3 q* l; e* ^require valid-user
6 v4 R7 m, u/ q9 M2 d; G0 i
* ^- Y3 R1 i- d9 N3 I ' s$ [ G2 `3 G: U6 S4 I
8 R4 K& s3 _% f7 s/var/www/.htpasswd是一个.htpasswd文件的典型绝对路径名,用户在要求输入用户名和密码的对话框中会看到字符串Browser dialog box query。- L% {. n# o+ S- L3 }8 t( M
% f% y9 B( p" ]3 Y X4 d- S; G ; h, Y0 e' l' d$ W( L+ a
: t; r8 q' u+ c" V/ r前面.htaccess文件的第二行关闭组功能。第四行指定用户的身份认证类型为Basic,这也是mod_auth模块的默认设置。最后一行告诉Apache哪些用户可以访问受保护的目录。valid-user条目会授权任何用户(用户名在Apache密码文件中并且输入的密码正确)访问该目录。
" v' M" U: j1 b+ u' l! O4 ], z& ~ 0 m" B$ g; V0 x+ L% |8 I1 k- E9 K
0 F6 v- H! |: R3 N: j
' N$ f9 V3 o$ n! U, i
只要Apache可以读取其密码文件,该文件可放在系统上的任何地方。把这个文件与.htaccess文件放在同一目录下也是安全的,因为默认情况下,Apache将不会对名字以.ht开头的任何文件的请求进行回复。但是一定不要更改httpd.conf配置文件,以防Apache对名字以.ht开头的文件的请求进行回复。+ V0 c9 a" C# y1 u# X/ |+ K! }
( R [' {2 j+ H3 f7 j' q
+ o* T1 C! J, G* j
! p8 o B+ J7 k8 L5 E$ k+ B下面的命令将在工作目录中创建(–c)一个带有Sam条目的.htpasswd文件。省略–c选项可以在现有.htpasswd文件中添加用户或更改密码。
0 W& H2 g' _5 a, Z" Y P* s+ |& D; \% c9 Y
$ htpasswd -c .htpasswd sam
# |+ \5 i6 u; \0 d
# g. D, n* k, b1 p z+ LNew password:
( F) H7 F; T+ a& ~* _7 `* \
. D& z& Y2 W; ]4 GRe-type new password:) d! f4 x8 u9 J5 G6 b- l
3 U/ v" G7 l" {$ p9 R' u! t- c: N
Adding password for user sam
' s) U8 ?9 A. k- y, N5 s3 F* i! U
0 q" t8 ~1 w, N4 P, h
! \" @) B7 X5 R- u
& j0 x0 S, T! j) u2 ?$ F! P( j# j默认的httpd.conf文件包括用于/var/www的AllowOverride None指令。要启用Apache来处理用户认证指令(如读取.htaccess文件),必须将这个指令更改为AllowOverride AuthConfig或将其删除。
' h$ L, u3 r( K6 L- u/ R $ J: h8 h) d+ H+ U& j6 D1 U
, W. ] C7 S* q! c- J- j: N& G7 }! d# \) |
2 P- x& R# e. {6 P; Z4 `4 X在Apache已配置为可处理.htaccess文件后,当它收到对文件的请求时,必须从所请求的文件向上遍历目录层次结构一直到根目录,查找.htacess文件,以确定它是否可以提供该请求的文件。此搜索可能会影响性能。通常情况下性能下降不太严重,但如果性能很关键,则这个问题将很棘手。 |
|