共享目录权限设计是什么
多人协作目录的典型需求是组内可写、新建文件自动继承正确的属组、成员之间不互相误删。用目录的属组继承位配合默认访问控制列表与合理的权限掩码,可以一次性把这三件事钉死,而不是每次出问题再补权限。
基本信息
| 场景 | 团队共享目录协作 |
|---|---|
| 方案 | 属组继承位、默认访问控制列表、合理的权限掩码 |
| 验证方式 | 用两个账号互测读写 |
| 补充手段 | 目录粘滞位限制互相删除 |
典型使用场景
- 新建共享目录:项目组共用的数据或代码目录
- 修正历史目录:既有目录权限混乱,需要一次性规整
- 新增成员:加入用户组后即可访问,不用逐个改目录
- 隔离其他组:用权限掩码确保其他组没有任何权限
- 防误删:需要成员不能删除他人文件时收窄删除权限
一次性配置
一次性配置
sudo groupadd devteam
sudo usermod -aG devteam alice
sudo usermod -aG devteam bob
sudo mkdir -p /data/shared
sudo chown root:devteam /data/shared
sudo chmod 2775 /data/shared # 属组继承位:新建对象继承 devteam 组
sudo setfacl -m d:g:devteam:rwx /data/shared # 默认访问控制列表
sudo setfacl -m d:o::- /data/shared验证
验证
sudo -u alice touch /data/shared/a.txt
ls -l /data/shared/a.txt # 属组应为 devteam
sudo -u bob touch /data/shared/b.txt # bob 应能写入
getfacl /data/shared | head -n 20 # 复核默认条目机制对照
| 机制 | 作用 | 注意 |
|---|---|---|
| 目录属组继承位 | 新建对象继承父目录属组 | 只影响属组,不改变权限位 |
| 默认访问控制列表 | 新条目自动带上指定权限 | 改动后对新建对象立即生效 |
| 权限掩码 | 控制新建对象的初始权限 | 与继承位配合使用 |
| 粘滞位 | 限制成员删除他人文件 | 常用于全员可写目录 |
| 用户组 | 成员统一授权入口 | 新增成员只需加入组 |
只给已有文件加访问控制列表而不加默认项,新建文件永远不带权限,问题会反复出现。
属组继承位只保证目录内新建对象继承属组,子目录被移出目录树后继承关系随之消失。
共享目录里成员可写就意味着可以删除彼此的文件,需要隔离时用粘滞位或收窄删除权限。