Linux 权限理解及其概念

再次理解Linux的版本

广义上:Linux发行版=Linux内核+外壳程序
狭义上:Linux=Linux内核

在这里插入图片描述

进程

什么是进程:
对于进程,我们先有个基础的认识就可以了,进程就是一个个运行的程序。
在这里插入图片描述
任务管理器上这些运行的程序都是一个个进程。

命令解释器

大家在运行Linux指令的时候有没有想过,我们敲下的这些指令,究竟是谁在替我们执行呢?

Linux中所有指令最终的运行都是通过操作系统执行的。
但是普通用户在发出指令的时候并不是与操作系统进行直接交互的,有以下几个原因:
1.操作成本高,普通人想要直接使用操作系统,还需要花费大量的时间去学习。
2.安全性低,一些错误的操作可能会对操作系统造成损害。

因此需要一个媒介帮助用户与操作系统进行间接的沟通。
Linux中这个程序就是外壳程序shell(命令解释器)。

关于三者的关系如图所示:
shell称作命令解释器的一个原因也是如此,进行指令的交互与翻译。
在这里插入图片描述

为了更好的理解,我们通过一个故事来讲述三者的关系:
背景:年轻人阿春回到了村庄,他的父亲是当地的村长。阿春到了谈婚论嫁的年纪了,父亲想为阿春找一个女朋友,于是父亲找到了当地的媒婆。
ps::故事线就是根据图中的1,2,3,4进行发展的。
在这里插入图片描述
(1)阿春告诉媒婆他看上了如花。
(2)媒婆将这个消息传递给如花。
(3)如花得到消息以后告诉媒婆她并不喜欢阿春。
(4)媒婆将如花拒绝阿春的消息告诉阿春,并让阿春放弃。

可是阿春非常喜欢如花,所以他又去找了媒婆,于是:
在这里插入图片描述
(1)阿春让媒婆再去找如花。
(2)媒婆又去找了如花。
(3)如花说她已经结婚了,不可能会和阿春在一起的。
(4)媒婆告诉阿春说,他和如花不可能的,让他换个人。

谁知道阿春这小子,就一心要找如花。于是他又去找了媒婆:
在这里插入图片描述
(1)阿春让媒婆再去找如花
(2)这时媒婆因为知道如花不可能答应阿春这个结果了,所以他没有将阿春的需求告如花,而是直接将如花拒绝他的结果告诉啊春。

媒婆的这种行为其实也是对如花的一种保护。我们将阿春看作普通用户,媒婆看作是外壳程序,如花看作是内核os。这时媒婆绕过如花直接将结果告诉阿春的行为也就是外壳程序内核os的一种保护。
这种行为类似在xhell上执行错误命令:
shell外壳提前就知道了这是一个错误指令,因此就不会将这个指令传递给内核os,而是直接将结果告诉用户。
在这里插入图片描述

阿春这小子真的有毒,又叫媒婆去找如花。媒婆这时候想:这小子也是有问题,但是阿春父亲又是当地的村长,媒婆没法拒绝。媒婆作为村庄有名的媒婆,她心想,她这样每次去找如花,肯定会砸了自己的牌匾的。因此
媒婆想出了一个做法:
在这里插入图片描述
(1)阿春再次找媒婆
(2)媒婆想出的方法就是让底下的员工去找如花,这样既不会砸了她作为当地有名媒婆的牌匾,又不会让村长没了面子。
(3)员工找到了如花,告诉了如花阿春的要求
(4)如花也是很烦,依旧还是拒绝了阿春。
(5)员工将如花的结果告诉媒婆
(6)媒婆将结果告诉阿春

媒婆的这种行为既保护了自己的牌匾,又不会让村长没了面子,事情一直在办,虽然没有结果,但是就是一直在运行着。

故事就结束了:我们依旧将阿春,媒婆,如花三者对应用户外壳程序内核os。将媒婆的员工看作是外壳程序创建的子进程。
对应Linux中就是外壳程序创建子进程,为其进行命令解释的工具。
创建子进程有一个好处:即使该子进程因为遇到有风险的事情挂掉了,其也不会影响到外壳程序,也就是对应媒婆的牌匾不会受到影响。

