配置用户的正确方法,以便与他们的组关联的任何文件/目录都是可编辑的

配置用户的正确方法,以便与他们的组关联的任何文件/目录都是可编辑的

使用 Ubuntu 16.04.2 LTS 作为 LAMP 堆栈。

我已经设置了一个 Web 项目(Magento),该项目在其整个代码库中具有预定义的工厂八进制权限。我需要向其他开发人员提供访问权限。该项目的位置是 /var/www/webproject,由 Apache 所有者/组 www-data 所有。

因此,我为属于 www-data 组的开发人员创建了一个用户(即 devuser),并授予他们 SSH 访问权限。目前,如果不使用 sudo,用户将无法创建或编辑 /var/www/webproject 中包含的文件,因为八进制权限不允许这样做。

概括:

/var/www/webproject permissions = 750
Files & directories within /var/www/webproject vary but...
user:group assignment for everything = www-data:www-data

问题:为了我的用户开发用户为了能够正确修改 /var/www/webproject 中包含的文件和目录,是否只需递归地将正确的组权限应用于其中包含的所有文件和目录?或者是否有更好的方法可以保留 Web 平台(Magento)的工厂权限,但仍然允许 www-data 组中的任何用户修改文件和目录?

答案1

没有办法允许一个组无条件地编辑他们无权写入的文件。

用户和名为的组www-data并不相同(每个用户都有一个组,其用户名只包含自己,这就是为什么有一个名为 的组www-data。如果你将其他人添加到该组中,他们将拥有该组的权限,而不是用户的权限)。

您必须应用于chmod g+w该组www-data应具有写入权限的文件。将文件放在 Web 目录 770 中通常是安全的。

答案2

如果您想保留文件夹的相同有效权限,可以使用 POSIX 访问控制列表来完成:

sudo su -
chown -R :web_developers /var/www/webproject
chmod -R 2770 /var/www/webproject

setfacl -R -m u:www-data:rwx /var/www/webproject
setfacl -R -m d:u:www-data:rwx /var/www/webproject

setfacl -R -m g:www-data:r-x /var/www/webproject
setfacl -R -m d:g:www-data:r-x /var/www/webproject

setfacl -R -m o:0 /var/www/webproject
setfacl -R -m d:o:0 /var/www/webproject

从 中删除您的 Web 开发人员www-data他不是网络服务器。人们应该始终属于与他们所做的工作相对应的组,然后为这些组授予适当的权限。因此,他是你的一员web_developers

最终结果:

  1. www-data对于现有文件和将来创建的文件始终具有用户权限rwx和组权限,模仿原始文件r-x750
  2. 该组的任何成员web_developers都可以完全rwx访问所有当前文件以及将来创建的文件
  3. 其他人没有任何权限(除了root- 和分机组sudo

另一双鞋:

  • 文件已创建组中的用户web_developers将归他们所有(尽管www-data仍具有用户rwx和组r-x权限)

相关内容