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