要限制对一个网页的访问,可使用Apache和第三方提供的身份认证模块和方法来验证用户的凭据(如用户名和密码),用户认证指令通常放置在.htaccess文件中。本文介绍如何应用份认证模块和.htaccess文件。
1 t" t4 g4 H% `; W 4 a5 v; Q- j% {3 s4 \9 S
9 t7 J" w! X/ ~) u5 H$ a" C要限制对一个网页的访问,可使用Apache和第三方提供的身份认证模块和方法来验证用户的凭据(如用户名和密码)。一些模块支持通过各种数据库(包括NIS和LDAP)进行身份认证。3 B! P; j& }, Z9 N4 R0 Y' ?
# Y+ H4 M% [ } a
`. T4 N* M3 V5 h7 \) }6 ] Q ; n( J4 V6 E* D# I" D% {6 [. \
用户认证指令通常放置在.htaccess文件中。下面是使用Apache默认身份认证模块(mod_auth)的一个基本.htaccess文件。当这个文件放置在/var/www中时,会导致Apache要求用户输入密码进行验证,然后浏览器才能访问/var/www目录层次结构中的内容。应用时,要用本地服务器的相应值进行替换。8 F/ O, n2 z5 }% Y* Z, X
8 @) ?/ E- U" k+ M4 O9 q& f0 J# q
# cat .htaccess8 Q7 _$ B& w( l: W
z% ]/ F( p- z
AuthUserFile /var/www/.htpasswd
7 g3 m4 \& }: }5 ?6 H* \4 P
" ~/ a- @) b$ }! A5 [AuthGroupFile /dev/null
* E5 u! U& U B- g' _* M
; @$ o) D4 K7 BAuthName "Browser dialog box query"& X8 p G- F5 ]5 p
7 v4 h4 C9 I" I$ L% _: ~8 uAuthType Basic' ?0 c( B/ n0 h. O4 O- J
3 h9 a0 _ t6 \$ v0 wrequire valid-user _2 s! G5 B8 S9 K% d2 I
7 }( t9 v" Q+ b+ Q& i2 P" u6 V, K
7 |( v8 Q' I) G; a8 W6 C
% L* H$ h! v# C7 f' r' }# V7 n. J/var/www/.htpasswd是一个.htpasswd文件的典型绝对路径名,用户在要求输入用户名和密码的对话框中会看到字符串Browser dialog box query。; j% F4 z) a O4 n L
4 J* n, B, M: a- ^5 d* Q 8 \: u2 K+ ]* y& Q }
! k/ u S: m# K" B I$ }
前面.htaccess文件的第二行关闭组功能。第四行指定用户的身份认证类型为Basic,这也是mod_auth模块的默认设置。最后一行告诉Apache哪些用户可以访问受保护的目录。valid-user条目会授权任何用户(用户名在Apache密码文件中并且输入的密码正确)访问该目录。$ \$ V, r0 ?. {; P) a
3 U/ m9 j" h) N* h* M
b; f, h( O& E; D! m) f4 \
, X, X4 M% N5 h( Y& }0 _! ?; F
只要Apache可以读取其密码文件,该文件可放在系统上的任何地方。把这个文件与.htaccess文件放在同一目录下也是安全的,因为默认情况下,Apache将不会对名字以.ht开头的任何文件的请求进行回复。但是一定不要更改httpd.conf配置文件,以防Apache对名字以.ht开头的文件的请求进行回复。9 s* o! V9 e$ o/ }3 _, I l
) [5 \+ z+ {$ q0 K3 a7 i) [
u( w& s3 K( \1 A
4 K \, w/ y' ^下面的命令将在工作目录中创建(–c)一个带有Sam条目的.htpasswd文件。省略–c选项可以在现有.htpasswd文件中添加用户或更改密码。
8 z* y( W! n) g4 X% w- Q % _7 V h! @2 [2 t5 `
$ htpasswd -c .htpasswd sam
# @& Z, o3 e3 V n$ }8 n ; ?1 |9 H3 _4 \2 L! t- [
New password:, ?5 L5 k0 m2 L) L1 f+ t% }
u7 H b1 n0 Y; G& r3 }6 s
Re-type new password:
; m; C# O2 J2 R3 p6 X# i. `- Q . E& i. j' U3 {, W% W! v
Adding password for user sam; M; N: ^" I8 H8 r
: I! _2 D- k% I, N* c/ e7 ^
1 q6 R3 s0 C O8 @
- w3 e0 Q! i8 W( X默认的httpd.conf文件包括用于/var/www的AllowOverride None指令。要启用Apache来处理用户认证指令(如读取.htaccess文件),必须将这个指令更改为AllowOverride AuthConfig或将其删除。
\" V; F" ]1 K* p6 E/ {4 L+ T8 l - H" Q; c, \( U
3 U+ f0 H) k0 n$ f
+ b- ?7 i" f7 _在Apache已配置为可处理.htaccess文件后,当它收到对文件的请求时,必须从所请求的文件向上遍历目录层次结构一直到根目录,查找.htacess文件,以确定它是否可以提供该请求的文件。此搜索可能会影响性能。通常情况下性能下降不太严重,但如果性能很关键,则这个问题将很棘手。 |
|