一.权限修改的方法
当我们在修改拥有者权限时,可以发现有三条杠,第一个杠只能是读r或者是-,第二条杠只能是写w或者是-,第三条杠只能是执行x或者是-
这些rwx-也可以用八进制来表示:
r--:100 = 4
w--: 010 = 2
x--:001 = 1
rx-:101 = 5
rw-:110 = 6
rwx:111 = 7
---:000 = 0
我们想把test.c文件加上rw权限就可以用chmod 666 test.c,
二.文件拥有者权限的修改
2.1whb用户下传文件
当我在普通用户下如何将test文件传给root用户
chown root test.c直接给是传不过去的
可以提升权限sudo chown root test.c
也可以把文件要回来sudo chown whb test.c
2.2root用户下传文件
我们知道root用户的权限比whb普通的用户权限大
传送文件不会出现权限不足的问题
chown whb test.c
三.文件所属组权限的修改
在whb普通用户下chgrp root test.c是不行的
强制sudo chgrp root test.c
其他用户不用自己修改,拥有者和所属组更改了,other跟着改
如果不太熟悉如何查看文件的类型
就可以用file指令,可以看到test文件是空的
,目录文件dir
,字符设备
,块设备
四.权限掩码
4.1默认权限
当我们创建文件发现文件的默认权限是664rw-rw- r
创建目录的默认权限是775rwx rwx r-x
不应该都是666和777吗为什么会这样?
原因是有权限掩码的存在
4.2umask权限掩码
umask指令查看权限掩码
只看后3位当前权限掩码是002,002表示的八进制位
权限掩码是可以被修改的
umask + 数值
,从之前的0002修改为0001
4.3权限掩码的修改对默认权限的影响
当权限掩码为umask 0003时
file.txt文件的权限是664rw- rw- r--
dir目录的权限是774rwx rwx r---
权限掩码如何对默认权限产生影响的呢
就拿0002来说吧,
默认权限777八进制位是111 111 111
权限掩码002的八进制位000 000 010
如果默认权限八进制位中有与权限掩码八进制位中相同的数值就得去掉
默认权限:111 111 111
权限掩码:000 000 010
最中权限:111 111 101
最终权限=起始权限 去掉 权限掩码中出现的权限
就得到了775
凡是在权限掩码中出现的权限,最终都是要在默认权限(起始权限)中去掉
有人就有疑问了
这里的去掉是相减吗?
4.4最终权限=起始权限-权限掩码(错误)
权限掩码为0000,
创建dir0目录的权限为777
权限掩码为0001,
创建dir1目录的权限为775
权限掩码为0002,
创建dir2目录的权限为665
权限掩码为0003,
创建dir3目录的权限为664
通过上述一系列的操作我们发现最终权限就是起始权限减权限掩码得到的
来看一个特列:
当目录的权限为666,八进制位是110 110 110
权限掩码为003,八进制是 000 000 011
做减法:
起始权限:110 110 110
权限掩码:000 000 011
最终权限:110 110 011
663 rw- rw -wx
创建test.txt
发现最终权限不是我们预期的结果663
4.5最终权限=起始权限 位运算 最终权限(正确)
去掉是清零指定的比特位,是位运算
回个一下c语言中位运算的知识:任何数与1按位与都等于本身,0按位与任何数都为0
1 & 0 =0
0 & 0 =0
1 & 1 =1
正确算法是:最终权限=起始权限 & (~umask)
起始权限:110 110 110
权限掩码:000 000 011~按位取反 111 111 100
再按位与110 110 110 & 111 111 100
最终权限:110 110 100
有了正确认识后我们就知道为什么创建的默认权限是664
因为权限掩码的默认权限是002
五.目录权限
当我想进入一个目录需要什么权限呢
利用chmod 700 dir把文件的其他拥有者的权限全部去掉,只留下拥有者权限
5.1x权限进入目录
1.chmod u-r dir去掉读权限
正常进入
2.chmod u+r,u-w去掉写权限
正常进入
3.chmod u+w,u-x去掉执行权限
去掉x执行权限进入失败
进入目录需要x权限
5.2r权限显示当前目录下内容
chmod u-r去掉读权限
无法显示当前目录下的文件列表
5.3w权限在当前目录下创建文件
chmod u-w去掉读权限
无法在当前目录下创建文件
我对dir目录有读权限,就对dir目录下的文件有读权限
总结:
1.一个文件一定是属于一个目录的,一个文件属性能不能被查看,是由目录的权限决定的
2.一个文件一定是属于一个目录的,一个文件能不能被删除,与文件本身没有关系,与所属的目录对应的账户是否有w权限有关
5.4其他用户进入目录
777是让文件能够正常读写,权限掩码0002是让其他用户去掉w写权限,防止别人乱删
有问就会有疑问了,如果有人和我一个目录下呢,即使他没有文件rwx权限,但利用目录的权限可以把我的文件删除呢
一般情况不会发生
因为第一个目录就去掉了其他用户的所有权限根本进不来
特殊情况(公共目录)多个账号想互相协同共享一些数据,他们都不能进入对方的目录
在/根目录下创建一个能分享文件的根目录mkdir shared
此时他们并没有w权限,把他们的目录权限都放开chmod 777 shared/
我们都可以在这个shared目录上创建文件,大家都能看到彼此的文件
5.6粘滞位
在共享文件下,我不想让别人看我的文件我就把他的w权限去除,但别人把我删掉了怎么办?
所以在共享权限下是有缺陷的,针对这种缺陷新增了一个概念,叫粘滞位
粘滞位只能给目录设置
chmod o+t shared/
只有文件的拥有者能删除自己的文件,别人的文件无法删除文件
本章完结,点个赞和关注吧!!!