文件权限的默认设定--补码

为什么我们创建的文件的权限是644呢?

我们创建文件的默认权限是怎么来的?

umask命令允许你设定文件创建时的缺省模式,对应每一类用户(文件属主、同组用户、其他用户)存在一个相应的umask值中的数字

文件默认权限=666 ,目录默认权限=777

我们一般在/etc/profile、$ [HOME]/.bash_profile或$[HOME]/.profile中设置umask值。

永久生效,编辑用户的配置文件vim .bash_profile 

[root@xuegod63 ~]# vim /etc/profile

image.png

注: UID大于199 且用户的组名和用户名一样,那么 umask值为002,否则为022.

注: -gt 在shell中表示大于; id -g 显示用户组ID ,id -gn显示组名。 

 

临时生效: umask 权限补码

[root@xuegod63 ~]# umask 044

[root@xuegod63 ~]# touch ss.txt

[root@xuegod63 ~]# ll ss.txt

-rw--w--w- 1 root root 0 5月   8 21:47 ss.txt

 

权限的算法:一般情况是:目录默认权限-umask 值 

666-022=644 

777-022=755

#这是一个好的记忆方法,但不严谨。

 

互动:umask掩码为033  创建普通文件后,权限是什么? 

互动:umask掩码为033  创建普通文件后,权限是什么?  666-033=633  ( rw- -wx  -wx) ?

例:[root@xuegod63 ~]# umask 033

[root@xuegod63 ~]# touch k.txt

[root@xuegod63 ~]# ll k.txt

-rw-r--r-- 1 root root 0 5月   8 22:00 k.txt

答:结果为: 644

 

权限科学的计算方法:

1、将默认权限(目录777,文件666)和umask值都转换为2进制

2、对umask取反

3、将默认权限和umask取反后的值做与运算

4、将得到的二进制值再转换8进制,即为权限,

例1: umask 为022

6  6  6            umask    0     2     2

110 110 110               000 010  010    # 转成二进制

                                   111 101  101    # umask取反的值

110 110 110    与              #第二步,默认权限和umask取反后的值做与运算

111 101 101   # umask取反的值

110 100 100

6   4   4     #转成8进制

 

例2: umask 为033   结果为: 644

6  6  6            umask   0     3      3

110 110 110              000 011  011    # 转成二进制

                                  111 100  100    # umask取反的值

110 110 110    与              #默认权限和umask取反后的值做与运算

111 100 100   # umask取反的值

110 100 100

6   4   4    #转成8进制

版权声明:
作者:WaterBear
链接:https://l-t.top/1258.html
来源:雷霆运维
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>