如何以完全权限将文件夹绑定到多个用户的主目录中

如何以完全权限将文件夹绑定到多个用户的主目录中

我有一个 Web 服务器,用于提供文件/var/www/vhosts/mysite。我希望挂载此vhosts文件夹,/home/myuser/vhosts以便用户可以登录、编辑任何文件并注销。问题是挂载不会忽略该文件夹中的权限。某些文件可能是由 www-data 或其他用户创建的。如果它们是由其他用户创建的,那么 www-data 也难以读取/修改它们。

到目前为止,我尝试过使用 fstab 创建绑定挂载。该文件夹已成功挂载到用户的主目录中,并且使用 acl,我能够通过为文件夹分配一个组并将rwxwww-data 和用户添加到该组中来允许他们写入该文件夹。我想知道是否有一种方法可以绑定挂载文件夹,但不影响权限,以便 www-data 始终可以毫无问题地读取/写入/执行它,同时还允许用户拥有完全权限。

答案1

您要先将这些用户添加到 www-data 组。然后预期的方法是使用chmod g+s /home/user/vhost。这将在此文件夹上设置,SGID这意味着它的组将用于新文件。不幸的是,这对子目录没有帮助。为了使它们保持最新,您需要在目录树修改后定期运行此命令:find /home/user/vhost -type d -exec chmod g+s {} \;。这将搜索所有子目录并启用SGID。最烦人的部分是,在添加子目录之前需要对所有父目录执行此操作,这意味着有时您在进行更改时需要运行几次,如果您忘记这样做,那么您无论如何都需要执行 chown 命令:find /home/user/vhost -type d -exec chown user:www-data {} \;

这就是我说要做的,但我发现整个计划对我来说很烦人。实际上,我所做的是在具有完全不相关权限的开发服务器上工作。在我进行更改后,我有一个脚本可以同步到生产服务器并每次设置所有所有权和权限,以确保一切始终正确。这种方法节省了很多时间,因为我永远不需要担心权限为什么会失效。我只需运行脚本,一切就会神奇地再次工作。

相关内容