您所在的位置:读书频道 > 操作系统 > Linux > 18.4.6 .htaccess与认证网页设置

18.4.6 .htaccess与认证网页设置

2007-12-05 14:56 鸟哥 机械工业出版社华章公司 字号:T | T
一键收藏,随时查看,分享好友!

《鸟哥的Linux私房菜——服务器架设篇》(第二版)第18章的主要介绍的是WWW服务器。本文主要介绍的是.htaccess与认证网页设置。

AD:

18.4.6  .htaccess与认证网页设置

对于保护Apache本身的数据方面,除了上述的Order以及Limit外,还有其他方式吗?因为Order与Limit主要是针对IP网段或者是主机名称来管理,那如果客户端是使用拨号连接方式取得IP,那么IP会一直变动,如此一来那个保护的目录用户就不能在任何地方进入了,会造成一些困扰。

此时如果能够使用密码保护的方式,用户输入账号/密码即可取得浏览的权限,那客户端就不用受到Order的allow和deny的限制了。有这样一种方法吗?Apache的确提供了一个简单的认证功能,让我们可以轻松愉快地设置好保护的网页。

什么是受保护的数据呢?例如,学校老师可能会给同学提供一些教学教材或者是习题,这些数据不想让所有人取得,那么就可将这些数据放在特定的受保护目录中。还有某些重要的Apache主机分析的数据(本章后面提及的一些分析工具),这些数据建置的方法需要启用CGI程序,而CGI程序的执行是有风险的,且那些分析所得的数据也很重要。此时,该程序与输出结果就需要放在受保护的目录中。

那么认证网页如何设置呢?简单的说,需要进行以下处理。

• 建立受保护的目录:既然我们是“单击某个链接进入某个目录后,才会出现对话框”,那么首先需要有设置为认证网页的“目录”。

• 设置Apache所需参数:既然需要在对话框中输入ID与密码,那么自然就需要密码文件(虽然Apache支持LDAP及MySQL等认证机制,但这里并不对其进行讨论,完全使用Apache的默认功能而已,所以,下面会使用基本的认证模式)。

• 建立密码文件:处理完基本的设置后,再来建立登录时所需要的账号与密码。

• 最后重新启动Apache即可。

其中,第二个步骤比较有趣,任何的设置资料都可以直接写到httpd.conf配置文件中,所以设置保护目录的参数数据确实可以写入httpd.conf中。不过,想一想,如果Apache主机有30个用户具有个人首页,然后他们都需要制作保护目录,而httpd.conf只有身为root的您才能够修改,更可怕的是“每次改完都需要重新启动Apache”。请问,您的时间精力是否会受到“很严厉的考验”?

所以,如果能够通过外部的文件来取代设置httpd.conf内的参数,那么是否会比较好?而且最好该文件设置能够即时生效,不需要重新启动Apache,因为如此一来,就可以交给用户自行管理他们的认证网页了。通过httpd.conf内的AllowOverride参数再配合“.htaccess”文件的设置,就可以实现上述所预想的功能。这个设置项目与设置文件httpd.conf的关系如图18-7所示。

图18-7 .htaccess与主要配置文件httpd.conf的相关性

也就是说:

· 您必须在httpd.conf主配置文件中先以AllowOverride指定某个目录下的“.htaccess”有哪些能够进行取代的参数,一般有AuthConfig、Options等,考虑到系统数据的安全,建议提供AuthConfig的项目即可。设置完毕后请重新启动Apache。

· 在该目录下务必要存在“.htaccess”这个文件,通过该文件可以修改httpd.conf内的设置。

· “.htaccess”设置完毕后立刻生效,不需要重新启动Apache,因为该文件的内容是:“当有客户端浏览到该目录时,该文件才会被用来取代原有的设置”。

既然“.htaccess”的用途比较广,那不再介绍httpd.conf的认证参数,请自行测试。下面主要以“.htaccess”文件的设置为主。

1. 建立保护目录的数据

假设要将受保护的数据放置到/var/www/html/protect中,记得这个目录要让Apache可以浏览到才行,所以可以立刻将一些重要的数据移到这里。先建立一个简单的测试网页。

[root@linux ~]# mkdir /var/www/html/protect
[root@linux ~]# vi /var/www/html/protect/index.html


看到这个画面了吗?如果看到的话,表示您可以顺利进入这个受保护的网页

2. 以root的身份处理httpd.conf的设置数据

