2

我有一个 CodeIgniter 应用程序在 Ubuntu 11.10 上使用 PHP 5.3 在 Apache 2.2 上运行。如果这很重要,我也在运行 PHP5-APC。所以应用程序www-data:www-data按照默认的 Apache2 安装运行。

我正在试图弄清楚将我的文件权限设置为什么。SO上的许多线程似乎更喜欢755目录和644文件。有一个目录必须允许文件上传到它。

目前我的部署脚本是这样的:

  • 擦除旧网站
  • 复制新网站
  • chmod -R 000在新网站上
  • chmod所有目录到500
  • chmod所有文件到400
  • chmod 700在上传目录

一切似乎都很好。我可以上传文件等等..所以,我不明白为什么人们建议644文件 - 我有一个包含密码和 API 密钥的配置文件 - 为什么我希望“其他人”能够读取它?

我有什么误解?

4

3 回答 3

3

好吧,主要644是当您拥有/var/www/site1.com不同的用户和组集时,权限才适用www-data,因为这样644将允许其他组和用户从该文件中读取,但将允许读取写入文件的所有者。

默认情况下,上传文件和运行 apache 进程的用户是www-data我老实说,如果它对你有用并且你没有问题,那就太好了,因为这意味着更多的安全性。

更新

只是一个小的安全问题,它www-data已成为http服务运行其进程的非常常见的用户和组。我强烈建议每个站点/应用程序都有自己的用户和组。

于 2012-08-13T10:18:04.053 回答
2

*44 和 *55 仅表示文件/文件夹可以被其他人读取。

如果说,您将文件上传到 Web 服务器,但由于某种原因它们归他人所有(例如您自己的登录帐户),那么 apache 仍然可以读取它们,这将是一件好事。或者,如果您需要多个组才能访问文件。

如果您知道您正在以 apache 用户的身份上传文件,并且 apache(或在 www-data 下运行的任何程序)是您能够读取/写入文件的全部,那么 *00 完全没问题。甚至可以说它更安全一些。

对于不知道自己在 linux 命令行上做什么的人来说,644 和 755 是“方便”和“安全”之间的正确组合(尽管完全值得商榷),所以它们是快速推荐的使固定。

于 2012-08-13T10:19:35.897 回答
2

在进行共享主机时,您拥有通过 FTP 上传 php 文件的用户帐户。因此,当用户“joe”上传他的 .php 文件时,它归“joe”所有,当 Apache 需要读取它来执行脚本时,它不能。用户通常在“用户”组中,因此即使授予该组权限也不够。这就是为什么你需要赋予每个人权限,以便用户“www-data”可以读取“joe”上传的文件。

如果您运行自己的服务器,当然,您拥有完全的控制权,这些都不重要。

于 2012-08-13T10:24:27.377 回答