【Linux】Linux权限管理————shell运行原理 | Linux权限管理 | 粘滞位 | 权限掩码umask

简介: 【Linux】Linux权限管理————shell运行原理 | Linux权限管理 | 粘滞位 | 权限掩码umask

🌍一. shell命令以及运行原理


Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel?


“人”不善于直接使用操作系统

操作成本特别高,人会犯错,带来不安全因素

所以才从技术角度,Shell的最简单定义:🥑命令行解释器(command Interpreter)主要包含


将使用者的命令翻译给核心(kernel)处理。

同时,将核心的处理结果翻译给使用者。

shell外壳的意义:


使用户和操作系统交互中间软件层

可以在一定程度,起到保护操作系统的作用

对比windows GUI,我们操作windows不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)


🔥shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。


大家可能听得糊里糊涂的,下面我就来讲一个感性的故事来认识下Shell


IT男情窦初开向青梅竹马表白

如果说你是一个闷骚且害羞的程序员,那shell就像媒婆,操作系统内核就是你们村头漂亮的

且有让你心动的美眉如花。


你看上了小花却不好意思去表达心意,你找到了你爸(村长),让你爸找媒婆帮你说媒,你和王婆沟通完后,媒婆就去和如花私下转达一番


(●ˇ∀ˇ●)💦shell 可以传递请求命令,让OS执行命令


可是小花回答说:根本不喜欢你,说不是她的猜,她已经有男朋友了

好比下面


0a2653c851af460fa595bd959398a8f1.png


梅开二度

你知道你被如花拒绝后,可还是心系着如花,又一次的找到了媒婆,媒婆看到我对如花已经走火入魔的情况下,媒婆让我滚蛋,媒婆是有权利拒绝的


2d65d23f6d4748949b924e4057485923.png


这里相当于媒婆保护了小花,免受打扰 (●ˇ∀ˇ●)💦shell 可以保护内核


威逼利诱


对此你不甘心(普信男),还是想如花做你女朋友,于是你动用了你爸爸的权力,媒婆碍于你爸是村长的态势,勉强答应,把事情交给实习生做,反正做不好也不关我媒婆的事儿。


0a2653c851af460fa595bd959398a8f1.png


我们在Linux中用的外壳程序是bash对应王婆,而我们上面的shell对应的就是媒婆

王婆只是众多媒婆里的一个,bash同理


2d65d23f6d4748949b924e4057485923.png6de278e6d6694ce5bb08e7e842b7e74b.png


🌍 二.Linux权限管理


🌈1.权限相关概念


💦用户分类

🔥超级用户root:最高权限 ~ 可以再linux系统下做任何事情,不受限制

普通用户:权限受限 ~ 在linux下做有限的事情

这两套密码绝对要不一样,否则会产生权限界限不清的状况


ps:超级用户的命令提示符是“#”,普通用户的命令提示符是“$


💦如何用户切换

🔥普通用户切换为root


su -


anyway


su


su切换成root用户以后,pwd一下,发现工作目录不变仍然是普通用户的工作目录;而用su -命令切换以后,工作目录变成root的工作目录了


本质区别如下:


su只是切换了root身份,但Shell环境仍然是普通用户的Shell

而su-连用户和Shell环境一起切换成root身份了


0a2653c851af460fa595bd959398a8f1.png2d65d23f6d4748949b924e4057485923.png


🔥root切换为普通用户


su - ljj //举例


众所周知root是万能的,和这位一样——》LeBron James


6de278e6d6694ce5bb08e7e842b7e74b.png8ec4f2997fb246878c34ecd6d122b7c6.png


说明root可以变成任何人,且不需要输密码,在我们的自己的服务器就可以尽情爽


🔥回退我们可以直接输入exit 或者 直接【ctrl +d】


0a2653c851af460fa595bd959398a8f1.png


🌈2.权限的两要素


权限是啥意思?允许特定的人做某件事情。针对人的:比如不是我们学校的人就进不来我们学校、不是一家人就进不了一家门。针对事物属性:我想去吃一台电脑、我想在面包上玩英雄联盟、看电影。面包能吃,但是电脑不能吃、你可以吃面包,但是不能吃电脑;这里面包括了两个属性。


权限约束的是人,文件本身具有天然的权限属性(读r写w执行x)。所以权限 = 人 + 事物属性。


我们在基础指令阶段的ll可以显示更多文件属性


2d65d23f6d4748949b924e4057485923.png


💦人

🥑linux用户类别


拥有者:文件和文件目录的所有者(owner)

所属组:文件和文件目录的所有者所在的组的用户(group)

