项目

通用

个人资料

操作

用户目录

mod_userdir 模块

描述

userdir 模块提供了一种将基于用户的目录链接到 Web 服务器全局命名空间的简单方法。

形式为 /~user/page.html 的请求将被重写,以从用户主目录中获取文件 page.html
如果设置了 userdir.path,该路径将被附加到主目录,从而构建经典的映射

# URL: http://www.example.org/~jan/index.html 
# Path: /home/jan/public_html/

userdir.path = "public_html" 

要控制哪些用户可以使用此功能,您可以设置一个要包含或排除的用户名列表。

如果您的映射独立于 /etc/passwd,您可以使用 userdir.basepath

# URL: http://www.example.org/~jan/index.html
# Path: /var/www/users/jan/htdocs/index.html

userdir.path = "htdocs" 
userdir.basepath = "/var/www/users/" 

选项

userdir.path(必需选项)

通常应将其设置为 "public_html",以将 ~/public_html/ 作为文档根目录
默认值:未设置(mod_userdir 已禁用;如果您希望将主目录作为文档根目录,请将其设置为空字符串 "",这在 1.4.19 之前是默认设置)
示例

userdir.path = "public_html"

userdir.exclude-user

不允许使用此功能的用户名列表
默认值:空(所有用户都可以使用)
示例

userdir.exclude-user = ( "root", "postmaster" )

userdir.include-user

如果设置,则只有此列表中的用户可以使用该功能
默认值:空(所有用户都可以使用)

userdir.basepath

如果设置,则使用 userdir.basepath 加上用户名,而不是检查 /etc/passwd 以获取主目录

我应该使用 mod_userdir 吗?

从用户目录提供文件的概念是历史遗留的,可以追溯到 1990 年代,那时拥有连接互联网的服务器既罕见又昂贵,并且服务器访问通常由许多用户共享。当时的网站也通常是静态内容,不像今天许多流行网站那样动态(例如,使用 Python 或 PHP)。

mod_userdir 是一个简单的 Lighttpd 模块,并且 Lighttpd 提供了此选项。
然而,您的系统必须配置为允许 Lighttpd mod_userdir 正常工作。

如果从用户目录提供文件是一项明确要求并属于您系统设计的一部分,那么 Lighttpd mod_userdir 可能是一个合适的解决方案。

如果不是,那么使用 mod_userdir 可能是一个次优的解决方案。
  • 在 Web 服务器文档根目录中使用子文件夹可能是一个更简单、更好的解决方案。
  • 使用带有 userdir.basepath 的 mod_userdir 是另一种替代方案,而不是从用户主目录下方提供文件。
  • 对于更高级的用户,让每个用户在其自己的用户帐户下控制并运行其自己的 Lighttpd 实例可能是一个更好的委托解决方案。管理员运行的单个 Lighttpd 实例可以使用 Lighttpd mod_proxy 将特定站点或 URL 路径反向代理到每个高级用户自己的 Lighttpd 实例。
  • ...

出于安全原因,现代操作系统发行版中,主目录默认通常是私有的,这种隐私性打破了历史上的(且不推荐的)用户目录模式。
例如 https://ubuntu.com/blog/private-home-directories-for-ubuntu-21-04

故障排除

mod_userdir 是一个简单的 Lighttpd 模块。
然而,您的系统必须配置为允许 Lighttpd mod_userdir 正常工作。

如果您选择使用 mod_userdir,您将如何评估自己的专业水平?
  • 您是系统管理专家并知道 mod_userdir 符合您的要求吗?
  • 不是系统管理专家吗?
    您可能不应该使用 mod_userdir,并且可能需要重新考虑为什么您认为自己需要 mod_userdir。

本网站是关于 Lighttpd Web 服务器的。本网站不是基础系统管理的幼儿园。
Lighttpd 范围之外的基础系统管理任务包括但不限于配置用户帐户、文件系统权限、SELinux、网络和防火墙。

为什么要做如此直白的区分?在那些不是系统管理专家的人中,太多人往往不明白如何管理多个用户帐户和文件系统权限。这些人倾向于对系统如何工作做出错误的假设,然后其中一些人进一步感到沮丧,因为互联网上的人们并没有竭尽全力教授他们所不知道的,也没有花一些时间自己学习。那不是成功的秘诀。很遗憾这里必须如此粗鲁和直白地写出来。如果您理解这一点,那么这并不是针对您的。如果您需要被指引到这里,那么这条信息就是专门针对您的。再次重申:本网站是关于 Lighttpd Web 服务器的。本网站不是基础系统管理的幼儿园。

如果 Lighttpd mod_userdir 没有访问文件的权限,那么 Lighttpd mod_userdir 就没有访问文件的权限。这正是其含义。访问文件的能力是用户帐户和文件系统权限的属性,可能涉及 SELinux。这不是 Lighttpd mod_userdir 的缺点。如果您无法理解或排除文件系统权限故障,那么您可能不应该使用 Lighttpd mod_userdir。相反,您可以使用系统上安装的 Lighttpd 软件包配置的文档根目录。该路径通常是类似 /var/www/ 的内容。

gstrauss大约 2 年 前更新 · 12 个修订版本