Linux中Shell运行原理和权限(下)(4)

news2025/2/27 19:20:35

文章目录

  • 前言
  • 一、Shell的运行原理
  • 二、Linux当中的权限问题
    • Linux权限的概念
    • 如何将普通用户添加到信任列表
  • 三、Linux权限管理
    • 文件访问者的分类(人)
    • 文件类型和访问权限(事物属性)
    • 文件权限值的表示方法
    • 文件访问权限的相关设置方法
    • 如何改变文件的拥有者
    • 如何改变文件的所属组
    • 如何修改文件的掩码
    • 目录的权限
    • 粘滞位
  • 总结


前言

  前几篇中有些指令我没有介绍,大家也可自行在CSDN搜索来扩充知识面!


一、Shell的运行原理

  我们都知道Windows以图形化界面为交互方式,而Linux以命令行界面为交互方式。Windows和Linux的交互方式虽然不同,但本质上是一样的,图形化界面和命令行界面都是为了让用户进行相关操作,而图形化界面和命令行界面就是我们所说的“外壳程序”。

在这里插入图片描述
  Linux严格意义上说是一个操作系统,我们称之为“核心(kernel)”,但我们一般用户不能直接使用kernel,而是通过kernel的“外壳程序”,也就是所谓的Shell,来与kernel沟通。

Shell最简单的定义就是“命令行解释器”:

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

  对比Windows中的图形化界面(GUI),我们操作Windows并不是直接操作Windows内核,而是通过图形接口,点击,从而完成我们的操作。Shell对于Linux具有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核,反馈结果再通过内核运行出结果,通过Shell解析给用户。

Shell运行原理:

  1. 创建子进程,让子进程进行命令行解释。
  2. 子进程出现任何问题,都不影响父进程Shell。

  对比到Windows当中就是,我们每运行一个程序就是创建了一个子进程,例如,登录微信、QQ。而这些子进程当中任何一个进程出现问题,都不会影响父进程,例如,当你的QQ出现卡死情况(程序异常)或你的QQ被关掉(程序终止),但其他子程序仍然可以运行。

在这里插入图片描述

注意: Shell只是所有外壳程序的统称,例如在centos 7当中的外壳程序名叫bash。

  或者我打个比方,如果说你是⼀个闷骚且害羞的程序员(比如我),那shell就像媒婆,操作系统内核就是你们村头漂亮的且有让你⼼动的MM⼩花。你看上了⼩花,但是又不好意思直接表⽩,那就让你你家⼈找媒婆帮你提亲,所有的事情你都直接跟媒婆沟通,由媒婆转达你的意思给⼩花,⽽我们找到媒婆姓王,所以我们叫它王婆,它对应我们常使⽤的bash。

二、Linux当中的权限问题

Linux权限的概念

  在Linux下有两种用户,分别是超级用户(root)和普通用户。超级用户可以在Linux下做任何事情,几乎不受限制,而普通用户一般只能在自己的工作目录下(/home/xxx)工作,以及在系统上做有限的工作。换句话来说,所有的权限的概念都是用来限制普通用户的,而超级用户几乎不受限制。

超级用户的命令提示符是“#”。
在这里插入图片描述
普通用户的命令提示符是“$”。
在这里插入图片描述
如何实现用户账号之间的切换?

语法: su 用户名
功能: 用户切换。
从普通账号切换为root账号。
在这里插入图片描述

如何将普通用户添加到信任列表

首先你得先切换到超级用户,只有超级用户才有权力将普通用户添加到信任列表。

  1. 切换到超级用户后,我们使用vim打开文件sudoers进行添加。

在这里插入图片描述

  1. 添加如箭头标示的那一行

在这里插入图片描述

  1. 然后按ESC按键,并且接着 shift + : ,当下面出现 : 的时候再输入wq! + 回车结束

在这里插入图片描述

三、Linux权限管理

文件访问者的分类(人)

  1)文件和文件目录的所有者(文件拥有者)。
  2)文件拥有者所在的组的用户(文件所属组)。
  3)其他用户(other)。

请注意!对于某一文件而言,其拥有者、所属组和 other 就是由超级用户(root)和普通用户所扮演。在Linux当中,所有用户都要隶属于某一个组,哪怕这个组只有你一个人(此时该组就以你的用户名为组名)。

这个 组 的概念从何而来呢?请看下面例子:

在某个公司当中有两个小组团队(A组、B组)在同一个Linux服务器上进行着同一款项目的开发(赛马模式),而你就是A组当中的一员。

据我所知,赛马模式是腾讯很喜欢的一种模式

在这里插入图片描述