其他人:其它用户(other)



不需要列出other,因为不是拥有者和所属组的就是other了


ps:所属组就好比团队,比如说我们常用的微信是一开始由很多个团队做,只是由张小龙团队胜出了



比如说:一个部门有两个项目组在竞争性完成一个项目,张三写的绝妙代码,我想让自己能看见,同组人能看见,其他组的看不见。如果领导王五想要来看,我就把他归进我的所属组内,other还是看不见


💦事物属性


🥑属性第一列:标识文件类型


在Linux系统中,不以文件后缀区分文件类型,也就是说文件类型与后缀没有直接关系。

(但不代表不可以使用,在系统层面没意义,可以给自己看)


对了gcc是一个Linux上的软件,它是分后缀的哦,不要和Linux系统搞混了



Linux下一切皆文件,文件类型 ——


d 目录文件

- 普通文件(各种动静态库,可执行程序,源程序)

—————————————————下面只做了解————————————————————————

l 软链接link(类似Windows的快捷方式)

b 块设备文件bar(例如硬盘、光驱等)

p 管道文件pile(通信操作)

c 字符设备文件(例如键盘显示器等串口设备)[后序会站在系统角度重新理解]

s 套接口文件


🥑剩下的9列:

三三为一组,分别对应拥有者、所属组、其他人;三个字母分别对应文件属性,读r、写w、执行x,无对应的是-。每个字母都具有两态概念,即是否其具有读权限、是否具有写权限、是否具有可执行权限。


那下面的举例:拥有者可读可写可执行、所属组可读可写可执行、other可读可执行 不可写


drwxrwxr-x 2 ljj ljj 4096 Aug 13 09:07 code


🌍三.权限相关指令


🌈1.文件的权限


💦修改读写执行属性

a.字符表示方法


chmod u+w file.txt


也就是


chmod 用户表示符+/-=权限字符  文件名


用户表示符


u:拥有者

g:拥有者同组用

o:其它用户

a:所有用户


b.8进制数值表示方法


举例


0a2653c851af460fa595bd959398a8f1.png


🥑更改一个人的一个权限


2d65d23f6d4748949b924e4057485923.png


🥑更改一个人的多个权限


6de278e6d6694ce5bb08e7e842b7e74b.png


🥑更改多个人的多个权限


8ec4f2997fb246878c34ecd6d122b7c6.png


如果要修改不是自己的文件的时候需要sudo临时权限提升或者直接切成root身份


sudo chmod 用户表示符+/-=权限字符  文件名


那么我们没有权限会是什么样子呢?


🥑普通文件被约束权限的状况


12c3b7f3f8814309a195c64f051d4445.png


🥑那么root受到权限约束吗?


root 竟然不经过拥有者的允许,直接把读写权限都干掉了,修改了我的权限属性


34e8d716411043c08c7ffba9fbba23de.png


更过分的来了

77d357a1ae214365bc38e991ad3f543e.png

root作为文件的other,无视一切约束,还是可以为所欲为


💥作总结:权限是用来约束普通人的,root是不受任何限制的


好比海贼王里的天龙人。我们认识到世界的不一样,我们也依然热爱这个世界(奥利给)


💦修改拥有者、所属组

🥑chown指令

❗更改文件拥有者


chown [参数] newUser filename


更改是需要得到别人的允许的,一般直接更改是不行的。


给别人东西,人家不同意咋办?那我们就强迫他同意哈哈哈(借用root之手)


🥑这时我们可以sodu进行临时的权限提升或者直接切成root身份


sudo chown root file.txt  或  su


(要想执行sudo,需提升权限,要求该用户在信任列表中,才可以执行,添加用户到信任列表是要root身份的)

还有可以直接切换成root


0a2653c851af460fa595bd959398a8f1.png


可以看见root就是这么为所欲为


🥑chgrp指令


❗更改文件或目录所属组


sudo chgrp newGrp filename


2d65d23f6d4748949b924e4057485923.png


还有那样root就是为所欲为


🌏四.常见权限问题(面试、细节问题)(狠重要)


🌈1.目录权限


💦 面试题:进入一个目录要什么权限?

可写权限:如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容

可读权限:如果目录没有可写权限, 则无法在目录中创建文件、删除文件(本质是在路径树中新增结点)


这都是显而易见的,那么进入目录需要什么权限?


可执行权限:如果没有可执行权限,则无法cd到目录中

进入一个目录,需要:x

查看目录下的文件列表需要:r

要在目录下创建文件或者目录:w

🌈权限掩码:umask

为何我们创建一个目录或者文件,默认权限是你所看到的样子?

