Linux权限(下)

本文详细讲解了Linux权限系统中的文件权限修改方法,包括文件所有者、所属组权限,以及权限掩码、目录权限和粘滞位的作用。重点阐述了如何正确理解和应用chmod命令以及权限掩码对默认权限的影响。
摘要由CSDN通过智能技术生成

一.权限修改的方法

当我们在修改拥有者权限时,可以发现有三条杠,第一个杠只能是读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/

只有文件的拥有者能删除自己的文件,别人的文件无法删除文件

本章完结,点个赞和关注吧!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值