如果没有所属组的概念,那么当你创建了一个文件后,要么就是只有你自己(拥有者)能看到,要么就是其他人(other)也都能看到。而你所希望的是你自己和你的小组成员能看到,剩下的人看不到。

于是就有了所属组这个概念,这时你就可以将文件设置为拥有者和所属组可见,而other不可见。所以所属组的存在是为了更灵活的进行权限配置,满足团队协作

我们可以通过指令ll来查看某一文件或文件目录的拥有者和所属组。
在这里插入图片描述

注: 除了文件拥有者和文件所属组之外的都叫other。

文件类型和访问权限(事物属性)

权限涉及到某个具体的事物来说,我们还需要讨论事物本身的属性。对于文件来说,我们应该讨论其文件类型,以及是否具有可读、可写和可执行的属性。

使用指令ll,我们可以看到前面有一串字符,这串字符实际上就代表着该文件的类型和属性。

在这里插入图片描述
这串字符由10个字符组成的。其中第一个字符所代表的就是该文件的文件类型。

不同的字符代表不同的文件类型。
  1)-:代表普通文件。
  2)d:代表目录。
  3)l:代表链接文件(类似于Windows当中的快捷方式)。
  4)b:代表块设备文件(例如硬盘、光驱等)。
  5)p:管道文件。
  6)c:字符设备文件。
  7)s:套接口文件。

注意: 在Linux当中,文件类型与文件后缀无关。

剩下的9个字符每三个为一组,分别代表该文件相对于其拥有者、所属组以及other是否拥有某种属性。
在这里插入图片描述
每一组的三个字符的第一个字符代表该文件是否具有可读属性,第二个代表是否具有可写属性,第三个代表是否具有可执行属性。

在这里插入图片描述
若是具有可读属性,则第一个位置的字符为r;若是具有可写属性,则第二个位置的字符为w;若是具有可执行属性,则第三个位置的字符为x。若某一位置为字符 - ,则说明不具有对应位置的属性。

在这里插入图片描述
test.c文件是一个普通文件,该文件的拥有者对其是可读可写的,但该文件的所属组和other对其只有读的权力。

文件权限值的表示方法

a)字符表示方法

ll指令打印文件权限值时的表示方法就是字符表示法

在这里插入图片描述
b)八进制数值表示法

字符表示法中的每一个字符所在位置所表示的结果只有两种可能,要么为真,要么为假,因此我们可以将这三个字符换为三个二进制位,进而换为一个八进制位进行表示

在这里插入图片描述

文件访问权限的相关设置方法

如何改变文件的访问权限

语法: chmod 选项 权限 文件名或目录名
功能: 设置文件的访问权限。
常用选项: -R 递归修改目录文件的权限。

在这里插入图片描述

如上图所示,我给 test.c 文件加上了可写可执行的权限

若要同时设置不同类用户的访问权限,则需用逗号隔开

在这里插入图片描述

如何改变文件的拥有者

语法: chown 选项 用户名 文件名或目录名
功能: 修改文件的拥有者。

注意: 修改文件的拥有者需要root用户进行操作,若是普通用户则需要进行权限提升

在这里插入图片描述

注意: 修改文件的拥有者需要root用户进行操作,若是普通用户则需要进行权限提升。

也可以使用chown指令同时修改文件的拥有者和所属组,将拥有者和所属组的用户名用冒号隔开即可

如何改变文件的所属组

语法: chgrp 选项 用户名 文件名或目录名
功能: 修改文件的所属组。

在这里插入图片描述

注意: 修改文件的所属组也需要进行权限提升。

如何修改文件的掩码

我们查看新建的文件和目录,它们都有自己默认的权限。

在这里插入图片描述

实际上,新建文件的默认权限为0666,新建目录的默认权限为0777。其中第一位的0与特殊权限有关,我们这里不必深究,而后面三位就是权限的八进制数值表示方法,我们将其翻译为字符表示方法

在这里插入图片描述
但实际上你会发现,你所 创建出来的文件 和 目录的权限值 往往不是我们所翻译出来的值,原因就是创建文件和目录的时候还要受到 umask 的影响

假设默认权限是mask,则实际创建出来的文件权限是:mask & (~umask)

语法: umask 权限值
功能: 查看或修改文件掩码。

在这里插入图片描述
因此我们实际创建出来的文件和目录的权限值还需要进行进一步换算才能得出。首先我们将掩码的的后三位八进制换算为二进制,然后对其进行按位取反

现在假设 umask 的掩码是 002
在这里插入图片描述
然后将之前的新建文件的默认权限值和新建目录的默认权限值分别与其进行按位与操作,得到的就是我们创建出来的文件和目录的权限值