默认权限 = 起始权限 &(^ 权限掩码)


🥑起始权限


普通文件:666

目录文件:777

🥑权限掩码

但是当我们创建的文件和目录,看到的权限往往不是上面的这个值,这是因为还受到权限掩码的影响


凡是在umask中出现的权限,都不应该在最终权限中出现!


超级用户默认掩码值为0022(第一个0表示八进制),即000 010 010;普通用户默认掩码值为0002,即000 000 010.

八进制就是0开头


rwxrwxr-x     ?
111111111     起始权限
000000010     umask
——————————————————————
111111101     默认权限
rwxrwxr-x     775


那这时候如何做到的呢?

是做减法吗?❌


默认权限 = 起始权限  &(^ 权限掩码)


在八进制中直接对应位做减法可快速计算(只是机缘巧合)


我们也是可以自定义umask的——


umask  0777 所有人啥权限都没有


🌈粘滞位

我们创建了一个目录other,并把权限设置为完全公开。


在目录里touch了几个拥有者为root的文件,且对other什么权限也没有


那么现在我以普通人的身份来,也就是other身份来看,这些文件对我什么权限都没有,我不能看,不能改,那我就不爽了我把你文件做掉


我竟然就真的做掉了!!


这是因为你目录本身就是对我就是可写的,我可以删自己的也可以删别人的。如果我们去掉目录的写[w]权限,那就确实删不掉了 ——


💥文件被删除不关该文件的属性,而是文件所在的目录是否拥有写w权限

此处的场景🔥:大家所有用户都在共同的一个路径下,对该目录具有读写执行权限


那我们不想别删咋办?吧目录的w权限去掉?不现实,因为这样我们拥有者都删不了自己的文件了


噔噔蹬蹬 闪亮登场


💦粘滞位


🥑现在我有这样的需求,当多个用户共享一个目录,需要在该目录下,进行读写创建删除文件。但是自己只能删除自己的,而不能删除别人的(w:可以互删,不满足条件)


chmod o+t dir  


接下来我们来试试还能不能删人家的文件?


ps:🥑


粘滞位只能对目录设置(一般是对other)

对于设置了粘滞位的目录,只有文件的拥有者或root可以删除,其他人不能删除

我们linux下就有这样一个目录tmp:用于储存临时文件


有时,有多个人或者系统会有很多的临时数据,所有的临时文件都放在系统的*/tmp*目录下。所有的权限需要放开,但是只想让文件的拥有者删除自己的文件,这需要设置粘滞位


📢写在最后


能看到这里的都是棒棒哒🙌!

想必权限也算是Linux中重要🔥的部分了,如果认真看完以上部分,肯定有所收获。

接下来我还会继续写关于📚《vim》等…

💯如有错误可以尽管指出💯

🥇想学吗?我教你啊🥇

🎉🎉觉得博主写的还不错的可以一键三连撒🎉🎉


相关文章
|
21天前
|
Linux Python
linux上根据运行程序的进程号,查看程序所在的绝对路径。linux查看进程启动的时间
linux上根据运行程序的进程号,查看程序所在的绝对路径。linux查看进程启动的时间
39 2
|
23天前
|
存储 缓存 Linux
深度探索Linux操作系统 —— Linux图形原理探讨3
深度探索Linux操作系统 —— Linux图形原理探讨
28 9
|
23天前
|
存储 Linux 图形学
深度探索Linux操作系统 —— Linux图形原理探讨1
深度探索Linux操作系统 —— Linux图形原理探讨
26 7
|
23天前
|
Linux API 图形学
深度探索Linux操作系统 —— Linux图形原理探讨2
深度探索Linux操作系统 —— Linux图形原理探讨
22 3
|
17天前
|
Linux
Linux内核的异常修复原理
Linux内核的异常修复原理
|
18天前
|
Linux
用QEMU模拟运行uboot从SD卡启动Linux
用QEMU模拟运行uboot从SD卡启动Linux
|
27天前
|
网络协议 安全 Linux
在Linux中,tcp三次握⼿的过程及原理?
在Linux中,tcp三次握⼿的过程及原理?
|
27天前
|
监控 安全 Linux
在Linux中,DDOS攻击的原理是什么?
在Linux中,DDOS攻击的原理是什么?
|
27天前
|
运维 负载均衡 监控
在Linux中,keepalived的工作原理?
在Linux中,keepalived的工作原理?
|
9天前
|
Linux Shell
Linux 中 Tail 命令的 9 个实用示例
Linux 中 Tail 命令的 9 个实用示例
38 6
Linux 中 Tail 命令的 9 个实用示例