为开发团队设置协作权限
注意:请确保你已先完成步骤 2,该步骤已将所有项目目录(包括 src)的所有权设置为 dev_lead:developers。本步骤建立在这些所有权设置之上。
开发团队需要在 ~/project/phoenix_project/src 目录内进行高效协作。为了确保协作顺畅,在 src 内部创建的任何新文件或目录都应自动属于 developers 组,而不是创建该文件的用户的主组。
任务
- 在
~/project/phoenix_project/src 目录上设置一个特殊权限,强制在该目录下创建的所有新文件和子目录自动继承 src 目录本身的所有组(即 developers)。
要求
- 解决方案必须确保
~/project/phoenix_project/src 中的新文件自动归 developers 组所有。
- 你必须使用
chmod 命令来设置此特殊权限。
- 你可能需要使用
sudo 来设置归其他用户所有的目录权限。
提示
- 这种特殊权限被称为「设置组 ID」(set group ID)或
setgid 位。
- 你可以使用符号表示法 (
g+s) 或数字表示法来应用 setgid 位。
- 在数字表示法中,
setgid 位的值为 2。它被放置在标准三位权限数字之前(例如 2770)。
示例
完成此任务后,你应该看到类似以下的内容:
$ ls -ld ~/project/phoenix_project/src/
drwxrws--- 2 dev_lead developers 6 Sep 3 16:00 ~/project/phoenix_project/src/
用户组执行位上的 s 表示已设置 setgid 位且该组拥有执行权限。现在当你创建一个新文件时:
$ touch ~/project/phoenix_project/src/new_file.txt
$ ls -l ~/project/phoenix_project/src/new_file.txt
-rw-rw---- 1 dev_lead developers 0 Sep 3 16:05 new_file.txt
请注意,即使你以不同的用户身份登录,新文件也会自动属于 developers 组。这确保了开发团队内部的协作工作,同时保持了正确的组所有权。
权限显示:
- 所有者 (
dev_lead) 拥有读取和写入权限
- 用户组 (
developers) 拥有读取和写入权限
- 其他人没有任何权限
- 用户组执行位上的小写
s 表示已设置 setgid 位且该组拥有执行权限