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