文件权限与 umask¶
结论¶
- 数字位:
rwx= 4/2/1,三组依次是 属主 / 属组 / 其他 - 新文件默认权限是
666 & ~umask,新目录是777 & ~umask - 常见
umask 022→ 文件644、目录755;要团队协作可用umask 002→664/775
查看¶
三个特殊位¶
| 位 | 数字 | 作用 | 典型用途 |
|---|---|---|---|
| setuid | 4000 | 以文件属主身份执行 | /usr/bin/passwd |
| setgid | 2000 | 目录内新建文件继承目录属组 | 团队共享目录 |
| sticky | 1000 | 只有属主能删除自己的文件 | /tmp |
共享目录的正确做法¶
sudo mkdir /srv/share
sudo chgrp devteam /srv/share
sudo chmod 2775 /srv/share # setgid + 组可写
sudo chmod g+s /srv/share # 同上,显式写法
这样组内任何人新建的文件都自动属于 devteam,不用每次 chgrp。
别对代码目录用 777
777 意味着任何进程都能改写你的脚本,配合定时任务就是提权入口。需要让服务用户读写时,用 chown 服务用户:组 + 664/775。
排错顺序¶
id确认自己是哪个用户、在哪些组namei -l /path/to/file逐级看目录权限(目录缺x会导致文件读不了)getfacl看有没有 ACL 覆盖- 最后才怀疑 SELinux / AppArmor