我希望将我的整个网络架构设为归所有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 {} +
为了澄清我之前关于文件与目录权限的说法:
- 文件不需要执行位即可读取。权限 0744 将设置文件权限如下:
-rwxr--r--
- 目录需要执行位和读取位。 这篇 StackOverflow 文章提供了目录权限如何工作的出色概述。
编辑(再次):
刚刚注意到 Centos 标签,因此您可以忽略 apparmor 警告。而我思考SELinux 默认关闭,所以这应该不是问题。修复权限应该就是你所需要的。
答案2
研究使用 ACL。您将能够保留 root 作为所有者,同时仍授予 apache 访问权限(无需对文件进行 chmod 修改,以免危及安全)。