3

背景 我最近在我有 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。([编辑]这不是应该的,因为不应该使用 root 创建文件 - 这个问题的部分原因)

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

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

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

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

640那么所有者我,组网络服务器组有什么风险吗?如果是这样,相应的目录750也安全吗?

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

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

4

1 回答 1

2

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

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

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

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

于 2012-11-10T09:56:54.097 回答