我有一个使用Apache的networking服务器。 当我在/var/www/project1/public_html和/var/www/project2/public_html上执行ls -l时,我看到它们分别由projectuser1和/var/www/project2/public_html拥有。
在我看过的其他一些服务器上, /var/www/project1/public_html和/var/www/project2/public_html仅由www-data拥有。 我将如何将这些所有权更改为projectuser1和projectuser2 ,以便这些新用户可以login到他们的区域并pipe理他们自己的网站?
我创build了一个用户projectuser1然后做了一个chown -R projectuser1 /var/www/project1 ,但是任何时候projectuser1向这个目录添加一个新文件,Apache给了我一个权限错误。 如果做一个chown -R www-data /var/www/project1 ,那么一切都可以再次运行。
最终,我希望apache通过拥有它的projectuser1来提供/var/www/project1目录。
你的问题有两个简单的答案:
您可以使用usermod -aG www-data projectuser%将www-data组添加到每个项目用户,然后使用chown -R g+rw /path/to/dir确保组权限至less为g + rw。
有一个模块以不同的用户mpm-itk运行每个subprocess。 这使您可以在单独的用户标识下运行每个虚拟主机。
由服务器uid(www-data)拥有服务的文件通常是一个坏主意。 服务器应该能够服务器其他用户拥有的文件。 您只需确保文件上的权限位允许。
所以,而不是:
chown -R www-data /var/www/project1
这改变了文件的所有者。 而且你不希望服务器是这些文件的所有者,除非服务器应该写这些文件。
你应该这样做:
chmod -R a+rX /var/www/project1
这将设置所有文件的读取权限,并执行/ var / www / project1下所有目录的权限。 这将使任何人都可以读取文件。 确保它没问题。 如果其他用户不应该能够读取这些文件,那么这个答案是不适合你的。
您也可以为HTTP服务器和允许上传文件的用户使用一个组。 这会让事情变得更复杂一些。
另一个问题是用户上传文件的权限。 重要的事情是'umask' – 设置说明为新创build的文件禁用哪些权限位。 如何改变这取决于如何上传文件(FTP,SSH会话,SCP,其他)。 这些文件现在可能上传了umask 0077或0007,这意味着只有文件所有者(上传文件的所有者)和他的gid才有权限。