![如何允许 apache 访问文件但阻止其他人查看它?](https://linux22.com/image/1329622/%E5%A6%82%E4%BD%95%E5%85%81%E8%AE%B8%20apache%20%E8%AE%BF%E9%97%AE%E6%96%87%E4%BB%B6%E4%BD%86%E9%98%BB%E6%AD%A2%E5%85%B6%E4%BB%96%E4%BA%BA%E6%9F%A5%E7%9C%8B%E5%AE%83%EF%BC%9F.png)
我有几个包含 Magento 安装的文件夹。
例如
www/magento1 www/magento2
其中的所有文件/文件夹分别归 root:magento1 和 root:magento2 所有。
我一开始对所有文件夹有 3755 个权限,对所有目录有 644 个权限。这样可以防止除 root 之外的任何人写入任何文件夹或文件。
然后我为开发人员应该能够写入的文件夹/文件添加组写入权限。例如,他们无法写入核心文件,但可以写入非核心的模块/皮肤。
一切都很好。唯一不好的是,我不希望他们能够从 magento1/app/etc/local.xml 中读取 mysql 数据库用户名/密码。我不希望他们访问存储敏感信息的数据库。我也不希望流氓程序员删除一堆表或诸如此类的东西。
但是 apache 需要对同一个文件有读取权限。
这是一个不起作用的“解决方案”:从组中删除读取权限,但将其留给其他人。为什么?因为这会阻止开发人员从他们的 app/etc/local.xml 读取,但允许他们读取所有其他文件。
我该怎么办?
编辑:是的,devs = 开发人员,他们将拥有 SSH 和 FTP 访问权限。
答案1
假设像在 Debian 下一样,apache 以用户 www-data 和组 www-data 运行,解决方案是
chown www-data:www-data www/magento1/app/etc/local.xml
chmod 440 www/magento1/app/etc/local.xml
root 用户始终可以读取和写入所有文件。
答案2
假设 devs=developers...
没有解释开发人员以何种方式访问系统 - ssh?ftp?
如果仅仅是 ftp 访问,您可以将配置文件排除在通过 ftp 提供/显示之外。
或者,您也可以使用某个用户名运行 apache(通常设置为以无人身份运行,有时以用户持有帐户的身份运行)。如果您允许“其他人”/“世界”读取它,那么每个人都可以读取它。因此,您可以采用另一种方式 - 使其仅对用户可读,并将用户所有权设置为 apache 用户,并完全关闭组和其他人的访问权限。这样,apache 就可以愉快地读取它,而其他任何用户都无法读取它(除了 root)。但是,如果您想对文件进行干预,则需要将自己模仿为该用户。例如su - username