linux umask详解

一、umask 是什么?

核心定义

umask = 权限"遮罩"(mask),用于从默认权限中"减掉"权限

不是"设置权限",而是:

❗"限制默认权限能给多少"


二、Linux 默认权限规则(非常重要)

Linux 新建文件/目录有两个"基准值":

1)文件默认权限

复制代码
666

即:

复制代码
rw-rw-rw-

(没有执行权限)


2)目录默认权限

复制代码
777

即:

复制代码
rwxrwxrwx

三、umask 的作用机制(本质)

最终权限计算公式:

复制代码
最终权限 = 默认权限 - umask

更准确说:

复制代码
bitwise:  AND NOT

四、例子:umask 002

1)拆解 umask

复制代码
002

三位含义:

复制代码
0  → owner
0  → group
2  → others

2)重点:2 是什么?

复制代码
2 = write(写权限)

权限映射:

复制代码
0 = ---
1 = --x
2 = -w-
3 = -wx
4 = r--
5 = r-x
6 = rw-
7 = rwx

五、计算过程(非常关键)

1)文件场景

默认:

复制代码
666 = rw-rw-rw-

umask:

复制代码
002 = --------w-

计算:

复制代码
666
- 002
= 664

最终:

复制代码
rw-rw-r--

2)目录场景

默认:

复制代码
777 = rwxrwxrwx

umask:

复制代码
002

计算:

复制代码
777
- 002
= 775

最终:

复制代码
rwxrwxr-x

六、umask 002 的真实含义(工程角度)

核心结论:

复制代码
允许:
- owner 可读写执行
- group 可读写执行
- others 只读/执行(不能写)

等价表达:

复制代码
禁止 others 写权限

七、umask 与 ACL 的关系(重点)

很多人混淆:

机制 控制对象
umask 默认权限(创建时)
ACL 精细用户权限
chmod 静态权限

正确关系是:

复制代码
umask → 决定"初始权限"
ACL → 决定"额外授权"
chmod → 决定"基础结构"

八、如何查看当前 umask?

复制代码
umask

输出:

复制代码
0022

九、临时 vs 永久设置

临时:

复制代码
umask 002

cron 内:

复制代码
* * * * * umask 002; command

全局(不推荐轻易改)

复制代码
/etc/profile
~/.bashrc

十、一句话总结

复制代码
umask 002 = 创建文件时禁止"其他用户写权限",允许 group 写权限