Chinaunix首页 | 论坛 | 博客
  • 博客访问: 758271
  • 博文数量: 434
  • 博客积分: 11187
  • 博客等级: 上将
  • 技术积分: 5221
  • 用 户 组: 普通用户
  • 注册时间: 2009-02-19 01:00
文章分类

全部博文(434)

文章存档

2016年(2)

2013年(1)

2012年(115)

2011年(195)

2010年(32)

2009年(89)

分类: LINUX

2009-03-03 11:36:31

   在 Linux 或 UNIX 下的 Apache 服务器中给网页设置密码—这是一种很简单的基于用户名/口令的认证方式,当我们在浏览器中访问经此认证模式保护的URL链接时,将会出弹出一个对话框,要求用户键入用户名和口令。用户输入后,传给Apache服务器,Apache服务器验证它的正确性,如果正确,显示页面,否则出现401错误(没有权限)。这是怎么实现的呢?下面我同过几个配置实例给大家介绍一下。

实例一:需要用户名和口令的访问控制,限制 WWW 服务器中 /home/httpd/html/backup/ 目录中网站 页面的访问,只允许用户“user1”以口令“passwd1”访问页面。
基本情况:假设 站点Apache服务器中的httpd.conf文件有设置为:
DocumentRoot /home/httpd/html
AccessFileName .htaccess
AllowOverride All

实现步骤:
1.使用htpasswd建立用户文件:
$ htpasswd -c /home/httpd/secr/.htpasswd user1
此程序会询问用户“user1”的口令,你输入“passwd1”,两次生效。
2.建立.htaccess文件
用“vi /home/httpd/html/backup/.htaccess”命令建立.htaccess文件,并写入以下几行:
AuthName My Friend Only (注:这个名字是任取的)
AuthType Basic
AuthUserFile /home/httpd/secr/.htpasswd
require user user1
最后设置文件.htpasswd和.htaccess的文件权限,确保Apache用户有读的权限这样就完成了网页密码设置的工作,现在你可以在浏览器中试一试效果了。
实例二:允许一组用户访问一个目录。例如现在站点想让myfriend组中的m1与m2两个用户分别能使用口令“m1pass”和“m2pass”访问/home/httpd/html/backup/目录中的页面。
实现步骤:
1.使用htpasswd建立用户文件,并在提示信息分别输入m1与m2两个用户的口令“m1pass”和“m2pass”:
htpasswd -c /home/httpd/secr/.htpasswd m1
htpasswd /home/httpd/secr/.htpasswd m2
2.建立组文件,用“vi /home/httpd/secr/.htgroup”命令建立.htgroup文件,并写入下面一行:myfriend:m1 m2
3.建立.htaccess文件,用“vi /home/httpd/html/backup/.htaccess”命令,并写入以下几行:
AuthName My Friend Only
AuthType Basic
AuthUserFile /home/httpd/secr/.htgroup

Example:
1、Apache config配置文件中设置,访问受限制的目录:

     Options None
     AllowOverride AuthConfig
     Order allow,deny
     Allow from all

2、创建用户密码验证文件:htpasswd -c /usr/local/apache/.htpasswd admin
3、在/home/httpd/html/backup目录下创建.htaccess文件:
#vi .htaccess
AuthName friend only
AuthType Basic
AuthUserFile /usr/local/apache/.htpasswd
require user admin

附:

使用密码保护Apache服务器上的目录
1. 建立密码文件
为用户rbowen建立一个密码文件(放在网络访问不到的位置,以/path表示存放路径):
利用htpasswd的工具建立密码文件:

htpasswd -c /path/passwords rbowen  (-c为强制建立新密码文件)
# htpasswd -c /path/passwords rbowen
New password: mypassword
Re-type new password: mypassword
Adding password for user rbowen


2. 修改httpd.conf或.htaccess文件
以指示服务器允许哪些用户访问并向用户索取密码。 例如,要保护 /usr/local/apache/htdocs/secret 目录, 则可以将下列指令写入 /usr/local/apache/htdocs/secret/.htaccess, 或者httpd.conf的 段。

AllowOverride AuthConfig
AuthType Basic
AuthName “Restricted Files”
AuthBasicprovider file
AuthUserFile /path/passwords
Require user rbowen

指令说明:
AllowOverride指令: 指定哪些指令在针对单个目录的配置文件中有效,这里设置为AuthConfig。
AuthType指令:选择了对用户实施认证的方法, 这里使用的是由mod_auth提供的Basic。
AuthName指令:设置了使用认证的领域, 它起两个作用,首先,此领域说明会出现在显示给用户的密码提问对话框中, 其次,也帮助客户端程序确定应该输入哪个密码。
AuthUserFile指令:设置了密码文件, 也就是刚才我们已经用htpasswd建立的。Apache模块数据库中还提供了其他许多认证选项。
Require指令:设置了允许访问的用户

3. 允许多人访问
按如下格式建立组文件:

GroupName: jack rose sail john

每组一行,组成员之间用空格分隔
向已有密码文件增加用户:

htpasswd /path/password rose

修改.htaccess或httpd.conf文件:

AuthType Basic
AuthName “By Invitation Only”
AuthUserFile /path/passwords
AuthGroupFile /path/groups
Require group GroupName



阅读(850) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~