标签:
1. 限制用户访问的方式:
1. 限制访问服务的客户端主机
2. 需要用户名和密码
2. 行为用户验证需要两步:
1. 创建一个包含用户名和密码的文件
2. 服务器上的哪些资源需要保护,哪些用户可以进行访问
3. 创建用户数据库
许多用户名和密码需要创建在一个文件中。出于安全考虑,这个文件不能放在文档目录里。在这个例子里,这个文件创建在/usr/local/etc/httpd目录里,名字叫users。
这个文件包含许多用户名和密码。用户名和密码通过冒号分割,每个用户单独占一行。但是你不能直接在这个文件中直接输入用户名和密码,因为存储在这个文件中的密码是加密的。程序htpasswd可以用来创建该文件,添加或者修改用户。
使用htpasswd创建该文件,添加用户名‘snow’,密码‘snow’的用户到该文件(/usr/local/httpd/user)
1 htpasswd -c /usr/local/etc/httpd/users snow
-c参数告诉htpasswd创建一个新的users文件。当你运行该命令时,将提示输入该用户的密码并确认。你可以添加其它的用户到该文件中,不过必须去掉-c参数。这个命名也可以用来修改密码。当你添加一个用户后,/usr/local/etc/httpd/users文件看起来想这样:
1 snow:$apr1$VmvJWi7o$diZjyiUiHkd8pSmb/8/gE0
第一个列是用户名,第二列是加密过后的密码。
4. 配置服务
为了让server使用在该文件中的用户名和密码,你需要配置一个realm,为了使用.htaccess文件限制一个目录的访问,你首先需要修改apache的配置文件(如何找到apache的配置文件),使目录使用.htaccess的形式限制访问,这个被AuthConfig属性控制,如果你想限制/var/www目录的访问,你修改apache的配置文件:
1 <Directory /var/www/> 2 Options Indexes FollowSymLinks 3 AllowOverride AuthConfig 4 Require all granted 5 </Directory>
然后在/var/www目录中建立一个.htaccess文件,内容如下:
AuthName "restricted stuff" AuthType Basic AuthUserFile /usr/local/etc/httpd/users require valid-user
第一个指令AuthName,为这个资源配置一个realm名字,只要用户输入有效的用户名和密码,相同realm名字的其他资源也可以通过这个用户访问,这样做,主要是为了创建两个区域,使同一个用户可以访问这两个区域。
第二个指令AuthType告诉服务使用哪种协议进行认证,目前来说,仅有Baisc可用。但是出现了Digest,而且已经被标准化啦,只要浏览器实现了它,就可以使用它。digest认证比Basic认证更安全。
第三个指令AuthUserFile告诉服务被htpasswd创建的文件在哪里。
第四个指令require告诉服务该文件中的哪些用户可以访问该文件,valid-user参数是告诉服务该文件中的任何用户都可以访问该资源,你也可以配置特定用户可以访问该资源。例如:
require user snow john
只有snow,john两个用户可以访问该资源,其他用户都会被拒绝。
如果一个用户被允许访问不同的区域,他们仅仅需要输入一次密码,但是如果在不同的区域有不同的realm,用户需要再次输入他的密码。
5. 使用Groups
如果你想要users文件的一些用户访问一个资源,你需要在require行列出所有的用户,如果你有很多用户的话,这种方式是不太好的。有一种方式可以解决这种问题,就是用一个group文件,你可以使用require行限制到特定的group。例如:有一个叫作staff的组,它包含所有访问特定资源的用户。
1 require group staff
多个group也可以使用,用户也可以同时使用,
require group staff admin
require user adminuser
它允许组staff和admin访问资源和用户adminuser访问资源。
group文件的形式:
staff: martin jane
admin: art adminuser
staff和admin是组,martin和jane属于staff组,art和adminuser属于admin组。
AuthGroupFile指令是告诉group文件在哪里。记住,在group文件中一行的最大长度是8000字符(大约8K),如果你有超过行的长度的用户数,你可以再写一行伴随着相同组。
标签:
原文地址:http://www.cnblogs.com/yandufeng/p/5092366.html