基于用户访问控制(这里控制的是整个页面控制)
用户认证类型:
基本认证:Basic
摘要认证:digest,是否明文还是密文的控制。
虚拟用户:仅用于访问某服务和获取资源的凭证:
用户帐号密码存放位置:.htpasswd 这个文件用户名是明文的,密码是加密的。这个文件的名字也是你自己取的,一般我们不改动.htpasswd存放在httpd配置文件下即可
实例:我们这里基于文件的认证(文件存放账户的账户和密码的认证)
(1)编辑配置文件为需要认证的目录做用户认证
</Directory "/var/www/ning/liang">-----指定要做认证的目录
Options none------不指定任何选项
AllowOverride AuthConfig-----允许覆盖,认证通常启用为AuthConfig,说明做认证相关的配置
AuthType Basic-----------指定认证类型
AuthName "admin area."-----对用户做说明的信息,就是输入密码让用户知道为什么做认证。
AuthBasicProvider file------指定认证机制是什么,默认为file(可以省略)
AuthUserfile /etc/httpd/conf/.htpasswd ------指定存放认证的用户和密码的文件。(需要我们自己创建)
Require valid-user-----------valid-uer符合条件的所有用户可以登入,
</Directory>
单独用户指定格式如:Require user ning hong----两用户之间用空格隔开
(2)创建认证文件.htpasswd(这里的账户是明文的,密码是加密的,一般我们不手动编辑,用工具生成)
生成认证文件的工具:
htpasswd
-c:如果此文件事先不存在,则创建;注意:只能是在创建第一个用户时使用;
-m:以md5的格式编码存储用户的密码信息
-D:删除指定用户
#htpasswd -c -m /etc/httpd/conf/.htpasswd tom-----没有.htpasswd文件第一次创建用-c,-m加密,指定路径,后输入用户名
New password: -----输入用户的密码
Re-type new password:
Adding password for user tom
#htpasswd -m /etc/httpd/conf/.htpasswd qing-------这里就不需要创建.htpasswd,直接添加即可。
#cat /etc/httpd/conf/.htpasswd
tom:$apr1$o3HNsazw$rxcLVyixdNTnzOrGji3qD.------这里密码是用md5加密的。
qing:$apr1$TLIArC5B$PFnEPKdDEMCXLRBbnnNIm.
# htpasswd -D /etc/httpd/conf/.htpasswd qing-----删除用户qing
Deleting password for user qing
# cat /etc/httpd/conf/.htpasswd ----------查看下删除的结果
tom:$apr1$o3HNsazw$rxcLVyixdNTnzOrGji3qD.
(3)组文件认证
</Directory "/var/www/ning/liang">-----指定要做认证的目录
Options none------不指定任何选项
AllowOverride AuthConfig-----允许覆盖,认证通常启用为AuthConfig,说明做认证相关的配置
AuthType Basic-----------指定认证类型
AuthName "admin area."-----对用户做说明的信息,就是输入密码让用户知道为什么做认证。
AuthBasicProvider file------指定认证机制是什么,默认为file(可以省略)
AuthUserfile /etc/httpd/conf/.htpasswd ------指定存放认证的用户和密码的文件。(需要我们自己创建)
AuthGroupfile /etc/httpd/conf/.htgroup-------指定用户组文件(需要我们自己创建)
Require group test-----------指定组名
</Directory>
创建编辑组文件
组文件格式: 组名:user1 user2 user3
#vim /etc/httpd/conf/.htgroup----创建.htgroup组认证文件内容如下
test: tom ning--------组名为test用户为tom、ning
自己测试就可以:再次不做说明,注意浏览器生成记录。
CGI脚本----通用网关接口
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"------------指定CGI别名
实例:在目录/cgi-bin/目录下创建ning.sh脚本(默认系统是支持bash解析的)
#!/bin/bash
#
cat << EOF
Content-Type: text/html<pre>
The hostname is : $(hostname).
The date is : $(date).
The IP is : $(ifconfig)</pre>
EOF在浏览器上输入:172.16.3.20/cgi-bin/ning.sh
Linux 中httpd基于文件的用户的访问控制和CGI,布布扣,bubuko.com
原文地址:http://wodemeng.blog.51cto.com/1384120/1538329