当前位置:

首页 > 编程开发 > Linux命令行怎么用?shell外壳程序原理一看就懂

Linux命令行怎么用?shell外壳程序原理一看就懂

外壳程序(Shell)是命令行解释器,将用户命令翻译成系统调用交由内核执行并返回结果。Linux系统分为超级用户和普通用户,权限级别不同。普通用户需通过sudo指令临时获取超级用户权限,但必须在/etc/sudoers白名单中有相应配置。

1 Xshell 运行原理

1.1 命令行的组成

Linux命令行怎么用?shell外壳程序原理一看就懂

命令行本身由三部分构成:用户名、主机名和工作目录。这就像你每次打开终端时,系统先把你是谁、在哪台机器、当前在哪个目录告诉你。

Linux命令行怎么用?shell外壳程序原理一看就懂

"#" 是个提示符,它左边是操作系统的地盘,右边是用户的地盘。提示符有两种:"$" 代表普通用户,"#" 代表超级用户。看到不同的符号,心里就有数了——权限不同。

1.2 外壳程序

说出来你可能不信,你输入的命令并不是直接交给操作系统处理的。真正干活的是一个叫 “外壳程序” 的东西,它负责读取命令、识别命令,然后才去跟操作系统打交道。简单说,外壳程序打印出命令行,咱们在命令行里输入指令,它再往下传。

Linux命令行怎么用?shell外壳程序原理一看就懂

操作系统外面通常包着一层软件层,这就是外壳程序。它最直观的表现就是给你一个命令行界面,你输入“ls”这样的命令——本质上就是一堆字符串。外壳程序拿到后,翻译给操作系统内核去执行,然后把结果再翻译回来,让你看到文件列表。这个外壳程序也叫命令行解释器,Linux 下统称为 shell。

命令行解释器的作用其实就两个:

  • 把用户的命令翻译给内核(kernel)处理
  • 把内核的处理结果翻译给用户

光说理论可能有点干,咱们举个贴近生活的例子。

假设有个闷骚又害羞的程序员小王(用户),shell 就像媒婆,操作系统内核就是村头让你心动的小花。小王看上了小花,但不好意思直接表白,于是让家人找媒婆去提亲。所有事情小王都只跟媒婆沟通,由媒婆转达给小花。这就是第一个功能:翻译,让用户能操作。

小花多次拒绝小王,小王不死心,还希望媒婆再争取。但这次媒婆在小花家窗外看到小帅和小花一家人其乐融融吃饭,连门都没进就告诉小王没戏了——变相拒绝。这就是第二个功能:如果用户输入的指令太离谱,命令行解释器直接拦住,不让它交给操作系统,从而保护操作系统。

小王还不死心,让媒婆再帮一次。因为小王他爸是村长,媒婆不好驳面子,但知道这事成不了,又不想砸招牌。怎么办呢?找了个实习生去干。实习生做成了,是媒婆慧眼识珠;没做成,也没影响她。这就是第三个功能:外壳程序在系统上以进程方式运行,进行命令行解释时不能挂——一旦挂了就只能重新登录。所以新命令到来时,外壳程序通常创建一个子进程去执行命令,子进程挂了也不影响父进程。

在 Ubuntu 系统下,对应的命令行解释器叫 bash。

Linux命令行怎么用?shell外壳程序原理一看就懂

那 bash 和 shell 是什么关系呢?相当于王婆和媒婆的关系——shell 是所有外壳程序的统称,而 bash 是其中一个具体实现。

说到这儿提一句,Windows 的图形化界面也是一种外壳程序。你每次鼠标点击,都会被窗口管理器转换成系统级别的任务交给操作系统去执行。安卓手机底层也是 Linux,内核是 Linux,但外面包裹的那层安卓界面,就是 Linux 的 shell。

2 Linux中的用户

2.1 两种用户

Linux 的权限是针对用户设置的。那 Linux 里有哪些用户呢?

简单说两类:超级用户(root) 和 普通用户。

  • 超级用户:在 Linux 下啥都能干,不受任何限制。
  • 普通用户:在 Linux 下只能干有限的事,处处受管控。
  • 超级用户的命令提示符是 “#”,普通用户的命令提示符是 “$”。

root 用户的权限极高,普通用户则权限低、受管控。

2.2 创建普通用户

先学学怎么创建一个普通用户。

指令:adduser 和 passwd

创建普通用户语法:adduser [选项] 用户名

Linux命令行怎么用?shell外壳程序原理一看就懂

设置密码语法:passwd 用户名。有些系统创建用户后直接让你输密码,不需要单独执行这条指令。

Linux命令行怎么用?shell外壳程序原理一看就懂

接着输入两次新密码即可。注意:Linux 下输入密码不回显!你敲键盘时屏幕上啥也不显示,这是正常现象,不是系统坏了。

