1 | umask
|
2 | ===
|
3 |
|
4 | 显示或设置创建文件的权限掩码。
|
5 |
|
6 | ## 概要
|
7 |
|
8 | ```shell
|
9 | umask [-p] [-S] [mode]
|
10 | ```
|
11 |
|
12 | ## 主要用途
|
13 |
|
14 | - 显示当前的文件权限掩码。
|
15 | - 通过八进制数的方式设置创建文件的权限掩码。
|
16 | - 通过符号组合的方式设置创建文件的权限掩码。
|
17 |
|
18 | ## 参数
|
19 |
|
20 | mode(可选):八进制数或符号组合。
|
21 |
|
22 | ## 选项
|
23 |
|
24 | ```shell
|
25 | -p:当没有参数时指定该选项,执行产生的输出格式可复用为输入;
|
26 | -S:以符号组合的方式输出创建文件的权限掩码,不使用该选项时以八进制数的形式输出。
|
27 | ```
|
28 |
|
29 | ## 返回值
|
30 |
|
31 | 返回状态为成功除非给出了非法选项或非法参数。
|
32 |
|
33 | ## 例子
|
34 |
|
35 | *以下的例子均假设文件权限掩码为0022。*
|
36 |
|
37 | ```shell
|
38 | # 以八进制数的形式输出创建文件的权限掩码。
|
39 | umask -p
|
40 | # 执行结果:
|
41 | umask 0022
|
42 | # 以符号组合的方式输出创建文件的权限掩码。
|
43 | umask -S
|
44 | # 执行结果:
|
45 | u=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 | # 为组用户添加写权限。
|
69 | umask g+w
|
70 | # 删除权限:
|
71 | # 删除其他用户的写、执行权限
|
72 | umask o-wx
|
73 | # 赋值权限:
|
74 | # 赋值全部用户所有权限,等价于umask u=rwx,g=rwx,o=rwx
|
75 | umask a=rwx
|
76 | # 清除其他用户的读、写、执行权限。
|
77 | umask o=
|
78 | ```
|
79 |
|
80 | 创建文件夹、文件(假设当前目录不存在)
|
81 |
|
82 | ```shell
|
83 | # 创建文件
|
84 | touch test.sh
|
85 | # 查看权限,发现执行权限的设置不起作用。
|
86 | stat test.sh
|
87 | # 创建文件夹
|
88 | touch newdir
|
89 | # 查看权限,发现执行权限的设置可以起作用。
|
90 | stat newdir
|
91 | ```
|
92 |
|
93 | ### 注意
|
94 |
|
95 | 1. 该命令是bash内建命令,相关的帮助信息请查看`help`命令。
|
96 |
|
97 | 2. `chmod`用于更改已有对象的权限,`umask`影响之后新建对象的权限。
|
98 |
|
99 | 3. **请谨慎使用该命令**,特别是不要取消当前用户的读取权限,那样会导致你在终端使用`TAB`键补全时报错。
|
100 |
|
101 |
|