总结:外壳程序的作用:
1.保护内核安全。
2.拒绝非法访问。
3.处理请求指令,外壳程序直接与内核进行指令交互或者创建子进程帮助他和内核进行交互。

但是问题又来了,我们前面都在讲shell外壳程序的作用,那么这个bash又是个啥玩意?
可以这里理解:shell是所有外壳程序的统称,而bashLinux下具体使用的一种类型的外壳程序。
举例说明:shell是手机的品牌,bash就是其中的一个品牌,如小米。

再次理解进程

前面我们说外壳程序会创建子进程为他执行命令解释工作,那么外壳程序本身是否又是一个程序?或者说是一个进程呢?
答案是的:外壳程序本身也是一个进程,用户每次登录Linux就会为其创建一个bash

对此我们进行验证:
当登录一个用户时:
Linux为我们创建了一个bash
在这里插入图片描述
当登录第二个用户时:
我们发现多了一个PID221310bash,这也验证了结论:每次登录Linux都会为用户创建一个bash
在这里插入图片描述

ps::
ps axj :查看当前运行的所有进程。

如果我们将这个进程杀掉会怎么样呢?
将编号为221310bash干掉以后,用户直接退出登录了,没有bash,就没人能够进行命令解释的工作了。
在这里插入图片描述

权限

什么是权限?

百度百科是这样定义的:“权限是指为了保证职责的有效履行,任职者必须具备的,对某事项进行决策的范围和程度。”

这种官方的定义对于我来说自然是不能理解了:我是这样理解权限的,我平常有使用酷狗音乐听周杰伦的歌曲,但是周董的歌都需要vip,所以如果我没有充值,我就听不了这个歌曲,这也就是我没有这个权限。一旦我充值了会员,我就会获得听会员歌曲的权限。

总的来说:
1.权限是对人,也就是对用户的一种约束。
2.权限=人+属性
3.文件都带有三种权限:1.读权限,2.写权限,3.执行权限
这个概念我们会慢慢在后面进行渗入。

关于权限:大家有一个大致的概念就好了,在后面的学习中会逐渐加深Linux中权限的认识。

Linux中的两种用户

在基础指令部分我们就有提到Linux中的两种用户:

(1)普通用户:具有一般的权限,需要受到权限的约束。
(2)root用户:Linux中的超级管理员,具有很高的权限 。

普通用户和root用户如何转换

在使用普通用户的时候,因为权限
   ( 1 ) (1) (1)普通用户切换root用户
格式:su -
格式:su
功能:从普通用户转换为root用户
ps::在输入指令以后需要输入root用户的密码,上面的两种格式都可以切换成root用户,第一种格式切换到root以后会跳转到root的工作路径,而第二种格式会保持当前路径。
在这里插入图片描述
   ( 1 ) (1) (1)普通用户切换成另一个普通用户
格式:su - 切换的用户名
功能:切换成其他的普通用户。
ps::输入的是所切换用户的密码。
在这里插入图片描述

关于su命令还需要注意的是:在当前用户的基础上切换用户的时候,上一个用户不会被关闭,其仍然在运行,所以如果我们想要退回上一个用户:
输入exit或者ctrl+d进行回退(回退以后当前用户就会被关闭)就行了。
如下图所示:
当前用户为tailin
切换root用户
使用exit命令回到最初的用户tailin
ps::如果切换了很多次,那么就可以多次回退到。
在这里插入图片描述
注意::使用su命令切换的时候,不能一直进行切换:
因为我们说了每次切换都会创建一个新的用户,并且之前的用户不会被关闭。每次创建一个用户Linux都会创建一个bash,频繁的切换并且不回退就会导致系统中创建了很多个bash,就会导致需要占用很大的运行空间,致使系统运行变慢。
对此进行验证:
每次使用su命令切换成普通用户和root用户,bash的个数是不断增长的。

在这里插入图片描述
   ( 2 ) (2) (2)临时切换成root用户执行当前命令