在这里插入图片描述
也可以理解为凡是在umask中出现的权限位,都不能在最终权限中出现。

在这里插入图片描述
因此我们也可以通过修改 umask 来设置文件的访问权限。

所以我们只要设置掩码为000,那么新创建的目录或文件就是默认权限 ;如果设置掩码为777,那么新创建的目录或文件就是无任何权限

目录的权限

  对于文件来说,其可读可写可执行的属性我们都知道分别代表着什么对应的操作,那对于目录来说可读可写可执行又分别代表着什么呢?

1)可读权限: 如果用户没有该目录的可读权限,则无法通过ls指令查看目录中的文件内容。
2)可写权限: 如果用户没有该目录的可写权限,则无法通过一系列指令在目录中创建文件或删除文件。
3)可执行权限: 如果用户没有该目录的可执行权限,则无法通过cd指令进入到目录当中。

那么这就会出现一个问题
  只要用户拥有某目录的可写权限,就可以删除该目录当中的文件,而不论该用户是否拥有该文件的可写权限,这显然是不合理的。

在这里插入图片描述

注意看该图,我们有当前目录的读写权限,却没有 test.txt 的读写权限,但是我们却成功删除了 test.txt

粘滞位

  为了解决这个不合理的问题,Linux引入了粘滞位的概念。

语法: chmod + t 目录名
功能: 给目录加上粘滞位

当一个用户将某一个目录加上粘滞位后,该目录的权限值的最后一位变为字符 “t”。

在这里插入图片描述
此时另一个用户就算有该目录的可写权限,也无法删除该目录下的文件。

在这里插入图片描述

当一个目录被设置为粘滞位,则该目录下的文件只能由:
1)超级用户删除。
2)该目录的拥有者删除。
3)该文件的拥有者删除。

注意: 虽然目录被加上了粘滞位,但如果用户有该目录的可写权限,则不影响其在该目录下创建文件,只是对于删除会有影响!!!


总结

  开始上难度了!不过接下来的一篇会很有意思,我会教大家来实操如何在Linux环境下用命令行来提交你自己的代码到gitee/github

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

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

相关文章

OceanBase数据库实战:Windows Docker部署与DBeaver无缝对接

一、前言 OceanBase 是一款高性能、高可扩展的分布式数据库,适用于大规模数据处理和企业级应用。 随着大数据和云计算的普及,OceanBase 在企业数字化转型中扮演着重要角色。学习 OceanBase 可以帮助开发者掌握先进的分布式数据库技术,提升数…

技术速递|.NET 9 网络优化

作者:Mňa,Natalia,Anton 排版:Alan Wang 秉承我们的传统,我们很高兴与您分享这篇博客文章,以介绍新的 .NET 版本中网络领域相关的最新动态和最有趣的变化。今年,我们带来了 HTTP 领域的改变、新…

Tag标签的使用

一个非常适合运用在vue项目中的组件:Tag标签。 目录 一、准备工作 1、安装element-plus库 2、配置element-plus库 二、Tag标签入门 1、打开element官网,搜索tag标签 2、体验Tag标签的基础用法 三、Tag标签进阶训练1 1、定义一个数组,…

Linux:(3)

一:Linux和Linux互传(压缩包) scp:Linux scp 命令用于 Linux 之间复制文件和目录。 scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。 scp 是加密的,rcp 是不加密的,scp 是…

HarmonyOS 5.0应用开发——鸿蒙接入高德地图实现POI搜索

【高心星出品】 文章目录 鸿蒙接入高德地图实现POI搜索运行结果:准备地图编写ArkUI布局来加载HTML地图 鸿蒙接入高德地图实现POI搜索 在当今数字化时代,地图应用已成为移动设备中不可或缺的一部分。随着鸿蒙系统的日益普及,如何在鸿蒙应用中…

计算机视觉(opencv-python)入门之常见图像处理基本操作(待补充)

图像预处理是计算机视觉任务中的关键步骤,它通过对原始图像进行处理,以提高后续图像分析、特征提取和识别的准确性。 示例图片 目录 常见图像预处理方法 灰度化处理 法一 法二 说明 切片截取部分图像数据 cv2.cvtColor() 颜色空间转换 cv2.spli…

采用DDNS-GO与cloudflare实现双域名同时访问NAS

这个标题其实解释的还不够清楚,本人是小白,但是买了群晖的NAS后自己瞎折腾了一下,遇到了如下的问题: 1、家里是移动宽带,没有公网IP,因此Ipv4无法使用,IPV6可以正常使用。 2、办公室场地采用的…

