【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
那 bath 与 shell(外壳) 是什么关系呢?
相当于王婆与媒婆的关系
也就是说 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」
- 创建普通用户: 语法:「adduser」 [选项] 用户名
- 设置密码 语法:「passwd」 用户名 也有些系统创建用户后直接让你输入密码,不需要该行指令
接着输入两次新密码即可, 注意:Linux下输入密码不回显!
- 删除用户 语法:「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 的学习路上一起进步!
相关文章:
【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 Xshe…...
二维码数据集,使用yolov,voc,coco标注,3044张各种二维码原始图片(未图像增强)
二维码数据集,使用yolov,voc,coco标注,3044张各种二维码原始图片(未图像增强) 数据集分割 训练组70% 2132图片 有效集20% 607图片 测试集10% 305图…...
Vue指令
创建项目: vue init webpack 项目名称 element-ui npm i element-ui -saxios npm i axios1.1.3 -S vuex npm i vuex3.6.2 -S vuex持久化 npm i -S vuex-persistedstate4.1.0代理模版 proxyTable: {/api: {target: http://localhost:8081/,changeOrigin: true,pathRe…...
数据保护策略:如何保障重要信息的安全
一、什么是数据安全? 数据安全是保护数字信息免遭盗窃、未经授权的访问和恶意修改的过程。这是一个持续的过程,负责监督信息的收集、存储和传输。 机密性:保护数据免遭未授权方访问。 完整性:保护数据免遭未经授权的修改、损坏…...
Chrome webdriver下载-避坑
WebDriver以原生的方式驱动浏览器,不需要调整环境变量。 一、window版 1.chrome和chromedriver下载地址: Chrome for Testing availability 我下载的是如下两个安装包,解压即可。 2.导包 pip install selenium然后用python代码引用即可…...
递归求最大公约数
#include <stdio.h>// 函数声明 int gcd(int a, int b);int main() {int x, y;printf("请输入两个正整数:");scanf("%d %d", &x, &y);printf("最大公约数是:%d\n", gcd(x, y));return 0; }// 递归求最大公约…...
关于在浏览器里面获取手机方向的事件
先说问题:浏览器有一个自带原生的获取手机方向的事件方法 deviceorientation: https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent/DeviceOrientationEvent 这个事件里面有个实例absolute 看名字知道意思吧,对就是绝对坐标的意…...
STM32 出租车计价器系统设计(一) 江科大源码改写
STM32 出租车计价器系统设计 功能目标 驱动步进电机模拟车轮旋转,并实现调速功能。 设置车轮周长和单价,检测车轮转速和运转时间。 计算并显示行驶里程和价格。 硬件材料 28BYJ48 五线四相步进电机和 ULN2003 驱动板模块 测速传感器模块 嵌入式小系统…...
eclipse rcp-创建rcp-创建target
1.创建一个target文件,将其命名为mine-rcp.target 2. 编辑target 2.1 点击add按钮,选中software site 2.2 选择一个software site 打开浏览器。 选择一个合适的eclipse作为基础版本。进入https://download.eclipse.org/eclipse/downloads/https://dow…...
微信小程序--创建一个日历组件
微信小程序–创建一个日历组件 可以创建一个日历组件,来展示当前月份的日期,并支持切换月份的功能。 一、目录结构 /pages/calendarcalendar.wxmlcalendar.scsscalendar.jscalendar.json二、calendar.wxml <view class"calendar"><…...
质量问题分析与改进常见方法
大同小异,本质都是定位、解决、推广三大步双归零 技术归零五条要求:“定位准确、机理清楚、问题复现、措施有效、举一反三”。 管理归零五条要求:“过程清楚、责任明确、措施落实、严肃处理、完善规章”。 航天FRACASFRACAS ,是“…...
质数的和与积
质数的和与积 C语言代码C 代码Java代码Python代码 💐The Begin💐点点关注,收藏不迷路💐 两个质数的和是S,它们的积最大是多少? 输入 一个不大于10000的正整数S,为两个质数的和。 输出 一个整…...
数据结构 (35)分配类排序
前言 分配类排序是数据结构中的一种重要排序方法,其核心思想是利用分配和收集过程对元素进行排序,而无需比较元素之间的关键字。这种方法突破了基于关键字比较的排序算法的时间下界,可以达到线性时间复杂度O(n)。 一、分配类排序的基本概念 分…...
Cesium隐藏默认控件
终于有时间开始整理下知识点了。 开搞 本地环境 vue3vitecesiumvite和cesium都是最新版本这里有个问题需要注意,就是如何为Cesium配置Vite,随便检索一下,大部分都时通过插件【vite-plugin-cesium】作为解决方案,我本地创建新的示…...
Spark SQL 执行计划解析源码分析
本文用于记录Spark SQL执行计划解析的源码分析。文中仅对关键要点进行提及,无法面面具到,仅描述大体的框架。 Spark的Client有很多种,spark-sql,pyspark,spark- submit,R等各种提交方式,这里以…...
rabbitMq举例
新来个技术总监,把 RabbitMQ 讲的那叫一个透彻,佩服! 生产者 代码举例 public String sendMsg(final String exchangeName,final String routingKey,final String msg) {} /*** 发送消息* param exchangeName exchangeName* param routin…...
奇怪的知识又增加了:ESP32下的Lisp编程=>ULisp--Lisp for microcontrollers
ESP32下有MicroPython,那么我就在想,有Lisp语言支持吗?答案是果然有!有ULisp,专门为MCU设计的Lisp! 网址:uLisp - Lisp for microcontrollers 介绍:用于微控制器的 Lisp 适用于 Ar…...
渗透测试之信息收集
免责声明:使用本教程或工具,用户必须遵守所有适用的法律和法规,并且用户应自行承担所有风险和责任。 文章目录 1. 基础信息收集2. 网络资产发现3. 网站和应用信息4. 技术栈识别5. 安全漏洞和配置6. 移动应用分析7.Google语法常见Google使用场…...
基本分页存储管理
一、实验目的 目的:熟悉并掌握基本分页存储管理的思想及其实现方法,熟悉并掌握基本分页存储管理的分配和回收方式。 任务:模拟实现基本分页存储管理方式下内存空间的分配和回收。 二、实验内容 1、实验内容 内存空间的初始化——可以由用户输…...
SQLServer到MySQL的数据高效迁移方案分享
SQL Server数据集成到MySQL的技术案例分享 在企业级数据管理中,跨平台的数据集成是一个常见且关键的任务。本次我们将探讨如何通过轻易云数据集成平台,将巨益OMS系统中的退款单明细表从SQL Server高效、安全地迁移到MySQL数据库中。具体方案名称为“7--…...
Arduino智能小车避坑指南:从TB6612驱动到HC-05蓝牙,新手最容易搞错的5个硬件连接点
Arduino智能小车避坑实战:5个硬件连接致命细节与示波器级调试方案 刚拿到Arduino套件的新手们,总会在论坛里发出同样的灵魂拷问:"为什么我的小车要么瘫着不动,要么像醉汉一样乱撞?"这个问题背后,…...
融合多尺度特征与注意力机制的YOLOv5红外小目标检测优化方案
1. 红外小目标检测的技术挑战 红外遥感图像中的小目标检测一直是计算机视觉领域的难点问题。与可见光图像相比,红外图像具有低对比度、高噪声、目标尺寸小等特点,这使得传统检测算法难以取得理想效果。在实际应用中,军事侦察中的无人机识别、…...
知识科普短片,AI如何“看懂”并剪出逻辑?揭秘分段剪辑的内在逻辑链
傍晚,你面对电脑屏幕,刚刚录完一段长达2小时的行业知识分享。你的目标是将其剪成一部15分钟、节奏明快的知识科普短片。手动操作意味着你要反复聆听,识别核心论点,标记关键转折,再小心翼翼地将碎片串联——这个过程动辄…...
Java Web新手必看:EDUCODER头哥MVC用户登录实战(含JDBC连接避坑指南)
Java Web新手实战:EDUCODER平台MVC用户登录全流程解析 第一次接触Java Web开发时,最让人兴奋的莫过于亲手实现一个完整的用户登录系统。这不仅是对MVC架构的直观理解,更是打通前后端数据流的关键里程碑。在EDUCODER这样的实训平台上ÿ…...
RoundedTB安装与部署:从Microsoft Store到手动编译的完整指南
RoundedTB安装与部署:从Microsoft Store到手动编译的完整指南 【免费下载链接】RoundedTB Add margins, rounded corners and segments to your taskbars! 项目地址: https://gitcode.com/gh_mirrors/ro/RoundedTB RoundedTB是一款功能强大的Windows任务栏美…...
【限时开源】某金融级TCC事务中间件核心模块源码解析(含TCC-Coordinator状态机设计文档V2.3)
第一章:【限时开源】某金融级TCC事务中间件核心模块源码解析(含TCC-Coordinator状态机设计文档V2.3)本章聚焦于已开源的金融级TCC事务中间件核心协调器(TCC-Coordinator)的实现细节,重点剖析其高可用状态机…...
Vivado 2019.2实战:手把手教你封装自己的UART串口IP核(含参数化配置避坑指南)
Vivado 2019.2实战:从零构建可配置UART IP核的完整指南 在FPGA开发中,UART通信是最基础也最常用的功能之一。每次新项目都重新编写UART驱动不仅效率低下,还容易引入错误。本文将带你完整经历将一个经过验证的UART发送模块封装成可配置IP核的全…...
麦克风效率革命:MicMute让静音操作提速90%的终极体验升级
麦克风效率革命:MicMute让静音操作提速90%的终极体验升级 【免费下载链接】MicMute Mute default mic clicking tray icon or shortcut 项目地址: https://gitcode.com/gh_mirrors/mi/MicMute 你是否经历过线上会议中手忙脚乱寻找静音按钮的窘迫?…...
**实时内核中的任务调度机制:从理论到C++实现的深度探索**在嵌入式系统和高实时性应用中,**实时内核(Real-
实时内核中的任务调度机制:从理论到C实现的深度探索 在嵌入式系统和高实时性应用中,实时内核(Real-Time Kernel) 是整个系统稳定运行的核心。它不仅负责资源分配,还承担着任务调度、中断响应、同步机制等关键职责。本文…...
别只盯着Web日志!一次Windows服务器被黑,我是这样用系统日志和FTP记录挖出攻击链的
从Windows系统日志到FTP记录:一次完整的服务器入侵溯源实战 深夜的应急响应中心,刺眼的告警提示打破了宁静。大多数安全工程师的第一反应是打开Web访问日志开始排查——这几乎成了行业条件反射。但真实攻击往往发生在你最意想不到的角落。上周处理的一起…...



















