【Linux】shell理解及linux权限解读(“花花公子Root”的自由人生)

目录

1.shell外壳理解 

1.1 什么是shell外壳:

1.2 为什么存在shell外壳程序:

1.3外壳程序的具体工作阶段是怎么样的?(招实习生,工作失败也不影响公司)

2.linux下的权限的概念

2.1linux的用户

2.2.文件类型和访问权限

2.3设置文件访问权限 chmod(需要是文件拥有者)

 3.文件类型再解

3.1常见权限的三个问题:

3.1.1 ①对于一个目录而言,要进入一个目录需要什么权限

3.1.2 ②为什么我们创建的普通文件。某认的权限不是777而是664

3.1.3 不能把文件放在别人的目录下

4.粘滞位

5.结语


1.shell外壳理解 

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

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

shell是所有外壳程序的统称,bash  或者sh就指的是具体的解释器,名字不一样,工作一样。

我当前使用的命令行解释其为:bash

帮助理解:如果说你是一个闷骚且害羞的程序员,那shell就像媒婆,操作系统内核就是你们村头漂亮的 且有让你心动的MM小花。你看上了小花,但是有不好意思直接表白,那就让你你家人找媒婆帮你提 亲,所有的事情你都直接跟媒婆沟通,由媒婆转达你的意思给小花,而我们找到媒婆姓王,所以我们叫 它王婆,它对应我们常使用的bash。

bash本身来说就是系统中的一个可执行程序:

也就是说我们平常输入的都是shell命令,负责接收1这些命令的就是这个shell外壳程序

外壳包含:shell外壳程序和图形化界面

1.1 什么是shell外壳:

主要工作: 将使用者的命令翻译给核心(kernel)处理。 同时,将核心的处理结果翻译给使用者

在用户和核心之间:一方面获取用户输入,获取指令,交给用户拿到执行结果在反馈给我们用户

1.2 为什么存在shell外壳程序:

操作系统出于本身的易用程度和安全考虑,是不允许用户直接操作操作系统的。

①用户不善于直接操作系统,用户得懂操作系统,才能进行操作,也就是用户能力达不到,用户只会表达需求,然后外壳程序向操作系统做出解释,然后外壳程序返回执行结果,如果执行就会产生结果,如果指令不存在就会提示你非法访问。(张三不善于和如花打交道,需要媒婆王婆做中介)

 这里是外壳程序bash告诉用户:

②作为内核的保护者的角色 ,为了内核安全,所有命令和可执行程序在交给操作系统内核之前,

部分指令会有一定程度上的检查、审核。如果非法,外壳直接拦截处理

1.3外壳程序的具体工作阶段是怎么样的?(招实习生,工作失败也不影响公司)

shell本身也是一个执行起来的程序(就叫做进程),系统启动就一直存在,只要程序不退出。

这个进程可以被查到:

①如果要处理的指令或者程序是低风险的、容易的,主进程就做 

如果是困难的,有风险的,用户自定义的指令等就派生子进程,如果失败也不影响主进程

这样shell外壳程序就可以一直存在了。 

我们可以编写一段代码来测试:由于是用户编写的代码,那么就会交给子进程来执行

如果在进程为当前指令提供解释的时候,另外的用户结束了或者杀死了主进程,

kill -9 31163

那么就会出现报错,回显等错乱,已经挂掉。但是杀死这个主进程的用户不影响是因为每次登陆的时候,操作系统都要给当前用户新启动一个shell,bash(人手一个媒婆)。

更多的外壳知识放在后续编码讲解。

2.linux下的权限的概念

2.1linux的用户

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

超级用户:可以再linux系统下做任何事情,不受限制,也叫作超级管理员,为所欲为只有一个

普通用户:在linux下做有限的事情。允许存在多个

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

刷机就是刷root用户

如果普通用户要变成root用户:su -     

要输入root密码

