UNPKG

linux-command

Version:
102 lines (74 loc) 2.86 kB
umask === 显示或设置创建文件的权限掩码。 ## 概要 ```shell umask [-p] [-S] [mode] ``` ## 主要用途 - 显示当前的文件权限掩码。 - 通过八进制数的方式设置创建文件的权限掩码。 - 通过符号组合的方式设置创建文件的权限掩码。 ## 参数 mode(可选):八进制数或符号组合。 ## 选项 ```shell -p:当没有参数时指定该选项,执行产生的输出格式可复用为输入; -S:以符号组合的方式输出创建文件的权限掩码,不使用该选项时以八进制数的形式输出。 ``` ## 返回值 返回状态为成功除非给出了非法选项或非法参数。 ## 例子 *以下的例子均假设文件权限掩码为0022* ```shell # 以八进制数的形式输出创建文件的权限掩码。 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`不需要。 符号组合模式的添加、删除、赋值权限。 ```shell # 添加权限: # 为组用户添加写权限。 umask g+w # 删除权限: # 删除其他用户的写、执行权限 umask o-wx # 赋值权限: # 赋值全部用户所有权限,等价于umask u=rwx,g=rwx,o=rwx umask a=rwx # 清除其他用户的读、写、执行权限。 umask o= ``` 创建文件夹、文件(假设当前目录不存在) ```shell # 创建文件 touch test.sh # 查看权限,发现执行权限的设置不起作用。 stat test.sh # 创建文件夹 touch newdir # 查看权限,发现执行权限的设置可以起作用。 stat newdir ``` ### 注意 1. 该命令是bash内建命令,相关的帮助信息请查看`help`命令。 2. `chmod`用于更改已有对象的权限,`umask`影响之后新建对象的权限。 3. **请谨慎使用该命令**,特别是不要取消当前用户的读取权限,那样会导致你在终端使用`TAB`键补全时报错。