【Linux】Shell命令运行原理和权限详解

【Linux】Shell命令运行原理和权限详解

  • 一、剩余指令的补充
    • 1.tar指令
    • 2.bc指令
    • 3.uname
    • 4.热键
  • 二、Shell命令运行原理
    • 1.Shell
    • 2.为什么Linux不让用户直接使用kernel
  • 三、Linux权限概念
  • 四、Linux权限管理
    • 1.文件访问的用户分类
    • 2.文件类型和访问权限
      • (1)文件类型
      • (2)访问权限
    • 3.权限的表示方法
      • (1)字符表示法:
      • (2)八进制表示法:
    • 4.权限的设置
      • (1)chmod修改文件访问权限
      • (2)chown修改文件拥有者
      • (3)chgrp修改文件或者目录的所属组
      • (4)umask查看或者修改文件掩码
      • (5)目录的权限
      • (6)粘滞位

一、剩余指令的补充

1.tar指令

  1. tar指令(重要):打包/解包,不打开它,直接看内容
  2. 语法:tar [-cxtzjvf] 文件与目录 … 参数:
    常用的为:

(1)-c :建立一个压缩文件的参数指令(create 的意思);

(2)-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩

(3)-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数

(4)-v :压缩的过程中显示文件!

(5)-x :解开一个压缩文件的参数指令!

(6)-C : 解压到指定目录

在这里插入图片描述
我们一般用-czf就够了!
-v把打包的过程显示出来:
在这里插入图片描述
3. tar的解压:只需将-czf / -cvzf 中的 c 变成 x 即可!
在这里插入图片描述
总结:
(1)zip和tar都是:打包
(2)unzip和tar都是:压缩

在这里插入图片描述
在这里插入图片描述

2.bc指令

Linux下的计算器:
如果退出要么:Ctrl+C / quit + 回车
在这里插入图片描述
通过重定向(echo)和管道(|)算一串连续的数字:
在这里插入图片描述

3.uname

1.uname:查Linux下的系统架构:
在这里插入图片描述
在这里插入图片描述

4.热键

(1)Ctrl+C :终止命令。
(2)Tab键:具有命令补齐的功能!

在这里插入图片描述
(3)按两次Ctrl+D 就直接退出关闭XShell
(4)Ctrl+R:在历史命令中进行搜索

二、Shell命令运行原理

1.Shell

Linux作为一个操作系统,称为"kernel",一般用户不能直接使用kernel,而通过"kernel"的外壳程序"Shell"和kernel进行沟通。

    所以广义上Linux发行版=Linux内核+外壳程序,狭义上Linux发行版=Linux内核。

Shell作为外壳程序,包裹在Linux内核外层,是一个应用程序,通过一系列的Linux命令对操作系统 发出相关治疗提供人际界面。它连接了用户和Linux内核,让用户更加高效、安全、低成本地使用Linux内核,这就是Shell的本质。bash是Shell的一种。

Shell命令的执行过程:

在这里插入图片描述

Shell有两个作用:

(1)传递请求指令,让操作系统执行命令

(2)保护内核

2.为什么Linux不让用户直接使用kernel

对比windows GUI,用户操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成用户操作(比如进入D盘的操作,用户通常通过双击D盘盘符而进入D盘)。
在这里插入图片描述
shell 对于Linux,有相同的作用,主要是对用户的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。