Linux命令行怎么用?shell外壳程序原理一看就懂

删除用户语法:userdel -r 用户名。删除用户这里不演示了,但必须提醒:一定要加上 -r,否则系统会出问题!

怎么查看创建的用户呢?Linux 中创建的用户都放在 /home 目录下,切换到该目录看看就知道了。

Linux命令行怎么用?shell外壳程序原理一看就懂

2.3 用户切换

2.3.1 普通→超级

先讲普通用户怎么切换到超级用户。

直接使用 su 命令即可。回车后系统要求输入密码。

Linux命令行怎么用?shell外壳程序原理一看就懂

这里要输入的是谁的密码?普通用户的还是超级用户的?

肯定输入的是 root 的密码。你是从普通用户切换到 root,如果输入普通用户的密码就能变成 root,那岂不是人人都能当 root 了?所以,想切换成 root,你必须知道管理员的密码。

同样,密码输入不回显。

Linux命令行怎么用?shell外壳程序原理一看就懂

用 su 切换后,当前工作目录不改变。

Linux命令行怎么用?shell外壳程序原理一看就懂

另外还有一种做法:su -。操作方法和 su 一模一样,区别在于:

Linux命令行怎么用?shell外壳程序原理一看就懂

区别就是:su 只是身份切换,不会让 root 重新登录,所以当前工作目录不变;而 su - 会以 root 身份重新登录一次,导致当前路径发生变化(通常切换到 /root)。

2.3.2 超级→普通

超级用户变成普通用户也用 su 命令。

语法:su 用户名 或 su - 用户名

Linux命令行怎么用?shell外壳程序原理一看就懂

超级用户变普通用户不需要输密码。为什么?因为 root 是最高权限,普通用户的密码根本挡不住 root,root 想干嘛就干嘛。

加不加 - 的区别同上,不再赘述。

3 指令的短暂提权

3.1 为什么要提权

假设你现在是普通用户,但需要以超级管理员的身份执行一条权限比较高的命令——比如安装软件。安装软件的本质是将指令写入特定目录(如 /usr/bin),而这个目录通常属于 root,普通用户没有写入权限。那怎么办?这时候就需要临时提升权限。

顺便说一句,Linux 中安装的程序其实只安装了一份,但允许所有人同时使用。比如普通用户能用 ls,root 用户也能用 ls(当然也有少数指令如 adduser 禁止普通用户使用)。

Linux命令行怎么用?shell外壳程序原理一看就懂

权限被拒绝——这就是普通用户试图执行高权限操作时的典型结果。

3.2 sudo 指令

短暂提权用到的指令是 sudo。

  • 语法: sudo 要执行的命令
  • 功能: 对当前指令进行短暂提权

比如,我们以 root 的身份创建一个文件:

Linux命令行怎么用?shell外壳程序原理一看就懂

文件创建成功:

Linux命令行怎么用?shell外壳程序原理一看就就懂

虽然现在还不会看文件的具体属性,但文件属于 root 还是能看出来的。

sudo 第一次使用需要输入密码,之后会有十到十五分钟的免密期。从 sudo whoami 的输出也能看出,用户身份变成了 root。

Linux命令行怎么用?shell外壳程序原理一看就懂

3.3 人人都能提权吗

上面普通用户用 sudo 就能变成 root(输入的是普通用户的密码,不是 root 的),那岂不是人人都是 root 了?那 root 还区分普通用户干什么?

其实正常情况下,普通用户输入 sudo 会报错:

Linux命令行怎么用?shell外壳程序原理一看就懂

什么原因?Linux 系统提供了一个类似 白名单 的机制,只有白名单上的用户才能用 sudo 提权。白名单就是无条件信任,和黑名单无条件拒绝相对应。

默认情况下,Linux 不允许普通用户执行 sudo。要执行,必须将当前用户添加到白名单。白名单路径:/etc/sudoers。

Linux命令行怎么用?shell外壳程序原理一看就懂

可以看到这个文件属于 root,只有超级用户才有资格修改。

想让普通用户执行 sudo,必须用超级管理员的身份修改 sudoers 配置文件。修改方式如下:

Linux命令行怎么用?shell外壳程序原理一看就懂

注:推荐用 vim 编辑器打开。

可能有小伙伴会问:那我把自己的用户加到 sudoers 文件里,不就能随便提权了吗?

道理是这么个道理,但在实际公司环境中,假设一个小组 10 人共用一台机器,只有一个人是管理员。你想把自己的用户加入 sudoers,必须线下真人去找管理员同意才行。现在我们能自己修改 sudoers,是因为我们既是用户又是管理员。只要线下去找管理员,说明人家是真正认可你的,所以不用担心人人都是 root 的问题——即便白名单里的 root,那也是值得信任的。

总结

