在我的Web服务器上设置权限时遇到一些问题

我的设置如下:

Multiple users coding for the one website Each user has their own username/group Websites are located in /usr/local/ourcompany/websites/sitename/* 

./websites/me:ourcompany拥有me:ourcompany ./websites/ 。 我设置了这个文件夹,所有的子文件夹都可以被组写入。 chmod g+ws websites

这需要处理大部分权限问题。 它允许我们的ourcompany组中的每个人编辑网站文件。 问题是通过PHP上传文件时。

PHP以www-dataforms运行。 这似乎打破了setuid组的可写设置。

我正在运行Nginx,如果这是相关的…

有小费吗?

我会这样做:

1-保持工作权限,因为你有它。

2-通过PHP将file upload到不同的(临时)目录。 这个临时目录应该可以由www-data用户写入。

3-编写一个简单的脚本,将上传的文件从临时目录复制/移动到所需path/usr/local/ourcompany/websites/sitename/* 。 然后,您可以chown / chmod新文件,以确保在上传更多文件时保留权限。 这个脚本将以root身份执行,正如下一点所述。

4-将www-data用户添加到sudoers文件。 使用sudo visudo来编辑它。 因此,www-data用户将以超级用户的身份执行shell脚本(在第3点创build),而不需要密码。 您需要在sudoers文件中命名该脚本以将此权限限制在此脚本的shell脚本中。

您的PHP上传脚本可能是一个非常具体的,如/upload/up_script.php

在这种情况下,我会在nginx的configuration文件中创build一个特定的位置,然后用一个由“ourcompany”(而不是www-data)成员运行的php5-cgi进程执行这些查询。 剩下的代码可以(应该)仍然由对网站文件没有写权限的用户执行。