【Linux系统】—— 初识 shell 与 Linux 中的用户

【Linux系统】—— 初识shell 与 Linux 中的用户

  • 1 Xshell 运行原理
    • 1.1 命令行的组成
    • 1.2 外壳程序
  • 2 Linux中的用户
    • 2.1 两种用户
    • 2.2 创建普通用户
    • 2.3 用户切换
      • 2.3.1 普通->超级
      • 2.3.2 超级->普通
  • 3 指令的短暂提权
    • 3.1 为什么要提权
    • 3.2 sudo 指令
    • 3.3 人人都能提权吗

1 Xshell 运行原理

1.1 命令行的组成

在这里插入图片描述

  
  命令行又由用户名主机名工作目录组成

在这里插入图片描述

  "#" 是提示符,表明左边是操作系统的,右边是用户的。提示符分为两种:"$"(普通用户)"#"(超级用户)

  

1.2 外壳程序

  实际上我们输出的命令行并不是操作系统给我们提供的功能,而是一个叫 “外壳程序” 的东西来给我们提供 读取命令、识别命令 的功能。"外壳程序" 打印出命令行,由该命令行进行我们对应的操作。

在这里插入图片描述

  
  操作系统外壳往往会包裹一层软件层,我们将其称为外壳程序,外壳程序最直观的表现是给我们用户输出一个叫做命令行的东西,然后我们用户就可以输入命令。我们输入的命令如:「ls」 本质上是一串字符串,命令最终会交给外壳程序,外壳程序再将命令交给操作系统去执行,操作系统执行完后再通过外壳程序把对应的结果返回给用户,最后用户就看到「ls」 的执行结果。

  我们将这个外壳程序称为命令行解释器,Linux 中命令行解释器统称为 s h e l l shell shell

命令行解释器最直观的作用有两个:

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

  
  我们讲个例子方便大家理解命令行解释器:
  假如现在有个闷骚且害羞的程序员小王(用户),那 shell 就像媒婆,操作系统内核就是你们村头漂亮的且有让你心动的小花。小王看上了小花,但是有不好意思直接表白,那就让家人找媒婆帮他提亲,所有的事情小王都直接跟媒婆沟通,由媒婆转达小王的意思给小花。这相当于命令行解释器的第一个功能:翻译,以便用户进行操作
  小花多次拒绝了小王,小王你不死心还希望媒婆再争取一下。但这次媒婆在小花家窗外看见小帅和小花及其家人像一家人一样愉快的吃饭,这次媒婆连门都没进就和小王说没戏了,变相拒绝了小王的请求。这相当于命令行解释器的第二个功能:如果用户输入的指令太离谱,命令行解释器就直接拦住命令,不交给操作系统,以保护操作系统
  但小王还不死心,让媒婆再帮忙。因为小王他爸是村长,媒婆看在村长的面子上不好不帮。但是媒婆知道这事成不了,不想因此砸了自己的金字招牌,怎么办呢?于是媒婆招了一个实习生,让实习生去做。实习生做成了,是我慧眼识珠;没做成那也没影响。这相当于命令行解释器的第三个功能:外壳程序在系统上是以一个进程的方式去实现,外壳程序在进行命令行解释时不能挂,一旦他挂了就只能重新登录了。所以有新命令到来的时候,外壳程序往往都会创建一个子进程,让子进程去执行命令,如果子进程挂了,也不影响。

  在 u b u n t o ubunto ubunto 系统下,对应的命令行解释器叫: b a t h bath bath

在这里插入图片描述

  
  那 bathshell(外壳) 是什么关系呢?
  相当于王婆与媒婆的关系
  也就是说 s h e l l shell shell 是所有外壳程序的统称,而 b a t h bath bath 是某个具体的外壳程序

  其实 Windows 操作系统对应的图形化界面也是一种外壳程序,我们鼠标的每一次点击都会由窗口操作转换为系统级别的任务,交给操作系统去执行。我们的手机系统安卓的底层也是 Linux,即操作系统内核是 Linux,但是他的外部程序是安卓,安卓是包裹在 Linux 外的一层 shell。
  
  

2 Linux中的用户

2.1 两种用户

  在 Linux 中是否有权限是对用户而言设置的,Linux 中用户有哪些呢?

Linux下有两类用户:超级用户(root)普通用户

  • 超级用户:可以在 Linux 下作任何事情,不受限制
  • 普通用户:在 Linux 下作有限的事情
  • 超级用户的命令提示符是 “#”,普通用户的命令提示符是 “$”

   r o o t root root 用户的权限非常高;而普通用户的权限低、受管控
  

