apache / 2.4 / reference / mod-mod_authz_owner.html

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,如下所示:

  • file-owner

    • 提供的 Web 用户名必须与所请求文件的所有者的系统名称匹配。也就是说,如果 os 说所请求的文件归jones所有,则用于通过 Web 访问该文件的用户名也必须为jones
  • file-group

    • 拥有文件的系统组的名称必须存在于组数据库中(例如,由mod_authz_groupfilemod_authz_dbm提供),并且 Web 用户名必须是该组的成员。例如,如果 os 说所请求的文件由(系统)组accounts拥有,则组accounts必须出现在组数据库中,并且请求中使用的 Web 用户名必须是该组的成员。

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>