我正在尝试在 Debian 7 上配置我的 apache 服务器。我有以下配置:每个 Linux 用户在 /home 目录中都有一个文件夹。在他们的用户目录中,他们有一个 www 目录。因此,他们的 apache 根目录是 /home/bob/www/ 我的问题是:我应该为 www 目录设置什么权限?到目前为止,我已将 www-data 用户添加到每个用户的每个组中(例如,如果我有用户 bob 和 pete,www-data 是 bob 和 pete 这两个组的成员),并将他们的根目录权限设置为 774。这是正确的做法吗?
提前致谢
答案1
首先,有一个主要考虑因素会影响处理必要设置的方式:
Apache 只会从这些地方提供静态内容(这意味着没有允许上传的“动态”站点,也没有编写自己的日志文件或临时文件等的 CMS 类站点)。
在这种情况下,Apache 的只读访问权限是可以的。
用户想要运行动态站点(
CGI
以及更高级的东西)。在这种情况下,您必须使层次结构中的某些位置可由 Apache 写入。
现在有以下可能性:
只需使必要的层次结构对每个人都可读(并且对于目录而言可遍历)。
显然,这仅适用于只读(因此是静态)内容。
在这种情况下,只需确保要服务的目录具有
a=rx
权限并且其中的文件具有a=r
权限 - 也就是说,除了属于拥有用户和组的用户之外,其他用户都可以遍历目录并读取其中的文件。请注意,这将使“导出”的内容实际上可供所有人(而不仅仅是 Apache)读取,这可能会带来安全问题。
作为Apache wiki 建议,创建一个单独的组,使 Apache 以其 GID 运行,并让该组对资源具有适当的访问权限(适用时为 R/O 或 R/W)。
事实上,Debian 已经有了这个组,
www-data
所以你可以把你的用户添加到这个组中。一个明显的缺点是,他们将自动获得该组拥有的其他资源的访问权限www-data
。使用特权分离
mpm-itk
或其他方法。这样您就可以使用每个用户的权限来为每个用户提供内容(Apache 的管理器进程以指定用户的凭据运行,root
但它产生的工作进程以指定用户的凭据运行)。但我不确定这是否会很好玩
mod_userdir
。考虑使用POSIX ACL对这些目录实施更细粒度的访问控制。