博客园  :: 首页  :: 管理

关于linux系统中的umask值,我们可以通过man手册的解释为:The user file-creation mask is set to mode

简单的理解,就是用户的umask的值决定着文件(也包括目录)创建时的默认权限,对于root用户来说,一般为0022

[root@qq-5201351 ~]# umask
0022

这样可能还是不能很直观的表达出,可以通过如下的命令进行计算,以更容易理解的格式展示出来

[root@qq-5201351 ~]# umask -S
u=rwx,g=rx,o=rx

但上面的仅仅是针对的创建一个新目录后的默认权限将是 u=rwx,g=rx,o=rx    

这个是如何计算出来的,笔者经常使用的方法如下:

对于目录的默认权限:(rwx rwx rwx)  -  (0022)  -->   (rwx rwx rwx)  -  (--- -w- -w-)  = rwxr-xr-x  这样也就是上面的结果:u=rwx,g=rx,o=rx

对于文件的默认权限:(rw- rw- rw-)  -  (0022)  -->   (rw-  rw-  rw-)  -  (--- -w- -w-)   = rw- r-- r--  这样最后的权限结果就将是:u=rw,g=r,o=r

注意:因为对于文件,默认是不能有执行权限的,所以在计算时,被减数就只能为 rw-rw-rw- , 这样也能防止计算出的结果会有执行权限,那样就不安全了

 

还有一点需要说明一下,umask的值是4位,当然linux文件的权限也可以写成4位的形式,这里说明一下umask的第一位数字

笔者是参考至官网文档(Red Hat Enterprise Linux / 8 /Configuring basic system settings / Chapter 26. Managing the umask):

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_basic_system_settings/assembly_managing-the-umask_configuring-basic-system-settings

其中有一段Note,还特意解释了一下umask的第一位:

When displaying the umask in octal mode, you may notice it displayed as a four digit number (0002 or 0022). The first digit of the umask represents a special bit (sticky bit, SGID bit, or SUID bit). If the first digit is set to 0, the special bit is not set.

也即是说,umask的第一个数字表示一个特殊位(SBIT粘性位、SGID位或SUID位),如果第一个数字设置为0,则不设置特殊位。

但实际上,对于umask,要么我们就写三位,前面就默认为0

如果写成4位,那么第一个数字,也只能为0 ,否则会报错:-bash: umask: 1000: octal number out of range

 

 

 

尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/17432433.html