Linux umask 命令 - 设置文件或目录默认权限
• 最后修改:2025-07-13 • 阅读量:18
本文全面解析 Linux / Unix / FreeBSD 系统中的 umask
命令(英文全称:User file creation mask),提供跨平台使用指南和深度权限管理技巧,涵盖权限计算、符号模式、临时设置等核心应用场景。
umask 命令释义
umask ( User file creation mask ) 是 Linux / Unix / FreeBSD 系统中用于 控制新创建文件和目录默认权限 的核心命令。其主要功能包括:
- 🛡️ 权限屏蔽:通过掩码值屏蔽特定权限位(读、写、执行)
- 📁 权限继承:确保新文件/目录遵循系统安全规范
- ⚙️ 动态调整:支持会话级临时修改或永久配置
- 🔢 双模式设置:支持数字模式和符号模式两种设置方式
权限计算原理:
- 文件基础权限:
666
(rw-rw-rw-) - 目录基础权限:
777
(rwxrwxrwx) - 实际权限 = 基础权限 & ~umask值
示例:umask 022 → 文件权限 644 (rw-r--r--),目录权限 755 (rwxr-xr-x)
umask 系统兼容性
umask
是 Shell 内置命令,所有主流系统均原生支持:
- Linux 发行版:Debian / Ubuntu / RHEL / AlmaLinux / Rocky Linux / Arch Linux
- Unix-like 系统:FreeBSD / OpenBSD / macOS
- 无需安装:直接使用系统内置命令
umask 命令语法
umask [选项] [掩码值]
- 掩码值(可选):支持两种格式
- 数字模式:3位或4位八进制数(如
0022
) - 符号模式:类
chmod
格式(如u=rwx,g=rx,o=
)
- 数字模式:3位或4位八进制数(如
- 无参数时:显示当前 umask 值
权限位对应关系:
八进制 | 二进制 | 权限 |
---|---|---|
0 | 000 | rwx |
1 | 001 | rw- |
2 | 010 | r-x |
3 | 011 | r-- |
4 | 100 | -wx |
5 | 101 | -w- |
6 | 110 | --x |
7 | 111 | --- |
umask 命令示例
1:查看当前 umask 值
umask
# 输出:0022
说明:显示当前会话的 umask 值(八进制格式)。0022
表示:
- 用户权限:保留所有 (rwx)
- 组权限:屏蔽写权限 (r-x)
- 其他用户:屏蔽写权限 (r-x)
2:使用符号模式设置 umask
umask u=rwx,g=rx,o=
说明:设置权限为:
- 用户:rwx (7)
- 组:r-x (5)
- 其他:--- (0)
等效数字模式
0750
,新目录权限 750 (rwxr-x---),文件权限 640 (rw-r-----)
3:临时修改 umask 创建文件
umask 0007 && touch secure_file.txt
说明:
- 设置 umask 为
0007
(屏蔽其他用户所有权限) - 创建文件权限为 660 (rw-rw----)
- 更改仅对当前 Shell 会话有效
4:显示符号化 umask 值
umask -S
# 输出:u=rwx,g=rx,o=rx
说明:-S
选项将数字掩码转换为易读的符号格式,直观显示各用户组的权限分配
5:永久设置用户默认 umask
echo "umask 027" >> ~/.bashrc
说明:在用户配置文件中添加此命令,使所有新会话默认使用 027
umask:
- 文件权限:640 (rw-r-----)
- 目录权限:750 (rwxr-x---)
umask 命令选项详解
选项 | 说明 | 示例 |
---|---|---|
-S |
以符号模式显示当前 umask 值 | umask -S → u=rwx,g=rx,o=rx |
-p |
以可执行格式输出(适用于脚本) | umask -p → umask 0022 |
选项注意事项:
- 不带任何选项执行时默认显示数字格式
- 选项必须单独使用(不可组合如
-Sp
) - 使用
-p
输出的命令可直接复制执行
结语
umask
是系统安全和权限管理的基石,关键要点:
- 安全优先:生产环境建议使用
027
或077
严格限制权限 - 目录 vs 文件:umask 对目录生效的执行权限(x)对文件无效
- 作用范围:
- 临时设置:仅影响当前 Shell 会话
- 永久设置:需写入配置文件(~/.bashrc / /etc/profile)
- 特殊场景:
- 共享目录:使用
0002
(保留组写权限) - 机密文件:使用
0077
(禁止组和其他用户访问)
最佳实践:
- 登录用户建议默认
022
或027
- 系统服务账户建议使用
077
- 使用
umask -S
验证符号化权限 - 关键操作前临时调整为严格模式
- 在脚本中明确设置所需 umask
通过合理配置 umask,可有效防止未授权访问,提升系统整体安全性!