权限的概念
用户的分类
在Linux中用户分为两类:
- root——超级用户,可以在Linux系统中不受任何约束的用户
- 普通用户,受权限约束
root的命令提示符是"#“,而普通用户的命令提示符是”$",我们在切换切换用户时的命令是:
su xxx//要切换的用户名
root账户切换成普通用户,不用输入密码,而普通用户切换成root时要输入密码,并且在普通用户切换root时,可以只输入su,后面的root可以忽略。
权限的管理
简单点说就是,权限 = 人 + 事物属性
文件访问者(人)
分为3类:
- 拥有者:user——u
- 所属组:group——g
- 其他人:other——o
文件类型和访问权限(事物属性)
我们先分创建一个文件和一个文件夹:
touch test.txt//创建一个名为test.txt的文件
mkdir new_dir//创建一个名为new_dir的文件夹
创建好后我们再查看这两个文件/文件夹的详细信息:

看到最前面那一串字母,什么意思呢?
首先这串字母一共10个字母,
第一个表示文件类型:
d代表是一个文件夹
-表示是一个普通文件
另外还有一些:
b:块文件,block、磁盘
c:字符设备,键盘或者显示器
p:管道文件
s:网络socket文件
l:链接文件link
后面剩下9个字母表示文件访问者的权限:
3个为一组,分别为rwx,共3组,
第一组表示该文件的拥有者的权限,第二组表示所属组的权限,第三组表示其他人的权限。
r —— 可读
w —— 可写
x —— 可执行
如果对应的位置为-,表示没有该对应的权限
看到这里,我们就可以分析出:
刚创建的new_dir第一个字母是d,表示它是一个文件夹,并且该目录的拥有者和所属组拥有可读可写可执行的权限,而其他人只有可读和可执行的权限。
test.txt的权限中第一个字母是-,表示它是一个普通文件,拥有者和所属组有可读可写的权限
我们也可以修改权限,要用到的命令就是chmod:
chmod o+w test.txt//给test.txt的拥有者加上可写的权限
给谁加权限:
拥有者user —— u
所属组group —— g
其他人other —— o
所有人all —— a(这个也可以不加a,也表示给所有人加权限)
加什么权限,这个就更容易理解了,rwx分别对应可读、可写、可执行。
去掉权限就把“+”改成“-”。
还有另外一种改权限的方法:
我们把拥有的权限当作1,没有的或者是‘-’的表示0,那么:
-rwxrwx---
//用二进制的形式表示就是111111000
把111111000转换成八进制就是770,所以,我们就可以这样:
chmod 770 test.txt//把test.txt文件的权限改成拥有者、所属组都具有可读可写可执行权限,而other没有任何权限
起始权限和最终权限
其实,权限也分为起始权限和最终权限,我们创建出来看到的权限就是最终权限。
起始权限是系统设定的,普通文件设定的起始权限默认是666,目录的起始权限默认是777,系统为了更好的控制权限,系统会有默认的权限掩码(umask)的概念。
权限掩码:在起始权限中,去掉umask中出现的权限,不能影响其他任何权限。
我们可以通过指令查看当前权限掩码:
umask//输入指令后回车就会显示,也可以修改:在后面加上想要赋的值
我这里回车后就显示0002,前面那个数字先不看,所以此时权限掩码就是002,我们也可以修改权限掩码,只需要在umask后面加上想赋的值就行。
再来看看最终权限,其实是有个公式来算最终权限:
最终权限 = 起始权限 & (~umask)
举例:
文件的起始权限是666,转换成二进制就是110 110 110,
而此时权限掩码是002,按位取反就是111 111 101,
最后按位与:得到的结果就是110 110 100,转换成八进制就是664,所以我在前面最开始创建了一个test.txt的文件,它的最终权限就是664。
粘滞位
我们在共享文件夹(权限为777)时,存在这么一个问题:如果我把共享文件夹里自己的文件设置成仅自己可以读写,other没有任何权限,但是other还是可以进行删除,这是为什么呢?
因为在共享目录中创建或者删除文件的权限是由w(写)决定的。
那我把other的w权限去掉不就行了?如果把w权限去掉,那岂不是其他人也不能在这个共享目录里创建文件了。
所以,为了让大家共享文件,且不让其他人随便删除别人的文件,于是就有了粘滞位,它只能给文件夹添加,一般都是给共享文件夹添加,把要共享的文件都放在这个目录里。
添加粘滞位的命令如下:
chmod +t xxx//xxx表示文件夹,回车后,这个文件夹的other权限最后就不是x了,而是t
添加之后,我们(普通用户)就不能删除别人的文件了。
补充
对于文件夹来说,可读并不意味着可以直接查看该文件夹中的文件,要先有可执行权限,可执行是可以对该文件夹进行指令操作,其中就包括进入该文件夹,如果没有x(可执行)权限,那么哪怕有r(可读)权限也不能查看文件里的内容。
3万+

被折叠的 条评论
为什么被折叠?



