【越学学糊涂的Linux系统】(5)shell命令以及运行原理|权限问题

Ⅰ.shell命名以及运行原理:

0x00引用:

什么是shell命令??
       ✔️ Shell 是一种命令行解释器(Command - Line Interpreter),它为用户提供了与操作系统内核进行交互接口。用户通过在 Shell 中输入命令,Shell 会将这些命令解释并传递给内核执行相应的操作。

0x01对于Linux的作用呢??

        ✔️主要是我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行输出结果,通过shell解析给用户。

总结

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

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

0x02对比一下Windows操作系统

        ✔️它用的是windows GUIWindows 图形用户界面它是一种用户与 Windows 操作系统进行交互的可视化界面。它使用图形元素,如窗口、图标、菜单、按钮等,取代了传统的命令行输入方式,使用户能够更直观、便捷地操作计算机。

这个就是可视化的桌面,我们只需通过鼠标去双击就能运行各种程序!!
        所以,我们操作windows 不是直接操作windows内核通过图形接口点击,从而完成我们的操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)

0x03特点:

我们在Linux系统的操作界面,是不是会用到很多指令??也就是命令执行,就要通过它翻译给Linux内核的,当然还可以进行写脚本的编写,编写shell脚本⏭️一系列的命令组合在一起,实现自动化的任务处理而且我们定义的用来存储文件路径、用户名等的变量也是shell来实现的还有上次我们学到的重定向,例如输出重定向可以将内容输出到文件中,而不是屏幕;想必管道操作也必不可少,它可以将一个命令输出作为另一个命令的输入

0x04构造如何?

⬇️下图就是一个命令行的指示:

0x05让我看看怎么个回事?(运行原理简易版)


是不是还是有点不懂,没关系,接下来我会用一篇故事来加深理解:

