6. 第一个问题:文件的起始权限
为什么我们一创建文件,他的权限是这样的?
普通文件是:664
目录文件是:775
实际上,Linux系统给普通文件的起始权限是666
而默认给目录文件的起始权限是777
而Linux中存再权限掩码,我们可以用umask查看:
666的权限是:110 110 110(666)
而权限掩码是:000 000 011(0002)
最终的权限是:110 110 100(664)
我不废话,直接说计算规则:
最终权限 = 起始权限 & (~umask)
补充,当然,我们也可以自己修改umask:
我们可以看到,改了umask 之后,起始权限确实变化了。
7. 第二个问题:目录的权限
前面我已经介绍了目录权限相关的操作和现象,
现在有个场景:
有两个用户同时在一个公共目录下工作:(在d1目录下)
xl用户写了个文件,
test 用户可以查看这个文件
因为这个文件给other开发了读权限:
那么,如果我们把读权限取消呢?
这样,test 用户就无法阅读了:
这个时候,test 用户一气之下,想着不给我读是吧,你也别想好过
就想把这个文件删除:
结果这个文件真的被他删了,
明明这个文件不是test用户的,他却能够删除该文件,
很显然,这样的设计并不合理。
实际上,我们刚刚探索过目录的权限,
目录的权限是:
r 代表我们是否能够查看指定目录下的文件
w 代表我们是否能在当前目录下创建、更改和删除文件
这样一说,你可能会想到,那我么直接将该目录的w权限取消,
被人不久删不了文件了吗?是的,但是你要无法操作文件了。
那我们该怎么办?
8. 第三个问题:粘滞位
为了解决前面出现的问题,我们可以给目录设置粘滞位。
具体是怎么操作呢?
我们添加一个隐藏权限 t 给other,t 其实是一种特殊的 x 权限。
这就叫做粘滞位,
我们来看看效果如何:
xl 用户创建了一个test文件
我们发现,test 用户已经无法删除这个文件了:
这就是粘滞位。
实际上,被设置粘滞位的目录只有目录的所有者和文件的所有者才能删除文件。
其实啊,操作系统也提供了一个共享的粘滞位目录在根目录下:
如果有兴趣的话,也可以去体验一下。
总结
本文基本将权限涵盖的知识点都介绍了,相信你对权限的理解能够更上一层楼。
写在最后:
以上就是本篇文章的内容了,感谢你的阅读。
如果感到有所收获的话可以给博主点一个赞哦。