在Linux服务器上隔离虚拟主机的最佳方法是什么?

首先,我想知道什么是隔离Apache的虚拟主机的最好方法。 我想这也是Linux文件系统的一些问题,因为在/var/www/site1.com/public_html/var/www/site2.com/public_html类的文件夹(和文件)不是一个好习惯。相同的Linux用户/组。

我发现这个类似的post: 从系统的其余部分分离Apache虚拟主机,但注意到这是关于从系统隔离虚拟主机。 一个很好的做法,但不是我所做的。

我不希望任何可能的方式, site1.com可以访问site1.com文件,如果可能的site2.com ,除了它自己的目录和子目录,文件系统也不需要任何东西。

其次,chmod对用户权限的影响是什么。 假设两个网站都在自己的用户和用户组中运行。 但site1.com有一个文件或目录与chmod权利777. site2.com将能够使用该文件/目录?

不是最好的解决scheme,但也许是其中的一部分,最简单的方法是使用suExec。

使用suExec,您可以轻松地为每个虚拟主机指定一个不同的Unix用户(最常见的情况)。 如果你照顾那些用户的家庭是私人的(模式0700),这是一个很好的隔离开始。

他们不chrooted,并仍然会共享/ tmp,看到其他进程正在运行等。 但是你将至less比绝大多数configuration完好的LAMP服务器高出一个水平。

还有一些技术性的利弊:

  • 亲:消除“ftp用户与www数据”用户,许多人最终将其所有的文件和文件夹chmod全局写入(模式0777),以便HTTP上载工作; 这里的shelllogin和Apache共享同一个用户
  • con:出于同样的原因,Apache现在可以修改用户帐户中的任何文件(数据,代码) 对于那些希望从后台更新Wordpress的人来说,这是一个先决条件,但是如果你对安全性很认真并且知道如何真正维护webapps
  • con:当某个Apache工作者对某个用户使用某个用户时,它不能被重新用于下一个针对不同的虚拟主机/用户的传入HTTP请求; 因此,如果你有很多虚拟主机/用户,这个解决scheme不能很好地扩展(独立于使用它的mpm-worker和通过FastCGI进程外运行的代码,HTTP反向代理等等)

关于你的第二个问题:使用私人住宅,你得到你想要的(chmod 0700〜toto),但是用户本身可能把自己的住所公之于众,甚至可以在全球范围内书写(运行chmod 0777〜toto)。 这取决于你对服务器的用户和应用程序的信任。