sudo + 要执行的命令
这样这条命令就是以root的身份执行
在这里插入图片描述
关于sudo的信任配置涉及到vim的知识,在下一篇博客vim中,我们会具体讲到如何添加信任关系,大家可以暂时先使用su一段时间。

linux中的用户类别

Linux中有三种用户类别:
(1)拥有者 owner
(2)所属组gruop
(3)其他 other
对于三个用户类别具体是什么意思我们在后面会说明,接下来我们先进行学习文件的详细属性信息:
(1)Linux中的文件类型:
Linux中的文件不以后缀进行区分。
Linux下,一切皆文件,这个概念很重要。
在这里插入图片描述
(2)用户类别权限
在这里插入图片描述
红黄绿分别对应不同类别对于该文件所具有的权限。
r:读权限
w:写权限
x:执行权限
-:不具有对应的权限
myfile文件:
拥有者:rw-,拥有者对于该文件能够读,能够写,不能执行。
所属组:rw-,所属组对于该文件能够读,能够写,不能执行。
其他:r--,其他对于该文件只能读。

(3)拥有者和所属组
Linux中,第一个名字代表拥有者,第二个名字代表所属组。
file.txt的拥有者为Fengli,所属组为Fengli
拥有者:拥有者就是文件的拥有者。
对于拥有者,想问大家一个问题,文件的拥有者是否就是文件的创建者

这个问题一开始我也没想清楚,但是我们类比生活就很简单了,我们花钱买东西,但是那个东西不是我们创造的,但是我们花钱以后他就属于我们了。
所以说文件的创造者不一定就是文件的拥有者!!!

其他:不是文件拥有者就都属于其他
这两个类别都很好理解,但是所属组又是个什么东西:
我们举例说明:
在一家公司内部,有两个小组A组和B组,公司最近要出一款游戏,两个小组分别要给出游戏的设计方案,哪个小组的方案好就可以参与游戏的制作,相反另一个小组就需要解散重组。两个小组的关系就属于内部竞争。
并且因为资金不够,两个小组共用的一台服务器。
某一天李四写了一个文件代码,想要给组长看一下代码怎么样,但是组长的用户类别为other,他不具有查看文件的权限。如果将文件的权限赋予给other,就会导致竞争对手也能看到自己的代码,这肯定是不行的。
因此所属组对应出现:
可以为属于同一组的组员赋予权限,只有当前组的成员才具有这种权限。
这时组长李四属于同一个组,组长就具有权限查看李四的文件。
在这里插入图片描述

前面我们说到了root用户和普通用户,既然有了这两种用户,为什么Linux中还设置了三种用户类别?
在这里插入图片描述
用户类别只是该类别对于文件/目录所具有的权限,最终用户类别还需要具体化映射到一个人身上。说白了other可能是普通用户,也可能是root用户。

修改文件对应用户类别的权限

注意::只有文件拥有者root具有修改文件对应类别的权限
   ( 1 ) (1) (1)增加对应类别的权限
格式:chmod u/g/o+增加的权限 对应的文件名
u:拥有者
g:所属组
o:other

在这里插入图片描述
   ( 2 ) (2) (2)删除对应类别的权限
格式 chmod u/g/o-删除的权限 对应的文件名
在这里插入图片描述
   ( 3 ) (3) (3)支持同时修改多个类别的权限
格式:chmod u+/- 修改的权限 o+/- 修改的权限 文件名
在这里插入图片描述
   ( 4 ) (4) (4)同时修改三个类别的权限
chmod a -/+修改的权限 文件名
在这里插入图片描述

作为文件的拥有者:如果没有文件对应的类别权限,还能正常的读写文件吗?
答案是:依旧可以,因为其是文件的拥有者
在这里插入图片描述
但是如果没有文件的x权限,也无法执行文件,因为执行权限受到了强约束。
在这里插入图片描述

我们还需要知道一个概念:具有x权限,就能运行这个文件吗?
能运行这个文件的前提是这个文件必须是一个可执行文件。
举例说明:我们在windows下创建.txt结尾的文件,我们具有执行该文件的权限,但是由于文件本身的类别约束,所以其无法运行,在Linux下也是同理。

