您好,我是小DAI,专注于数据库管理员相关的技术问答,请问有什么可以帮您?

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 - 07550022,而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命令。

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

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