shell
umask [-p] [-S] [mode]
mode(可选):八进制数或符号组合。
shell
-p:当没有参数时指定该选项,执行产生的输出格式可复用为输入;
-S:以符号组合的方式输出创建文件的权限掩码,不使用该选项时以八进制数的形式输出。
返回状态为成功除非给出了非法选项或非法参数。
*以下的例子均假设文件权限掩码为0022。*
shell
<h1>以八进制数的形式输出创建文件的权限掩码。</h1>
umask -p
<h1>执行结果:</h1>
umask 0022
<h1>以符号组合的方式输出创建文件的权限掩码。</h1>
umask -S
<h1>执行结果:</h1>
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
<h1>添加权限:</h1>
<h1>为组用户添加写权限。</h1>
umask g+w
<h1>删除权限:</h1>
<h1>删除其他用户的写、执行权限</h1>
umask o-wx
<h1>赋值权限:</h1>
<h1>赋值全部用户所有权限,等价于umask u=rwx,g=rwx,o=rwx</h1>
umask a=rwx
<h1>清除其他用户的读、写、执行权限。</h1>
umask o=
创建文件夹、文件(假设当前目录不存在)
shell
<h1>创建文件</h1>
touch test.sh
<h1>查看权限,发现执行权限的设置不起作用。</h1>
stat test.sh
<h1>创建文件夹</h1>
touch newdir
<h1>查看权限,发现执行权限的设置可以起作用。</h1>
stat newdir
help命令。
chmod用于更改已有对象的权限,umask影响之后新建对象的权限。
TAB键补全时报错。