要限制对一个网页的访问,可使用Apache和第三方提供的身份认证模块和方法来验证用户的凭据(如用户名和密码),用户认证指令通常放置在.htaccess文件中。本文介绍如何应用份认证模块和.htaccess文件。' l8 h0 T' J: h; W
0 S! T4 q$ s7 w. l* Y* D! f$ R$ q
. u0 W! i/ b: }. D) H; f8 }) ^
要限制对一个网页的访问,可使用Apache和第三方提供的身份认证模块和方法来验证用户的凭据(如用户名和密码)。一些模块支持通过各种数据库(包括NIS和LDAP)进行身份认证。, L5 J$ A2 D( [5 F* I& H1 M* r
3 H0 K/ D& ?: b6 d . V) `9 O( D: x( W' T
; g$ C, q, g/ M& I+ M0 C用户认证指令通常放置在.htaccess文件中。下面是使用Apache默认身份认证模块(mod_auth)的一个基本.htaccess文件。当这个文件放置在/var/www中时,会导致Apache要求用户输入密码进行验证,然后浏览器才能访问/var/www目录层次结构中的内容。应用时,要用本地服务器的相应值进行替换。+ K) ~+ i$ w! B4 G
' j |# M$ {7 C5 d8 Z
# cat .htaccess1 J5 j2 R* j$ X; A
2 H1 F+ Y/ V$ k" K6 h# v- w" t
AuthUserFile /var/www/.htpasswd
' G, { Q+ q) g) _5 m1 c5 n* N& P6 t , {; v1 v* j; Q9 w0 }( J, g( I
AuthGroupFile /dev/null
5 i# W+ d+ |6 a- J" a/ k
. @+ {- ^( [7 H) j& P: U3 DAuthName "Browser dialog box query"4 d6 Q6 l5 L2 q1 E# w- ^+ H
2 t$ h# c6 S& R2 ~AuthType Basic
$ q# \ H$ i8 _' x7 o# o( @
: C0 R; s! D5 i7 Srequire valid-user: j4 b9 C( Q2 t* F" k$ h
" y% J7 L7 K, [
& B; a6 W( C) k: R. A : {" {* i# j% i8 y* `$ \1 m$ {
/var/www/.htpasswd是一个.htpasswd文件的典型绝对路径名,用户在要求输入用户名和密码的对话框中会看到字符串Browser dialog box query。
% {; @3 R& e- n, a) v8 {
! j) k# `) p& R2 M y! W; I$ Q " P1 w, A: d% K8 X, ~+ k! u
2 K; g6 l. H% ?& @前面.htaccess文件的第二行关闭组功能。第四行指定用户的身份认证类型为Basic,这也是mod_auth模块的默认设置。最后一行告诉Apache哪些用户可以访问受保护的目录。valid-user条目会授权任何用户(用户名在Apache密码文件中并且输入的密码正确)访问该目录。' U& l+ b. A$ u- t8 S$ R
; A' H& @* m4 c ! M* {* }1 O: a5 f% y3 L2 z
1 G% u [# M" }5 O
只要Apache可以读取其密码文件,该文件可放在系统上的任何地方。把这个文件与.htaccess文件放在同一目录下也是安全的,因为默认情况下,Apache将不会对名字以.ht开头的任何文件的请求进行回复。但是一定不要更改httpd.conf配置文件,以防Apache对名字以.ht开头的文件的请求进行回复。4 B6 J6 k# d' e1 _4 m) v
; E& h& l2 }2 z$ M
# w c% ~1 a; `9 C6 q
, n& h3 |% Y, x. f! F4 \9 V- @6 b
下面的命令将在工作目录中创建(–c)一个带有Sam条目的.htpasswd文件。省略–c选项可以在现有.htpasswd文件中添加用户或更改密码。
) m# C% o1 q$ \+ G* m* k, T- S5 I. F5 E " S* f* ]* w$ I1 G
$ htpasswd -c .htpasswd sam4 I* v; g0 b R: r7 b; K! Z
8 Z/ K$ U9 [9 g" eNew password:
% c1 S0 X3 e3 m7 \5 i , L+ e2 P$ ^) H( g4 `( J
Re-type new password:
: j! G4 N+ c) M q3 P
D: e: z& ^5 z0 zAdding password for user sam
8 z' X; ], C: q( n" ^7 L9 K, { 8 s0 `- t* I8 f3 H
) r6 F: n- F; I* R8 {# R' ^2 p
; O+ L' o3 ^& a: o默认的httpd.conf文件包括用于/var/www的AllowOverride None指令。要启用Apache来处理用户认证指令(如读取.htaccess文件),必须将这个指令更改为AllowOverride AuthConfig或将其删除。
" [% C- [2 y2 l- c
$ _! R7 J! i5 ^; B ' e. v7 f6 C6 |6 D# ]; K
v1 I: O: R5 w在Apache已配置为可处理.htaccess文件后,当它收到对文件的请求时,必须从所请求的文件向上遍历目录层次结构一直到根目录,查找.htacess文件,以确定它是否可以提供该请求的文件。此搜索可能会影响性能。通常情况下性能下降不太严重,但如果性能很关键,则这个问题将很棘手。 |
|