有一个程序员叫小王(用户),特别擅长和代码打交道,但是不擅长和女生打交道,某天,意识到自己年纪大了,想要找女盆友结婚了就找上了媒婆中介所(外壳:shell)王婆(进程)说:王婆啊,我想要你给我介绍隔壁村一个叫小美的女孩指令);王婆说:没关系,包在我身上,找上小美(操作系统内核):隔壁村一个叫小王的帅小伙,年薪100w城里有车有房啊,我看和你挺般配的,要不要见个面,耍耍盆友。小美一想啊,这个小王不是小时候班上天天那个留鼻涕的小男孩么,一下子印象就不好了,连忙拒绝了王婆王婆就回去告诉了小王:要不还是换一个么,咱这条件,村里还有好几个得行的娃。(拒绝就相当于这个信息是错误指令

 小王这人死犟死犟的,就是要小美,接着找王婆:在试一试呗!王婆招架不住小伙这么撒娇,只好继续去找小美,这次去找小美,发现小美父母以及同村小帅在一起吃饭王婆也是一个高情商的人,这回门都没进去,直接就走了,让小王放弃。(防止重复错误指令,保护操作系统,直接由外壳处理掉了

 到第二天,经过小王昨晚日思夜想啊不行,我就是要小美,不想失去她;接着找上了王婆王婆这一想啊,这要是没成,这村里口碑怕是要下滑这可不行嘞,就上boss招聘招实习生(子进程)来干小王这件事,将这个任务给实习生去做,成不了就是实习生能力不行,关我王婆啥事也没得,成了就夸我王婆慧眼识珠,找了这么个能人,这么难的任务都能完成

其实在shell内部,对于那些命令都是交给进程(王婆)来翻译的,因为外壳程序要是没了,咱们就一个指令也翻译不了,系统就直接崩溃了,所以需要通过进程来完成工作。

前面有提到过shell就一切外壳的统称!!! 因此不同外壳的名称有所不同,在Centos下的命令行解释器是bash

每次启动Linux,就会启动和这个外壳程序。

dashlbash的关系就是媒婆王婆的关系,王婆的职务是媒婆,媒婆可以是王婆,可以是张婆、刘婆、朱婆等等

0x06总结shell的作用:

①方便用户操作

②保护内核

Ⅱ.Linux权限问题:

 0x00用户:su命令

✔️前面就有提过一嘴,Linux系统下有2种用户:root用户(超级管理员)普通用户(whb)

Windows中也有,程序的运行可以通过过管理员身份进行运行

✔️不同用户所拥有的权限不同

  管理员也就是超级用户的权限是最大的,这里就介绍到su指令,进行用户的切换,即切换用户

 但是注意的是我们的路经不会发生变化的,是在当前路径底下进行的切换,本来是root目录切换过来,sw用户显示的当前目录在root目录

 使用su - 指令就可以切换用户同时转到家目录下

前面说过管理员权限很大,也就是它很霸道,因为root相当于房东,普通用户也就是租客,房东将房子租给你,人家手上还有你家备用钥匙,可以直接进入你家。他不需要找你要密码;也就是权限很大,强行闯入。


 而作为租客的你,没有房东的密码是不能进房东家的,只有知道房东的密码才能进房东的家,当然你去房东旗下的其他租户家也是如此。也就是权限比较小


0x01提权:sudo指令

前面说的只是切换用户,让其转换身份,说实在的,转换了身份那只是权宜之计,我们要怎么才能使用root的权限,这就不得不说sudo,它可以短暂的提升自己的某个指令使用权;比如:你认为房子墙壁看着有点不够舒服,于是你找上了房东说:我可不可以翻新一下房子的墙壁,钱不要你出给个准信,签个确认书啥的,然后你就短暂的拥有了房东的权利,但是只能对房子的墙壁进行装修,其他的没经过允许不能动装修好的房子,你住的舒服,但这还是房东的房子,对他来说房子反而变新了,以后租给其他租客,也能住在这个新房子里。

怎么用捏??

先看看下面:我不能移动,因为我没权限(注意这里是示范,别这样试,会完蛋的,你给指令目录搞没了,等会就不能这么用指令了,变的灰常麻烦,我已经重装系统了

是不是只要使用提权就可以了呢??还是不行,显示我们这个用户没在某个文件里面

 这就得提下该文件了,这个是白名单文件sudoers,只有认可你了,你才能做某些事。相当于学校保安亭,你是本校学生,在校有学生证,相当于你在学校是白名单里面的人,此时你就可以申请(sudo)进入学校。

下面我来教你怎么将用户加入白名单:

通过vim打开一个 /etc/sudoers 文件要用root用户进行,只有房主才有权限

滑到96%的时候,找到下面的位置,以同样格式添加需要加入白名单的账户

保存并退出就ok了。

 这样就可以提权了;

 对了,提权之后,它会让你在大约15分钟时间内一直让你拥有root权限

这个是我接续上面的操作后的又一次操作

 0x02权限

是什么呢??

        我们生活中,有很多涉及权限的问题,你看名侦探柯,是不是要b站会员,只有你是会员用户才能观看,家里保险柜,打开需要密码,只有你爸妈才能打开,很多都是权限原因。

本质就是能或者不能做的事情

为什么??

       <1>控制用户行为,防止错误发生。

       <2>拆解权限(理解)

               > 限制的是角色(人),或者说是身份地位;比如:校长办公室,不是每一个学生能随便进入的,只有某些特定的老师才能进去,才拥有这个权限。

              >权限要求目标必须具备对应的属性;比如:你想要拿b站写代码目标),它只能拿来看各种视频和番剧(具备的属性),那么敲代码这个行为就实现不了。

                                                                             

 0x03 Linux权限:

角色

拥有者所属组指的是具体的人扮演的角色或者说就是具体的人在该对象中所处的身份地位 

❓❓所属组:

        一群具有相关性(身份地位相同)的人员组成的一个组,可以由多个具体的人组成,比如:张三和李四都拿到了某公司offer,分别被分配了A、B组,该公司老总实行赛马制度,2个组成员可以进行同一个项目的研发,哪个组的产品更有优势就应用那个组。

 这里的A组组长具有A组成员的这一个身份地位

为什么要有所属组:

 ✔️更精细化权限管理,但是首先要有更精细化的身份地位;

 ②文件属性

r    读

w   写

x    可执行

-     不允许

✔️前面说了角色,而每种角色都有对应的属性,角色+属性就是权限了。每个权限位和后面的角色一一对应

在✨这里可以说:拥有者root拥有读写和可执行student文件权限 

 

0x04 chmod指令:设置文件访问权限|chown指令:修改拥有者|chgrp指令:修改所属组

chmod [参数] 权限 文件名

参数指的是选项+权限

R:递归修改权限
+:向权限范围(指的用户)增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
用户符号:
u:拥有者
g:所属组(拥有者同组用)
o:其它用户
a:所有用户

使用起来也很简单,看下嘛就会用了,就是对应的角色给与对应的属性,根据你自己来给,取消没有的权限不会有影响;权限的更改随便玩就行了

=可以不用写,也可以写 ,得到结果完全是一样的

?? 思考一下可以随便改任何文件的权限么??

很明显修改不了,所以文件权限的修改也需要具有权限

第一点:用户只能修改自己的文件权限,也就是拥有者是谁,谁就能修改自己的权限,而root是随便的,超级用户无视规则

补充一点:修改文件权限另一方法(八进制表示法)

我们发现文件属性每种状态都是两态的。

如果当成比特位来看呢❓❓

权限位是3个字符为一组,我们就可以将其看成二进制,二进制转换为对应的八进制

这里的位是0-7,所以用的八进制表示法。

🤔🤔怎么用了,我直接改成和上图一模一样的权限;

每一个角色位对应一个八进制数,按顺序给予对应的八进制就能修改对应的权限了

没有权限会怎么样呢??

当我们没有写的权限时,只能进行读,无法写入!

那么我加入写的权限,就可以了

第二点:对于一个目标文件来说,如果我们本身就没带有权限的话,就不能进行操作,系统会拒绝我们的请求

❓假如我在所有者没有w权限,在所属组有写的权限,是不是能对该文件进行写的操作?(chown|chgrp指令)

 写不了,为啥了??跟着我往下看

⭐⭐chown指令 修改拥有者(:所属组)默认只有root用户可以使用
chown 选项  新的拥有者 文件名

chown 选项  新的拥有者:新的所属组

 ①单独修改拥有者

我们提权也是可以使用的

②修改拥有者、所属组:
 

 chgrp指令 修改所属组(默认只有root用户可以使用)

如果我要单独修改的就是所属组的角色,那么就可以只用chgrp指令

chgrp 选项 新的所属组 文件名

总结:系统默认不允许将文件给别人(更改拥有者/所属者),如果想给别人就需要提权(sudo)或者用超级用户root来给


 指令真的太多了,求怕累;

言归正传,我们的问题还没解答,先说了上面的这写操作,距离答案越来越近了;现在我们在试试,我们将拥有者改成root,此时所属组是sw,写入成功了

 现在我们将其所属组的文件属性(+r)进行修改,获得可读的权限

 如果当前用户在other角色呢??前面2个角色都不是当前用户,other具有rw的权限

 又成功了!!!!

 第三点:在Centos下,系统确定权限时,会先安装顺序拥有者->所属组->other来确定你是谁,当第一次确认你的权限后,则不在往后继续确实,第一次确认的你所对应角色所对应的权限是什么就是什么,不在确认第二次,如果不是当前用户,则会继续匹配,直到other(其他用户)

 0x05 root权限:

普通用户当没有权限时,无法写入

root下,即使没有权限也能进行操作,就是这么霸道

所有的规则权限限制的普通人,而root的权限不受任何约束

 0x06可执行:

我文件都有可执行的权限了,为啥就是运行不了了❓

 这是因为可执行权限只是文件具备可执行的机会

还需要这个文件具有可执行的能力

取消可执行文件的执行权限

打开以后,又能进行文件执行了

 

Ⅲ.目录权限:

0x00进入目录:

需要x权限,你可以理解为打开一个需要运行它

0x01查看目录内容:

需要r权限,没有r权限,目录内文件一个也看不见了

✔️ 我们原本的dest目录中文件内容

0x02 写入文件权限:

 如果没有w权限,无法在指定目录下创建文件(touch、mkdir)

 注意:root无视一切规则;这里是普通用户

 0x03多用户之间怎么互相“隔离”

①家目录:

在Linux系统下, 每创建一个普通账号都会在/home目录下创建一个特定用户命名的文件夹,该文件的权限rwx都有

任何非root用户,无法进入其他用户的家目录(/home)

②缺省权限:

在Windows下,我们无法卸载或者删除一个正在执行的程序

而Linux也具备这个能力,防止我们在使用的时候被删除;

我们创建文件如下:注意dest是我之前按进行了修改的文件

 

 umask的目标凡是在umask出现的权限,都不应该在最终权限上出现

 为啥要umask

①默认权限,由OS自主决定,无法创建修改--系统可以配置,可以灵活满足需要的一种表现

②特殊情况下,配置umask,可以控制文件默认权限,让代码可控;

umask是可以进行修改的,但是当我们退出后会恢复,不要害怕改乱了

删除文件:在我们家目录下,我们不能读写,却能删除它

✔️一个文件能否删除和你所处文件权限无关,而是和你所处的目录有关;

在我的目录下,你怎敢如此猖狂!!😡

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/887212.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Qt】控件概述(3)—— 显示类控件

显示类控件 1. QLabel——标签1.1 setPixmap设置图片1.2 setAlignment设置文本对齐方式1.3 setWordWrap设置自动换行1.4 setIndent设置缩进1.5 setMargin设置边距1.6 body 2. QLCDNumber2.1 使用QTimer实现一个倒计时效果2.2 使用循环的方式实现倒计时 3. QProgressBar——进度…

【工程测试技术】第6章 信号处理初步,频谱分析,相关系数

目录 6.1 数字信号处理的基本步骤 6.2 离散信号及其频谱分析 6.2.1 概述 6.2.2 时域采样、混叠和采样定理 6.2.3 量化和量化误差 6.2.4 截断、泄漏和窗函数 6.2.5 频域采样、时域周期延拓和栅栏效应 6.2.6 频率分辨率、整周期截断 6.3 相关分析及其应用 6.3.1 两…

【C++】--类与对象(1)

&#x1f9c7;个人主页: 起名字真南 &#x1f32d;个人专栏:【数据结构初阶】 【C语言】 【C】 目录 1 类的定义1.1 类定义格式1.1.1 Stack类1.1.2 Date类1.1.3 Struct格式 1.2 访问限定符1.3 类域 2 实例化2.2 对象大小 3 this指针 1 类的定义 1.1 类定义格式 1 class为定义…

解决磁盘负载不均——ElasticSearch 分片分配和路由设置

ES 分片分配&#xff08;Shard Allocation&#xff09;时间点&#xff1a; 初始恢复&#xff08;Initial Recovery&#xff09;副本分配&#xff08;Replica Allocation&#xff09;重平衡&#xff08;Rebalance&#xff09;节点添加或移除 小结&#xff1a; 准备移除节点时&a…

【Golang】关于Go语言字符串转换strconv

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

k8s-集群部署1

k8s-集群部署1 一、基础环境准备二、docker环境准备三、k8s集群部署1.kubeadm创建集群2.使用kubeadm引导集群 总结 一、基础环境准备 首先&#xff0c;需要准备三个服务器实例&#xff0c;这里我使用了阿里云创建了三个实例&#xff0c;如果不想花钱&#xff0c;也可以在VM上创…

1panel申请https/ssl证书自动续期

参考教程 https://hin.cool/posts/sslfor1panel.html #Acme 账户 #1panel.腾讯云dns账号 这里有一步不需要参考,腾讯云dns账号,就是子帐号授权 直接控制台搜索 访问管理 创建用户 授权搜索dns,选择第一个 点击用户名,去掉AdministratorAccess权限 5.点击api密钥生成即可…

CSS3练习--电商web

免责声明&#xff1a;本文仅做分享&#xff01; 目录 小练--小兔鲜儿 目录构建 SEO 三大标签 Favicon 图标 布局网页 版心 快捷导航&#xff08;shortcut&#xff09; 头部&#xff08;header&#xff09; logo 导航 搜索 购物车 底部&#xff08;footer&#xff0…

初学51单片机之I2C总线与E2PROM二

总结下上篇博文的结论&#xff1a; 1&#xff1a;ACK信号在SCL为高电平期间会一直保持。 2&#xff1a;在字节数据传输过程中如果发送电平跳变&#xff0c;那么电平信号就会变成重复起始或者结束的信号。&#xff08;上篇博文的测试方法还是不能够明确证明这个结论&#xff0…

字符串和字符数组(2)

6.求字符串长度 C语言中有一个库函数叫strlen&#xff0c;这个函数是专门用来求字符串长度的。strlen的使用需要包含一个头文件string.h。 strlen函数统计的是字符串中\0之前的字符个数&#xff0c;所以传递给strlen函数的字符串中必须得包含\0. 请看代码&#xff1a; #inc…

数据结构 ——— 单链表oj题:链表分割(带哨兵位单向不循环链表实现)

目录 题目要求 手搓简易单链表 代码实现 题目要求 现有一链表的头指针 ListNode* head &#xff0c;给一定值 x &#xff0c;编写一段代码将所有小于 x 的节点排在其余节点之前&#xff0c;且不能改变原来的数据顺序&#xff0c;返回重新排列后的链表的头节点 举例说明&a…

免费送源码:Javaspringboot++MySQL springboot 社区互助服务管理系统小程序 计算机毕业设计原创定制

摘 要 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受居民的喜爱&#xff0c;社区互助服务管理系统小程序被居民普遍使用&#xff0c;为…

macOS编译和运行prometheus2.54

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码)&#xff1a;https://github.com/zq2599/blog_demos 本篇概览 本文详述了在macOS(M2芯片)上编译和运行prometheus2.54版本的过程&#xff0c;以及安装node_exporter和grafana并使用prometheus指标进行展示 本地…

Redis:zset类型

Redis&#xff1a;zset类型 zset命令ZADDZCARDZCOUNTZRANGEZREVRANGEZRANGEBYSCOREZREVRANGEBYSCOREZPOPMAXBZPOPMAXZPOPMINBZPOPMINZRANKZREVRANKZSCOREZREMZREMRANGEBYRANKZREMRANGEBYSCOREZINCRBY 集合间操作ZINRERSTOREZUNIONSTORE 内部编码ziplistskiplist 在Redis中&…

单片机的两种看门狗原理解析——IWDG和WWDG

一、IWDG独立开门狗的主要性能 计时机制&#xff1a; 递减计数器 独立开门狗的初始频率&#xff1a; LSI低速内部时钟&#xff1a;RC震荡器&#xff0c;40kHz 独立开门狗是以LSI为初始频率的&#xff0c;所以独立开门狗的初始时钟频率取决与单片机本身&#xff0c;因此在使…

[每周一更]-(第117期):硬盘分区表类型:MBR和GPT区别

文章目录 1. **支持的磁盘容量**2. **分区数量**3. **引导方式**4. **冗余和数据恢复**5. **兼容性**6. **安全性**7. **操作系统支持**8. 对比 国庆假期前补一篇 在一次扫描机械硬盘故障的问题&#xff0c;发现我本机SSD和机械硬盘的分类型不一样&#xff0c;分别是GPT和MBR&a…

Matlab编程示例24:freexyn在b站的读取手写体mnist数据集的matlab代码

1.mnist手写体数据集介绍 手写数字MNIST数据库由60000个示例的训练集和10000个示例的测试集组成。这些数字已进行归一化&#xff0c;每个示例是28*28像素的图片&#xff0c;图片是黑底白字&#xff0c;每个图片的标签就是图片上的数字&#xff0c;数字范围是0~9&#xff0c;总…

记录一次病毒启动脚本

在第一次下载软件时&#xff0c;目录中配了一个使用说明&#xff0c;说是需要通过start.bat 这个文件来启动程序&#xff0c;而这个 start.bat 就是始作俑者&#xff1a; 病毒作者比较狡猾&#xff0c;其中start.bat 用记事本打开是乱码&#xff0c;但是可以通过将这个批处理…

小程序 uniapp+Android+hbuilderx体育场地预约管理系统的设计与实现

目录 项目介绍支持以下技术栈&#xff1a;具体实现截图HBuilderXuniappmysql数据库与主流编程语言java类核心代码部分展示登录的业务流程的顺序是&#xff1a;数据库设计性能分析操作可行性技术可行性系统安全性数据完整性软件测试详细视频演示源码获取方式 项目介绍 用户 注册…

探索 Python 虚拟环境的奥秘:virtualenv 的魔法世界

文章目录 探索 Python 虚拟环境的奥秘&#xff1a;virtualenv 的魔法世界背景&#xff1a;为何选择 virtualenv&#xff1f;虚拟环境的守护者&#xff1a;virtualenv 是什么&#xff1f;安装 virtualenv&#xff1a;简单几步&#xff0c;开启隔离之旅掌握 virtualenv 的基本用法…