Linux项目资源隔离应以用户组为核心:为每个项目创建独立组(如proj-alpha),设setgid目录权限(2775),禁用world权限,辅以umask 002和ACL微调,实现干净可维护的隔离。

Linux 中的用户组(Group)是实现项目资源隔离最基础也最有效的机制之一。合理规划组结构、配合文件权限与 setgid 等特性,能让不同项目团队互不干扰,又无需过度依赖复杂工具。
明确项目组边界:一个项目一个主组
为每个项目创建独立的系统组(如 proj-alpha、proj-beta),避免混用通用组(如 users 或 developers)。组名应清晰体现归属,便于后续审计和维护。
- 使用
sudo groupadd proj-alpha创建组 - 将对应成员加入组:
sudo usermod -aG proj-alpha alice bob - 确认生效需用户重新登录或执行
newgrp proj-alpha
项目目录权限:启用 setgid + 统一组所有权
项目根目录设为该组所有,并开启 setgid 位,确保新创建的文件/子目录自动继承组身份,避免协作中因组丢失导致权限失效。
sudo mkdir /srv/proj-alphasudo chgrp proj-alpha /srv/proj-alpha-
sudo chmod 2775 /srv/proj-alpha(2表示 setgid,775允许组内读写执行) - 对已有内容批量修复:
find /srv/proj-alpha -type d -exec chmod g+s {} \;
限制跨项目访问:移除 world 权限,关闭其他组访问
默认的 other(即“其他人”)权限是泄漏源头。只要项目不需公开访问,就应彻底禁用 o 位;同时检查用户是否被意外加入无关项目组。
- 递归清理 world 权限:
find /srv/proj-alpha -type f -exec chmod o-rwx {} \; - 检查用户所属组:
groups alice,及时清理冗余组(sudo deluser alice proj-beta) - 敏感配置文件(如
.env、secrets.yml)额外设为640,仅属主+属组可读
辅助策略:结合 umask 与 ACL 应对特殊需求
全局 umask(如 002)可让新文件默认保留组写权限;若个别成员需差异化权限(如只读协作者),可用 setfacl 精确控制,不破坏主组逻辑。
- 在项目 shell 启动文件(如
/srv/proj-alpha/.bashrc)中设umask 002 - 添加只读成员:
setfacl -m u:charlie:r-X /srv/proj-alpha - ACL 可通过
getfacl /srv/proj-alpha查看,用setfacl -b清除避免残留
Group 不是万能锁,但它是 Linux 权限模型的支点。把组当项目容器来建、用 setgid 固化归属、靠 umask 和 ACL 做微调,就能在不引入额外服务的前提下,实现干净、可维护的资源隔离。










