2010-12-07 120 views
4

经过多年的使用chmod 777解决PHP写权限的疾苦,我想知道解决问题的正确方法。Linux可以写入文件夹的最佳用户/权限设置是什么?

我在user1user1的服务器上拥有我的服务器上的网站。本网站有一个名为uploads的文件夹。

通常要用PHP写作才能工作,我必须将chmod这个文件夹改为777。但我明显认识到这是危险和不正确的,我想正确设置权限以最大限度地降低风险。

从我有限的知识,我看到两个选项,

  1. chownuploads文件夹,以便它是由apache拥有。这样,我就可以使用默认权限并且apache可以愉快地写入该文件夹。
  2. 我添加一个第二组的user1apache。后来我给写权限的所有者和组上uploads,这应该允许apacheuploads

我的问题是,什么是最好的方法?它是上述之一还是完全不同的东西?

如果最好的解决办法是#1,怎么能user1也写入了上传SFTP作为解决方案不会让他们?

回答

1

在我当前的公司,我们将apache组设置为拥有该文件夹的组,因此您只需在该文件夹上执行chmod 770即可为该特定组授予对该文件夹执行有趣操作的权限。

但是你还是要记住,保护您的应用程序免受恶意用户,作为PHP脚本正在运行,如果足够安全感,还可以做的文件夹损坏。

+0

所以你说我的第二个选择可能是最好的?将`apache`添加到第二组`user1`并更改文件夹的权限以便所有者和组可以写入? – 2010-12-07 16:08:18

1

如果这是你自己的服务器,最好的办法是到该文件夹​​设置为组Apache使用,例如与debian上的chgrp www-data(在其他系统上可能不同)。您通常必须以root用户身份执行此操作,或者至少需要以访问自己的和www数据组的用户身份执行此操作。如果你的用户可以访问www数据组,这对你来说可能是一个很酷的功能,因为它很容易阅读,也许写/移动文件。 在这种情况下,使用770作为文件权限,并确保php创建的文件获得此权限(在创建之前使用chmod或umask创建后显式创建,请参阅php手册。)

如果您正在一个共享的主机环境,我知道的唯一干净的解决方案是mod_suexec,但我不知道许多支持它的主机。如果这不可用,我只知道你使用777的方式。通常,共享环境中的主目录在路径名中有一个较长的随机字符串,以便其他人不应该找到你的目录,因此不能访问你的文件。但是,这不是真正的安全.. ;-)

好运 米歇尔

相关问题