Web 服务器用户和组

Web 服务器用户和组

我已经建立了一个网络服务器,它将为多个客户托管网站,每个客户都有自己的用户,并且他们的网站文件将存在于其中/var/www

我们通过名为 DeployHQ 的服务部署代码,该服务使用客户端用户名通过 SSH 连接,因此当文件被推送到服务器时,它们是使用该客户端用户名和组创建的。

我遇到的问题是 Web 服务器用户www-data无法更新文件,例如此.htaccess文件:

 4 -rw-rw-r--  1 client_user client_user   945 Oct 30 12:07 .htaccess

我可以将文件组更改为www-data,但是不会以这种方式创建部署的新文件,因此这不是一个长期的解决方案。

考虑到我希望每个客户端都有一个用户,有人可以推荐一种方法来允许www-data客户端用户可以做任何事情吗?

我刚刚读了一些有关设置的内容Set-Group-ID,这是我应该考虑的吗?

非常感谢

答案1

这可以通过在每个用户的目录上设置 SGID 位来实现。例如:

tom@tomh:~▶ mkdir testdir # Just an example dir
tom@tomh:~▶ sudo chgrp www-data testdir # Change the group
tom@tomh:~▶ touch testdir/before 
tom@tomh:~▶ ls -la testdir/before # At the moment files have the default group 'tom'
-rw-rw-r-- 1 tom tom 0 Nov  5 11:04 testdir/before
tom@tomh:~▶ sudo chmod g+s testdir/ # Set the SGID bit on the dir
tom@tomh:~▶ touch testdir/after
tom@tomh:~▶ ls -la testdir/after # Files now have the same group as the dir
-rw-rw-r-- 1 tom www-data 0 Nov  5 11:04 testdir/after

请记住确保用户的 umask 也为文件设置了正确的组权限!

相关内容