免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1176 | 回复: 0
打印 上一主题 下一主题

关于Apapche访问权限的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-06-11 21:02 |只看该作者 |倒序浏览

虚拟主机下实现.
论的指令应该被放进主服务器的配置文件 (通常在
[/url]
段) 或者针对单个目录的配置文件(.htaccess files)中。
如果希望使用.htaccess文件, 则必须设置服务器以允许在这些文件中使用认证指令, 即,用
[url=http://plugins.discuz.net/handbook/apache2/mod/core.html#allowoverride]AllowOverride

指令 指定哪些指令在针对单个目录的配置文件中有效。
既然本文讨论认证,就应该对
AllowOverride
这样设置:
AllowOverride AuthConfig
如果你希望把这些指令直接写入主服务器配置文件,当然就需要有对配置文件的写权限。
而且,你需要对服务器的目录结构有所了解,以确定某些文件的位置。
[/url]
启用认证
先介绍用密码来保护服务器上的目录。
首先需要建立一个密码文件。这个文件应该放在不能被网络访问的位置,以避免被下载, 例如,如果,/usr/local/apache/htdocs以外的空间不能被网络访问, 那么可以考虑把密码文件放在/usr/local/apache/passwd目录中。
Apache在其安装目录的bin子目录中提供了叫
[url=http://plugins.discuz.net/handbook/apache2/programs/htpasswd.html]htpasswd

的工具,以建立密码文件,可以这样使用:
htpasswd -c /usr/local/apache/passwd/passwords rbowen
htpasswd会要你输入密码,并要求重新输入以确认:
# htpasswd -c /usr/local/apache/passwd/passwords rbowen
New password: mypassword
Re-type new password: mypassword
Adding password for user rbowen
如果htpasswd不在搜索路径中,则必须使用完整路径, 如,/usr/local/apache/bin/htpasswd
然后,需要修改httpd.conf或.htaccess文件, 以指示服务器允许哪些用户访问并向用户索取密码。 例如,要保护 /usr/local/apache/htdocs/secret 目录, 则可以将下列指令写入 /usr/local/apache/htdocs/secret/.htaccess, 或者httpd.conf的 段。
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /usr/local/apache/passwd/passwords
Require user rbowen
其中,
AuthType
指令选择了对用户实施认证的方法, 最常用的是由
mod_auth
提供的Basic。 很重要的必须认识到的一点是,Basic认证方法并不加密来自用户浏览器的密码, 因此,不应该用于高度敏感的数据。Apache在最近的版本中还有另一种更安全的认证方法, 即由
mod_auth_digest
提供的AuthType Digest。
AuthName
指令设置了使用认证的领域, 它起两个作用,首先,此领域说明会出现在显示给用户的密码提问对话框中, 其次,也帮助客户端程序确定应该输入哪个密码。
所以,如果一个用户已经在"Restricted Files"领域通过了认证, 则客户端就可以尝试使用"Restricted Files"的密码来访问同一个服务器的其他任何领域, 从而使多个受限领域共享密码,以避免用户重复输入。 当然,考虑到安全,如果服务器变了,客户端始终会要求重新输入密码。
AuthUserFile
指令设置了密码文件, 也就是刚才我们已经用htpasswd建立的。 如果用户很多则认证速度会很慢,因为对每个请求都必须搜索这个纯文本文件, 对此,Apache还支持把用户信息存入快速数据库,
mod_auth_dbm
模块提供了指令
AuthDBMUserFile
, 并可以用
dbmmanage
程序建立和操作这些数据库。
Apache模块数据库
中还提供了其他许多认证选项。
最后,
Require
指令设置了允许访问的用户, 下一节将对
Require
指令作详细说明。
[/url]
允许多人访问
上述指令只允许一个人(一个叫rbowen的用户)访问这个目录, 但是多数情况下,都需要允许多人访问,所以就要用到
[url=http://plugins.discuz.net/handbook/apache2/mod/mod_auth.html#authgroupfile]AuthGroupFile


首先,需要建立一个组文件以确定组中的用户。 其格式很简单,可以用你喜欢的编辑器建立,例如:
GroupName: rbowen dpitts sungo rshersey
它只是每组一行的一个用空格分隔的组成员列表。
向已有的密码文件中增加一个用户,可以输入:
htpasswd /usr/local/apache/passwd/password dpitts
程序的提示和上面的一样,但是,它会附加到已有的文件中, 而不是建一个新的(参数-c可以强制建立新的密码文件)。
现在,需要修改.htaccess文件如这样:
AuthType Basic
AuthName "By Invitation Only"
AuthUserFile /usr/local/apache/passwd/passwords
AuthGroupFile /usr/local/apache/passwd/groups
Require group GroupName
如此,GroupName组中的成员都在密码文件中有一个相应的记录, 从而允许他们输入正确的密码以进入。
除了建立组文件,还有另一种途径允许多人访问,即使用如下指令:
Require valid-user
使用上述指令,而不是require user rbowen, 可以允许密码文件中的所有用户以正确的密码进行访问。 这里甚至允许列举各个组,而为每个组建立密码文件, 其优点是,Apache只需要校验一个文件,而缺点是,必须维护众多密码文件, 而且要确保
AuthUserFile
指令指定了一个正确的密码文件。
____________________________________________________________保留代码________________________________________________________________
NameVirtualHost 192.168.2.40
#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for requests without a known
# server name.
#
#    ServerAdmin
webmaster@dummy-host.example.com
     DocumentRoot /home/www
     ServerName 192.168.2.40
#    ErrorLog logs/dummy-host.example.com-error_log
#    CustomLog logs/dummy-host.example.com-access_log common
    AuthName "CGI Authorization"
    AuthType Basic
    AuthUserFile /home/www/www.htpasswd
    require valid-user
______________________________________________________个人保留_____________________________________________________________________
    ./httpasswd -c #存放密码的文件路径及文件# #用户名#
如:./httpasswd -c /home/www/www.htpasswd ansan             *///home/www/www.htpasswd 为存放密码的文件路径及文件   *//ansan 为用户名
或者直接运行  /usr/local/apache/bin/htpasswd -b awstats.passwd 用户名 密码
-m  是更改密码  或者在执行一下 -c  
另外一种方法:
首先:在http.conf 中修改
    Options FollowSymLinks
    AllowOverride NONE
里面的AllowOverride 为 AllowOverride AuthConfig
其次:需要修改.htaccess文件, 以指示服务器允许哪些用户访问并向用户索取密码。 例如,要保护 /usr/local/apache/htdocs/secret 目录, 则可以将下列指令写入 /usr/local/apache/htdocs/secret/.htaccess。
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /usr/local/apache/passwd/passwords
Require user rbowen
http://plugins.discuz.net/handbook/apache2/howto/auth.html



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/7476/showart_30460.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP