mod_authz_owner
| 描述: | 基于文件所有权的授权 | 
| 状态: | 延期 | 
| 模块标识符: | authz_owner_module | 
| 源文件: | mod_authz_owner.c | 
| 兼容性: | 可在 Apache 2.1 及更高版本中使用 | 
摘要
此模块通过将用于 HTTP 身份验证的用户标识(web 用户标识)与所请求文件的 file-system 所有者或 group 进行比较来授权访问 files。提供的用户名和密码必须已由身份验证模块正确验证,例如mod_auth_basic或mod_auth_digest。mod_authz_owner识别要求指令的两个 arguments,file-owner和file-group,如下所示:
file-owner
提供的 web-username 必须匹配所请求文件的所有者的系统 name。也就是说,如果操作系统说请求的文件由 jones 拥有,那么用于通过 web 访问它的用户名也必须是 jones。file-group
拥有该文件的系统 group 的 name 必须存在于 group 数据库中,例如,由 mod_authz_groupfile 或 mod_authz_dbm 提供,web-username 必须是该 group 的成员。例如,如果操作系统说所请求的文件归(系统)group 帐户所有,则 group 帐户必须出现在 group 数据库中,并且请求中使用的 web-username 必须是该 group 的成员。
注意
如果在 order 中使用mod_authz_owner来授权文件系统中实际不存在的资源(i.e.虚拟资源),则它将拒绝访问。
特别是它永远不会授权内容协商“MultiViews”资源。
Configuration 示例
要求 file-owner
考虑系统运行 Apache Web 服务器,每个用户在~/public_html/private中拥有自己的 files。假设有一个AuthDBMUserFile数据库列出所有 web-usernames,并且这些用户名匹配系统的实际拥有服务器上 files 的用户名,那么下面的节只允许用户自己访问他自己的 files。不允许用户jones访问/home/smith/public_html/private中的 files,除非它们由jones而不是smith拥有。
<Directory "/home/*/public_html/private">
    AuthType Basic
    AuthName MyPrivateFiles
    AuthBasicProvider dbm
    AuthDBMUserFile "/usr/local/apache2/etc/.htdbm-all"
    Require file-owner
</Directory>
要求 file-group
考虑一个类似于上述系统的系统,但有些用户在~/public_html/project-foo中共享他们的项目 files。 files 归系统 group foo所有,并且只有一个AuthDBMGroupFile数据库包含所有 web-usernames 及其 group 成员资格 i.e。它们必须至少是名为foo的 group 的成员。因此,如果jones和smith都是 group 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>