回到普通用户ctrl d

 su - 以root身份重新登录一次

su  简单的用户身份变换,登录用户还是普通用户,只是暂时提示为root用户

root用户su到普通用户不用密码

普通用户变成另外一个普通用户需要密码。

当一个普通用户不想变成root用户,但是由想像root一样去执行相应指令1,就可以执行提权命令:

sudo +指令

需要普通用户的密码(短暂不需要重新输入密码)

用户配置列表:

 如果一个用户的用户名在该配置文件中,才允许用户执行sudo,不在就不允许,相当于白名单。

不在就会这样报错

只有root才可以更改这个名单,只有历史上被root用户允许的用户才可以执行sudo.

权限是限制人能或者不能,更多的限制的身份。一定有属性才能谈限制,比如看电影开超清,清晰度就是一个满足的人的需求的属性但是需要身份是vip。

2.2.文件类型和访问权限

本篇主要讨论文件权限(linux下一切皆是文件)

所以谈linux上的权限就要分两部份来看:①对于群体,人身份的权限  拥有者(root/非root)  所属组 other    

②对于操作对象的属性要拥有的权限   文件权限的属性:读:r   写:w  可执行:x

为什么会存在一个所属组?

因为比如对于一个文件自己和组内人员想要对文件进行读写,但是不想被其他组知道,或者直接这样说所属组就是为了让小范围的人获得操作这个文件的权力。

2.3设置文件访问权限 chmod(需要是文件拥有者)

拥有者 简称 u

所属组group 简称g

其他人 other 简称 o

比如修改拥有者权限:chmod u-r  文件名表示去除r权限     chmod u+w 文件名表示加上W权限

现在就不能读了作为拥有者。

给几个身份的用户同时修改权限可以用,号:

chmod u+r,g-w,o+w 文件名

去掉所有人所有权限:

chmod a-rwx 文件名 添加也是同样操作

只有对应身份的人有对应操作权限才可以对文件做出对应操作

那么现在给这个文件加上x的拥有者权限,文件是否可执行呢?

 所以,在linux中,程序能不能运行取决于两点:

①有没有可执行的权限

②程序是不是可执行文件

 执行的时候是先判断身份在判断身份有没有对应操作要的权限,权限只匹配一次,不会说拥有者不行,再看操作者

修改文件拥有者:sudo chown 要修改的名字 文件名

我们所说超级用户root有超级权限,那么一个文件什么权限也没有,我们的root用户会被限制吗?

根本不影响,权限形同虚设。

那么权限每个用户的权限是三位:如果将有看做为数字1,没有看做数字0,那么每一个对应身份所有的权力就可以看做是000~111,换算成8进制数字就0~7,如果三个身份下权限都有就是777

那么我们修改权限也可以使用八进制数据:(八进制修改方案)

改变文件拥有者指令:chown  要改成的名字 文件名

操作不被允许: 拥有权给别人,要得到别人的允许,因为万一这个文件是有害文件呢

没有办法商量,就强制给提权 sudo chowm 要改成的名字 文件名 (操作者要在白名单)也可直接su成超级用户修改

更改所属组命令:chgrp 要修改的名字 文件名 

操作不被允许: 拥有权给别人,要得到别人的允许,因为万一这个文件是有害文件呢

没有办法商量,就强制给提权 sudo chgrp要改成的名字 文件名 (操作者要在白名单)也可直接su成超级用户修改

这里问:可以修改other吗?

答案是不可以的,因为我们在修改拥有者和所属组的时候,other也在随之变化,所以我们在修改前二者的时候也就是在修改other.

一次性修改使用冒号:chown 用户名:用户名 文件名

 3.文件类型再解

但是我们的编译器等会考虑后缀。

所以对于文件的态度:虽然Linux不通过后缀识别类型,但是gcc等属于linux上的工具指令,会考虑后缀,还是按照windows来命名比较好。

