发布于2026-07-21 阅读(0)
扫一扫,手机访问

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

"#" 是个提示符,它左边是操作系统的地盘,右边是用户的地盘。提示符有两种:"$" 代表普通用户,"#" 代表超级用户。看到不同的符号,心里就有数了——权限不同。
说出来你可能不信,你输入的命令并不是直接交给操作系统处理的。真正干活的是一个叫 “外壳程序” 的东西,它负责读取命令、识别命令,然后才去跟操作系统打交道。简单说,外壳程序打印出命令行,咱们在命令行里输入指令,它再往下传。

操作系统外面通常包着一层软件层,这就是外壳程序。它最直观的表现就是给你一个命令行界面,你输入“ls”这样的命令——本质上就是一堆字符串。外壳程序拿到后,翻译给操作系统内核去执行,然后把结果再翻译回来,让你看到文件列表。这个外壳程序也叫命令行解释器,Linux 下统称为 shell。
命令行解释器的作用其实就两个:
光说理论可能有点干,咱们举个贴近生活的例子。
假设有个闷骚又害羞的程序员小王(用户),shell 就像媒婆,操作系统内核就是村头让你心动的小花。小王看上了小花,但不好意思直接表白,于是让家人找媒婆去提亲。所有事情小王都只跟媒婆沟通,由媒婆转达给小花。这就是第一个功能:翻译,让用户能操作。
小花多次拒绝小王,小王不死心,还希望媒婆再争取。但这次媒婆在小花家窗外看到小帅和小花一家人其乐融融吃饭,连门都没进就告诉小王没戏了——变相拒绝。这就是第二个功能:如果用户输入的指令太离谱,命令行解释器直接拦住,不让它交给操作系统,从而保护操作系统。
小王还不死心,让媒婆再帮一次。因为小王他爸是村长,媒婆不好驳面子,但知道这事成不了,又不想砸招牌。怎么办呢?找了个实习生去干。实习生做成了,是媒婆慧眼识珠;没做成,也没影响她。这就是第三个功能:外壳程序在系统上以进程方式运行,进行命令行解释时不能挂——一旦挂了就只能重新登录。所以新命令到来时,外壳程序通常创建一个子进程去执行命令,子进程挂了也不影响父进程。
在 Ubuntu 系统下,对应的命令行解释器叫 bash。

那 bash 和 shell 是什么关系呢?相当于王婆和媒婆的关系——shell 是所有外壳程序的统称,而 bash 是其中一个具体实现。
说到这儿提一句,Windows 的图形化界面也是一种外壳程序。你每次鼠标点击,都会被窗口管理器转换成系统级别的任务交给操作系统去执行。安卓手机底层也是 Linux,内核是 Linux,但外面包裹的那层安卓界面,就是 Linux 的 shell。
Linux 的权限是针对用户设置的。那 Linux 里有哪些用户呢?
简单说两类:超级用户(root) 和 普通用户。
root 用户的权限极高,普通用户则权限低、受管控。
先学学怎么创建一个普通用户。
指令:adduser 和 passwd
创建普通用户语法:adduser [选项] 用户名

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

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

删除用户语法:userdel -r 用户名。删除用户这里不演示了,但必须提醒:一定要加上 -r,否则系统会出问题!
怎么查看创建的用户呢?Linux 中创建的用户都放在 /home 目录下,切换到该目录看看就知道了。

先讲普通用户怎么切换到超级用户。
直接使用 su 命令即可。回车后系统要求输入密码。

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

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

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

区别就是:su 只是身份切换,不会让 root 重新登录,所以当前工作目录不变;而 su - 会以 root 身份重新登录一次,导致当前路径发生变化(通常切换到 /root)。
超级用户变成普通用户也用 su 命令。
语法:su 用户名 或 su - 用户名

超级用户变普通用户不需要输密码。为什么?因为 root 是最高权限,普通用户的密码根本挡不住 root,root 想干嘛就干嘛。
加不加 - 的区别同上,不再赘述。
假设你现在是普通用户,但需要以超级管理员的身份执行一条权限比较高的命令——比如安装软件。安装软件的本质是将指令写入特定目录(如 /usr/bin),而这个目录通常属于 root,普通用户没有写入权限。那怎么办?这时候就需要临时提升权限。
顺便说一句,Linux 中安装的程序其实只安装了一份,但允许所有人同时使用。比如普通用户能用 ls,root 用户也能用 ls(当然也有少数指令如 adduser 禁止普通用户使用)。

权限被拒绝——这就是普通用户试图执行高权限操作时的典型结果。
短暂提权用到的指令是 sudo。
sudo 要执行的命令比如,我们以 root 的身份创建一个文件:

文件创建成功:

虽然现在还不会看文件的具体属性,但文件属于 root 还是能看出来的。
sudo 第一次使用需要输入密码,之后会有十到十五分钟的免密期。从 sudo whoami 的输出也能看出,用户身份变成了 root。

上面普通用户用 sudo 就能变成 root(输入的是普通用户的密码,不是 root 的),那岂不是人人都是 root 了?那 root 还区分普通用户干什么?
其实正常情况下,普通用户输入 sudo 会报错:

什么原因?Linux 系统提供了一个类似 白名单 的机制,只有白名单上的用户才能用 sudo 提权。白名单就是无条件信任,和黑名单无条件拒绝相对应。
默认情况下,Linux 不允许普通用户执行 sudo。要执行,必须将当前用户添加到白名单。白名单路径:/etc/sudoers。

可以看到这个文件属于 root,只有超级用户才有资格修改。
想让普通用户执行 sudo,必须用超级管理员的身份修改 sudoers 配置文件。修改方式如下:

注:推荐用 vim 编辑器打开。
可能有小伙伴会问:那我把自己的用户加到 sudoers 文件里,不就能随便提权了吗?
道理是这么个道理,但在实际公司环境中,假设一个小组 10 人共用一台机器,只有一个人是管理员。你想把自己的用户加入 sudoers,必须线下真人去找管理员同意才行。现在我们能自己修改 sudoers,是因为我们既是用户又是管理员。只要线下去找管理员,说明人家是真正认可你的,所以不用担心人人都是 root 的问题——即便白名单里的 root,那也是值得信任的。
从 shell 外壳程序的工作原理,到 Linux 用户权限的划分,再到 sudo 提权的机制,整个过程环环相扣。理解这些底层逻辑,才能真正用好 Linux 的命令行。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8