Linux umask 命令 - 设置文件或目录默认权限
• 最后修改:2025-09-06 • 阅读量:167
umask ( 英文全称为:User file mask ) 是 Linux / Unix / FreeBSD 系统中用于配置新创建的文件和目录的默认权限的命令工具。该工具可以使用掩码配置文件或目录的读、写、执行权限。
umask 命令不是用来为文件或目录添加权限的,而是从基础的权限中移除掩码设置的权限。
设置掩码后,创建的文件或目录具有的默认实际权限的计算:
- 具有的实际权限 = 默认基础权限 & (~设置的umask掩码值权限)
- 解释说明:
- umask掩码值为八进制模式时,先转变为对应的三位二进制数,把掩码的二进制数按位取反,然后和基础权限按位与运算。
- umask掩码值为符号制模式时,相当于已经取反的值与与基础权限按位与运算,因此使用符号模式时,真正的掩码值是把符号模式的值按位取反。
- 默认基础权限为:
- 文件基础权限为:三个组都具有读写权限,对应的八进制为
666
,对应的符号为rw-rw-rw-
- 目录基础权限为:三个组都具有读写权限执行,对应的八进制为
777
,对应的符号为rwxrwxrwx
本文将为你介绍 umask
命令的使用方法,使你对 umask
命令具有基本的了解,使你能够正确的运用 umask
命令。
umask 命令语法
umask [选项] [掩码值]
- 掩码值:可以使用如下两种形式(可选,不提供掩码值时,使用命令默认的掩码值
0022
)- 八进制模式:3位或4位八进制数
- 符号模式:使用
用户类型=权限类
的形式设置掩码
- 无参数时:显示当前 umask 值
八进制模式详解
每一位上的数字就表示三个权限的和,把每一位拆分为1,2,4三个数,就是其具体权限。
左侧的第 1 位八进制数字用来设置 setuid
、setgid
和 sticky
位标志,数值的含义如下:
八进制数值 | 所表示的意义 |
---|---|
4 | 设置 setuid |
2 | 设置 setgid |
1 | 设置 sticky |
0 | 不做修改设置 |
后面的 3位八进制数字的意义为,第一个数字表示文件所有者的权限,第二个数字表示组的权限,最后一个数字表示其他用户的权限。每个写、读、执行权限的八进制数值如下:
八进制数值 | 对应权限 | 对应符号 |
---|---|---|
4 | 读权限 | r |
2 | 写权限 | w |
1 | 可执行权限 | x |
0 | 不具有任何权限 |
符号模式详解
可以使用的用户类型符号有:
- u (user) 表示所有者使用,
- g (group)表示用户组
- o (other) 表示其他用户
可以使用的权限符号有:
- r (read)表示读权限
- w (write)表示写权限
- x(execute) 表示执行权限。
chmod
格式(如 ,,o=`)
符号模式的使用形式:
把权限赋值给特定的用户:
如:为所有者赋予读写执行权限:u=rwx
;为用户组赋予读写权限:g=rx
umask 命令使用示例
1. 查看默认 umask 值
umask
输出内容为:
0022
2. 使用符号模式设置 umask
使用符号模式设置掩码,即使用设置的权限与基础权限按位与运算,不需要按位取反:
umask u=rwx,g=rx,o=
如上示例:把使用符号模式的设置的掩码对应的具体的八进制掩码值为:0027
创建一个目录:
mkdir test
查看目录的权限:
ls -l
输出目录的权限信息:
drwxr-x--- 2 an an 4096 9月 6日 12:40 test
如上示例屏蔽了其他用户的所有权限,屏蔽了用户组的写权限。
3. 显示 umask 的符号模式值
使用 -S
选项以符号模式的形式输出 umask 的值:
umask -S
输出内容为:
u=rwx,g=rx,o=rx
4. 永久设置默认的 umask
要永久设置 umask 值,需要把内容写入到用户的配置文件,一般使用 .bashrc
文件:
echo "umask 027" >> ~/.bashrc
注意:一定要使用 >>
符号附加到内容的尾部。
umask 命令选项详解
如下给出 umask
命令选项的详细解释说明:
选项 | 说明 | 示例 |
---|---|---|
-S |
以符号模式的形式显示当前 umask 掩码值 | umask -S |
-p |
以可执行命令的方式输出内容,即:不只输出掩码值,还在前面附加名命名 | umask -p → umask 0022 |
结语
本文全面的介绍了 umask
的基本功能、语法结构及其功能,并给出了 umask
命令的具体使用示例,umask
主要作用是从文件或目录的基本权限中移除掩码值对应的权限。 umask
命令可以在 Linux 各发行版和 FreeBSD 系统中使用,基本功能是相同的。