关于Linux中umask的计算方法

            最近学习到了文件权限这一章,对于umask这个知识点的计算方法心中有点疑问,于是在网上查找了很多资料,大部分都是2010年以前的网页了,基本都是说目录权限就用777-umask,文件权限就用666-umask,如果这么简单的话那么当umask设置为022和033的时候为什么创建的文件权限都是644?所以,仅仅这种简单的方法显然是不太可取的,这种方法计算目录权限还行,文件的就不准了,下面总结了两种计算方法:


① 以二进制方式换算:

     先将将总的权限(目录777,文件666)和umask值都转换为2进制,然后对umask取反,再将两个2进制值做与运算,得到的二进制值再转换十进制,即为权限,


例如:
666=0110 0110 0110
umask=000=0000 0000 0000 NOT运算 1111 1111 1111

0110 0110 0110
1111 1111 1111
------------------------------
0110 0110 0110=666

umask=011=0000 0001 0001 NOT运算 1111 1110 1110

0110 0110 0110
1111 1110 1110
------------------------------
0110 0110 0110=666

umask=022=0000 0010 0010 NOT运算 1111 1101 1101

0110 0110 0110
1111 1101 1101
------------------------------
0110 0100 0100=644

umask=033=0000 0011 0011 NOT运算 1111 1100 1100

0110 0110 0110 
1111 1100 1100
------------------------------
0110 0100 0100=644


②第二种方法就是直接将权限数字代表的栏位写出来,进行对比判断,比较简单直观,适用于知道umask然后计算权限的考题,而对于给予权限然后计算umask的题目第一种方法可做参考:

umask=000
(rw-rw-rw-)-(---------)=rw-rw-rw-=666

umask=011
(rw-rw-rw-)-(-----x--x)=rw-rw-rw-=666

umask=022
(rw-rw-rw-)-(----w--w-)=rw-r--r--=644

umask=033
(rw-rw-rw-)-(----wx-wx)=rw-r--r--=644

umask=044
(rw-rw-rw-)-(---r--r--)=rw--w--w-=622

umask=055
(rw-rw-rw-)-(---r-xr-x)=rw--w--w-=622


这两种方法是我看到的很靠谱的方法,欢迎大家给予指点和建议。


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值