好的,我查看了大量资源,通过 Google,这里的问题似乎都不是我需要的。
我来自 Windows IIS 背景,所以也许我的思维过程有缺陷并且 Apache 的做法不同。
基本上,在 IIS 上,建议为每个 Web 用户甚至网站设置一个专用的应用程序池,并将其文件/文件夹存储在自己的路径下并使用该专用的应用程序池。
我正在设置 Apache 用于测试和学习目的,并遇到了用户隔离的情况。Apache 是否需要按用户分叉,还是“www-data”就足够了?
鉴于“单独的” webdir 位于单独的“主”目录中,我认为这是安全的吗?我的理解是,如果您无法访问路径中某个目录,则无法访问该目录后面的任何内容 - 这是正确的吗?
最后,我注意到,这也是我问这个问题的原因,Wordpress 在创建文件或缓存文件时,是以用户“www-data”和组“www-data”的身份创建的。这就是促使我问这个问题的原因,因为我现在假设“用户”现在无权访问这些文件?
答案1
首先,运行 apache 的用户需要能够读取文件,以便将它们显示给客户端。当您使用用户目录时,这通常意味着向用户自己授予写入权限,并向组“www-data”(或运行 apache 的用户所属的任何组)或服务器上的所有用户授予读取权限。为了不显示用户 public_html 目录层次结构之外的任何文件,您可以使用 apache 配置文件仅允许将 public_html 及其子目录用于用户网站。
其次,由于你想确保 apache 用户无法编辑任何内容(以防服务器被破解,或者有人编写了错误的脚本并将其作为 cgi 运行,或者其他什么),所以你想以没有权限的用户身份运行它。写访问用户目录。该用户仍需要能够写入日志和临时数据,并且它应该有自己的目录来执行这些操作。
如果您为每个用户运行一个 apache 实例,并让该 apache 归该用户所有,那么您将授予 apache 写入该用户所有目录的权限。这通常不是一个好主意。
答案2
我的建议是使用 apache-itk 补丁。您可以为每个站点使用用户主目录,并使用不同的用户权限执行 apache - 这对于多站点托管来说非常安全。