我需要让我的网站用户上传图片 - 我可以在不将文件夹权限设置为777的情况下执行此操作

时间:2012-05-16 20:03:58

标签: php linux upload permissions

所以,基本上问题在于标题和更详细的情景:

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

3 个答案:

答案 0 :(得分:3)

您不需要777的目录权限。您需要确保该目录可由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服务器的文档根目录之外,因此它不可用于维特HTTP请求。

答案 1 :(得分:0)

你也可以使用像suphp之类的东西来运行php脚本作为用户,同时保留让文件夹不能被任何其他用户或组写入的能力。

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

答案 2 :(得分:0)

解决方案是使用FastCgi。

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

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