允许全世界访问0750目录下的目录

允许全世界访问0750目录下的目录

我更喜欢将我的/home/dotancohen/目录保留为权限0750。但是,我确实需要 Apache 来访问/home/dotancohen/someProject/public_html/.我知道我可以将主目录配置为0755以及除~/someproject/as之外的所有子目录___0,但这很痛苦。我如何允许 Apache 访问该~/someproject/public_html/目录,同时将主目录保留为0750

我尝试符号链接/war/www/someProject/home/dotancohen/someProject/,但无论如何 Apache 都无法0750跨越/home/dotancohen/.我想我可以将www-data用户(Apache)添加到该dotancohen组中,但我觉得这赋予了它太多的权力。

或者,我可以保留网络文件,/var/www/someProject/但由于其他原因,我更喜欢将它们保留在我的主目录下。

答案1

有几种不同的选项可供您选择。这是我能想到的;每个都有自己的优点和缺点。

  • 您可以在父目录上设置世界执行位。这样,任何知道文件完整路径的人都可以访问该文件,但其他人则无法访问该文件。这仍然会留下众所周知的文件,除非你用更严格的权限来保护它们(像 ~/.bashrc、~/.gnupg、~/.Xauthority 等可能是攻击者感兴趣的,所以需要他们的权限收紧)。

  • 您可以利用 ACL 以更细粒度执行相同的操作,例如,仅允许 www-data 用户或组对目录执行访问,对 Web 服务器需要提供内容列表的任何目录进行读/执行访问,以及对它应该提供的文件的读取权限。

  • 您可以将 www-data 用户添加到 dotancohen 组,然后撤销组对除您希望 Apache 能够访问的内容之外的所有内容的权限。这可能是尽可能少地开放的最简单方法,但如果您已经将组权限用于其他目的,那么它会变得更加棘手。

  • 或者,正如您所说,您可以将公开提供的文件完全移出您的主目录。这绝对是在权限方面最简单的设置,而且这肯定是我会做出的选择,除非有一些令人信服的理由不这样做。根据您的设置和特定需求,在具有适当所有权的公共根上使用 0750 或 0770 权限甚至可能是实用的,这将限制只有您自己和 Web 服务器的访问。自己的所有者、组 www-data 和权限 0710 贯穿这样一个目录树可能会尽可能严格,但这意味着 Web 服务器必须知道它将在该目录下访问的每个文件的全名。

顺便说一句,您可能需要考虑迁移到符合 FHS 标准的/srv而不是 /var。

相关内容