我怎样才能configuration我的用户/组/权限设置共享虚拟主机在Linux上,以防止networking服务器和用户帐户之间的权限?

我有一个Linux LAMPnetworking服务器(Ubuntu)与一些网站就可以了。

它们都在相同的apache2实例中运行,并且可以通过不同的虚拟主机访问。

他们大多是由我自己运行,但我也有一些朋友的网站托pipe在那里。

我想和使用有不同的网站用户帐户pipe理文件,cronjob等

networking服务器作为www-data运行。

现在大多数文件/目录不需要网站的写入权限,但有些可以。 我可以单独将它们设置为用于pipe理文件的用户可写。 其实我更喜欢那种方式。

然而,总是给我一些烦扰的是由web服务器创build的文件。 例如caching或会话文件。 因此,它们由Web服务器用户拥有,并且默认权限不能由用户linux用户写入。 在我的情况下文件修改的Web服务器用户happyn完全使用PHP。

现在,我发现这个问题的“最佳”解决scheme将运行suexec / suphp让PHP进程作为PHP文件的所有者运行。 然而,这是因为没有apaches mod-php的优势,而且性能损失很大,因为每个php进程都运行在cgi上。 但我最大的问题是操作码和内存caching。

现在我想我可以做的就是把我所有的用户都join到www-data组中,这样默认权限为664/775,shell用户可以修改文件。 然而,shell用户将无法调整chmods,因为他/她不是所有者,但是这不应该是一个问题,因为我不能想到这是由Web服务器创build的文件/目录所需的情况。 而作为所有者的networking服务器无论如何不会需要它。

但是,我对整个组/用户/权限的东西是全新的,因为我曾经为每个项目都有自己的服务器,并且从来没有做过共享主机的任何事情。

我只知道plesk / confixx和类似的东西的结构,知道他们总是有问题的。

所以我要求最简单的方法来处理这个问题的常见networking主机需求。

此外:我怎样才能有效地“监禁”用户到自己的目录,并将其视为在scp / ssh中的顶级目录? 我知道这不是完全可能的,没有安全性必须依赖它(因为用户可以运行一个PHP脚本列出其他目录等),但这不是动机。 动机是让所有事情都有点孤立和分离,以促进pipe理的目的。

我不认为这个问题有一个“很好”的解决scheme。 最好的可能是一个cronjob, chowns把文件传给$user:www-datachmods文件,这些文件需要写入到u=rwX,g=rwX,o= (和u=rwX,g=rX,o=对于Web服务器只需要读取的文件)。 就SSH / SCP隔离而言,最好的办法可能是文件权限。 尽pipeFTP / FTPS是一个更好的解决scheme,因为FTP服务器可以在他们的目录内部使用chroot用户。