哪种 chmod 和 Owner:group 设置最适合 Web 应用程序?

哪种 chmod 和 Owner:group 设置最适合 Web 应用程序?

我们正在 CentOS 上配置一个 PHP Web 应用程序,并且所有文件当前位于 /var/www/html/project/

Apache 配置为以 apache:apache 身份运行,并可以访问上述目录。目前我们的文件和目录具有以下权限:

所有者 = root 组 = apache

目录:drwxr-x--- root apache

文件:-rw-r----- 根 apache

这是一个安全的设置吗?还是最好使用新用户(例如“project”)作为所有文件和目录的所有者?

答案1

最佳做法是让所有者成为用于上传/管理服务器上文件的任何受限用户帐户。组通常是运行 php 的帐户,因此在这种情况下 apache 是正确的。其他权限应设置为零,因为它们是这样的。你接近完美了。

如果您遇到多个帐户可能正在修改/编辑文件的情况,您可以创建一个 cron 脚本,该脚本每小时左右递归地更改目录以保持正确的所有权。同样的技术也适用于保持权限正确。

此外,您可能希望修改具有所有权的受限用户帐户的 umask,以符合您的权限方案。

答案2

你绝对是谨慎行事。

您的设置将阻止您在需要通过 apache 按需在目录中创建其他文件夹。

我建议您使用以下权限:

DIRECTORIES: drwxrwx--- root apache
FILES: -rw-rw---- root apache

将您的开发人员添加到 apache 组,以便他们通过 ssh 或 ftp 登录时可以继续写入这些文件。

如果您信任运行这些文件的用户,则可以拥有自由的文件权限。如果您的代码很可靠,那么您可以允许 apache 组使用权限执行更多操作。

编辑:一般来说给 apache:

rwx if it needs to create folders
rw if it needs to create files
r if everything is static

归根结底,就是只授予您必须授予的权限。尽可能保守这些权限,并在开发应用程序时根据需要开放这些权限。

关于群组还有一件小事。您将看到一些示例来说明这一点(这些也是正确的设置):

DIRECTORIES: drwxrwxrw- root somegroup
FILES: -rw-rw-r-- root somegroup

Web 应用程序运行时需要这些权限,因为Apache 用户不属于团体权限。在这种情况下,Apache 被认为是每个人因此您需要设置权限以允许所有人与您的网站互动。我说的所有人不是指世界上的所有人(即匿名用户)。我指的是当前服务器上的所有用户(查看 /etc/passwd 以获取列表)。

相关内容