Linux系统(或其他Linux发行版)中,umask 命令用于设置用户创建新文件或目录时的默认权限掩码。它本身不是一个文件,而是一个设置值。

1. 命令概念
umask 值定义了需要从默认权限中屏蔽掉(减去)的权限位。
文件默认最大权限:666 (rw-rw-rw-)。
目录默认最大权限:777 (rwxrwxrwx)。
umask 值通常用 八进制 表示(如 022, 002, 077)。
实际权限= 默认最大权限 - umask 值。
2. 修改umask 的方法
两种修改方式,一种临时,一种永久;
临时修改(仅对当前Shell会话有效)
直接在终端输入umask 命令加新值:
umask <新值>
示例:
1)设置umask 为 022(常见默认值,新文件权限 644,目录 755):
a.命令:umask 022
2)设置umask 为 002(用户和组有写权限,新文件 664,目录 775,适用于协作环境):
a.命令:umask 002
3)设置umask 为 077(最严格,仅用户自己有权限,新文件 600,目录 700):
a.命令:umask 077
验证当前umask配置状态
命令:umask
永久修改(对所有新登录会话生效)
需要修改用户的Shell 配置文件(如 ~/.bashrc, ~/.profile, etc/profile, etc/bash.bashrc)。推荐优先修改用户级配置文件 (~/.bashrc)。
操作步骤:
1. 打开配置文件(以 ~/.bashrc 为例):
vi ~/.bashrc # 使用 vim 或 gedit编辑器
2. 在文件末尾添加一行:
umask <你想要的umask值> # 例如 umask 002 或 umask 022
3. 保存并退出编辑器:
Nano: 按 Ctrl+O 保存,按 Enter 确认文件名,再按 Ctrl+X 退出。
Vim: 按 :wq 然后回车。
4. 使更改立即生效(在当前终端):
source ~/.bashrc
或者直接关闭并重新打开终端。
5. (可选) 系统级修改:
如果需要为所有用户设置默认umask,需编辑系统级配置文件(需要管理员权限):
/etc/profile
/etc/bash.bashrc
提示:特定于登录Shell 的 /etc/profile.d/*.sh(推荐创建自定义文件),操作前务必备份!
重点说明:权限计算示例
umask 022文件:666 - 022 = 644 (rw-r--r--)目录:777 - 022 = 755 (rwxr-xr-x)umask 002文件:666 - 002 = 664 (rw-rw-r--)目录:777 - 002 = 775 (rwxrwxr-x)umask 077文件:666 - 077 = 600 (rw-------)目录:777 - 077 = 700 (rwx------)
umask 值表示被屏蔽的权限:
0 = 不屏蔽任何权限(允许读、写、执行)
2 = 屏蔽写权限
4 = 屏蔽读权限
6 = 屏蔽读和写权限 (4+2)
7 = 屏蔽读、写和执行权限 (4+2+1)
符号表示法:umask 也可用符号模式设置(如 u=rwx,g=rx,o=),但八进制形式更常用。
三点安全建议:
1)普通用户:002 或 022 是常见选择,取决于是否需要同组用户协作。
2)严格环境/root用户:考虑 077 或 027(屏蔽其他用户的所有权限)。
3)修改系统级umask 要极其谨慎,错误设置可能导致系统服务或新用户遇到权限问题。
文章小结
场景 | 命令 | 生效范围 |
临时修改 | umask <新值> | 当前Shell会话 |
永久修改(用户级) | 在 ~/.bashrc 添加 umask <值> | 用户所有新登录会话 |
永久修改(系统级) | 在 /etc/profile 等文件添加 | 所有用户 |




