Linux 命令:umask
概述
umask
是 Linux 系统中用于设置文件和目录默认权限掩码的命令,它决定了新创建的文件和目录默认拥有的权限。其作用与chmod
相反,chmod
用于修改已有文件的权限,而umask
用于控制新文件的初始权限。- 资料合集:
https://pan.quark.cn/s/6fe3007c3e95
基本功能
- 显示当前的权限掩码值
- 设置新的权限掩码,影响后续创建的文件和目录的默认权限
常用格式
umask [选项] [掩码值]
权限掩码的工作原理
- 系统默认的最大权限:
- 目录的最大默认权限是
777
(rwxrwxrwx
) - 文件的最大默认权限是
666
(rw-rw-rw-
,默认不包含执行权限x
)
- 目录的最大默认权限是
- 新文件/目录的实际权限 = 最大默认权限 - umask 掩码值
常用用法与示例
-
查看当前 umask 掩码
直接执行umask
命令,显示当前的掩码值(通常以4位八进制数表示):umask # 示例输出:0022
- 第一位
0
表示特殊权限(通常为0) - 后三位
022
是实际影响权限的掩码(用户、组、其他用户的权限掩码)
- 第一位
-
计算实际默认权限
以umask 0022
为例:- 目录默认权限:
777 - 022 = 755
(rwxr-xr-x
) - 文件默认权限:
666 - 022 = 644
(rw-r--r--
)
- 目录默认权限:
-
临时设置 umask 掩码
直接指定八进制掩码值即可(仅对当前终端会话有效):umask 0002 # 设置掩码为0002
- 此时新目录权限为
777 - 002 = 775
(rwxrwxr-x
) - 新文件权限为
666 - 002 = 664
(rw-rw-r--
)
- 此时新目录权限为
-
永久设置 umask
若要永久生效,需将设置命令添加到配置文件中:- 对所有用户生效:修改
/etc/profile
或/etc/bashrc
- 仅对当前用户生效:修改
~/.bashrc
或~/.bash_profile
echo "umask 0002" >> ~/.bashrc # 添加到用户配置文件 source ~/.bashrc # 立即生效
- 对所有用户生效:修改
常见掩码值及效果
umask 掩码 | 目录默认权限 | 文件默认权限 | 适用场景 |
---|---|---|---|
0000 | 777(rwxrwxrwx) | 666(rw-rw-rw-) | 完全开放权限(不推荐) |
0002 | 775(rwxrwxr-x) | 664(rw-rw-r–) | 允许同组用户读写 |
0022 | 755(rwxr-xr-x) | 644(rw-r–r–) | 系统默认,限制组和其他用户权限 |
0777 | 000(---------) | 000(---------) | 完全禁止所有权限 |
注意事项
umask
设置仅影响后续新创建的文件和目录,对已存在的文件无影响- 不同用户(如 root 和普通用户)可能有不同的默认 umask 设置
- 可以通过
umask -S
选项以符号形式显示权限掩码(更易读):umask -S # 示例输出:u=rwx,g=rx,o=rx(对应掩码0022)
umask
是控制系统权限安全的重要工具,合理设置可以在创建文件时自动限制不必要的权限,增强系统安全性。