2.2 创建普通用户

  我们首先先来学习创建一个普通用户

指令:「 a d d u s e r adduser adduser」与「 p a s s w d passwd passwd

  

  1. 创建普通用户: 语法:「adduser」 [选项] 用户名
    在这里插入图片描述
      
  1. 设置密码 语法:「passwd」 用户名 也有些系统创建用户后直接让你输入密码,不需要该行指令 在这里插入图片描述
      
      接着输入两次新密码即可, 注意:Linux下输入密码不回显
    在这里插入图片描述
      
  1. 删除用户 语法:「userdel」 -r 用户名
      
    删除用户这里就不演示了,需要注意的是一定要加上 -r ,不然系统会出问题!

  
  如何查看我们创建的用户呢?Linux 中创建的用户都是放在 home(家) 目录中的,我们只需要将目录切换到 home(家) 目录查看即可。

在这里插入图片描述

  

2.3 用户切换

2.3.1 普通->超级

  我们先来讲普通用户如何切换至超级用户
  直接使用 「su」 命令 即可

  回车之后,系统要求我们输入密码

在这里插入图片描述

  此时一个输入普通用户的密码还是超级用户的密码呢?

  肯定输入的是 root 的密码。现在是从普通用户转换成 r o o t root root 用户,要是输入普通用户的密码,不人人都能成为 r o o t root root 用户了。这也就是说想要切换成 r o o t root root 用户,你必须是管理员。

  同样,这里的密码输入是不回显

  回车之后就切换至 r o o t root root 用户啦:

在这里插入图片描述

  
  同时,用「su」 命令指令从普通用户切换至超级用户,所处的路径不改变

在这里插入图片描述

  
  此外 普通用户变超级用户还有一种做法

指令:「su」 -

  「su」-「su」 的操作方法一模一样,这里就不再演示了,我们来看看他们有什么区别

在这里插入图片描述

  区别就是:「su」不会让 root 重新登录,只是身份的切换,最直观的表现就是他不影响我们当前所处的工作目录;而「su」 - 让我们以 root 身份重新登录一次,它会导致我们用户当前用户所处的路径发生变化

  

2.3.2 超级->普通

  超级用户变成普通用户也是用「su」命令

语法:「su」 用户名 / 「su」 - 用户名

  

在这里插入图片描述

  超级用户变普通用户是不需要输密码的。为什么呢? r o o t root root 是最高权限,用户的密码挡不住 r o o t root root r o o t root root 想干嘛就干嘛。
  这里加不加 「-」 的区别与上述是一样的,就不再赘述了

  

3 指令的短暂提权

3.1 为什么要提权

  假设我们现在只是普通用户,但现在我需要以超级管理员的身份去执行一条权限级别比较高的命令:比如安装软件,安装软件其本质就是将自己对应的指令写入到特定的目录下(/user/bin目录)而该目录往往是属于 r o o t root root 的,普通用户没有权限拷贝。那怎么办呢?这时就需要进行权利的短暂提升
  这里顺便说一下,Linux 中安装的所有的程序其实只安装了一份,这不过安装的这一份允许大家同时使用。比如普通用户能用「ls」,root 用户也能用「ls」(也有少部分指令(adduser)禁止普通用户使用)

在这里插入图片描述

权限被拒绝

  

3.2 sudo 指令

  短暂提权用到的指令是:「sudo」

  • 语法:「sudo」 要执行的命令
  • 功能:进行指令的短暂提权

  
  如:我们以 r o o t root root 的身份创建一个文件

在这里插入图片描述

  
  文件就创建好了

在这里插入图片描述

  此时虽然我们还不会看文件的具体属性,但是这个文件属于 r o o t root root 还是能够看出来的

  「sudo」第一次输入需要密码,之后会有十到十五分钟的免密码使用
  我们可以看到「sudo whoami」识别出来的用户身份是 root

在这里插入图片描述

  

3.3 人人都能提权吗

  像上面,普通用户只要用 「sudo」就能变成 r o o t root root 用户(输的是普通用户的密码而不是 r o o t root root 用户的密码),那这样岂不是人人都是 r o o t root root 用户了?那 r o o t root root 用户不形同虚设吗,还区分普通用户和 r o o t root root 用户干嘛

  其实我们正常普通用户输入「sudo」 指令 会报错的

