一、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 → others2)重点: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 = rwxrwxrwxumask:
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 002cron 内:
* * * * * umask 002; command全局(不推荐轻易改)
/etc/profile ~/.bashrc十、一句话总结
umask 002 = 创建文件时禁止“其他用户写权限”,允许 group 写权限