Apache 模块 mod_userdir

Description:User-specific directories
Status:Base
Module Identifier:userdir_module
Source File:mod_userdir.c

Summary

Warning

通过使用此模块,您允许多个用户托管同一来源内的内容。相同的来源策略是 Javascript 和网络安全的关键原则。通过托管具有相同来源的网页,这些页面可以相互读取和控制,并且一个页面中的安全问题可能会影响另一个页面。结合涉及动态内容和身份验证的网页以及用户不一定彼此信任时,这特别危险。

此模块允许使用http://example.com/~user/语法访问用户特定的目录。

UserDir Directive

Description:用户特定目录的位置
Syntax:UserDir directory-filename [directory-filename] ...
Context:服务器配置,虚拟主机
Status:Base
Module:mod_userdir

UserDir伪指令将真实目录设置在用户的主目录中,以便在收到针对用户的文档请求时使用。 * Directory-filename *是以下之一:

  • 目录或模式的名称,如下所示。

  • 关键字disabled。这将关闭所有用户名到目录的翻译,除非使用enabled关键字明确命名(见下文)。

  • 关键字disabled后跟一个用空格分隔的用户名列表。出现在这样的列表中的用户名将永远不会执行目录转换,即使它们出现在enabled子句中也是如此。

  • 关键字enabled后跟一个用空格分隔的用户名列表。即使全局禁用生效,这些用户名也将执行目录转换,但如果它们也出现在disabled子句中,则不会执行。

如果enableddisabled关键字都没有出现在Userdir指令中,则将该参数视为文件名模式,并用于将名称转换为目录规范。对http://www.example.com/~bob/one/two.html的请求将转换为:

使用了 UserDir 指令Translated path
UserDir public_html~bob/public_html/one/two.html
UserDir /usr/web/usr/web/bob/one/two.html
UserDir /home/*/www/home/bob/www/one/two.html

以下指令将重定向发送到 Client 端:

使用了 UserDir 指令Translated path
UserDir http://www.example.com/usershttp://www.example.com/users/bob/one/two.html
UserDir http://www.example.com/*/usrhttp://www.example.com/bob/usr/one/two.html
UserDir http://www.example.com/~*/http://www.example.com/~bob/one/two.html

Be careful when using this directive; for instance, "UserDir ./" would map "/~root" to "/" - which is probably undesirable. It is strongly recommended that your configuration include a "UserDir disabled root" declaration. See also the Directory directive and the Security Tips page for more information.

Additional examples:

要允许一些用户拥有UserDir目录,但没有其他任何人,请使用以下命令:

UserDir disabled
UserDir enabled user1 user2 user3

要允许大多数用户拥有UserDir目录,但要拒绝少数用户,请使用以下命令:

UserDir disabled user4 user5 user6

也可以指定备用用户目录。如果您使用以下命令:

UserDir "public_html" "/usr/web" "http://www.example.com/"

要求http://www.example.com/~bob/one/two.html时,它将尝试首先在~bob/public_html/one/two.html处找到页面,然后在/usr/web/bob/one/two.html处找到页面,最后将重定向发送到http://www.example.com/bob/one/two.html

如果添加重定向,则它必须是列表中的最后一个替代方法。 Apache httpd 无法确定重定向是否成功,因此,如果您在列表中的较早位置进行了重定向,则将始终使用该替代方法。

默认情况下,在 2.1.4 和更高版本中,用户目录替换是不活动的。在早期版本中,如果不存在UserDir指令,则假定为UserDir public_html

Merging details

特定启用和禁用用户的列表从全局主机范围替换为虚拟主机范围,而不是合并

See also