所以,基本上问题在于标题和更详细的情景:
我有一个用PHP编写的站点后端(在linux服务器上 - centos 6),我实际上只有2个用户可以访问它。他们需要能够通过某种形式上传图像。所以,我制作了简单的上传脚本,但不管是什么(或者无知要知道:/),上传仅适用于设置为777的文件夹权限,所以我的问题是这样可以,或者我应该实现更好的'在这种情况下的常见做法?
答案 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,因此您获得了一些额外的安全性。如果您托管多个用户的多个网站,这可能是一个好主意。