对于可执行文件,g+s
覆盖可执行文件将作为其运行的组 ID(它通常是从父级继承的)。
$ cp `which id` id-test
$ ./id-test
uid=1001(user1) gid=1001(group1) groups=1001(group1),2001(project1)
$ chgrp project1 id-test
$ chmod g+s 身份测试
$ ./id-test
uid=1001(user1) gid=1001(group1) egid=2001(project1) groups=1001(group1),2001(project1)
(egid 是“有效组 id”——通常与 gid、“组 id”相同,但这里不同。)
对于目录,g+s
覆盖新文件和目录将具有的组 id(通常从创建者继承)。
$ mkdir 项目
$ chgrp project1 文件1
$ 掩码
0022
$ 触摸项目/文件1
$ ls -l 项目/文件1
-rw-r--r-- 1 用户 1 组 1 0 文件 1
$ chmod g+s 项目
$ 触摸项目/文件2
$ ls -l 项目/文件2
-rw-r--r-- 1 用户 1 项目 1 0 文件 2
您可能仍然需要摆弄以umask
获得最佳效果;至少与0007
共享写作所需的许可一样,并且至少与0027
共享阅读所需的许可一样。
$ umask 0077
$ 触摸项目/文件3
$ ls -l 项目/文件3
-rw------- 1 用户 1 项目 1 0 文件 3
$ umask 0027
$ 触摸项目/文件4
$ ls -l 项目/文件4
-rw-r----- 1 用户 1 项目 1 0 文件 4
$ umask 0007
$触摸项目1/文件5
$ ls -l 项目1/文件5
-rw-rw---- 1 用户 1 项目 1 0 文件 5