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

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

我的设置如下:

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。我将此文件夹及其所有子文件夹设置为可由组写入。chmod g+ws websites

这解决了大部分权限问题。它允许ourcompany组中的每个人编辑网站文件。问题是通过 PHP 上传文件时出现的。

PHP 以 身份运行www-data。这似乎破坏了 setuid 组可写设置。

我正在运行 Nginx,如果相关的话......

有小费吗?

答案1

我会这样做:

1-保留您拥有的工作权限。

2- 通过 PHP 将文件上传到不同的(临时)目录。此临时目录应可由 www-data 用户写入。

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

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

答案2

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

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

相关内容