Apache HTTP 服务器版本 2.4

| 描述 | 基于文件所有权的授权 |
|---|---|
| 状态 | 扩展 |
| 模块标识符 | authz_owner_module |
| 源文件 | mod_authz_owner.c |
| 兼容性 | 在 Apache 2.1 及更高版本中可用 |
此模块通过将用于 HTTP 身份验证的用户 ID(Web 用户 ID)与请求文件的系统所有者或组进行比较,来授权对文件的访问。提供的用户名和密码必须已通过身份验证模块(如 mod_auth_basic 或 mod_auth_digest)正确验证。 mod_authz_owner 识别 Require 指令的两个参数,file-owner 和 file-group,如下所示
file-ownerjones 拥有,那么通过 Web 访问该文件的用户名也必须是 jones。file-groupmod_authz_groupfile 或 mod_authz_dbm 提供,并且 Web 用户名必须是该组的成员。例如,如果操作系统说请求的文件由(系统)组 accounts 拥有,则组 accounts 必须出现在组数据库中,并且请求中使用的 Web 用户名必须是该组的成员。考虑一个运行 Apache Web 服务器的多用户系统,每个用户在 ~/public_html/private 中都有自己的文件。假设有一个单一的 AuthDBMUserFile 数据库列出了所有用户的 Web 用户名,并且这些用户名与系统中实际拥有服务器上文件的用户名匹配,那么以下段落将只允许用户本人访问自己的文件。用户 jones 不允许访问 /home/smith/public_html/private 中的文件,除非这些文件由 jones 而不是 smith 拥有。
<Directory "/home/*/public_html/private">
AuthType Basic
AuthName MyPrivateFiles
AuthBasicProvider dbm
AuthDBMUserFile "/usr/local/apache2/etc/.htdbm-all"
Require file-owner
</Directory>
考虑一个类似于上面描述的系统,但有些用户在 ~/public_html/project-foo 中共享他们的项目文件。这些文件由系统组 foo 拥有,并且有一个单一的 AuthDBMGroupFile 数据库包含所有 Web 用户名及其组成员身份,即他们必须至少是名为 foo 的组的成员。因此,如果 jones 和 smith 都是组 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>