什么是umask
当我们登录系统之后创建一个文件总是有一个默认权限的,那么这个权限是怎么来的呢?这就是umask
干的事情。umask
设置了用户创建文件的默认 权限,它与chmod
的效果刚好相反,umask
设置的是权限"补码",而chmod
设置的是文件权限码。一般在/etc/profile
、$[HOME]/.bash_profile
或$[HOME]/.profile
中设置umask
值。
查看 umask
的值
输入
umask
1 如何计算umask
值
umask
命令允许你设定文件创建时的缺省模式,对应每一类用户(文件属主、同组用户、
其他用户)存在一个相应的 umask
值中的数字。对于文件来说,这一数字的最大值分别是6
。
系统不允许你在创建一个文本文件时就赋予它执行权限,必须在创建后用 chmod
命令增加这一
权限。目录则允许设置执行权限,这样针对目录来说,umask
中各个数字最大可以到7
。
该命令的一般形式为:
umask nnn
其中nnn
为umask
置 000 – 777
umask
值与权限
例如,对于umask
值002
,相应的文件和目录缺省创建权限是什么呢?
第一步,我们首先写下具有全部权限的模式,即777
(所有用户都具有读、写和执行权限)。
第二步,在下面一行按照umask
值写下相应的位,在本例中是002
。
第三步,在接下来的一行中记下上面两行中没有匹配的位。这就是目录的缺省创建权限。
稍加练习就能够记住这种方法。
第四步,对于文件来说,在创建时不能具有文件权限,只要拿掉相应的执行权限比特即可。
这就是上面的例子,其中umask
值为002
:
1) 文件的最大权限rwx
rwx
rwx
777
2) umask
值为002
– – – – – – -w-
3) 目录权限rwx
rwx
r-x
775
这就是目录创建缺省权限
4) 文件权限rw-
rw-
r–
664
这就是文件创建缺省权限
下面是另外一个例子,假设这次 umask
值为 022
:
1) 文件的最大权限rwx
rwx
rwx
777
2) umask
值为022
– – – -w- -w-
3) 目录权限rwx
r-x
r-x
755
这就是目录创建缺省权限
4) 文件权限rw-
r–
r–
644
这就是文件创建缺省权限
2 常用的umask
值
如果想知道当前的umask
值,可以使用umask
命令:
如果想要改变umask
值,只要使用umask
命令设置一个新的值即可:
$ umask
002
确认一下系统是否已经接受了新的umask
值:
在使用umask
命令之前一定要弄清楚到底希望具有什么样的文件/
目录创建缺省权限。否
则可能会得到一些非常奇怪的结果
例如,如果将umask
值设置为600
,那么所创建的文件/
目录的缺省权限就是066
除非你有特殊需要,否则没有必要去管他,系统默认的值 022
umask
是用的掩码,至于掩码的概念,从基础学吧,这里不说了。
掌握二个要点,
一、文件基数为666
,目录为777
,即文件无设x
位,目录可设x
位。
二、chmod
是设哪个位,哪么哪个位就有权限,而umask
是设哪个位,则哪个位上就没权限。
我们只要记住umask
是从权限中"拿走"相应的位即可。