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