w803|联盛德|WM IoT SDK2.X测试|pinout|(2):w803开发板简介

概述 W803-Pico是一款基于联盛德W803芯片为主控的开发板,支持IEEE802.11 b/g/n Wi-Fi,以及BT/BLE4.2协议蓝牙。芯片内置高性能32位处理器,主频高达240MHz。内置2MB Flash以及288KB RAM。硬件采用DIP封装,PCB板载天线,…

【UCB CS 61B SP24】Lecture 16 - Data Structures 2: ADTs, BSTs学习笔记

本文首先介绍了抽象数据类型与树的概念,接着重点讲解二叉搜索树的定义与操作方式,并用 Java 实现一个标准的二叉搜索树结构。 1. 抽象数据类型 首先引入一个概念叫做抽象数据类型(Abstract Data Type,ADT)&#xff0…

Java 大视界 -- Java 大数据在智能物流路径规划与车辆调度中的创新应用(102)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…

HarmonyOS Design 介绍

HarmonyOS Design 介绍 文章目录 HarmonyOS Design 介绍一、HarmonyOS Design 是什么?1. 设计系统(Design System)2. UI 框架的支持3. 设计工具和资源4. 开发指南5. 与其他设计系统的对比总结 二、HarmonyOS Design 特点 | 应用场景1. Harmon…

【算法系列】快速排序详解

文章目录 快速排序的多种实现方式1. 基本快速排序(Lomuto 分区方案)1.1 基本原理1.2 步骤1.3 Java 实现示例 2. Hoare 分区方案2.1 基本原理2.2 步骤2.3 Java 实现示例 3. 三数取中法3.1 基本原理3.2 步骤3.3 Java 实现示例 4. 尾递归优化4.1 基本原理4.…

电脑键盘知识

1、键盘四大功能区 1. 功能区 2. 主要信息输入区 3. 编辑区 4. 数字键盘区 笔记本电脑键盘的功能区,使用前需先按Fn键 1.1、功能区 ESC:退出 F1:显示帮助信息 F2:重命名 F4:重复上一步操作 F5:刷新网页 …

Grok 3 vs. DeepSeek vs. ChatGPT:2025终极AI对决

2025 年,AI 领域的竞争愈发激烈,三个重量级选手争夺霸主地位:Grok 3(由 xAI 开发)、DeepSeek(国内 AI 初创公司)和 ChatGPT(OpenAI 产品)。每个模型都有自己独特的优势,无论是在深度思考、速度、编程辅助、创意输出,还是在成本控制方面,都展现出强大的实力。但究竟…

【MySQL篇】数据库基础

目录 1,什么是数据库? 2,主流数据库 3,MySQL介绍 1,MySQL架构 2,SQL分类 3,MySQL存储引擎 1,什么是数据库? 数据库(Database,简称DB&#xf…

基于SpringBoot+mybatisplus+vueJS的Cosplay文化展示与交流社区设计与实现

博主介绍:硕士研究生,专注于信息化技术领域开发与管理,会使用java、标准c/c等开发语言,以及毕业项目实战✌ 从事基于java BS架构、CS架构、c/c 编程工作近16年,拥有近12年的管理工作经验,拥有较丰富的技术架…

组件传递props校验

注意&#xff1a;prop是只读的&#xff01;不可以修改父组件的数据。 可以检验传过来的内容是否类型没问题。 App.vue <template><div><!-- <parentDemo/> --><componentA/></div></template> <script> import ComponentA …

数据结构与算法-图论-最短路-拓展运用

选择最佳路线 分析&#xff1a; 这是一道图论中的最短路径问题&#xff0c;目标是在给定的公交网络中&#xff0c;找到从琪琪家附近的车站出发&#xff0c;到她朋友家附近车站&#xff08;编号为 s &#xff09;的最短时间。以下是对该问题的详细分析&#xff1a; 问题关键信息…

0—QT ui界面一览

2025.2.26&#xff0c;感谢gpt4 1.控件盒子 1. Layouts&#xff08;布局&#xff09; 布局控件用于组织界面上的控件&#xff0c;确保它们的位置和排列方式合理。 Vertical Layout&#xff08;垂直布局&#xff09; &#xff1a;将控件按垂直方向排列。 建议&#xff1a;适…

纷析云:赋能企业财务数字化转型的开源解决方案

在企业数字化转型的浪潮中&#xff0c;财务管理的高效与安全成为关键。纷析云凭借其开源、安全、灵活的财务软件解决方案&#xff0c;为企业提供了一条理想的转型路径。 一、开源的力量&#xff1a;自主、安全、高效 纷析云的核心优势在于其100%开源的财务软件源码。这意味着…