证明:给test.c文件加上x权限。
在这里插入图片描述

root权限

rootLinux中的超级管理员,如果使用普通用户创建了一个文件,剥夺other的所有权限,切换到root时,权限是否能约束到root
test.c文件中,root作为other不具有对该文件的任何权限。
在这里插入图片描述

但是经过操作可以看出:
root可以读取该文件的内容并且还可以修改文件的内容。
4fdf20c01.png)
在这里插入图片描述

但是虽然root很强大,依旧也会受到一些约束。在Linux中,可执行文件具有强约束,如果root没有x权限,其也不能运行该文件。(虽然说root可以修改任意一个文件的权限,但是这也是一种提醒,该文件运行起来可能有风险,作为root如果你提升了该文件的权限,那么你就得自己承担可能的后果)。

后面对于权限的讨论基本都是基于普通用户的,权限约束的是普通用户,对于root,权限基本做不到约束。

修改文件的所属组和拥有者

   ( 1 ) (1) (1)修改拥有者
ps::将一个文件的拥有者修改成其他用户的,对应的也需要这个用户的允许,不能直接就将文件仍给这个用户。因此只有root对应具有这个权限。
所以在修改文件的拥有者的时候需要通过su转换成root进行修改。
格式:chown 修改以后文件的拥有者 文件名
在这里插入图片描述
   ( 2 ) (2) (2)修改所属组
在修改所属组的时候需要对应两种不同的情况,我们进行分类讨论:
一.将文件的所属组转让给其他用户
将所属组转让给其他用户也需要得到那个用户的同意,因此还是需要在root权限下。
格式:chgrp 转让的用户 文件名
在这里插入图片描述
二.作为文件的拥有者,回收所属组的权限
格式:chgrp 文件的拥有者 文件名
作为普通用户,将文件的所属组给其他用户需要获得那个用户的允许,所以需要在root权限下进行转让。
但是文件的拥有者回收自己所属组的权限不需要那个用户的允许,在普通用户的模式下就可以进行回收。
在这里插入图片描述

   ( 2 ) (2) (2)同时修改拥有者和所属组(root权限下才能修改)
格式:chown 修改以后的拥有者:修改以后的所属组 文件名
在这里插入图片描述

Linux中的目录权限

Linux中的目录和文件一样也具有三种权限:
1.-r读权限:读取目录内文的属性信息。
2.-w 写权限:
如何理解写目录呢?
目录本身的结构就是一棵多叉树,目录和文件之间是具有联系的,相对的在这棵多叉树上创建结点的时候,需要将新结点的地址写入目录内,这样两者才具有关系。
在这里插入图片描述

Linux下进入目录需要什么权限

什么是进入目录:
进入目录的本质就是切换用户的当前路径

答案:进入目录需要x权限。如果没有x权限则无法进入目录。
在前面我们说了目录具有读权限,但是如果没有x权限,具有读权限,能正常读取到目录内文件/目录的属性吗?

在Linux下进行验证:
发现没有x权限的情况下,读取目录最多只能读取到目录内文件/目录的名字。
我们再次思考读取目录:读取目录是不是应该先进入目录,如果进入不了目录,当然也就是读取不了目录内目录/文件的属性。

在这里插入图片描述
但是为什么写目录不需要x权限呢,
写目录的本质就是在目录这棵多叉树上创建新的结点,并且将新的结点的地址写入到目录上,所以并不需要进入目录的x权限。

粘滞位

在学习什么是粘滞位之前,我们先看下面的几个需求。
在这里插入图片描述
(1)需求一:在Fengli用户下,删除myfile文件。
删除成功,这个需求我们是能理解的。因为myfile属于Fengli的文件,并且Fengli作为other具有w权限。
在这里插入图片描述
(2)需求二:在Fengli用户下,删除rootfile.txt文件。这个需求就有点逆天了,竟然想删除其他用户的目录,我们试试看能不能删除成功。
结果竟然删除掉了,root自己的文件竟然被其他人删除了,如果是竞争对手,那就完了。因此有了粘滞位的出现。
在这里插入图片描述
对于粘滞位我们需要知道他的作用:
我们可以给一个目录的other用户类别打上粘滞位(只有目录能附加粘滞位)
:在附加粘滞位以后的目录打上粘滞位以后的,
1.root能够进行删除
2.目录的拥有者能够删除
3.文件的拥有者能够删除

