我有一台专用服务器,在这台服务器上我有两个虚拟主机。我将向两个人授予服务器的访问权限。我的 php 文件中有数据库密码,我不想与他们共享。那么我该如何保护 php 文件不被读取?如果我执行 chmod 700,apache2 将无法读取,并且页面将被“禁止”。谢谢,晚安
答案1
为了使用这些数据,这些数据必须能够被 Web 服务器的 uid 读取 - 这意味着任何能够在服务器上部署 PHP 代码的人都可以读取这些文件。所有 Web 编程语言都是如此。
PHP 的独特之处在于它提供了在 Web 服务器上划分共享访问的机制
通过使用open_basedir指令 - 您只需要根据访问权限配置不同的目录树 - 并使用存储在单独环境中的相关凭据设置单独的数据库帐户 - 并在数据库层配置安全性。
或者你可以使用苏普根据虚拟用户限制访问 - 当 PHP 脚本运行时,它会使用 PHP 脚本的 uid/gid 来执行此操作。同样,您需要具有不同权限的单独数据库帐户来控制数据访问。
答案2
如果您具有 root 访问权限,那么您可以设置文件的权限,以便 apache(以及 php)可以使用补充组读取它;并阻止两个“用户”读取它。
无需了解您的操作系统版本;类似以下流程应该可以工作。当然,测试是强制性的。
# create new group
groupadd credentials
# add apache to that group (supplementary group)
usermod -G credentials -a apache
# change file ownership
chgrp credentials /etc/credentialfile.conf
chown root /etc/credentialfile.conf
chmod 640 /etc/credentialfile.conf
您需要重新启动 Apache 以获取新的补充组。