Apache 模块 mod_authz_owner

Description: 基于文件所有权的授权
Status: Extension
Module Identifier: authz_owner_module
Source File: mod_authz_owner.c
Compatibility: 在 Apache 2.1 及更高版本中可用

Summary

该模块通过将用于 HTTP 身份验证的用户 ID(Web 用户 ID)与文件系统所有者或请求文件的组进行比较,授权对文件的访问。提供的用户名和密码必须已经由身份验证模块(例如mod_auth_basicmod_auth_digest)正确验证。 mod_authz_owner识别Require指令的两个参数file-ownerfile-group,如下所示:

Note

如果使用mod_authz_owner来授权文件系统中实际上不存在的资源(虚拟资源),它将拒绝访问。

特别是它将永远不会授权内容协商的“ MultiViews”资源。

Configuration Examples

Require file-owner

考虑一个运行 Apache Web 服务器的多用户系统,每个用户在~/public_html/private中拥有自己的文件。假设有一个列出所有 Web 用户名的AuthDBMUserFile数据库,并且这些用户名与实际拥有服务器上文件的系统用户名匹配,则以下节将仅允许用户本人访问自己的文件。除非用户jonesjones而非smith拥有,否则将不允许用户jones访问/home/smith/public_html/private中的文件。

<Directory "/home/*/public_html/private">
    AuthType Basic
    AuthName MyPrivateFiles
    AuthBasicProvider dbm
    AuthDBMUserFile "/usr/local/apache2/etc/.htdbm-all"
    Require file-owner
</Directory>

Require file-group

考虑一个与上述系统类似的系统,但是某些用户使用~/public_html/project-foo共享他们的项目文件。这些文件由系统组foo拥有,并且只有一个AuthDBMGroupFile数据库,其中包含所有 Web 用户名及其组成员身份,即*它们必须至少是名为foo的组的成员。因此,如果jonessmith都是foo组的成员,则将被授权访问彼此的project-foo目录。

<Directory "/home/*/public_html/project-foo">
    AuthType Basic
    AuthName "Project Foo Files"
    AuthBasicProvider dbm
    
    # combined user/group database
    AuthDBMUserFile  "/usr/local/apache2/etc/.htdbm-all"
    AuthDBMGroupFile "/usr/local/apache2/etc/.htdbm-all"
    
    Satisfy All
    Require file-group
</Directory>
首页