我正在使用 Linux Mint 18。假设有几个共享目录。每个目录都属于一个特定的组。其中一个是 foo,必须由 Pippo 和 Pluto 共享,所以我创建了组 foo 并且我已经添加了 Pippo 和 Pluto。在 foo 及其子目录中创建的所有内容都必须可供 Pippo 和 Pluto 访问,无论创建者是 Pippo 还是 Pluto。问题是,当创建新文件或目录时,内容的 id 组设置为 Pluto 或 Pippo(取决于内容的创建者),而不是 foo,即使我更改了 foo 文件夹的组并且其子目录和文件到 foo.
给 foo 组添加新内容的方法是什么?
编辑
在 foo 文件夹之外,由 Pippo 或 Pluto 创建的每个文件都必须将组分别设置为 Pippo 和 Pluto。
答案1
默认行为(正如您所发现的)是为文件提供与所有者相同的 UID 和 GID。如果你想覆盖它,你需要设置设置gid位在存储文件的目录上。这不会影响已经存在的文件和目录,因此您还需要修复下面每个目录的权限(正如 @cas 提到的,您可能希望允许该foo
组的成员修改彼此的工作(并且查看目录),因此您也需要添加这些权限。)
要解决此问题(假设您已经创建了目录结构),请从结构的根目录运行以下命令:
find . -type d -exec chmod g=rwsX {} \;
chgrp -R foo *
我过去find
只选择目录,就像在文件上设置 setuid/setgid 位一样有不同的意义。当然,如果您要创建新目录,则只需运行chmod
/chgrp
命令而不使用find
.
编辑:修复了chmod
权限。
答案2
您可以运行 cron 作业来递归地将内容所有者更改为 foo 组。