描述: | 基于文件所有权的授权 |
---|---|
状态: | 延期 |
模块标识符: | 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-owner
jones
,那么用于通过Web访问文件的用户名也必须是jones
。file-group
mod_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>