注意要点:
1,apache的basic认证默认使用明文验证,不安全,后续文章跟进基于ssl的用户认证。
2,此实验前提基于源码编译http的-2.4.39,如果其他版本,可做参考
3,写完配置文件后每次需要重启服务
service httpd24 restart
一、基于用户basic认证的访问控制
实验前预先准备:
查看basic模块是否启用
apachectl -M | grep basic
创建admin文件夹
mkdir /data/httpd24/htdocs/admin
创建测试index.html文件
echo '<h1>www.martinhe.com</h1>' > /data/httpd24/htdocs/admin/index.html
方法1:
1,首先创建httpd-basic.conf。
# vim /data/httpd24/conf/extra/httpd-basic.conf
<Directory /data/httpd24/htdocs/admin/>
#基于basic验证方式
AuthType basic
#验证登陆框显示标题,chrome不支持显示
AuthName "admin Page"
#验证文件位置
AuthUserFile "/data/httpd24/conf/extra/.httpuser"
#允许登陆访问网页的用户
Require user tom alice
</Directory>
2,修改配置文件:
# vim /data/httpd24/conf/httpd.conf
# Use the basic authentication of the document
Include conf/extra/httpd-basic.conf
3,创建允许访问网页的账户,输入两次密码确认。
htpasswd -c /data/httpd24/conf/extra/.httpuser tom
4,更改授权用户存储文件权限600,更安全
chmod 600 /data/httpd24/conf/extra/.httpuser
5,测试效果:因为apache系统账户对.httpuser没有读取权限,so报错。
5,访问控制列表设置apache对.httpuser的读取权限
setfacl -m u:apache:r /data/httpd24/conf/extra/.httpuser
方法2:.htaccess .httpuser权限基于方法1
1,创建访问控制文件.htaccess
# vim /data/httpd24/htdocs/admin/.htaccess
AuthType basic
AuthName "admin Page"
AuthUserFile "/data/httpd24/conf/extra/.httpuser"
Require user tom alice
2,创建httpd-basic2.conf
# vim /data/httpd24/conf/extra/httpd-basic2.conf
<directory /data/httpd24/htdocs/admin/>
# admin目录下的验证内容是有效的,其他无效
AllowOverride authconfig
</directory>
3,修改配置文件
# vim /data/httpd24/conf/httpd.conf
# Use the basic authentication of the document
Include conf/extra/httpd-basic2.conf
4,测试效果
二、基于组basic认证的访问控制。
1,创建访问控制文件.httpgroup
#vim /data/httpd24/conf/extra/.httpgroup
g1: tom jack
g2: tom alice
2,修改访问控制文件.htaccess
# vim /data/httpd24/htdocs/admin/.htaccess
AuthType basic
AuthName "admin Page"
AuthUserFile "/data/httpd24/conf/extra/.httpuser"
AuthGroupFile "/data/httpd24/conf/extra/.httpgroup"
Require group g1 g2
3,测试:
bob不在授权组中,所以无法访问
tom在组中,so访问成功