在这里插入图片描述

  什么原因呢?
  Linux 系统会提供类似白名单的东西,只有在白名单上的用户才能用 「sudo」 进行提权。
  白名单就是无条件相信,与黑名单无条件拒绝相对应

  在默认情况像 Linux 系统是不允许普通用户去执行「sudo」的,要执行必须将当前用户添加到一个类似于白名单的东西。白名单路径如下:/etc/sudoers

在这里插入图片描述

  可以看到这个白名单是属于 root 的,只有超级用户才有资格修改

  如果想要普通用户执行「sudo」,必须用超级管理员的身份修改 sudoers 配置文件

修改方式如下:

在这里插入图片描述

:推荐用 v i m vim vim 编辑器打开

  那可能又有小伙伴问:那我只要把我自己加到 sudoers 文件上,不还是能随便提权吗。
  其实在公司中,假设一个小组 10 人共用一台机器,只有一个是人是管理员。如果你想将自己的用户加入 s u d o e r s sudoers sudoers 中,必须线下真人去争得管理员的同意才行。现在我们能自己修改 s u d o e r s sudoers sudoers,那是因为我们现在既是用户又是管理员。只要要线下去找管理员,说明人家是真正认可你的,所以不用担心人人都是 r o o t root root 的问题,即便是白名单中的 r o o t root root ,那也是值得信任的。

  
  
  
  


  好啦,本期关于 s h e l l shell shell 用户的知识就介绍到这里啦,希望本期博客能对你有所帮助。同时,如果有错误的地方请多多指正,让我们在 L i n u x Linux Linux 的学习路上一起进步!

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

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

相关文章

.NET平台使用C#设置Excel单元格数值格式

设置Excel单元格的数字格式是创建、修改和格式化Excel文档的关键步骤之一,它不仅确保了数据的正确表示,还能够增强数据的可读性和专业性。正确的数字格式可以帮助用户更直观地理解数值的意义,减少误解,并且对于自动化报告生成、财…

Android显示系统(10)- SurfaceFlinger内部结构

一、前言: 之前讲述了native层如何使用SurfaceFlinger,我们只是看到了简单的API调用,从本文开始,我们逐步进行SurfaceFlinger内部结构的分析。话不多说,莱茨狗~ 二、类图: 2.1、总体架构: 先看下SurfaceFlinger的关键成员和我们BootAnimation侧关键成员如何对应起来…

深度学习中的多通道卷积与偏置过程详解

目录 ​编辑 多通道卷积的深入理解 🔍 卷积核的多维特性 🌌 卷积操作的细节 🔧 多通道卷积的优势 🌟 偏置过程的深入理解 🎯 偏置的两种实现方式 🛠️ 偏置的作用与重要性 🌈 多通道卷…

易语言鼠标轨迹算法(游戏防检测算法)

一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序,它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言,原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势: 模拟…

【蓝桥杯选拔赛真题93】Scratch青蛙过河 第十五届蓝桥杯scratch图形化编程 少儿编程创意编程选拔赛真题解析

目录 Scratch青蛙过河 一、题目要求 编程实现 二、案例分析 1、角色分析 2、背景分析 3、前期准备 三、解题思路 1、思路分析 2、详细过程 四、程序编写 五、考点分析 六、推荐资料 1、入门基础 2、蓝桥杯比赛 3、考级资料 4、视频课程 5、python资料 Scratc…

手机实时提取SIM卡打电话的信令声音--社会价值(一、方案解决了什么问题)

手机实时提取SIM卡打电话的信令声音 --社会价值(一、方案解决了什么问题) 一、前言 这段时间,我们在技术范围之外陷入了一个自证或者说下定义的怪圈,即要怎么样去介绍或者描述:我们是一个什么样的产品。它在当前这个世界上,处于…

【LeetCode】每日一题 2024_12_13 K 次乘运算后的最终数组 I(暴力)

前言 每天和你一起刷 LeetCode 每日一题~ 小聊两句 1、今天是 12.13 南京大屠杀国家公祭日。铭记历史,勿忘国耻。 2、今天早上去看了 TGA 年度游戏颁奖,小机器人拿下了年度最佳游戏,所有人都震惊了,大伙纷纷问到,谁…

算法刷题Day16: BM41 输出二叉树的右视图

题目链接 描述 思路: 递归构造二叉树在Day15有讲到。复习一下,就是使用递归构建左右子树。将中序和前序一分为二。 接下来是找出每一层的最右边的节点,可以利用队列层次遍历。 利用队列长度记录当前层有多少个节点,每次从队列里…

