安全共享目录的核心是组织人、明确归属、自动继承,而非开放777权限;需建专用业务组、设SGID目录(2770)、调umask为002,并按需加粘滞位或ACL授权。

安全共享目录给多个开发人员,核心不是开放权限,而是组织人、明确归属、自动继承。777 是权限失控的起点,不是协作的解法。
建专用组,把人“编队”管理
别用 wheel 或 users 这类通用组凑合,为项目单独建一个有业务含义的组,比如 dev-backend 或 proj-ai-train:
- 创建组:
sudo groupadd dev-backend - 把开发人员加进去(不覆盖原有组):
sudo usermod -aG dev-backend alice bob charlie - 验证是否生效:
id alice或groups bob,确认输出含 dev-backend
设目录属组 + SGID,让文件“自动认亲”
目录所有权和权限要一步到位,关键在 2770(不是 777):
- 创建目录并设属组:
sudo mkdir /srv/backend && sudo chgrp dev-backend /srv/backend - 赋权限(含 SGID):
sudo chmod 2770 /srv/backend - 检查结果:
ls -ld /srv/backend应显示drwxrws---(第4位是小写 s,表示 SGID 生效)
此后,只要用户在该目录下新建文件或子目录,系统就自动把属组设为 dev-backend,无需手动 chgrp。
调好 umask,确保新建文件带组写权限
即使目录开了 g+w,若用户 umask 是 022,新建文件仍只有 644(组无写权)。需统一设为 002:
- 在
/etc/profile.d/dev-env.sh中添加:umask 002 - 或开发者个人 shell 配置(如
~/.bashrc)里加同一行 - 新会话生效后,
touch test.txt创建的文件权限应为-rw-rw-r--
按需加固:防误删与个别授权
团队协作中常见两个延伸需求:
- 防止非属主删除他人文件 → 加粘滞位:
sudo chmod +t /srv/backend,权限变为drwxrws--T(末位大写 T) - 外包成员只需读取 → 用 ACL 单独授权:
sudo setfacl -m u:vendor:r-x /srv/backend
这样既守住底线安全,又保留灵活空间,不依赖 777,也不靠反复手工修权限。


