这个操作是仅有root才能做的。需要开始编辑httpd.conf,让受保护的目录可以使用“.htaccess”。

[root@linux ~]# vi /etc/httpd/conf/httpd.conf
# 确定下面这几行是存在的
AccessFileName .htaccess

    Order allow,deny
    Deny from all


# 在某个不受影响的地方加入这一段

    AllowOverride AuthConfig
    Order allow,deny
    Allow from all


[root@linux ~]# apachectl restart  <==重新启动

这样就设置妥当了,很简单吧。接下来要准备建立“.htaccess”。

3. 建立保护目录下的“.htaccess”文件

要注意,这个文件是在保护目录下面的。不要放错地方。需要如下操作:

[root@linux ~]# cd /var/www/html/protect
[root@linux ~]# vi .htaccess
# 只要加入下面这几行即可
AuthName     "Protect test by .htaccess"
Authtype     Basic
AuthUserFile /var/www/apache.passwd
require user test

以上这些参数的意义如下。

· AuthName:在出现要输入账号与密码的对话框中,出现的“提示字符”。

· AuthType:认证的类型,这里仅列出Apache默认的类型,即basic。

· AuthUserFile:保护目录所使用的账号密码的设置文件,即可以随意设置此文件,所以用户可以自行设置账号与密码。文件内的账号不限制在/etc/passwd出现的用户。另外,这个文件不要放置在Apache可以浏览的目录内,所以我将它放置在首页之外。避免被窃取。

· require:后面接可以使用的账号。假如/var/www/apache.passwd内有三个账号,分别是test、test1、test2,这里只写了test,因此test1、test2将无法登录此目录。如果要让该密码文件内的用户都能够登录,将其改成“require valid-user”即可。

设置好后即可生效,不需要重新启动Apache。

4. 建立密码文件htpasswd(只要有权限即可执行)

Apache默认读取的账号/密码设置数据是由htpasswd建立的,这个指令的语法如下:

[root@linux ~]# htpasswd [-c] 密码文件的文件名 用户账号
参数-c,建立后面的密码文件。如果该文件已经存在,则原本的数据会被删除
所以如果只是要新增用户(文件已存在时),不必加上-c的参数

1. 建立apache.passwd,账号为test
[root@linux ~]#htpasswd -c /var/www/apache.passwd test
New password:                     <==这里输入一次密码,注意,屏幕不会有任何信息
Re-type new password:            <==这里再输入一次
Adding password for user test

[root@linux ~]# cat /var/www/apache.passwd
test:FIquw/..iS4yo                <==已经建立一个新用户

2. 在已存在的apache.passwd内增加test1账号
[root@linux ~]# htpasswd /var/www/apache.passwd test1

再次强调,这个文件名需要与“.htaccess”内的AuthUserFile相同,且不要放在浏览器可浏览到的目录中。这样就设置完毕了。在地址栏中输入:“http://your.hostname/protest”,最后测试的结果如图18-8所示。

图18-8 受保护模式的授权界面

如果曾经浏览过这个网页,当时可能尚未制作保护文件,或者是文件设计错误,导致此网页的出现,该网页会被您的浏览器Cache起来,所以可登录的界面会一再地出现而不会弹出需要认证的对话框。此时可进行如下操作:

· 务必将全部的浏览器都关闭,再重新启动浏览器。因为您成功登录该目录后,该登录的信息会Cache在这次的联机中。

· 可单击浏览器上的reload(重新读取),让浏览器重新读取一次,否则Cache不会更新。

· 可以将浏览器的Cache数据全部清除,关闭浏览器后再重新启动浏览器。

如果还是一直出问题,那就只好前往日志文件(/var/log/httpd/error_log)查看错误信息了。常见的错误就是打错字,所以应特别注意录入错误。

【责任编辑:董书 TEL:(010)68476606】

回书目   上一节   下一节

分享到:

  1. Linux服务器配置全程实录
  2. 揭秘--优秀PPT这样制作

热点职位

更多>>

热点专题

更多>>

读书

鸟哥的Linux私房菜——服务器架设篇(第二版)
本书是对连续三年蝉联畅销书排行榜前10名的《Linux鸟哥私房菜——服务器架设篇》的升级版,新版本根据目前服务器与网络环境做了

最新热帖

更多>>

51CTO旗下网站

领先的IT技术网站 51CTO 领先的中文存储媒体 WatchStor 中国首个CIO网站 CIOage 中国首家数字医疗网站 HC3i 51CTO学院