文件
0644 · rw-r--r--
实际移除: 0022 · ----w--w-
查看位运算步骤
- 请求位
- 0666 · 110 110 110
- 掩码:将清除的位
- 0022 · 000 010 010
- 允许位(~mask & 0777)
- 0755 · 111 101 101
- 结果位
- 0644 · 110 100 100
结果位必须同时满足:已请求,且未被掩码屏蔽。
0666 & (~0022 & 0777) = 0644
Linux / Shell
输入掩码及程序请求的创建权限,同时比较文件与目录结果,并展开逐位计算过程。
0644 · rw-r--r--
实际移除: 0022 · ----w--w-
结果位必须同时满足:已请求,且未被掩码屏蔽。
0666 & (~0022 & 0777) = 0644
0755 · rwxr-xr-x
实际移除: 0022 · ----w--w-
结果位必须同时满足:已请求,且未被掩码屏蔽。
0777 & (~0022 & 0777) = 0755
所有计算均在浏览器中进行,不上传或保存输入。
符号掩码表示允许位:u=rwx,g=rx,o=rx 等价于 022,三类用户必须全部声明。
仅按给定请求权限计算,不模拟默认 ACL 或创建后的权限修改。
权限计算完成。
umask 计算器适合排查同一进程新建的文件和目录为何权限不同。先保留常见的 0666 与 0777 请求值,再改成应用实际传入的权限,才能解释你看到的差异。
掩码只能清除请求中已有的位,不能添加权限。文件通常不请求执行位,但这是创建程序的选择,并不意味着所有程序都只能请求 0666。
umask 计算器把文件与目录的请求权限分开显示。选择 111 示例时,文件请求 666,结果仍为 666;目录请求 777,则失去执行位。对照这两个结果,就能看出普通减法为什么不可靠。
umask 计算器将掩码允许的位和程序请求的位分开。把文件请求改为 777,执行位可以保留;请求仍为 666 时则不会凭空出现。结果取决于两者交集。
在示例选择中选 111,再点击载入示例查看预览。应用后文件结果保持 0666;预览会列出改变的字段数,撤销可以一起恢复输入和原结果。
掩码栏接受完整的 umask -S 形式,例如 u=rwx,g=rx,o=rx。文件和目录请求栏接受 rw-rw-rw- 这样的九位符号权限。前者表示允许位,后者表示请求位。
关闭自动计算后,可一次修改多个字段。修改会立即禁用导出;点击计算或按 Ctrl/Cmd+Enter 后更新。展开位运算步骤,检查每个操作数,再复制结果。
文件默认权限按 0666 请求计算,目录默认按 0777。两项都可以修改:创建可执行文件的程序可能请求 0777,创建私密文件的程序可能只请求 0600。
八进制掩码表示要清除的位;完整 u=、g=、o= 形式表示允许通过的符号权限。输出统一为四位八进制和九位 rwx,按所有者、组、其他用户分组。
步骤展示请求位、掩码位、低九位取反和按位与结果,还单独列出实际移除的权限。如果请求中本来没有某个位,掩码中的对应位不会造成额外变化。
只有请求中存在的位才会被清除。对于 0666 请求,026 和 027 都得到 0640,因为两种掩码不同的那个执行位本来就不存在。正确算法是与掩码取反值做按位与,不是普通减法。
常用新建文件命令请求 0666,其中没有执行位,umask 不能补上它。但创建可执行文件的程序可以请求 0777;在文件请求栏输入这个值,就能看到执行位是否被保留。
本工具中 0022 与 022 等价。前导 0 不表示第四类用户;第四位只允许为 0,1022 等包含特殊位的输入会报错,不会悄悄截掉高位。
它显示的是掩码允许保留的权限。u=rwx,g=rx,o=rx 对应允许值 0755、掩码 0022;这不代表请求 0666 的文件也会获得执行位。
在 Linux 中,父目录默认 ACL 会被继承,再由请求权限进一步限制,此时不走普通 umask 计算。本工具没有 ACL 输入,因此结果只适用于普通掩码路径。
权限结果不符合预期?