要限制对一个网页的访问,可使用Apache和第三方提供的身份认证模块和方法来验证用户的凭据(如用户名和密码),用户认证指令通常放置在.htaccess文件中。本文介绍如何应用份认证模块和.htaccess文件。
9 H" q8 O _# _: e6 g, V. T) }* x5 u) o- F ) W$ D0 E' O( _: {' u
1 u) I3 M( \/ }
要限制对一个网页的访问,可使用Apache和第三方提供的身份认证模块和方法来验证用户的凭据(如用户名和密码)。一些模块支持通过各种数据库(包括NIS和LDAP)进行身份认证。. C8 K& S4 b) s
1 u+ S j T! M3 y * s( i9 q) r: I+ Z
$ R0 r$ x& H$ s4 G# M用户认证指令通常放置在.htaccess文件中。下面是使用Apache默认身份认证模块(mod_auth)的一个基本.htaccess文件。当这个文件放置在/var/www中时,会导致Apache要求用户输入密码进行验证,然后浏览器才能访问/var/www目录层次结构中的内容。应用时,要用本地服务器的相应值进行替换。. c9 G1 L1 f- C$ ]6 b
- U `/ Y" B7 d0 ~( H7 H+ @# cat .htaccess
+ r& V% Z# H, I8 r0 o4 D
$ E/ Q2 V) P7 b. `% {/ }AuthUserFile /var/www/.htpasswd
$ i5 [ J+ a$ z
* ?' Y" v% ] h- {5 k3 E+ |AuthGroupFile /dev/null
5 H( X9 S. G: Q2 j- c! v
' c, S; U3 E r) p+ mAuthName "Browser dialog box query"/ c3 d1 e/ t+ p2 V
" S" Y2 u8 v4 d0 ^0 c' u- p( {AuthType Basic P; k' _% o1 K; }/ V# @1 g5 o
. ^; T4 o1 B9 I; Krequire valid-user, E; ~- p3 w: N% D& S k. q% T
% K f. p4 X3 o, a% R5 b$ [4 a' a 8 M& U9 _+ u/ x0 h; f# `
$ V( L7 M2 M i# X5 ]( O ?/var/www/.htpasswd是一个.htpasswd文件的典型绝对路径名,用户在要求输入用户名和密码的对话框中会看到字符串Browser dialog box query。
) A+ {: j1 Q. X+ V _1 s( ~. h; L
n( O: ^4 \& o: `# z
9 c& X6 z( [, T7 l& T4 N7 a6 u
5 ^# b: _+ C# W4 E* [' u前面.htaccess文件的第二行关闭组功能。第四行指定用户的身份认证类型为Basic,这也是mod_auth模块的默认设置。最后一行告诉Apache哪些用户可以访问受保护的目录。valid-user条目会授权任何用户(用户名在Apache密码文件中并且输入的密码正确)访问该目录。
. w* @8 d3 K' A$ p9 l: b 6 W: @8 X5 w6 _, D
& w0 x+ ~* m, N1 `
3 i, K: W5 Q: A
只要Apache可以读取其密码文件,该文件可放在系统上的任何地方。把这个文件与.htaccess文件放在同一目录下也是安全的,因为默认情况下,Apache将不会对名字以.ht开头的任何文件的请求进行回复。但是一定不要更改httpd.conf配置文件,以防Apache对名字以.ht开头的文件的请求进行回复。: s1 I/ r8 J' K& _1 X
' h v' ^, O r, \0 I7 j8 z$ h! i
' @& G* [( i e" k2 o
0 Y# O5 N' g _6 J
下面的命令将在工作目录中创建(–c)一个带有Sam条目的.htpasswd文件。省略–c选项可以在现有.htpasswd文件中添加用户或更改密码。& u4 {& ?1 Q! {0 q' _4 ?' a
) X. m& T" Y4 Z
$ htpasswd -c .htpasswd sam. P2 H: N, E1 i9 w0 L7 {
% z9 B5 B' C. U5 |
New password:
Q% ?. Y' G- B7 q% i" U: i 0 s( S! w- D1 K' x$ [& D
Re-type new password:
) U x% c4 o. k6 l
3 C, W; q( s5 A" DAdding password for user sam
: w* G( Q6 J( H- J6 n" q5 x Z & }, s+ {$ e+ \" q: Y$ [& K9 c( |
. O4 @- g, _8 P- _
: {2 F& n* c8 y( h# [- A; b* Q
默认的httpd.conf文件包括用于/var/www的AllowOverride None指令。要启用Apache来处理用户认证指令(如读取.htaccess文件),必须将这个指令更改为AllowOverride AuthConfig或将其删除。
' m" g1 q3 D, A5 X" F
7 A2 a, [( h2 l6 ?$ O r: r- f9 g 6 b1 w2 F$ C! l6 Q R* l% l
2 C6 f0 I" |1 R: S: {" c1 h
在Apache已配置为可处理.htaccess文件后,当它收到对文件的请求时,必须从所请求的文件向上遍历目录层次结构一直到根目录,查找.htacess文件,以确定它是否可以提供该请求的文件。此搜索可能会影响性能。通常情况下性能下降不太严重,但如果性能很关键,则这个问题将很棘手。 |
|