Linux中umask通过屏蔽最大权限控制新建文件和目录的默认权限:目录基准777、文件基准666,实际权限为最大权限与umask取反后的按位与运算;常用值如002(协作)和077(私有),可临时或永久设置。

Linux 中新建文件和目录的默认权限由 umask 控制,它不是“赋予”权限,而是从最大允许权限中“屏蔽”掉某些位。理解并正确使用 umask,是保障安全与协作的基础。
查看当前 umask 值
终端中直接运行:
-
umask:以八进制显示(如0022),三位或四位数字,首位常为 0(表示特殊权限位未启用) -
umask -S:以符号形式显示(如u=rwx,g=rx,o=rx),更直观反映用户、组、其他用户的权限策略
临时修改 umask(当前终端有效)
仅影响当前 Shell 会话,关闭终端即恢复原值:
-
umask 002:适合团队协作,新文件为664(rw-rw-r--),目录为775(rwxrwxr-x) -
umask 077:严格私有,新文件为600(rw-------),目录为700(rwx------) -
umask u=rwx,g=,o=:用符号方式清空组和其他用户的全部权限,效果等同于umask 077
永久修改 umask(推荐用户级)
让每次新登录都继承该设置:
- 编辑个人配置文件:
vi ~/.bashrc - 在文件末尾添加一行:
umask 002(按需替换为你想要的值) - 立即生效:
source ~/.bashrc - 系统级统一设置(需 root 权限):可写入
/etc/profile或/etc/bash.bashrc,但应谨慎评估对所有用户的影响
权限计算的关键逻辑
记住两个基准值和屏蔽本质:
- 目录最大权限是
777(rwxrwxrwx),执行位x表示“可进入”,必须保留 - 普通文件最大权限是
666(rw-rw-rw-),内核禁止自动添加执行位x,所以结果永远不会出现x - 实际权限 = 最大权限 & (~umask),即按位取反后与运算,不是简单算术减法(尽管八进制减法在多数常见值下结果一致)


















