我有以下目录
$ 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
组?
我有以下目录
$ 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
组?
为目录设置
setgid
位应该完全符合您的要求(假设您的类 Unix 操作系统和/或文件系统支持它):之后,权限应如下所示:
如果我没记错我的 Unix 历史,Unix 家族树的 BSD 分支用于根据默认创建文件的目录的组来设置任何新文件的组所有者。另一方面,基于 SystemV 的分支根据创建文件的进程的主要组来设置组所有权。
在严格的旧 SysV 风格中,当用户处理组项目时,命令
sg
和newgrp
将是重要的工具。但是随后 SunOS 4.x 和 System V Release 4 允许系统管理员使用目录上的 setgid 位来选择 BSD 或经典 SysV 组所有权分配样式是否在该目录中有效。这种“setgid on directory”行为被 Unix 系列的几个操作系统采用,包括 Linux。但我认为有些操作系统没有采用它(也许在 BSD 方面,因为 SysV 分支的“可选行为”已经是他们的标准行为?)。文件系统类型的选择也可能影响此功能是否可用。