三、Linux权限概念

  1. 权限与人扮演的角色有关,权限也与事物的属性有关权限==人(角色)+ 事物的属性!
  2. 在Linux下有两种用户,一是超级用户(root),二级是普通用户,超级用户与普通用户的命令提示符不一样:超级用户的命令提示符是"#“,普通用户的命令提示符是”$"。
  3. 超级用户:root 可以在Linux下做任何事情不受限制!
  4. 超级用户与普通用户之间可以相互切换(但是如果你普通用户切换到超级用户系统会让你输入一个密码,这个密码是root的密码,但是你root切换到普通用户不需要输入任何密码
    在这里插入图片描述

四、Linux权限管理

1.文件访问的用户分类

  1. 文件访问的用户分类,分为3类:

(1)拥有者:User(u)

(2)所属组:Group(g)

(3)other:Other(o)

2.文件类型和访问权限

(1)文件类型

​​​​​​​在Linux中,不以文件后缀作为区分文件类型的方式,而是以文件详细列表的第一位进行标识区分:
在这里插入图片描述
在Linux中,我们现阶段只学常用的文件类型有:

d:目录文件
-:普通文件(包括文本、各种静态库、可执行程序、源程序)

  1. 众所周知,windows是如何区分文件类型的,就是通过后缀名,但是Linux不通过后缀来区分文件类型,但是Linux并不是说不用后缀。( Linux区分文件类型是根据前面的第一列字符,现在就知道 - (普通文件)和 d (目录文件)就行了
    在这里插入图片描述
    我们对Linux中文件后缀的态度是可以使用,但并不代表Linux系统下的工具不用后缀来做区分,比如说编译器gcc就需要以后缀名来区分文件类型。
    在这里插入图片描述

在这里插入图片描述

(2)访问权限

linux对文件有3种访问权限:

r:read,对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限

w:write,对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限

x:execute,对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限

3.权限的表示方法

(1)字符表示法:

在这里插入图片描述
(1)快速掌握修改权限的做法:

在这里插入图片描述
(2)一次性加减多名角色的权限:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(3)权限的访问对用户身份只识别一次,如果匹配成功,那么就结束识别!
按 拥有者->所属组->other的顺序进行匹配!
在这里插入图片描述
(1)如何证明Linux对用户身份只识别一次?

在这里插入图片描述
对用户身份只识别一次:如果匹配成功就按成功的来,如果对拥有者匹配不成功就自动匹配所属组,如果两个都不成功,那就说明是other。
注意:“识别”和“匹配”不一样!!!(匹配成功那才叫识别了一次!)

(2)八进制表示法:

在这里插入图片描述

4.权限的设置

(1)chmod修改文件访问权限

只有文件的拥有者和root可以设置文件的访问权限:

chmod 【参数】 权限 文件名

①用户符号+/-/=权限字符:

+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户

(2)chown修改文件拥有者

修改文件拥有者:

chown 【参数】 用户名 文件名

在这里插入图片描述

(3)chgrp修改文件或者目录的所属组

chgrp 【参数】 用户组名 文件名

在这里插入图片描述

chmod chown chgrp 的语法总结:
在这里插入图片描述

(4)umask查看或者修改文件掩码

新创建一个文件,访问权限按理来说,应该是777,但是却发现新创建的目录的权限是755:
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
umask:是Linux中的默认权限掩码
在这里插入图片描述
在这里插入图片描述

(5)目录的权限

①可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容。
②可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件。
③可执行权限: 如果目录没有可执行权限, 则无法cd到目录中
在这里插入图片描述

(6)粘滞位

在root的根目录下,有一个tmp文件夹,这个文件夹下存放的是临时文件,用户在保存文件之前,文件都存放在tmp文件夹中,这个文件夹下存放用户的临时文件,可以看到它的权限有个t:
在这里插入图片描述
这个文件夹对拥有者和所属组的权限都是rwx,对other的权限是rwt。这个t是什么属性?和r、w、x有什么区别?

先来看下面的例子,root用户在根目录下创建了一个文件夹test,并在这个文件夹中创建了2个文件test1和test2,然后又root用户切换为yjl用户,此时发现yjl竟然可以删掉test中的文件:

在这里插入图片描述
这怎么能忍,我创建的文件,怎么能够被别人随随便便的删除掉了?test的目录对other有w和x的权限,一旦有w的权限,那么也就是说other可以对他进行创建文件和删除文件的操作,但是不希望一个用户创建的文件被别的用户删除删除掉,我们该怎么办呢?在这种场景下我们就需要粘滞位。

当一个目录被设置了粘滞位以后,即使用户对该目录有写的权限,但是也不能删除该目录中其他用户的文件。只有文件的拥有者和root用户才可以删除。这就达到了各个用户可以在目录中读,写,修改,删除文件,但是不能随意的删除其他用户的文件的目的。
在这里插入图片描述
但是最后发现他报错了,你没有访问权限。

因此,当一个目录被设置为"粘滞位"(chmod +t),则该目录下的文件只能由
(1)超级管理员删除
(2)该目录的所有者删除
(3)该文件的所有者删除


好了,今天的分享就到这里了
如果对你有帮助,记得点赞👍+关注哦!
我的主页还有其他文章,欢迎学习指点。关注我,让我们一起学习,一起成长吧!
在这里插入图片描述

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

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

相关文章

H3C PBR 实验

H3C PBR 实验 实验拓扑 ​​ 实验需求 按照图示配置 IP 地址,公司分别通过电信和联通线路接入互联网公司内网配置 RIP 互通,公网配置 OSPF 互通,R6上配置默认路由指向 R1,内网使用路由器模拟 PCR1 分别在电信和联通出口上配置…

【Python】进阶学习:pandas--info()用法详解

【Python】进阶学习:pandas–info()用法详解 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程👈 希望得到您的订…

力扣hot10---子串

题目: 思路: 一看到子数组的和,就很容易想到前缀和,求出来前缀和数组后,对前缀和数组进行两重for循环遍历,就大功告成啦!(感觉想一会儿就可以想到) 代码: …

《操作系统原理》算法总结

一、进程调度算法 先来先服务调度算法(FCFS) 每次调度是从就绪队列中,选择一个最先进入就绪队列的进程,把处理器分配给该进程,使之得到执行。该进程一旦占有了处理器,它就一直运行下去,直到该…

使用IGEV和双目相机生成深度图实现测距

介绍 以下是源代码的demo,我根据自己的需求,做了部分改动,比如双目相机输入的格式是RGBA,但IGEV处理的输入通道数是3,我就在其他py文件将图片转成RGB格式 设备 1080ti和jetson orin nx两个都可以 代码 import sys…

VS2019 - error C2653: 不是类或命名空间名称

文章目录 VS2019 - error C2653: 不是类或命名空间名称概述笔记类的头文件类的实现文件备注END VS2019 - error C2653: 不是类或命名空间名称 概述 工程开了预编译头包含. 编码中, 随手写一个类, 将功能函数加入, 还没开始用这个类, 先习惯性的编译一下. 编译报错如下: St…

C# 高级特性(十一):多线程之async,await

之前使用Thread和Task启动多线程时都会遇到一个麻烦,就是如何反馈结果。在代码里就是如何设计回调函数。如果带界面还得考虑UI线程的问题。 而使用async,await可以达到两个效果。 1 不用设计回调函数,直接按单线程的格式写。 2 不用考虑UI…

音视频学习笔记——设计模式

✊✊✊&#x1f308;大家好&#xff01;本篇文章主要记录自己在进行音视频学习中&#xff0c;整理的包括单例模式、工厂模式、策略模式、观察者模式等6种相关的设计模式和4种准则的内容重点&#x1f607;。 音视频学习笔记——设计模式 本专栏知识点是通过<零声教育>的音…

12-Java享元模式 ( Flyweight Pattern )

Java享元模式 摘要实现范例 享元模式&#xff08;Flyweight Pattern&#xff09;主要用于减少创建对象的数量&#xff0c;以减少内存占用和提高性能 享元模式尝试重用现有的同类对象&#xff0c;如果未找到匹配的对象&#xff0c;则创建新对象 享元模式属于结构型模式&…

5分钟速成渐变色css

色彩的分支——渐变色定义&#xff1a;按照一定规律做阶段性变化的色彩&#xff08;抽象&#xff01;&#xff01;&#xff01;&#xff09; 我们可以将图片分为两块 以中心线为参考&#xff0c;再来看渐变色的定义&#xff1a;按照一定规律做阶段性变化的色彩 既然是按一定的…

【格与代数系统】偏序关系、偏序集与全序集

关系&#xff1a;X,Y是两个非空集合, 记若则称R是X到Y的一个二元关系&#xff0c;简称关系。 若,记。 当时&#xff0c;称是上的一个关系。 目录 偏序关系 偏序集 可比性 全序集 最值与上下界 上下确界 偏序关系 设是上的一个关系&#xff0c;若满足&#xff1a; (1)自…

水库大坝位移监测方法的探索与实践

一、概述&#xff1a;水库大坝位移监测&#xff0c;作为当前工程领域的研究热点&#xff0c;对于确保大坝安全具有重要意义。当前&#xff0c;水平位移与垂直位移监测是两大核心方法。本文旨在通过实际工程案例&#xff0c;深入探讨如何有效结合这两种监测方法&#xff0c;提升…

Vue.js+SpringBoot开发高校学院网站

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 学院院系模块2.2 竞赛报名模块2.3 教育教学模块2.4 招生就业模块2.5 实时信息模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 学院院系表3.2.2 竞赛报名表3.2.3 教育教学表3.2.4 招生就业表3.2.5 实时信息表 四、系…

Typescript 哲学 morn on funtion

函数重载 overload 有一些编程语言&#xff08;eg&#xff1a;java&#xff09;允许不同的函数参数&#xff0c;对应不同的函数实现。但是&#xff0c;JavaScript 函数只能有一个实现&#xff0c;必须在这个实现当中&#xff0c;处理不同的参数。因此&#xff0c;函数体内部就…

iOS-系统弹窗调用,

代码&#xff1a; UIAlertController *alertViewController [UIAlertController alertControllerWithTitle:"请选择方式" message:nil preferredStyle:UIAlertControllerStyleActionSheet];// style 为 sheet UIAlertAction *cancle [UIAlertAction actionWithTit…

消息队列-Kafka-基础架构

基础架构 官网地址 上面这张图类比RocketMQ 相当于对一个主题进行了分区&#xff08;类似于RockeMQ 消息队列&#xff09;&#xff0c;每个分区存储到不同的Broker。在发送消息的时候都是发送到主分区。如果一台Broker由于其它节点备份了挂掉节点的数据&#xff0c;所以可以…

demo型xss初级靶场

一、环境 XSS Game - Ma Spaghet! | PwnFunction 二、开始闯关 第一关 看看代码 试一下直接写 明显进来了为什么不执行看看官方文档吧 你不执行那我就更改单标签去使用呗 ?somebody<img%20src1%20onerror"alert(1)"> 防御&#xff1a; innerText 第二关…

TS项目实战三:Express实现登录注册功能后端

使用express实现用户登录注册功能&#xff0c;使用ts进行代码开发&#xff0c;使用mysql作为数据库&#xff0c;实现用户登录、登录状态检测、验证码获取接口及用户注册相关接口功能的实现。 源码下载&#xff1a;[点击下载] (https://download.csdn.net/download/m0_37631110/…

【论文阅读】《Graph Neural Prompting with Large Language Models》

文章目录 0、基本信息1、研究动机2、创新点3、准备3.1、知识图谱3.2、多项选择问答3.3、提示词工程&#xff08;prompt engineering&#xff09; 4、具体实现4.1、提示LLMs用于问答4.2、子图检索4.3、Graph Neural Prompting4.3.1、GNN Encoder4.3.2、Cross-modality Pooling4.…

UE4升级UE5 蓝图节点变更汇总(4.26/27-5.2/5.3)

一、删除部分 Ploygon Editing删除 Polygon Editing这个在4.26、4.27中的插件&#xff0c;在5.1后彻底失效。 相关的蓝图&#xff0c;如编辑器蓝图 Generate mapping UVs等&#xff0c;均失效。 如需相关功能&#xff0c;请改成Dynamic Mesh下的方法。 GetSupportedClass删…