Apache的访问权限控制
简单介绍:这是一个apache的系列配置文档,配置apache的认证授权,此篇为第一篇。
认证类型:basic 基本认证(常用) digest 摘要认证
在httpd.conf文件中,几个主要认证模块配置如下(默认已配置):
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_dbm_module modules/mod_authn_dbm.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_dbm_module modules/mod_authz_dbm.so
LoadModule authz_default_module modules/mod_authz_default.so
配置基本认证(basic)
方式一:使用文本格式用户数据库
1、创建认证用户数据库文件(文本格式)
格式:htpasswd options FilePath user
-c :第一次创建时使用该选项
-m :将密码使用MD5加密存放
-D :从密码文件中删除用户
如:创建一个用户redhat,将密码文件存放在/etc/httpd/.htpasswd
#htpasswd -cm /etc/httpd/.htpasswd redhat
删除用户
#htpasswd -D /etc/httpd/.htpasswd redhat
# htpasswd -c /etc/httpd/conf/users_txt.pwd admin #//创建文本格式用户文件,同时添加用户admin
# htpasswd /etc/httpd/conf/users_txt.pwd jerry #//在数据库文件中添加用户jerry
方式二:使用dbm格式用户数据库(若用户较多,可采用dbm用户数据库以加快检索速度)
1、创建认证用户数据库文件(Berkeley DB格式)
# htdbm -TDB -c /etc/httpd/conf/users_dbm.db kitty #//创建DB格式(其他格式参考man)用户文件,同时添加用户kitty
2、修改.htaccess配置文件
# vi /var/www/html/auth/.htaccess
AuthName "Private Contents."
AuthType basic
AuthBasicProvider dbm
AuthDBMType DB
AuthDBMUserFile "/etc/httpd/conf/users_dbm.db"
Require kitty
配置摘要认证(digest)
1、创建digest认证用户数据库文件(文本格式) #//digest认证貌似无法使用dbm用户文件
# htdigest -c /etc/httpd/conf/users_digest.pwd "Private Contents." kenthy
2、修改.htaccess配置文件
AuthName "Private Contents."
AuthType digest
#AuthDigestDomain /auth/ #//在目录区段(Directory)配置digest认证时,此行可有可无
AuthUserFile /etc/httpd/conf/users_digest.pwd
Require kenthy
这里要提起的是 AuthUserFile指令,在所有讲述摘要认证的文章中(包括Apache官方文档)都说应该使用AuthDigestFile指令,我最先也是按照 官方文档去配置,结果就是install不成功。系统提示” Invalid command 'AuthDigestFile', perhaps misspelled or defined by a module not included in the server configuration”。这个问题多花我至少1个小时。最先以为是其他的什么地方配置不对,最后经过查阅才发现在Apache2.2.4版本中还不 支持AuthDigestFile指令(通过查看源代码),因此暂时用AuthUserFile指令替代。
认证指令:
1.1 authname 受保护域名称
1.2 authtype 认证方式
1.3 authuserfile 认证口令文件位置
1.4 authgroupfile 认证组文件位置
授权指令:
2.1 require user 授权给指定用户
2.2 require group 授权给指定组
2.3 require valid-user 授权给认证口令文件用户
具体配置步骤:
修改为:
<Directory “/var/www/test”>
Optinons Indexes MultiViews
AllowOverride None
authname “test”
authtype basic
authuserfile /etc/httpd/httppwd
require user test
</Directory> ##只授权test用户访问
Service httpd restart
Vi httpd.conf
修改为:
<Directory “/var/www/test”>
Optinons Indexes MultiViews
AllowOverride None
authname “test”
authtype basic
authuserfile /etc/httpd/httppwd
require valid-user
</Directory> ##口令文件所有用户都可以访问
Service httpd restart
Vi httpgrp
添加:
admin: test bbs
wq!
Vi httpd.conf
修改为:
<Directory “/var/www/test”>
Optinons Indexes MultiViews
AllowOverride None
authname “test”
authtype basic
authuserfile /etc/httpd/httppwd
authgroupfile /etc/httpd/httpgrp
require group admin
</Directory> ##admin组可以访问
Service httpd restart