Apache、suexec、PHP、suPHP

Apache、suexec、PHP、suPHP

虽然我很喜欢 Linux用户,我的 Linux 管理能力有点弱。因此,我在这里寻求有关我即将构建的 CentOS 服务器的指导。

我需要为我们的几个客户设置一个 Apache2 Web 服务器。我希望每个客户的 Web 内容都位于他们的主目录下(USERDIR在 apache.conf 中,对吧?)用于静态 HTML 站点。我希望 Apache 作为客户端运行(suexec?)。他们的一些内容将是 PHP 应用程序,我觉得我也想看看suphp

所以基本上我想看起来像一个共享网络托管公司的小型版本。考虑到那些我以为我会很容易找到一本关于如何设置这一切的最新指南,但到目前为止,我的运气很差。我怀疑我的搜索词不对。

因此问题是(请随意回答任何或全部):

  1. 有人能提供一些当前/现代指南的可靠链接来帮助我完成这一切吗?不,Apache 文档网站不是指南 ;-)
  2. 由于我混合使用静态网站和 PHP 应用程序,我是否希望/需要同时安装 suexec 和 suphp?如果是这样,这会带来我应该注意的任何挑战吗?
  3. 我是否应该考虑除 suexec 和 suphp 之外的其他选项?

我计划让最终用户通过 SSH、SFTP 或 SCP 访问他们的东西(如果这会影响任何事情的话)。

在此先感谢您的帮助。

[编辑] 我应该早点提到这一点:我寻求模拟与文件权限和所有权相关的共享托管提供商的一个关键目标。我真的希望避免让用户知道需要更改这些内容才能看到他们的添加/更改。

答案1

使用 suexec 和 suphp 强制执行与默认类型不同的权限分离。

默认设置是将用户的权限与 Web 服务器的权限分开。也就是说,用户拥有这些文件,并且他必须授予 Web 服务器查看和更改这些文件的权限。

suexec/suphp 模型是,Web 服务器(在运行脚本时)在用户的帐户下运行,因此网站有权执行用户有权执行的任何操作。在一定程度上,这消除了用户和 Web 服务器之间的分离,但作为交换,它强制执行了不同的分离:即同一台机器上一个用户的网站和另一个用户的网站之间的分离。

默认情况下,PHP 始终在 Apache 的用户帐户下运行,因此一个网站的 PHP 脚本可以访问另一个网站的 PHP 脚本可以访问的任何文件。因此,如果服务器上的一个帐户被黑客入侵,感染就会蔓延到其他帐户。SuPHP 可以防止这种情况发生。

suexec 和 suphp 都不会影响 apache 提供静态内容的方式。所有旧规则仍然适用。相反,suexec 和 suphp 分别更改了 CGI 和 PHP 运行的帐户。Suexec 使 CGI 可执行文件在所有者的帐户下运行,而 SuPHP 使 PHP 脚本在所有者的帐户下运行。

Suexec 和 SuPHP 不一定更好的.他们只是不同的。它们无法防止网站被黑客入侵(而且可能会让网站更轻松隔离可能对黑客造成威胁),但它们可以防止一个站点的攻击蔓延到所有其他站点。对于站点管理员来说,这种隔离可能更为重要,这就是为什么一些共享托管系统将 suexec 和 suphp 设为默认设置。

一个极为常见的“陷阱”是 SuPHP 在脚本运行之前会检查其所有权和权限,如果权限不合适,则会返回 500 错误。

尤其:

  • 文件的所有者和组必须与网站所有者匹配(如 apache 配置中的设置)
  • 该文件不能是全球可写的
  • 父目录不能是全球可写的

相关内容