在linux中,umask是目录的权限掩码值。
即该目录在默认情况下,新创建出来的目录和文件的所具有的权限。
但它并不是直接显示的权限,而是一个掩码值,而真实的权限值需要计算。
目录和文件具有不同的计算方法,具体如下:
1、目录的计算方法,目录系统默认为777,那么此目录的权限就是用777-umask值,就是该目录具有的真实权限。例:
复制代码 代码示例:
[ming@jbxue tmp]$ umask
0002
上述例子中,第一位为特殊权限位,真实权限为777-002=775,
复制代码 代码示例:
[ming@jbxue tmp]$ mkdir test
[ming@jbxue tmp]$ ls -ld test
drwxrwxr-x 2 ming ming 4096 Aug 25 10:48 test
所建目录权限果然为775.
2、文件的计算方法,系统默认所新建的文件都不具有执行权限,因此为666,新建文件权限就是666-002=664.
复制代码 代码示例:
[ming@jbxue tmp]$ touch test123
[ming@jbxue tmp]$ ls -l test123
-rw-rw-r-- 1 ming ming 0 Aug 25 10:51 test123
新建文件果然为664.
3、修改umask值。
为目录新建权限进行设定。
比如想将test目录中,新建的子目录和文件权限定义为755,那么只需要用系统默认目录777-755即可,结果为022。
例如:
复制代码 代码示例:
[ming@jbxue test]$ umask 0022
[ming@jbxue test]$ umask
0022
[ming@jbxue test]$ mkdir abc
[ming@jbxue test]$ ls -ld abc
drwxr-xr-x 2 ming ming 4096 Aug 25 10:59 abc ? # 果然为755权限
如果想让该test目录中新建的文件权限为444,那么就用系统默认文件权限666-444=222。
复制代码 代码示例:
[ming@jbxue test]$ umask 0222
[ming@jbxue test]$ touch test123
[ming@jbxue test]$ ls -l test123
-r--r--r-- 1 ming ming 0 Aug 25 11:03 test123 ? # 果然为444权限
如果想更改整个系统全部默认的umask值,可以更改/etc/bashrc中的umask值。