如何允许 apache 用户读取 /www root 拥有的文件

如何允许 apache 用户读取 /www root 拥有的文件

我希望将我的整个网络架构设为归所有root:root,并apache只允许用户阅读。

我不知道是否有可能:chmod -R 744让它从浏览器返回 E403,拒绝访问 xxxx.php

但是由于 Apache 是公共的(“其他”?),它应该能够“读取”吧?我不明白。我也尝试了 chown,root:apache但结果是一样的,这更令人困惑...

答案1

文件需要 644,目录需要 755。在整个树上使用 744 意味着 Apache 没有权限读取任何目录的内容。

此外,如果您使用非标准位置(例如),则根据操作系统的不同,您可能会遇到窝巢安全机制(apparmor、selinux)的问题/www

我将提供一些当我不在手机上时清理权限的示例命令。

编辑:

这会将文件和目录设置为全世界可读的:

find /www -type f -exec chmod 644 {} +
find /www -type d -exec chmod 755 {} +

为了澄清我之前关于文件与目录权限的说法:

  1. 文件不需要执行位即可读取。权限 0744 将设置文件权限如下:-rwxr--r--
  2. 目录需要执行位和读取位。 这篇 StackOverflow 文章提供了目录权限如何工作的出色概述。

编辑(再次):

刚刚注意到 Centos 标签,因此您可以忽略 apparmor 警告。而我思考SELinux 默认关闭,所以这应该不是问题。修复权限应该就是你所需要的。

答案2

研究使用 ACL。您将能够保留 root 作为所有者,同时仍授予 apache 访问权限(无需对文件进行 chmod 修改,以免危及安全)。

相关内容