【修改源码】解决el-select值不匹配导致回显id、只能搜索label无法搜索value的问题

问题一:el-select值不匹配导致回显id(此时只针对单选进行处理) el-select数据的回显是根据id去匹配值的,最近项目出现了回显id的情况,原因是没有匹配的option 问题场景图如下: 解决方案 1、方法一&#xf…

Docker的初识

目录 1. 容器技术发展史1.1 Jail 时代1.2 云时代1.3 云原生时代1.3.1 Google & Docker 竞争1.3.2 k8s 成为云原生事实标准 2. 虚拟化和容器化的概念2.1 什么是虚拟化、容器化2.2 为什么要虚拟化、容器化?2.3 虚拟化实现方式2.3.1 应用程序执行环境分层2.3.2 虚拟…

【开源大屏】玩转开源积木BI,从0到1设计一个大屏

积木 BI 重磅推出免费大屏设计器!功能超强大,操作超流畅,体验超酷炫。快来体验一下吧。 让我们一起来看一下如何从0到1设计一个大屏。 一、积木BI大屏介绍 积木BI可视化数据大屏 是一站式数据可视化展示平台,旨在帮助用户快速通…

HarmonyOS 线性容器ArrayList 常用的几个方法

ArrayList是一种线性数据结构,底层基于数组实现。ArrayList会根据实际需要动态调整容量,每次扩容增加50%。 ArrayList和Vector相似,都是基于数组实现。它们都可以动态调整容量,但Vector每次扩容增加1倍。 ArrayList和LinkedList相…

leetcode230.二叉搜索树中第k小的元素

标签:二叉搜索树;中序遍历 给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 小的元素(从 1 开始计数)。 示例 1: 输入:root [3,1,4,null,2], k 1…

苹果开发者入门:修复 SwiftUI 中“跑偏的”动画(下)

概述 大家知道 SwiftUI 不仅仅是一款 App 界面布局的超级利器,它同样提供了花样百出的动画和转场机制将 UI 世界点缀的“楚楚动人”。不过,对于苹果开发新入门的秃头小码农来说,使用动画貌似没有想象的那么易如反掌。 如上图所示&#xff0c…

【万字详解】三维重建(二)——NeRF、NeuS、MeshUDF、NeuralUDF、3DGS、GShell

文章目录 一、NeRF:Representing Scenes as Neural Radiance Fields for View Synthesis(推荐读)1.1 式1 神经网络的输入和输出1.2 式2 体素渲染算法1.3 式3 损失函数1.4 位置编码1.5 基本原理二、经典的重建流程2.1 传统的三维重建pipeline2.2 神经网络回归2.3 可微渲染最优…

优化Go语言中的网络连接:设置代理超时参数

网络连接优化的重要性 在分布式系统和微服务架构中,网络请求的效率直接影响到整个系统的响应速度。合理的超时设置可以防止系统在等待网络响应时陷入无限期的阻塞,从而提高系统的吞吐量和用户体验。特别是在使用代理服务器时,由于增加了网络…

【人工智能解读】神经网络(CNN)的特点及其应用场景器学习(Machine Learning, ML)的基本概念

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默, 忍不住分享一下给大家。点击跳转到网站 学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……) 2、学会Oracle数据库入门到入土用法(创作中……) 3、手把…

颜色的基本处理

数码相机能够获取彩色图像,但相机的色彩处理是一个非常复杂的过程,是非常重要的。 此过程生产制造商在细节方面都是不公布的,但是基本的概念是相同的。当相机捕捉一个真实场景时,是怎么还原成人眼所看到的图像呢? 1.R…

OpenCV 功能函数介绍 (二)

一,梯度处理的sobel算子函数 功能: 用于计算图像梯度(gradient)的函数 参数: cv2.Sobel(src, ddepth, dx, dy, ksize3, scale1, delta0, borderTypeNone) cv2.Sobel(输入图像 , 应该是灰…

《宇宙机器人》提示错误弹窗“找不到d3dx9_43.dll”是什么原因?“d3dx9_43.dll缺失”怎么解决?

电脑游戏运行时常见问题解析:《宇宙机器人》提示“找不到d3dx9_43.dll”的解决之道 TGA2024落幕,年度最佳游戏——《宇宙机器人》,作为一名在软件开发领域深耕多年的从业者,我深知电脑游戏在运行过程中可能会遇到的各种挑战&…