我有以下目录
$ ls -al
total 16
drwxr-xr-x 4 root root 4096 Oct 21 14:50 .
drwxr-xr-x 24 root root 4096 Oct 21 11:28 ..
drwxrwx--- 8 root mygroup 4096 Jan 12 2022 foobar
有没有办法配置foobar
的权限,以便创建的每个新文件默认属于mygroup
组?
答案1
设置setgid
目录的位应该完全符合您的要求(假设您的类 Unix 操作系统和/或文件系统支持它):
chmod g+s foobar
之后,权限应如下所示:
drwxrws--- 8 root mygroup 4096 Jan 12 2022 foobar
如果我没记错的话,Unix 家族树的 BSD 分支过去常常根据默认创建文件的目录组来设置任何新文件的组所有者。另一方面,基于 SystemV 的分支根据创建文件的进程的主要组设置组所有权。
在严格的旧 SysV 风格中,命令sg
和newgrp
是用户处理小组项目时的重要工具。但随后 SunOS 4.x 和 System V Release 4 允许系统管理员在目录上使用 setgid 位来选择在该目录中是否使用 BSD 或经典 SysV 组所有权分配样式。
这种“在目录上设置 gid”行为被 Unix 系列的多个操作系统采用,包括 Linux。但我认为有些操作系统没有采用它(也许在 BSD 方面,因为 SysV 分支的“可选行为”已经是他们的标准行为?)。文件系统类型的选择也可能会影响此功能是否可用。