正确设置/var/www/example.com中的apache2权限

我想知道什么是正确的方式来设置目录/var/www/example.com和其中的所有文件的权限。 整个服务器将被用来设置我的网站,所以我不知道是否有必要为我的每个网站创build一个新的用户。 Apache以www用户身份运行:www用户。 如果从安全的angular度来解释一下,这也会很棒。

编辑它看起来像我需要运行2个网站作为单独的用户,只是因为其中一个网站将必须尽可能安全和从另一个,我期望更容易分离(vbulletin论坛)。 能够妥协安全的网站通过不太安全的网站是不能接受的。

我为每个站点使用apache-itk和一个单独的用户。 由于每个新的请求必须以该用户的身份启动一个新的进程,所以还有额外的开销,但是从安全的angular度来看,它确实使事情变得更加整洁,因为一个特定的站点不能访问另一个站点的文件。 如果一个特定的网站消耗了太多的资源,这也有帮助。

在Debian / Ubuntu上:

apt-get install apache2-mpm-itk 

然后加:

 <IfModule mpm_itk_module> AssignUserId USER GROUP </IfModule> 

在你的apache2的VirtualHost中,用你自己的replaceUSER和GROUP。

您如何设置权限取决于您的安全和威胁模型。 而我们不知道这些是什么。

但是一般来说,文件/目录只能由需要读取它们的uid读取,并且只能由需要写入它们的uid写入。 有时,直接映射到Unix权限模型并不总是实用的,所以通常应用的下一个原则是,意外的信息泄露通常比未经授权的数据修改更可取。

这意味着你的情况是,Web服务器文档树中的任何文件/目录都不应该由Web服务器uid写入。 在某些情况下,可能需要以只读方式挂载文件系统。 但是,当你想改变你的内容时,显然这会使生活变得更加复杂。 那么谁来改变内容? 如果是单个用户(并且始终是单个用户),那么您的权限可能是:

 -rw-r----- devuser wwwuser somefile drwxr-s--- devuser wwwuser somedir 

所以你的web服务器通过组的所有权获得访问。 粘性组位确保所创build的目录/ filseinheritance相同的组。

如果您有多个用户更改文件,则将其全部添加到一个组(例如webdev),并通过“其他”权限访问Web服务器:

 -rw-rw-r-- devuser webdev somefile drwxrxsr-x devuser webdev somedir 

当然还有额外的工具可以增加进一步的特权分离 – 但是我只会考虑看看这些如果你正在build立一个共享的主机,并需要隔离每个虚拟主机。

如果你是唯一使用Web服务器的人,那么像mpm_itk这样的东西是矫枉过正的。

只需将权限设置为Web服务器/ php运行的相同用户(在您的情况下,www-user:www-user)。

隔离权限的唯一原因是如果运行其他站点的Web服务器也遭到黑客攻击,则可以保护一个站点免遭黑客攻击。 如果所有的网站都是你的,那么这不是一个大问题。

我看到很多很多的演练,这似乎意味着你必须build立这样的安全,这是不危险的。 这完全是不真实的。 除了Web服务器目录之外,www用户用户对服务器上的任何内容都没有权限,所以将web根目录及其下的所有内容都设置为770/660和www-user:www-user是完全安全的。

最糟糕的情况是,你的一个虚拟主机遭到黑客入侵,他们将其他虚拟主机中的所有资料都清理干净,但是,无论如何你需要恢复整个服务器,因为任何中断都意味着你不能相信它。

当然,如果你为其他人托pipe东西,或者如果你有很多用户login谁想要他们自己的孤立的阿帕奇的东西,你需要考虑的select,但对于一个虚拟主机的个人服务器,没有任何错误,离开一切由Web服务器用户拥有。