使用chmod 777
多年来解决PHP写入权限问题,我想知道解决问题的正确方法。
我的服务器上有一个由user1
小组user1
拥有的网站。此网站上有一个名为uploads
的文件夹。
通常要使用PHP编写代码,我必须chmod
将此文件夹777
添加到chown
。但我明显意识到这是危险和不正确的,我想正确设置权限以最大限度地降低风险。
从我有限的知识,我看到两个选项,
uploads
apache
个文件夹,因此它归apache
所有。这样,我可以使用默认权限,apache
可以愉快地写入文件夹。user1
的{{1}}。然后,我向uploads
上的所有者和群组授予了写入权限,这应允许apache
写入uploads
?我的问题是,最好的方法是什么?它是上述之一还是完全不同的东西?
如果最佳解决方案是#1,那么user1
如何通过SFTP写入上传内容,因为该解决方案不会让它们出现?
答案 0 :(得分:1)
在我当前的公司中,我们将apache组设置为拥有该文件夹的组,因此您只需对该文件夹执行chmod 770
即可授予该特定组在该文件夹上执行有趣内容的权限。
但是,您仍然需要记住保护您的应用程序免受恶意用户的攻击,因为正在运行的PHP脚本如果充分不安全,仍会对文件夹造成损害。
答案 1 :(得分:1)
如果它是您自己的服务器,最好的方法是将文件夹设置为apache使用的组,例如在debian上使用chgrp www-data
(在其他系统上可能会有所不同)。您通常必须以root身份执行此操作,或者至少以访问自己和www-data组的用户身份执行此操作。如果您的用户可以访问www-data组,这可能是一个很酷的功能,因为它很容易阅读,也可能写/移动文件。
在这种情况下,使用770作为文件权限,并确保由php创建的文件获得此权限(在创建之前使用chmod或使用umask显式创建。请参阅php手册。)
如果您正在使用共享托管环境,我所知道的唯一干净解决方案是mod_suexec,但我不知道有很多支持它的托管服务商。如果这不可用,我只知道你知道的方式,使用777.通常,共享环境中的主目录在路径名中有一个较长的随机字符串,以便其他人找不到你的目录,因此无法访问你的文件。但这不是真正的安全..; - )
祝你好运 米歇尔