从 shell 外壳程序的工作原理,到 Linux 用户权限的划分,再到 sudo 提权的机制,整个过程环环相扣。理解这些底层逻辑,才能真正用好 Linux 的命令行。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
作者最新文章
编程开发
相关文章 更多
ServBay安装配置详细教程与操作指南
ServBay安装配置详细教程与操作指南

新手入门 ServBay 本地开发环境,详解安装包下载、Dashboard 状态监控、Packages 组件安装、Services 服务控制及 Websites 项目配置。掌握 .servbay.config 版本管理与日志排查技巧,快速搭建稳定的 PHP、Node.js 等多语言开发环境。

codekit环境配置指南从安装到环境搭建完整教程
codekit环境配置指南从安装到环境搭建完整教程

详解 CodeKit 在 macOS 下的安装步骤、项目导入方法、Sass与JavaScript编译设置及浏览器自动刷新功能,助您快速搭建高效的前端开发环境。

codex安装windows 命令行完整操作教程
codex安装windows 命令行完整操作教程

详解Windows环境下安装OpenAI Codex CLI的步骤,包括WSL环境检查、Node.js/npm配置、npm全局安装命令及首次启动验证,适合开发者快速上手。

NativeRest环境配置要求与完整操作教程
NativeRest环境配置要求与完整操作教程

学习如何配置 NativeRest REST API 客户端。涵盖 Windows/macOS/Linux 安装后的工作区创建、环境变量管理、请求编辑及响应查看步骤,帮助开发者快速完成基础环境搭建与连通性测试。

CSS设置透明度的注意事项有哪些?opacity属性详解
CSS设置透明度的注意事项有哪些?opacity属性详解

深入解析CSS中设置透明度的核心属性opacity,剖析子元素继承、事件穿透、层叠上下文等关键注意事项,并提供与rgba、hsla的实用选型对比。

flutter页面传值到后台的方法及示例代码
flutter页面传值到后台的方法及示例代码

flutter页面传值到后台的完整实现方法及示例代码,帮助读者快速掌握相关技术要点。

Java 8至21新特性代码写法对比:Lambda、Record与Switch
Java 8至21新特性代码写法对比:Lambda、Record与Switch

本文通过具体的旧版与新版代码对比,详细剖析Java 8引入的Lambda表达式、Java 14/16引入的Record类,以及Java 12至21逐步演进完善的Switch表达式与模式匹配,展示代码简化路径与避坑要点。

AI智能体开发培训课程学什么及实战内容介绍
AI智能体开发培训课程学什么及实战内容介绍

系统梳理AI智能体开发培训的核心知识模块、技术栈选型与典型实战项目,解析低代码平台与纯代码框架的差异,提供从零构建可落地智能体的完整学习与实施路径。

Java子类未实现抽象方法编译错误修复指南
Java子类未实现抽象方法编译错误修复指南

针对Java开发中常见的“子类未实现抽象方法”编译错误,深入分析报错原因,提供重写实现、声明抽象子类两种标准修复路径,并总结参数签名、访问修饰符等典型避坑要点。

解决PHP递归报错:max_nesting_level限制与内存溢出处理
解决PHP递归报错:max_nesting_level限制与内存溢出处理

遇到PHP递归报错时,不要盲目调大max_nesting_level。本文教你区分Xdebug限制、内存耗尽和正则递归错误,提供代码级的终止条件优化与迭代替代方案,彻底解决栈溢出问题。

查看更多
精品专题 更多
装机必备
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows
Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

PDF教程
PDF教程

正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

Mac软件 更多
Shapr3D macOS版
Shapr3D macOS版
Mac

Shapr3D是一款面向工业设计、机械工程、建筑概念和三维打印工作流的CAD软件。Mac版采用Parasolid建模内核,支持草图约束、实体建模、工程图、可视化渲染及常见CAD格式交换,并可通过账户在多台设备之间同步项目。

REAPER macOS版
REAPER macOS版
Mac

REAPER是Cockos开发的数字音频工作站,提供多轨音频与MIDI录制、剪辑、处理、混音和母带制作工具。Mac版兼容Intel与Apple芯片,支持AU、VST、VST3、CLAP等插件格式,并提供高度可定制的工作流程。

Ableton Live macOS版
Ableton Live macOS版
Mac

Ableton Live 是面向音乐制作人与现场表演者的数字音频工作站,提供编曲视图、独具特色的现场视图、音频录制、MIDI创作、实时变速、乐器及效果器。Mac版原生支持Apple芯片,并可连接音频接口、MIDI控制器和第三方插件。

WINDOWS 更多
3dmax(3ds max)
3dmax(3ds max)
Windows

Autodesk 3ds Max 是一款专业的三维建模、动画与渲染软件,广泛应用于建筑可视化、游戏开发、影视动画、广告设计和产品展示等领域。

photoshop
photoshop
Windows、macOS 、 iPad

Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

Blender
Blender
Windows、macOS 和 Linux

Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。