Linux权限理解

1、Linux权限概念

1.1、认识Linux下用户分类

Linux下用户分为,root:超级用户,zzy:普通用户,我们自己添加(adduser)的用户。
root用户是不受权限约束的,而普通用户是受权限约束的。

在这里插入图片描述
上面可以看到,普通用户命令提示符是$,超级用户命令提示符是#。

那么在Linux中如何进行用户切换呢?
1)普通用户切换成超级用户:su - 需要输入超级用户的密码
在这里插入图片描述
2)su切换:
在这里插入图片描述
可以看到,su -:切换后会改变环境变量和工作目录,使其与目标用户的登录环境一致。su:仅切换用户身份,不改变环境变量和工作目录。

3)su 用户名:切换成其他用户。或su -用户名。类似上面,su 用户名不改变环境变量和工作目录,而su -用户名会改变。
在这里插入图片描述

4)使用sudo命令,可以进行临时权限提升,将权限提升为root账户。
但是默认情况下你使用sudo命令是使用不了的,需要添加系统信任白名单才行。

下面介绍添加系统信任白名单使得用户可以使用sudo:使用vim打开/etc/sudoers,要使用root账号不然啥也看不到,而且你也没有权限修改。
在这里插入图片描述
在root账户下添加一行你的账户名,后面跟root一样即可。保存退出后就可以使用sudo了。
在这里插入图片描述
这时候使用sudo命令输入密码输入的就是你账户的密码。


1.2、什么叫做权限?

一件事情是否允许你做,这就叫做权限。例如,你不能跑到校长办公室去看校长在干什么,说你来视察工作。因为你没有权限。一本书你可以看,可以翻,但是你不能拿来吃,这是由书本身的属性决定的。因此:
1、权限认证的身份(权限和人有关)。
2、权限也和事物的属性有关。

那么对于文件,它的权限就是读、写、执行。
在linux中,有普通用户和超级用户root。还有三种角色:拥有者,所属组,其他人。

通过ll可以列出文件的详细信息:
在这里插入图片描述

第一列代表的是文件类型,分类有:
-:普通文件,如文本、可执行程序、库。
d:目录文件。
b:块设备文件,如磁盘文件。
c:字符设备文件,如键盘、显示器文件等。
p:管道文件,用来通信的。
l:软连接。

第二个框代表的是权限,总共有九个,三个为一组,分别是:拥有者、所属组、其他人的权限。
第三个框表示拥有者和所属组是谁。
第四个框表示文件的大小。
第五个框表示文件最近创建或修改的时间。
最后就是文件名了。

对于文件的权限:r表示可读,w表示可写,x表示可执行。如果为-表示该权限不存在。例如rw-表示可读可写,但不可执行。三个一组分别表示拥有者、所属组、其他人的权限。

在linux中并不以文件后缀表示文件的类型。但是,使用gcc/g++编译器是需要用后缀来标识文件的。
如何理解linux两种用户和三种角色呢?linux用户都是三种角色中的一种,只不过对于root来说,他是不受权限约束的。
那么为什么需要所属组呢?假设现在你们小组需要共同完成一项任务,你写的代码需要让小组的其他人看到,但是你又不想让另一个小组的人看到,如果不存在所属组,然后你把权限公开之后,虽然你小组的人也能看到,但是你的竞争对手另一个小组也能看到。所以需要所属组,有了所属组权限,你们小组的人都能看到你写的代码,但是另一个小组是其他人,就看不到你写的代码了。


2、Linux下修改权限

2.1、chmod修改权限

使用chmod可以修改拥有者、所属组、其他人的权限。
文件权限的修改,只有root和文件拥有者可以进行修改。

chmod u(+/-)(r/w/x):添加/删除拥有者的读、写、执行权限。
chmod g(+/-)(r/w/x):添加/删除所属组的读、写、执行权限。
chmod o(+/-)(r/w/x):添加/删除其他人的读、写、执行权限。
还可以使用chmod u=rwx进行修改。

1)使用chmod u+x添加拥有者可执行权限:
在这里插入图片描述

2)使用chmod u-rwx:删除拥有者的读、写、执行权限:
在这里插入图片描述

3)使用chmod o-r:删除其他人的可读权限:
在这里插入图片描述
可以看到其他人的权限为---,说明不可读不可写不可执行。对于root来说,照样可以用cat读取文件信息,说明root是不受权限约约束的。而对于其他用户zxf想读取文件信息则不行。

4)使用chmod g-rw:删除所属组的读、写权限。
在这里插入图片描述

