Apache-如何为除www-data之外的用户提供页面

Apache-如何为除www-data之外的用户提供页面

我有一个使用 apache 的 Web 服务器。当我对ls -l/var/www/project1/public_html执行时/var/www/project2/public_html,我看到它们分别由projectuser1和拥有projectuser2

在我查看过的其他一些服务器上,/var/www/project1/public_html和都/var/www/project2/public_html仅归 www-data 所有。我该如何将这些所有权更改为projectuser1和,projectuser2以便这些新用户可以登录他们的区域并管理自己的网站?

我创建了一个用户,projectuser1然后执行了chown -R projectuser1 /var/www/project1,但每次projectuser1向目录中添加新文件时,Apache 都会给出权限错误。如果我执行chown -R www-data /var/www/project1,那么一切都会恢复正常。

最终,我希望 apache 能够/var/www/project1projectuser1拥有该目录的目录提供服务。

答案1

对于您的问题有两个简单的答案:

  1. 您可以使用 将 www-data 组添加到每个项目用户usermod -aG www-data projectuser%,然后确保组权限至少为 g+rw chown -R g+rw /path/to/dir

  2. 有一个模块以不同的用户身份运行每个子进程,称为mpm-itk. 这允许您在单独的用户 ID 下运行每个 vhost。

答案2

让服务器 uid(www-data)拥有所服务的文件通常不是一个好主意。服务器应该能够提供其他用户拥有的文件。您只需确保文件上的权限位允许这样做即可。

因此,不要:

chown -R www-data /var/www/project1

这会改变文件的所有者。并且您不希望服务器成为这些文件的所有者,除非服务器应该写入这些文件。

你应该这样做:

chmod -R a+rX /var/www/project1

它将设置所有文件的读取权限和 /var/www/project1 下所有目录的执行权限。这将使任何人都可以读取这些文件。确保一切正常。如果其他用户不能读取这些文件,那么这个答案不适合您。

您还可以为 HTTP 服务器和允许为其上传文件的用户使用一个组。这会使事情变得有点复杂。

另一个问题是用户上传文件的权限。重要的是“umask”——设置说明哪些权限位应该对新创建的文件禁用。如何更改它取决于文件上传的方式(FTP、ssh 会话、scp 或其他方式)。现在文件可能使用 umask 0077 或 0007 上传,这意味着只有文件所有者(上传文件的人)及其 gid 才具有任何权限。

相关内容