| 描述: | 基于文件所有权的授权 |
|---|---|
| 状态: | 延期 |
| 模块标识符: | 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用户名必须是该组的成员。例如,如果操作系统说所请求的文件归(system)组所有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>