- 普通文件:文本文件、源代码、图片、库、可执行程序
d :目录文件
b:block 块设备文件(磁盘等,支持随机访问,支持随机访问的都是块文件,可以通过命令:ls -l /der/vda



c char :字符设备文件,键盘或显示器文件,不支持随机访问,用户输入什么就读取什么,不能乱序,随机读取

ls /dev -l

使用:ls /dev/pts -l 就可以查看当前打开的终端,当做输出文件可以向终端进行输出:


p:管道文件

创建方式:mkfifo 文件名
g:soket文件
l:链接文件

系统链接文件:ls /lib64/  很多c++/c语言库,带有指向性

如图所示,如果我要在当前目录地下去执行代码文件就要:./t1/t2/test.c有些麻烦所以,

就是用短链接的方式:

ln -s ./t1/t2/a.out

这也就是我们的桌面快捷方式的原理:

查看文件的具体类型命令:file 文件名

3.1常见权限的三个问题:

3.1.1 ①对于一个目录而言,要进入一个目录需要什么权限

首先将用户身份与权限进行匹配,且只匹配一次。(目录文件也是文件)

进入一个目录和读写权限无关,需要x权限也就是可执行权限。这不难理解,我们创建一个目录,目录天热就是要被进入的,所以创建目录时给所有人都有可执行权限。

w权限决定了该目录下文件的创建删除权限,但是这里并不允许修改文件名,文件的创建删除可以修改,包括文件权限都可修改

r权限决定了用户是否可以ls-l查看目录下文件的详细属性信息

但是权限的限制还是对于root用户形如虚设

3.1.2 ②为什么我们创建的普通文件。某认的权限不是777而是664

x权限并不是所有的文件都需要,需要的时候可以人为的或者工具添加,但是像目录和可执行文件天然就需要x权限。

普通文件的起始权限是666,为什么是664?

目录的起始条件是777,为什么是775?

因为系统里面除了起始权限外,还有系统掩码umask的概念。(允许用户定制自己创建文件时的默认权限)

什么叫权限掩码或者掩码可以通过umask查看

只关心后三位即可,八进制数就是 002》000 000 010

权限掩码的意思是:从起始权限中去掉umask中出现的权限,没有就保持起始权限,保证不在最终权限中出现就OK。

666 -》110 110 110

002 -》000 000 010

得到》110 110   100   -》664

那么umask也是可以修改的

起始权限&(~umask) = 最终权限

3.1.3 不能把文件放在别人的目录下

目录是自己的,文件是别人的所以不让写不让读,但是却能删

一句话:谁让你把文件创建在别人的目录下,我不能读不能写,我就给你扬了。 

一个文件能否被删除,并不取决于文件本身,而是取决于文件所处的目录,拥有者是否具有w权限。

对于普通用户来说,直接的家目录只有自己有全部权限,别人没有所属组都没有,只有自己活着超级用户还有白名单可以

4.粘滞位

那么谁也进不了我们各自的家目录,我们如何实现文件共享呢?这个文件首先要被所有人能够看到,文件权限要被拥有者修改。 Linux为了满足这个需求就创建了linux下根目录下的temp目录

ls /tmp -ld

这个目录是所有用户共享的,允许用户将临时文件建立在这里

如果拥有者修改读写权限就可以限制其他普通用户对这个文件的操控,用这种方式实现文件共享

 t叫做粘滞位,给目录中的other设置的权限位,具有x的意义同时也进一步对目录权限进行特殊限定,该目录里面的文件只有root和拥有者可以删除。

给一个位置设置粘滞位,这个目录一般是共享目录。

5.结语

对于本期 Linux下的权限讲解就到这里。创作不易,大家如果觉得还可以的话,欢迎大家三连,有问题的地方欢迎大家指正,一起交流学习,一起成长,我是Nicn,正在c++方向前行的奋斗者,数据结构内容持续更新中,感谢大家的关注与喜欢。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

“每一次的感应,都是对环境的温柔拥抱。”#STM32项目二 《感应开关盖垃圾桶》【下】

“每一次的感应,都是对环境的温柔拥抱。”#STM32项目二 《感应开关盖垃圾桶》【下】 前言预备知识1.实现距离感应开盖1.1换另一个定时器进行PWM输出驱动SG90舵机1.2延用超声波传感器介绍及实战工程进行配置PWM输出1.3在主C文件合适位置封装开关盖,开关LE…

C#中openFileDialog 对话框不在最顶层,TopMost的异常情况

重点&#xff01;&#xff01;&#xff01;若 当前窗体this的TopMost是false&#xff0c;可以设置为true&#xff0c;这样打开的对话框就是最顶层 /// <summary> /// 设置窗体TopMost&#xff0c;缺点和其他程序ide有冲突。例如VS有断点的调试会卡死 /// </summary&g…

Understanding Vulkan Objects

​ 和学习其他API一样&#xff0c;学习Vulkan API中有一个重要部分&#xff1a;了解Vulkan API定义了拿下类型&#xff0c;以及这些类型之间的关系。为了帮助理解这些类型&#xff0c;接下来会绘制一幅关系图&#xff0c;表现它们之间的关系&#xff0c;尤其是创建依赖关系。 …

map和set(二)——AVL树的简单实现

引入 二叉搜索树有其自身的缺陷&#xff0c;假如往树中 插入的元素有序或者接近有序&#xff0c;二叉搜索树就会退化成单支树&#xff0c;时间复杂度会退化成O(N)&#xff0c;因此 map、set等关联式容器的底层结构是对二叉树进行了平衡处理&#xff0c;即采用平衡树来实现。简…

点投影到平面方程

点到平面的距离公式 如何计算点到平面距离 - 知乎 点到平面的投影 - 知乎

康奈尔开源近10万份审稿意见,未来论文发表或将由AI定夺

大语言模型&#xff08;LLMs&#xff09;的进步为自动化论文评审开辟了新途径&#xff0c;这些模型在学术反馈领域展现出巨大潜力。自动化评审的核心优势在于其能够精准指出论文草稿的不足之处&#xff0c;助力作者优化研究。尽管已有丰富的同行评审数据&#xff0c;但现有自动…

20.2 nginx

20.2 nginx 1. 学习目标2. 介绍2.1 正向代理2.2 反向代理2.3 动态静态资源分离2.4 nginx优缺点3. 安装3.1 Linux安装****************************************************************************************************************************************************…

AtCoder Beginner Contest 344 (A~F)

比赛地址传送门 A - Spoiler #include <bits/stdc.h> using namespace std; int main() {string line;cin>>line;int l0,rline.length()-1;while(line[l]!|) l;while(line[r]!|) r--;for(int i0;i<line.length();i) {if(i<l||i>r) cout<<line[i];…

基于stm32的流水灯设计

1基于stm32的流水灯设计[proteus仿真] 速度检测系统这个题目算是课程设计和毕业设计中常见的题目了&#xff0c;本期是一个基于51单片机的自行车测速系统设计 需要的源文件和程序的小伙伴可以关注公众号【阿目分享嵌入式】&#xff0c;赞赏任意文章 2&#xffe5;&#xff0c…

《领导的气场——8堂课讲透中国式领导智慧》读书笔记

整体感悟 个人感觉书籍比较偏说教、理论&#xff0c;没有看完。 现仅仅摘录自己“心有戚戚焉”的内容。 经典摘录 管理的本质是通过别人完成任务。有一百件事情&#xff0c;一个人都做了&#xff0c;那只能叫勤劳&#xff1b;有一百件事情&#xff0c;主事的人自己一件也不做&…

js 获取浏览器相关的宽高尺寸

window 屏幕 屏幕分辨率的高&#xff1a; window.screen.height 屏幕分辨率的宽&#xff1a; window.screen.width 屏幕可用工作区高度&#xff1a; window.screen.availHeight 屏幕可用工作区宽度&#xff1a; window.screen.availWidth document 网页 网页可见区域宽&#xf…

shell 查询json文件的某一行并 替换json 键值字符串右边的内容(使用jq工具)

在shell中处理JSON文件时&#xff0c;直接通过shell命令行工具&#xff08;如sed&#xff09;进行精确的键值替换可能会比较困难和复杂&#xff0c;因为JSON数据结构需要解析器来正确识别键值对。推荐使用专门处理JSON的工具&#xff0c;如jq。 假设你有一个简单的JSON文件dat…

C语言学习--练习4(二维数组)

目录 1.统计有序数组中的负数 2.矩阵对角线元素和 3.最富有客户的资产总量 4.托普利兹矩阵 5.矩阵中的幸运数 6.二进制矩阵中的特殊位置 7.岛屿的周长 1.统计有序数组中的负数 //直接遍历二维数组即可 int countNegatives(int** grid, int gridSize, int* gridColSize) …

京东面试官问我,你在catch块中写业务代码吗?

文章目录 面试题背景我的理解实际运用场景 面试题背景 京东二面&#xff0c;面试官主要考察软实力吧。问了几个问题&#xff1a; 你觉得什么样的代码是好代码&#xff1f;平时你是如何做系统稳定性建设的&#xff1f;你在catch块中写过业务代码吗&#xff1f; 本文主要是谈谈…

比特币普通地址、隔离见证(兼容)、隔离见证(原生)、Taproot 地址傻傻分不清楚

我们在使用比特币钱包的时候&#xff0c;可以看到各种地址类型&#xff1a;普通地址、隔离见证&#xff08;兼容&#xff09;、隔离见证&#xff08;原生&#xff09;、Taproot 地址。 看得我们一脸懵逼&#xff0c;为什么会有这么多种类型的地址&#xff1f; 它们之间都有什么…

选修-单片机作业第1/2次

第一次作业 第二次作业 1、51 系列单片机片内由哪几个部分组成&#xff1f;各个部件的最主要功能是什么&#xff1f; 51系列单片机的内部主要由以下几个部分组成&#xff0c;每个部件的主要功能如下&#xff1a; 1. **中央处理器&#xff08;CPU&#xff09;**&#xff1a;这是…

图片上传组件

el-upload图片上传 背景代码 背景 项目需要多张图片上传回显&#xff0c;图片上传后返回图片ID&#xff0c;不返回url&#xff0c;需要通过图片ID获取token然后再拼接成图片下载的URL。选择el-upload组件进行开发。 file-list&#xff1a;文件列表&#xff0c;上传下载都需要…

线程池的执行流程

线程池是一种常见的并发编程模式&#xff0c;用于管理和复用线程以执行异步任务。其执行流程通常包括以下步骤&#xff1a; 初始化线程池&#xff1a; 在使用线程池之前&#xff0c;首先需要初始化线程池。在初始化过程中&#xff0c;需要指定线程池的参数&#xff0c;如线程池…

018-VUE框架优点

VUE框架优点 一句话总结 vue 作为一款轻量级框架&#xff0c;门槛低&#xff0c;上手快&#xff0c;简单易学&#xff1b;vue 可以进行组件化开发&#xff0c;数据与结构相分离&#xff0c;使代码量减少&#xff0c;从而提升开发效率&#xff0c;易于理解&#xff1b;vue 最突出…

装windows11+centos双系统时遇到问题及解决方法

从u盘启动提示linpus lite has been blocked 首先下载iso镜像文件&#xff0c;制作u盘启动工具&#xff0c;进行启动&#xff0c;这里进入bios界面进行启动项选择后&#xff0c;虽然已经将usb作为首要启动值 却会出现上图所示被“block”情形 需要在bios界面security选项&…