【Linux】Shell 与权限:Linux 系统的双重保障

欢迎来到 CILMY23 的博客

🏆本篇主题为:Shell 与权限:Linux 系统的双重保障

🏆个人主页:CILMY23-CSDN博客

🏆系列专栏:Python | C++ | C语言 | 数据结构与算法 | 贪心算法 | Linux | 算法专题 | 代码训练营

🏆感谢观看,支持的可以给个一键三连,点赞收藏+评论。如果你觉得有帮助,还可以点点关注


前言:

Hello,大家好,这里是 CILMY23 的频道,上期我们接触了压缩,搜索等等指令,也是结束了指令篇的学习,今天我们就来深入探究一下shell的运行原理以及Linux中的权限。

个人分享:每个人的内心都是一片海洋,每一路人都如此。每个人都是思想、见解和情感的宇宙。


目录

shell运行原理

外壳程序是什么?

为什么有外壳程序?

[shell 外壳一般做什么?](#shell 外壳一般做什么?)

权限的概念

什么是权限?

权限的本质

Linux中的用户

如何互相身份互换?

sudo


shell运行原理

我们之前学到的大部分命令,其实本质就是在磁盘当中/系统当中,特定目录下的一个可执行文件 。说白了,我们平时学到的,pwd,或者top,或者mkdir,或者是我们用过的touch,又或者是whoami......我们所得出的结论就是:大部分指令就是文件。删了就无法使用了。

在Linux中,绿色表示是可执行文件

但是我们发现,每次在输入命令前,总是弹出这个东西

这是个啥?

其实这个东西叫做命令行提示符 ,它其实是字符串 ,它是由对应的[],用户名,主机名,路径构成的一个字符串。它是printf打出来的。

我们在屏幕中输入ls 相当于 => 输入一条指令, 相当于打入ls字符串,被对应的程序读取了,在系统中,存在这样一个文件,会打印出命令提示符。然后从我们的命令行中获取指令

而操作系统实际上是分为广义上的操作系统和狭义上的操作系统,广义上的操作系统包括内核和命令行,甚至包括平时用的指令,狭义上的操作系统只包括内核,内核----顾名思义,就是比较重要的东西,很多东西都是它管理的,比如键盘输入,显示器输出等等

Linux严格意义上说的是一个操作系统,我们称之为"核心(kernel)",而用户执行某种功能的时候,不是直接让操作系统执行对应的指令的,而是先交给外壳程序。

用户没有办法直接访问内核,而为了让我们更好访问,在任何操作系统上,都会包裹一层软件层,也是shell层。外壳层是GUI(图形化界面)和命令行。

而在最外面的一层,通常是用户层。

当你要执行某种指令的时候,你通常是和外壳程序交谈, 然后外壳程序再转交给内核,如果内核无法执行,那就会报错,通过外壳程序告诉你,执行失败。

外壳程序是什么?

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

  1. 将使用者的命令翻译给核心(kernel)处理。
  2. 同时,将核心的处理结果翻译给使用者。

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

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

为什么有外壳程序?

这个原因有很多,但是最主要的还是以下两点:

  1. 用户不善于和内核打交道
  2. shell 外壳的存在,可以对请求进行合法性检查,变相的保护OS

shell 外壳一般做什么?

在Linux中,一般会通过bash创建子进程,( bash 是具体的外壳程序,shell 是统称)这个子进程会帮助用户进行命令行解释,bash 只要进行等待用户输入即可。

在Linux中,如果你是管理员账户,命令提示符的最后一个通常是 "#",如果你是普通用户,这里则会显示"$"。

权限的概念

什么是权限?

其实不妨从生活中想想,哪些事情是有权限的事情,哪些事情是没权限的事情?

最典型的,莫过于各大视频平台的视频vip,无论是爱奇艺,优酷,腾讯视频。有vip就有权限看对应的资源,没有vip就没法看对应的资源。

除此之外,还有门禁,进入宿舍的时候,要刷脸啊,不是这栋楼的就没有权限进入。

所以什么是权限呢?

权限就是通过一定的条件,拦住一部分人,给另一部分人权利,来访问某种资源

这个世界上大家都能做的工作,可能就不会有权限的概念。我们从来没有听过说,你不能呼吸,你没有呼吸的权力,权限一定是一部分人有,一部分人没有,所以才会产生权限这种概念。

权限决定的是有无,能还是不能的问题。

权限的本质

要想探究清楚,权限的本质,还得从例子上入手

例子:我能看vip,你看不了,所以权限一定和人有关。

例子:我是爱奇艺的svip,但是为什么不能让我刷题?

我是leetcode会员,但是为什么不让我看视频?

说明,权限的本质不仅和 有关,还和事物的属性有关。

我们还可以通过下述例子还探讨本质:

例子:你叫张三,你能看爱奇艺vip会员视频,是因为你叫张三吗?还是因为你是会员身份?你能进到A公司,是因为你叫张三,还是因为你是A公司员工?你能进学校,是因为你叫张三,还是因为你是该学校的学生?

实际上,这个人是一个角色。权限是用来限定某种角色的,不是限制某个人的。

Linux中的用户

Linux下有两种用户:超级用户(root)、普通用户。

  • 超级用户:可以在Linux系统下做任何事情,不受限制
  • 普通用户:在linux下做有限的事情。
  • 超级用户的命令提示符是"#",普通用户的命令提示符是"$"。

我们在前几篇的学习中,最经常用的还是 root 用户 。

root 是超级管理员,它的特点是不受权限约束。

用户分为root账户和普通用户,root账户是不受权限约束的,也就是说,换句话说,它几乎对任何事情都有权限,下一篇我们会证明它,以及我们还会证明有权限和没权限什么概念。以及它在Linux中的表现是什么?甚至还要再去理解,为什么Linux要设计权限?

如何互相身份互换?

这里为了演示,我特地添加了一个用户

adduser 用户名

这是我新建的用户

💫💫指令:su

💫💫功能:su转换成root 账户。ctrl + d 转换成普通用户。

如果你是直接以普通用户登录,那么普通用户变成root,这里要输root的密码。在登Linux的时候,root账户要有密码,普通账户也要输密码。

建议:

设置一样的,用久了,不知道谁是谁的密码了。

我们可以在/home下查看,我们的用户。

你想变成普通用户,直接 su + 用户名即可。

💫💫指令:su -

💫💫功能:su 和 su - 都可以进行root的登陆,他们两个之间是有区别的,前面的su 是直接转变身份为root,后面一个则是变成root身份

我们可以通过命令提示符,看出来su - 的最直接标识还是 "$"。

权限是限制普通人的,而root 有很多权限,是制定规则的人。、

sudo

我不想直接变成root,但是我就是想以root的身份执行一个工作?

这时候就可以使用sudo来进行了,在前面我使用虚拟机的时候经常用到这一条指令。

接下来我们看,第一个root 是文件创建者,也就是谁创建的。输入的是谁的密码?

我们如果想创建文件,就必须获得权限,那这里我们使用sudo来获取权限,密码是输自己的密码。

5-10分钟内,不会过期,不同的系统有不同的时间限制。我们以超级管理员的身份执行了一条命令,我们把它称为指令提权,也就是把指令的权限往上提一提。

1.我要用root权限,为什么输入的是我的密码?我是普通用户,为什么输的是我的密码?

:一般普通用户是没有权限执行sudo的,只不过有的系统配置过了,默认会报错

首先默认云服务器是不行的,虚拟机是可以的 ,默认不让你sudo,那有的为什么能执行呢?根本原因就在于我们系统里会存在一种类似于白名单这样的功能,白名单是什么意思呢?在现实生活中呢,如果你是一名保安,你在处理任何人能不能进学校这件事情上,那么所有的保安都有三件事情要处理,

第一种,他必须得在自己的小本本上记录下来,就是不能查的人,比如校长,领导,我保安随便去把人家拦住。这些人一看我就不该拦他。这就叫做我们的白名单,也就是这批人我们是默认相信他的

作为一个合格的保安,我除了做这个事情,我还要选择哪些人绝对不能进来,这些人一看就是不好的社会青年,这种人我一看到就立马把他拦住了,那么这叫做黑名单

所以我们在作为保安来讲,必要的一个基本工作素养,就是黑名单和白名单,白名单就是这人我绝对相信他,可以让他过,黑名单就是不想让他过,直接拦住他。

当然,大部分情况下,保安不知道是相信你还是不相信你,所以会询问你,所以为什么在执行我们的sudo,允许我输入我的密码呢?

那么很简单,配置过用户,允许我直接执行。Linux是支持这种简单的白名单的策略的。

2.如何配置?

主要是因为要改配置文件。前期有很多文本编辑器权限不熟,容易导致系统挂掉。所以我们就暂时不做。


结尾:

本期就讲解到这,下一期我们会继续本篇内容,讲解Linux中的另一种用户,以及组的概念和Linux的文件权限。


🛎️感谢各位同伴的支持,本期权限专题就讲解到这啦,下期我们将讲解文件中的权限,如果你觉得写的不错的话,可以给个一键三连,点赞,收藏+评论,可以的话还希望点点关注,若有不足,欢迎各位在评论区讨论。

相关推荐
深夜吞食1 分钟前
项目实现:云备份③(配置文件加载模块、数据管理模块的实现)
linux·c语言·c++·json
Clank的游戏栈4 分钟前
Unity3D 服务器AStar寻路客户端位置同步显示验证详解
运维·服务器·windows
✞༒小郑同学༒✞9 分钟前
网络通信流程
运维·服务器·网络
打鱼又晒网11 分钟前
linux进程间通信——学习与应用命名管道, 日志程序的使用与实现
linux·运维·服务器·后端·操作系统
送南阳马生序21 分钟前
Cubieboard2(一) 官方镜像使用与配置
linux·debian·arm
了不起的云计算V28 分钟前
2024年H1昇腾服务器中标统计:宝德超聚变遥遥领先
服务器
APItesterCris37 分钟前
安全第一:API 接口接入前的防护性注意要点
服务器·网络·数据库·安全·数据挖掘
Xiao Tong33342 分钟前
linux第二课(docker的安装使用)
linux·运维·服务器
JeasonTly1 小时前
WebRTC服务器搭建
运维·服务器·webrtc
好想有猫猫2 小时前
【Git】初识Git
linux·c++·git·ubuntu·elasticsearch·学习方法