umask 022 计算新建文件权限为644、目录为755,原理是默认文件权限666(无x位)和目录777分别与umask取反值755按位与运算,而非简单减法;内核强制过滤文件执行位,确保安全。

umask 022 是 Linux 中最典型的权限掩码值,它决定了新建文件和目录的默认权限。理解它的计算过程,关键在于抓住两个前提:文件默认无执行位(最大 666),目录默认全开(最大 777),而 umask 不是简单做减法,而是通过位运算“屏蔽”权限。
文件权限怎么算出 644?
新建普通文件时,内核设定的基准权限是 666(即 rw-rw-rw-),表示所有者、所属组、其他用户都具备读写权,但**不带执行位(x)**——这是硬性安全限制,无论 umask 设多少,文件都不会自动获得 x 权限。
umask 022 的八进制数值对应二进制为 000 010 010,取反后得到 111 101 101(即八进制 755)。再与文件默认权限 666(二进制 110 110 110)做按位与运算:
- 所有者位:110 & 111 = 110 → rw-
- 所属组位:110 & 101 = 100 → r--
- 其他用户位:110 & 101 = 100 → r--
结果是 110 100 100,即八进制 644,权限字符串为 rw-r--r--。
目录权限怎么算出 755?
目录默认最大权限是 777(rwxrwxrwx),因为执行位(x)对目录意味着“可进入”,是必要权限。
同样用 umask 022(取反得 755)与 777 做按位与:
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
- 所有者位:111 & 111 = 111 → rwx
- 所属组位:111 & 101 = 101 → r-x
- 其他用户位:111 & 101 = 101 → r-x
结果是 111 101 101,即八进制 755,权限字符串为 rwxr-xr-x。
为什么不能直接用“666 − 022”?
虽然 666 − 022 = 644、777 − 022 = 755 在这个例子中碰巧结果一致,但这只是巧合。umask 的本质是位掩码,不是算术减法。比如 umask 003 时:
- 按位运算:666 & ~003 = 666 & 774 = 664
- 若错误地算减法:666 − 003 = 663(即 rw-rw-rw- → rw-rw-rw- 减掉其他用户的执行位?但文件本就不该有 x)→ 结果错乱
真正起作用的是位操作:umask 中的每一位为 1,就强制把对应位置的权限清零。
umask 022 的实际表现
在终端执行以下命令可验证:
- umask → 显示当前值(通常为 0022)
- touch testfile → 创建文件,ls -l testfile 显示 -rw-r--r--
- mkdir testdir → 创建目录,ls -ld testdir 显示 drwxr-xr-x
这正是 umask 022 在系统层面生效的直观体现:既保障基本可用性(所有者可读写,目录可进入),又兼顾安全性(限制组和其他用户的写权限)。

















