开发实战指南

chmod 与 umask:创建掩码和特殊权限位

按位计算创建权限,区分 rwx、sticky、setuid 与 ACL 的实际作用。

Nav Tools ·

读懂三组 rwx

常见三位八进制表示所有者、组、其他的读写执行权限,每个比特是权限,不是十进制分数。

先用 chmod 工具检查普通模式,再分析创建规则。

0640 → owner rw-, group r--, other ---

umask 是按位操作

不考虑默认 ACL 覆盖等影响时,创建模式与 umask 的补码按位与,不是算术相减。

程序常为文件请求 0666、目录请求 0777,同一掩码会得到不同结果。

umask 0027:
file:      0666 & ~0027 → 0640
directory: 0777 & ~0027 → 0750

特殊位与 rwx 分开

第四位八进制可以表示 setuid、setgid 和 sticky,效果取决于文件类型与系统规则。

本站三位计算器主要处理 rwx,不是完整特殊位或 ACL 模拟器。

Directory mode 1777 includes the sticky bit.
It is not equivalent to ordinary 0777.

检查实际访问控制层

ACL、挂载标志、父目录搜索权限与进程身份都会影响访问,umask 不会追溯修改旧文件。

排查 permission denied 时检查真实文件和运行身份,八进制转换正确不等于访问一定成功。

参考资料

← 开发实战指南