On this page
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_basic或mod_auth_digest)正确验证。 mod_authz_owner识别Require指令的两个参数file-owner
和file-group
,如下所示:
file-owner
- 提供的 Web 用户名必须与所请求文件的所有者的系统名称匹配。也就是说,如果 os 说所请求的文件归
jones
所有,则用于通过 Web 访问该文件的用户名也必须为jones
。
- 提供的 Web 用户名必须与所请求文件的所有者的系统名称匹配。也就是说,如果 os 说所请求的文件归
file-group
- 拥有文件的系统组的名称必须存在于组数据库中(例如,由mod_authz_groupfile或mod_authz_dbm提供),并且 Web 用户名必须是该组的成员。例如,如果 os 说所请求的文件由(系统)组
accounts
拥有,则组accounts
必须出现在组数据库中,并且请求中使用的 Web 用户名必须是该组的成员。
- 拥有文件的系统组的名称必须存在于组数据库中(例如,由mod_authz_groupfile或mod_authz_dbm提供),并且 Web 用户名必须是该组的成员。例如,如果 os 说所请求的文件由(系统)组
Note
如果使用mod_authz_owner来授权文件系统中实际上不存在的资源(即虚拟资源),它将拒绝访问。
特别是它将永远不会授权内容协商的“ MultiViews”资源。
Configuration Examples
Require file-owner
考虑一个运行 Apache Web 服务器的多用户系统,每个用户在~/public_html/private
中拥有自己的文件。假设有一个列出所有 Web 用户名的AuthDBMUserFile数据库,并且这些用户名与实际拥有服务器上文件的系统用户名匹配,则以下节将仅允许用户本人访问自己的文件。除非用户jones
由jones
而非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
的组的成员。因此,如果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>