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