UNPKG

2.94 kBMarkdownView Raw
1umask
2===
3
4显示或设置创建文件的权限掩码。
5
6## 概要
7
8```shell
9umask [-p] [-S] [mode]
10```
11
12## 主要用途
13
14- 显示当前的文件权限掩码。
15- 通过八进制数的方式设置创建文件的权限掩码。
16- 通过符号组合的方式设置创建文件的权限掩码。
17
18## 参数
19
20mode(可选):八进制数或符号组合。
21
22## 选项
23
24```shell
25-p:当没有参数时指定该选项,执行产生的输出格式可复用为输入;
26-S:以符号组合的方式输出创建文件的权限掩码,不使用该选项时以八进制数的形式输出。
27```
28
29## 返回值
30
31返回状态为成功除非给出了非法选项或非法参数。
32
33## 例子
34
35*以下的例子均假设文件权限掩码为0022。*
36
37```shell
38# 以八进制数的形式输出创建文件的权限掩码。
39umask -p
40# 执行结果:
41umask 0022
42# 以符号组合的方式输出创建文件的权限掩码。
43umask -S
44# 执行结果:
45u=rwx,g=rx,o=rx
46```
47
48> 参考`man chmod`文档的`DESCRIPTION`段落得知:
49> - `u`符号代表当前用户。
50> - `g`符号代表和当前用户在同一个组的用户,以下简称组用户。
51> - `o`符号代表其他用户。
52> - `a`符号代表所有用户。
53> - `r`符号代表读权限以及八进制数`4`。
54> - `w`符号代表写权限以及八进制数`2`。
55> - `x`符号代表执行权限以及八进制数`1`。
56> - `+`符号代表添加目标用户相应的权限。
57> - `-`符号代表删除目标用户相应的权限。
58> - `=`符号代表添加目标用户相应的权限,删除未提到的权限。
59
60那么刚才以符号形式输出的结果`u=rwx,g=rx,o=rx`转化为八进制数等于`0755`
61
62用八进制数来设置同样的权限,`umask`需要额外的执行减法`0777 - 0755``0022`,而`chmod`不需要。
63
64符号组合模式的添加、删除、赋值权限。
65
66```shell
67# 添加权限:
68# 为组用户添加写权限。
69umask g+w
70# 删除权限:
71# 删除其他用户的写、执行权限
72umask o-wx
73# 赋值权限:
74# 赋值全部用户所有权限,等价于umask u=rwx,g=rwx,o=rwx
75umask a=rwx
76# 清除其他用户的读、写、执行权限。
77umask o=
78```
79
80创建文件夹、文件(假设当前目录不存在)
81
82```shell
83# 创建文件
84touch test.sh
85# 查看权限,发现执行权限的设置不起作用。
86stat test.sh
87# 创建文件夹
88touch newdir
89# 查看权限,发现执行权限的设置可以起作用。
90stat newdir
91```
92
93### 注意
94
951. 该命令是bash内建命令,相关的帮助信息请查看`help`命令。
96
972. `chmod`用于更改已有对象的权限,`umask`影响之后新建对象的权限。
98
993. **请谨慎使用该命令**,特别是不要取消当前用户的读取权限,那样会导致你在终端使用`TAB`键补全时报错。
100
101<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->