我有一个文件夹层次结构,我想更改组的所有权, 包括任何后续的文件/文件夹添加 。 我打算使用chmod g + s,但我不确定它是否适用于已经创build的文件夹,以及如何使用组名来运行。
(很轻微地)展开现有的答案,您可能会想要recursion地设置任何现有文件和目录的所有权以及任何现有目录上的setgid位。 也就是说,如果你的层次结构已经有了现有的文件和目录。 如果没有,则不需要担心recursion部分。
像这样的东西:
find /path/to/hierarchy -type d | xargs chmod g+s chgrp -R groupname /path/to/hierarchy
你就定了 现在,如果你想确保复制或移动到层次结构中的文件/目录的某些rwx权限,这有点棘手。 您可能需要使用默认的ACL,但Linux ACL实现(基于一个死亡的POSIX提议,我相信)并不总是按照人们所期望的那样工作。
使用rthomson的答案/命令:
find /path/to/hierarchy -type d | xargs chmod g+s
当任何子目录中有空格时,它给了我一些问题:相反,我发现使用find -exec
选项更容易,即:
find /path/to/hierarchy -type d -exec chmod g+s {} \;
您可以使用
chgrp -R文件夹
这将会在文件夹,子文件夹以及它们各自的文件中引人注目地改变组主人
g + s增加了“setgid”位,它基本上只影响创build新文件的默认行为。 (简而言之,创build的任何新文件/目录都会将该组设置为父文件夹的组)
你可以简单地
chgrp group-name some_directory/* -R
将“some_directory”下的文件组recursion地更改为“group-name”(-R)