大家好,今天详细讲解一些关于目录权限的细节
很多细节都是通过问答方式,希望大家可以先自己思考一下答案然后再听我的分析
欢迎指正错误,我们共同成长
目录
1.目录的权限
2.默认权限
3.粘滞位
1.目录的权限
如果我们要进图一个目录只需要一个权限是谁?x权限(可执行权限 )
对于目录来讲:
r代表:在没有r权限的目录下,我们无法查看当前目录下的文件名+文件属性
w代表:在没有w权限的目录下,我们无法直接在该目录下创建新的文件
2.默认权限
为什么我们创建的普通文件(不包括可执行,可执行一定有x)的默认权限是从66
4开始的,为什么目录的默认权限是775(不同的操作系统的默认权限可能是不一样的)
其实一共分为三个权限:默认权限,起始权限,最终权限
普通文件的起始权限是666(没有x)
目录文件的起始权限是777(rwx)
系统为了更好的控制文件权限,有“权限掩码”的概念,也就是umask
首先我们思考一个问题,现在有八个比特位1011 1010 想要提取后4个比特位怎么办?
可以1011 1010 & 0000 1111 =0000 1010
其实叫做提取后四位并不是很严谨,可以说是清空其余位,只保留后四位
那么0000 1111就可以叫做掩码
权限掩码:在起始权限中去掉在umask中出现的权限,不能影响其他权限的使用
最终权限=起始权限 &(~uamsk) 这个~是按位异或,但是在这里打不出来...
umask是一个四位数比如0002 或者 0007,但是他显示出来 我们在读的时候忽略第一位数字,第一位数字是有意义的 但是现在先不进行说明
怎么查看umask ,直接敲出指令 umask 就能看到,如果我现在想修改直接 umask 007 就把掩码改成了0007
编程语言中常常以数字0开头表示这个一个八位数
3.粘滞位
背景:在使用Linux可能会有共享目录,被所有普通用户共享,用来保存普通用户产生的临时数据
作为一个普通用户,正常情况下我的所有数据都保存在我的家目录下,家目录属于我,只有我有rwx其他人什么权限都没有,别人没有x就不能看看我目录里面有什么
准备:共享目录通常是root提供的,文件被所有人共享的时候受权限约束,但是拦不住别人删我的文件
为了让大家共享文件并且不能随便删除别人的文件,引出粘滞位的概念
粘滞位只能加给目录,当然是共享目录添加
怎么加:chmod +t 目录名
比如最后目录的权限变成了d rwx rwx rwt 这个最后的t就是加的粘滞位
设置完粘滞位之后只三种人能删除目录里面的文件:文件拥有者,root,目录的拥有者
因为他们都具有w权限
感谢