Apache,suexec,PHP,suPHP


13

虽然我对Linux 用户感到很舒服,但是我的Linux Admin-fu有点虚弱。因此,我在这里寻找要构建的CentOS服务器的指南。

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

因此,基本上,我希望看起来像共享Web托管公司的小版本。考虑到这些是多么普遍,我认为我很容易找到一份不错的最新方法指南来进行所有设置,但是到目前为止,我的运气很少。我怀疑我的搜索字词已关闭。

这样的问题(随意回答任何或全部):

  1. 任何人都可以通过一些可靠的链接链接到当前/现代指南,从而帮助我完成所有这些工作?不,apache文档站点不是指南;-)
  2. 由于我同时使用静态站点和PHP应用程序,因此我是否需要同时安装suexec和suphp?如果是这样,那会带来我应该意识到的任何挑战吗?
  3. 我应该看看其他选项而不是suexec和suphp吗?

我计划为最终用户提供SSH,SFTP或SCP访问其内容的权限(如果这会影响任何内容)。

在此先感谢您的帮助。

[编辑] 我应该早些提到:我的一个主要目标是模拟与文件权限和所有权有关的共享托管提供程序。我真的很想避免教会用户有关仅为了查看其添加/更改而需要更改此类内容的知识。

Answers:


15

使用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配置中的设置)
  • 该文件不能是世界可写的
  • 父目录不能是世界可写的

因此,知道我想模拟一个共享的托管模型(如您所指出的,让用户彼此隔离)是suexec / suphp模型的实现方式,还是您觉得有更好的选择?我还编辑了该帖子,以表明一个主要目标是避免教用户只为了查看其更改或添加内容而必须修改文件权限或所有者。
Chris_K'4

2
suexec / suphp是您所追求的一个很好的解决方案。
tylerl '04

我宁愿suhp胜于suexec。我认为这更安全。
弗拉迪斯拉夫·拉斯特鲁斯尼(Fladislav Rastrusny),2010年

@FractalizeR:通常您同时使用两者。SuPHP用于PHP,suexec用于CGI。您可以通过将PHP作为CGI运行而在suexec上运行PHP,但这是不必要的,因为存在针对PHP的更好(更安全,更有效)的选项。
tylerl

@tylerl:非常感谢您的回答。您指的是哪个更安全/有效的PHP解决方案?
本杰明
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.