还可以使用八进制的方式修改角色权限,对于上面每种角色都有三种权限rwx,对于每种权限存在就是1,不存在就是0。111表示可读可写可执行,那么转换为八进制数就是7。三种角色111 111 111合起来就是777,就是拥有者、所属组、其他人可读可写可执行。

5)chmod 777:修改文件权限为所有角色可读可写可执行。
在这里插入图片描述

6)chmod 166:修改权限为拥有者可执行,所属组可读可写,其他人可读可写。
在这里插入图片描述

7)使用chmod u=rw-:修改拥有者的u权限为可读、可写、不可执行。
在这里插入图片描述

8)使用chmod对多个角色进行权限修改
在这里插入图片描述

2.2、修改拥有者/所属组

修改拥有者/所属组可以使用以下命令:
chown zxf 文件名:修改文件拥有者为zxf。
chgrp zxf 文件名:修改文件所属组为zxf。

9)使用chown zxf修改文件的拥有者为zxf
在这里插入图片描述
可以看到默认是不能修改拥有者的,为什么?你把东西给别人能直接给吗?别人还不一定要。
这里我们使用sudo提升权限。

10)使用chgrp zxf修改文件的所属组为zxf
在这里插入图片描述

11)使用chown zzy:zzy,同时修改文件拥有者和所属组为zzy
在这里插入图片描述


3、默认权限

在这里插入图片描述
为什么创建出来的普通文件和目录是我所看到的样子?
普通文件默认权限:664
目录默认权限:775

其实:
默认给普通文件的起始权限是:666
默认给目录文件的起始权限是:777

umask:权限掩码,凡是在umask中出现的权限,不会在最终的文件权限中出现。
在linux下,可以通过umask查看权限掩码:

在这里插入图片描述
可以看到默认权限掩码为0002,我们只看后三位,就是002。
最终权限 = 起始权限 & (~umask)
在这里插入图片描述

现在我不想让创建出来的文件和目录有可执行权限,我可以将权限掩码修改为111:
在这里插入图片描述


4、目录权限

1)目录的读权限:
在这里插入图片描述
如图:去掉目录拥有者的读权限,拥有者还是可以进入该目录,可以移动目录下的文件。
目录的r权限:是否允许我们查看目录下的文件。

2)目录的写权限:
在这里插入图片描述
如图:删除目录拥有者的写权限,拥有者可以读,可以进入该目录,但是不可移动目录中的文件,也不能删除目录中的文件。
目录的w权限:是否允许我们在当前目录下进行创建、删除。

3)目录的可执行权限:
在这里插入图片描述
如图:删除目录拥有者的可执行权限,用户可以读,但是无法进入目录中。
目录的x权限:是否可以进入目录。

所以,我们能否进入一个目录中,看的是目录有没有可执行权限。


5、粘滞位

背景:比如张三将数据写好之后需要交给李四处理。那么我们就需要建立一个共享文件。
在这里插入图片描述
我们可以看到,用户家目录的权限对于其他人都是不可读、不可写、不可执行的。
所以我们不能在用户家目录下创建共享目录。

现在我们转而在根目录下创建共享文件shared,然后由于张三需要在里面创建文件,而李四需要在里面读取文件,所以对于其他人需要有读和可执行权限:
在这里插入图片描述

现在张三在里面创建了文件,文件对于其他人有可读权限,所以李四可以读取文件内容:
在这里插入图片描述

现在张三突然把其他人权限修改为不可读,李四就无法读取了,李四一气之下直接rm -rf把文件删了:
在这里插入图片描述
为什么张三创建的文件李四可以删除?因为目录下文件删除、增加、修改等都是由目录的w权限决定的。对于shared这个目录,它对于其他人有w可写权限,所以所有人都可以在该目录下添加文件,也可以删除该目录下的文件。

一个文件能否被删除,并不由文件本身决定,而是由这个文件所处的目录决定。

那么为了不让李四删除文件,我们能不能去掉shared对于其他人的w权限呢?
不行!因为如果去掉w权限,那么张三也不能在shared目录下创建文件了。

解决办法:粘滞位
粘滞位:给目录设置,一般是共享目录,大家可以在目录进行各自文件的增删查改,只允许文件的拥有者或root能删除这个文件,其他人一概不允许。t权限——一种特殊的x权限。

在这里插入图片描述

在这里插入图片描述
上图可以看到,文件创建者zzy是可以删除文件的,但是zxf是不能删除文件的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值