注意:如果没有w权限,即使是自己的文件用户都不能删除。
并且,如果没有x权限,进入不了目录,即使是文件的拥有者你都更改不了自己文件的权限。

ps::粘滞位技术也就是给other用户类别赋予t权限。

在这里插入图片描述
在这里插入图片描述
首先我们需要知道,在一个目录中,如果对一个目录具有w权限,那么这个用户就可以删除和写入目录文件。

为什么具有粘滞位呢?
有这样一种场景,在一个目录中,我们想要让other用户能够创建文件,这时就需要w权限,但是有了w权限,other用户就可以删除其他用户的文件,两者本身就是矛盾的,因此有了粘滞位的出现。

粘滞位还具有其他的工作场景:
根目录下,有一个tmp目录,我们一般称之为临时目录。
在这里插入图片描述
临时目录内一般放一些临时数据。
在这里插入图片描述
并且该临时目录的创建者一般是root
在这里插入图片描述
在公司中,我们可能多个人使用同一台云服务器,在处理数据的过程中难免都会产生临时数据。临时数据如果随意存放就可能导致系统的数据存放非常乱。因此一般讲临时数据放在临时目录tmp中,但是如果其他用户误操作就会导致自己的临时数据被删除。
因此我们可以设置粘滞位技术,就可以防止这种情况的出现。

八进制表达权限

Linux中,用户类别对应的权限都是对应的,并且固定的。
rwx代表该用户类别具有rwx权限。
-rw代表该用户不具有r权限,具有wx权限。
也就是说-代表没有对应的权限。
既然权限非黑即白,那么对应权限也可以二进制01进行表示,0代表没有对应权限,1代表具有对应权限。
因此对应权限也可以这样标识:
100:r--
110:rw-
并且因为三位二进制对应一个八进制,因此还可以在二进制的基础上进行升级。
在这里插入图片描述
所以多了一种修改权限的方法,也就是使用八进制
在这里插入图片描述

权限掩码

大家有没有想过为什么新创建的文件和目录的起始权限是这样的?
![在这里插入图片描述](https://img-blog.csdnimg.cn/dc118d0eb7c04fd4aec3a1516aa
其实文件和目录在创建的时候都具有一个起始权限
普通文件的起始权限:666
666我们很好理解,666就是缺少了x可执行权限,因为对于文件我们并不需要x权限。只需要使用gcc,g++…将文件编译成可执行文件就好了。
普通目录的起始权限:777
这个也不难理解,三种用户类别都需要能对目录进行读写和进入。

这里我们讲的是文件和目录的起始权限。

文件/目录最终权限=起始权限+权限掩码。

现在我们开始正式进入权限掩码(umask)
对于这个名词我们可以进行简单理解。在umask中出现的权限在起始权限中都需要对应被减去。

我们举例说明:
Linux下,普通用户权限掩码的默认值为:0002(八进制)(第一个数字0表示八进制),root用户的权限掩码的默认值为:0022

0002对应二进制的权限为:
000 000 010
而文件的起始权限为:
110 110 110

而在前面的myfie.txt文件中,其最终的权限为
在这里插入图片描述

也就是对应myfile.txt文件的最终权限-rw,-rw,r--
目录的最终权限也是同理。
对于umask我们可以进行人为修改从而达到影响最终权限的作用。
格式 umask 权限掩码
在这里插入图片描述
在计算机中:
最终权限=(~umask)&起始权限

并且:我们设置的umask只在本次登录(只对当前登录用户有效)有效。

总结

在文件权限这块,创建文件和删除文件本质都是在目录下创建结点,既然是在目录下创建,就必然会受到目录权限的限制,如果想要创建或者删除文件,那么作为的其他人来说,就必须需要w权限。但是对于自己

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凤梨罐头@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值