一、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 写权限