php - php 的标准生产设置

标签 php apache lamp production-environment chmod

<分区>

背景 我最近在我有 root 访问权限的主机上设置了一个基于 php 的站点。我已经根据 linode.com 上的指南安装了灯设置,现在我想知道如何处理 php 文件权限、目录权限,以及哪些用户应该在哪些组中运行哪些进程。

特别是我想回答“一个标准的 php 网站应该如何根据 ACL、所有权和生产 ID 进行配置?”

目前任何目录列表都会返回以下内容:

-rw-r--r--  1 root    root   70 Nov  8 17:17 index.php

root 所有者,root 组,模式 644/uw & ar。 ([edit] 这不是应该的样子,因为文件不应该使用 root 创建——这个问题的部分原因)

运行 ps -auxww 我看到 Apache Web 服务器以名为 www-data 的用户身份运行,因此我可以假设 php 将以同一用户身份运行(大概这是一个将继承同一用户的子进程)。

如果我在所有文件上设置chmod 640 并将我自己(用户bob)设置为所有者,创建一个名为productionIDs 的组会不会是错误的 包含 www-data 用户,将文件组设置为 productionIDs?

在我看来,就最小特权而言,这会更安全;除了我和网络服务器之外还有谁?只有我需要写文件,而网络服务器只需要读取。没有其他人需要做任何事情。

我的设置无法处理有多位开发人员的情况,但我不确定这种情况应该是什么样子。

那么 640 所有者我,组 web 服务器组是否有任何风险?如果是这样,相应的目录 750 是否也安全?

如果不是,为什么没有更多人使用这个配置?

[更新] 根据试试看 理论,它有效。所以现在的问题包括“此配置不允许什么/此配置的缺点是什么”方面。

最佳答案

首先,您的文件绝对不应该归 root:root 所有。从所有所有权的用户名和通用组开始。

虽然网络服务器用户最初确实只需要对您的文件进行读取/执行访问,但在某些情况下,该用户可能需要对特定文件夹的写入访问权限以进行上传或应用程序日志等。

因此,我们的 PHP 应用程序的典型设置是文件为 644(640 也可以),文件夹为 755(750 也可以)。请注意,出于几个原因,我们让每个人都可以读取文件。首先,它允许其他用户在服务器上审核代码而无需修改它。其次,我们在生产托管服务器上只有开发人员用户,因此拥有帐户的任何人都已经具有查看所有代码的信任级别。这种情况在另一种情况下可能会有所不同。

关于您使用 web 服务器组作为组所有者的问题,我们通常不会这样做。虽然您当然可以使用该组,但我们希望保留所有系统安装的组,并为应用程序文件创建一个特定的组。然后我们只需将网络服务器用户添加到新组即可。

关于php - php 的标准生产设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13320800/

相关文章:

MySQL (MariaDB) while 循环

php - 将动态网址转换为静态网址

php 绑定(bind)结果

javascript - 上传base64字符串图像

php - 使用 htaccess 重定向 css( Assets )

apache - 在 htaccess 文件中写入 if 条件以进行 url 重写

PHP 应用程序连接外部 firebird 数据库

php - 使主题 wmpl 准备好 wpml-config

javascript - 如何使用 jquery 获取数据以 Bootstrap 3 模态形式

php - Apache2返回php源码