纠正错误 添加实例

# umask

显示或设置创建文件的权限掩码。

## 概要

    umask [-p] [-S] [mode]

## 主要用途

- 显示当前的文件权限掩码。
- 通过八进制数的方式设置创建文件的权限掩码。
- 通过符号组合的方式设置创建文件的权限掩码。

## 参数

mode（可选）：八进制数或符号组合。

## 选项

    -p：当没有参数时指定该选项，执行产生的输出格式可复用为输入；
    -S：以符号组合的方式输出创建文件的权限掩码，不使用该选项时以八进制数的形式输出。

## 返回值

返回状态为成功除非给出了非法选项或非法参数。

## 例子

以下的例子均假设文件权限掩码为0022。

    # 以八进制数的形式输出创建文件的权限掩码。
    umask -p
    # 执行结果：
    umask 0022
    # 以符号组合的方式输出创建文件的权限掩码。
    umask -S
    # 执行结果：
    u=rwx,g=rx,o=rx

> 参考`man chmod`文档的`DESCRIPTION`段落得知：

> - `u`符号代表当前用户。
> - `g`符号代表和当前用户在同一个组的用户，以下简称组用户。
> - `o`符号代表其他用户。
> - `a`符号代表所有用户。
> - `r`符号代表读权限以及八进制数`4`。
> - `w`符号代表写权限以及八进制数`2`。
> - `x`符号代表执行权限以及八进制数`1`。
> - `+`符号代表添加目标用户相应的权限。
> - `-`符号代表删除目标用户相应的权限。
> - `=`符号代表添加目标用户相应的权限，删除未提到的权限。

那么刚才以符号形式输出的结果`u=rwx,g=rx,o=rx`转化为八进制数等于`0755`；

用八进制数来设置同样的权限，`umask`需要额外的执行减法`0777 - 0755`即`0022`，而`chmod`不需要。

符号组合模式的添加、删除、赋值权限。

    # 添加权限：
    # 为组用户添加写权限。
    umask g+w
    # 删除权限：
    # 删除其他用户的写、执行权限
    umask o-wx
    # 赋值权限：
    # 赋值全部用户所有权限，等价于umask u=rwx,g=rwx,o=rwx
    umask a=rwx
    # 清除其他用户的读、写、执行权限。
    umask o=

创建文件夹、文件（假设当前目录不存在）

    # 创建文件
    touch test.sh
    # 查看权限，发现执行权限的设置不起作用。
    stat test.sh
    # 创建文件夹
    touch newdir
    # 查看权限，发现执行权限的设置可以起作用。
    stat newdir

### 注意

1. 该命令是bash内建命令，相关的帮助信息请查看`help`命令。

2. `chmod`用于更改已有对象的权限，`umask`影响之后新建对象的权限。

3. 请谨慎使用该命令，特别是不要取消当前用户的读取权限，那样会导致你在终端使用`TAB`键补全时报错。