1

所以,基本上问题就在标题和更详细的场景中:

我有一个用 PHP 编写的站点后端(在 linux 服务器 - centos 6 上),实际上我只有 2 个可以访问它的用户。他们需要能够通过某种形式上传图像。所以,我制作了简单的上传脚本,但无论如何(或者我不知道:/),上传只适用于设置为 777 的文件夹权限,所以我的问题是这样可以,还是我应该实现一些更好的'在这种情况下的常见做法?

4

3 回答 3

3

您不需要 777 的目录权限。您需要确定该目录可由 Web 服务器用户写入,这意味着使其归 Web 服务器用户所有或由其组设置为的另一个用户所有Web 服务器用户和组可写权限。

因此,例如,如果您的 Web 服务器用户是www-data(其他常见的可能性包括apache, httpd, www):

# Set ownership to the web server user
chown www-data uploads_dir
# and make it writable by the web server user
# could also be 755 (readable by others)
chmod 700 uploads_dir

或者,如果它必须由您的帐户用户拥有(例如在共享主机上),请将组设置为 Web 服务器用户:

chown youruser:www-data uploads_dir
# and make it group-writable:
chmod 775 uploads_dir

底线是,将 777(全局可写)权限分配给目录通常不是一个好主意。此外,uploads_dir理想情况下,应该将其放置在 Web 服务器的文档根目录之外,因此它不可用 vit HTTP 请求。

于 2012-05-16T20:06:23.720 回答
0

一个解决方案是使用 FastCgi。

这使得新文件和目录归同一个用户和组所有。

FastCgi 有性能损失,但您会获得一些额外的安全性,因为它限制了 php。如果您要托管具有多个用户的多个网站,这可能是一个好主意。

于 2012-10-11T20:03:56.977 回答
0

您还可以使用 suphp 之类的东西以用户身份运行 php 脚本,同时保留使文件夹不能被任何其他用户或组写入的能力。

不过,您需要对您的网络服务器进行管理访问。

于 2012-05-16T20:08:50.127 回答