linux中umask是三位八进制数,用于屏蔽新文件(默认666)和目录(默认777)的权限位;临时修改用umask命令,永久修改需写入~/.bashrc或/etc/profile等配置文件,并通过ls -l验证实际权限。

Linux系统中,默认权限掩码(umask)决定了新创建文件和目录的默认权限。它不是直接设置权限,而是“屏蔽”掉某些权限位。修改umask可控制新建文件的安全性,比如防止新文件被其他用户读写。
理解umask数值含义与计算逻辑
umask是一个三位八进制数(如022、002),每一位对应user、group、others的权限屏蔽位。它作用于默认最大权限:
- 目录默认最大权限是777 → 减去umask后得到实际权限(如777−022=755)
- 普通文件默认最大权限是666 → 减去umask后得到实际权限(如666−022=644)
- 注意:文件不会自动获得执行位,即使umask为000,新建文件仍是666而非777
临时修改当前会话umask值
在终端中直接运行命令即可立即生效,仅对当前shell及其子进程有效:
-
查看当前umask:
umask(显示如0022)或umask -S(显示符号形式:u=rwx,g=rx,o=rx) -
设为002(组可写):
umask 002 -
设为007(其他用户无任何权限):
umask 007
永久修改umask(按用户或全局)
需将umask命令写入shell初始化文件,不同范围适用不同配置位置:
-
仅对当前用户生效:编辑
~/.bashrc或~/.profile,末尾添加一行:umask 002 -
对所有用户生效(需管理员权限):编辑
/etc/bash.bashrc(Debian/Ubuntu)或/etc/profile(通用),添加umask 002 - 修改后需重新登录,或运行
source ~/.bashrc重载配置
验证新文件权限是否按预期生成
修改umask后,务必测试新建文件和目录的实际权限是否符合预期:
- 先确认当前umask:
umask - 创建测试文件和目录:
touch testfile && mkdir testdir - 查看权限:
ls -l→ 观察testfile是否为644(umask 022)、testdir是否为755 - 若使用umask 002,应看到testfile为664、testdir为775;若为007,则testfile为660、testdir为770










