权限与 ACL 该不该用:先看它解决的问题是不是你的问题
umask 022 让新文件是 644、新目录是 755;改成 027 则同组只读
它擅长的是多用户共享目录;如果你只是Web 目录最小权限,用现成的东西更省事。
先说结论
权限设计的目标是「出事后能说清谁能碰」,不是把数字改到最严格
- 适合:多用户共享目录
- 不适合:CI 与部署账号隔离
- 学习成本:目录没有 x 位就进不去,只有 r 位时能看到文件名却读不到属性
- 最大收益:SUID 只对可执行文件生效,root 的 SUID 程序是提权的主要目标
- 最大风险:把网站目录设成 777 图省事,任意脚本都能写进 webshell
它到底解决什么
umask 022 让新文件是 644、新目录是 755;改成 027 则同组只读。
换句话说,它把「多用户共享目录」这件事从手工变成可重复的流程。这是它真正的价值,而不是功能列表的长度。
什么时候不该用
下面三种情况,用了反而更累:
把网站目录设成 777 图省事,任意脚本都能写进 webshell
只加 ACL 不设默认 ACL,新建文件又回到 644
用 chmod -R 755 递归改家目录,把 SSH 私钥变成全员可读
和替代方案比
ACL 的 mask 参与权限计算,chmod 改组权限时可能顺手把 mask 改掉。
| 方案 | 上手成本 | 适用规模 | 代价 |
|---|---|---|---|
| 权限与 ACL | 中等 | 中大型 | 需要维护 |
| 单纯用属主与组 | 低 | 小型 | 定制能力弱 |
| SELinux 强制访问控制 | 低 | 一次性任务 | 不可维护 |

这台工具的关键细节
几个决定长期体验的点:
- 目录没有 x 位就进不去,只有 r 位时能看到文件名却读不到属性
- SUID 只对可执行文件生效,root 的 SUID 程序是提权的主要目标
- Sticky 位(/tmp 的 1777)保证只有属主能删自己的文件
我的建议
权限设计的目标是「出事后能说清谁能碰」,不是把数字改到最严格。
先用两周,跑一个真实的小任务;两周后你还想用它,再谈长期。
还有几处容易忽略的
都是小地方,但出问题时往往就卡在这里。
- umask 022 让新文件是 644、新目录是 755;改成 027 则同组只读
- mv 跨文件系统会重建文件,属主和 ACL 可能变成执行者的
工具是解法,不是身份。
评论 (3)
备份没验证过等于没有,这条我认。
排查顺序那段直接抄进值班手册了。
「先看日志再猜」这句话值一篇文。
发表评论