ACL权限中项目目录如何利用默认组ACL实现研发与UI设计在同目录协同且不越权

作者:袖梨 2026-08-10

关键在于默认ACL+合理分组+SGID+umask四者配合:1.建devgrp/uigrp组并加入成员,项目目录属组projectteam且设SGID;2.用默认ACL为不同路径设定组权限,如devgrp:rwx、uigrp:rwX于/assets等,禁uigrp访问/config;3.统一设umask 002确保ACL生效;4.用大写X区分目录与文件执行权限。

要让研发和UI设计人员在同一个项目目录下协同工作又不越权,关键不是靠“默认组”这个模糊概念,而是用默认ACL(default ACL)+ 合理分组 + SGID + umask四者配合。Linux里没有“默认组权限”这种独立机制,所谓“默认组访问”,实际是通过默认ACL为指定组(如devgrp、uigrp)设定规则,并确保新文件自动继承。

1. 先建好角色组并统一归属

避免混用个人用户直接授权,先按职能拆分两个组:

  1. 创建组:sudo groupadd devgrp && sudo groupadd uigrp
  2. 把对应成员加进去:sudo usermod -aG devgrp alice,bob && sudo usermod -aG uigrp carol,dan
  3. 设项目目录属组为通用协作组(比如projectteam),并启用SGID:sudo chown :projectteam /project && sudo chmod g+s /project

2. 用默认ACL区分写入范围

默认ACL决定“谁能在新建内容上做什么”。对整个/project目录设置两套默认规则:

  1. 研发组需要改代码、脚本、配置:setfacl -d -m g:devgrp:rwx /project
  2. UI组只改静态资源(图片、CSS、Figma导出文件等),禁止碰逻辑层:setfacl -d -m g:uigrp:rwX /project/assets /project/public/css /project/public/images
  3. 同时收紧敏感路径(如/config、/scripts):setfacl -m g:uigrp:--- /project/config /project/scripts

3. 控制新建文件的实际权限边界

即使设了默认ACL,用户本地umask仍会过滤权限。例如umask=022时,rwx会被砍成r-x,导致UI组无法写入图片。所以必须统一:

  1. 所有协作用户shell中设umask 002(写入/etc/profile.d/acl-work.sh
  2. 验证效果:切换到carol用户,在/project/assets下执行touch logo.png && mkdir icons,再运行getfacl logo.png,应看到g:uigrp:rw-条目

4. 目录与文件权限要分开看

ACL里的X(大写)很关键——它只给目录和已有执行位的文件加x,避免HTML被误设为可执行:

  1. 对代码目录用rwx(研发需执行脚本)
  2. 对静态资源目录用rwX(UI上传图片不需要x,但目录本身必须有x才能进入)
  3. 对纯文本配置文件,可额外用setfacl -m g:uigrp:---彻底锁死

相关文章

精彩推荐