umask在创建文件时的作用:


root用户创建的文件默认权限是 644, 即属主:读、写;属组:只读;其他:只读;

  目录的默认权限是755,即属主:读、写和执行;属组:读和执行;其他:读和执行;

20_Linux基础知识及命令————umask遮罩码_Linux 遮罩码 反向掩码 umask


而普通用户创建的文件默认权限是 664, 即属主:读、写;属组:读、写;其他:只读;

目录的默认权限是775,即属主:读、写和执行;属组:读、写和执行;其他:读和执行;

20_Linux基础知识及命令————umask遮罩码_Linux 遮罩码 反向掩码 umask_02

root用户和普通用户的创建文件的默认权限不同,是由于shell环境的设定不同。此环境称为umask,即遮罩码(或反向掩码)。它表示用户在创建文件或目录时,会使用777666减去遮罩码,从而产生默认权限,其中:

创建文件:666-umask

 创建文件使用666,是因为文件默认不能具有执行权限

创建目录:777-umask

20_Linux基础知识及命令————umask遮罩码_Linux 遮罩码 反向掩码 umask_03


遮罩码可以自行设定,使用命令为:

# umask NUMBER

需要注意的是,由于文件默认没有执行权限,因此即使用户设定的umask666减去后具有了执行权限,系统也会默认为该结果加1以确保文件没有执行权限。例如:

# umask 023

此时创建的文件默认权限应该是:

666 - 023 = 643       //属主:读写;属组:只读;其他:写和执行

但实际创建的文件默认权限为:

666 - 023 + 1 = 644    //属主:读、写;属组:只读;其他:只读

但是目录没有这样的限定。

20_Linux基础知识及命令————umask遮罩码_Linux 遮罩码 反向掩码 umask_04


注意:设定的umask只对当前的shell进程有效,一旦退出当前的shellumask即恢复默认值,此前的设置失效了。如果想让umask的值永久有效,只能通过修改配置文件来实现。

20_Linux基础知识及命令————umask遮罩码_Linux 遮罩码 反向掩码 umask_05