预备知识#
Linux 简介#
Linux 诞生于 1991 年,由芬兰大学生 Linus Torvalds 开发

Linux 操作系统是基于 Unix 以网络为核心的设计思想,是一个性能稳定的多用户操作系统,能运行各种软件工具、应用程序和网络协议,支持安装在 32 和 64 位 CPU 硬件上。
Linux 只代表 Linux 内核,但是人们习惯用 Linux 来形容基于 Linux 内核的发行版。
GNU 是一个自由的非营利组织,在 GNU 提供的各种工具的支持下构成了我们常说的 Linux 发行版,全称 GNU/Linux
Linux 优点#
- 开源免费
- 性能稳定
- 安全性高
- 多任务、多用户
- 节省资源
- 使用容易
Linux 版本#
内核版
内核是 Linux 系统中最基本的东西,由 Linus 领导的小组进行开发

版本号:xx.yy.zz
- 第一个数字:6,主版本号
- 第二个数字:10,次版本号
- 第三个数字:8,修订版本号,表示修订次数
版本类型:
小于 2.6
次版本号奇数为不稳定版,次版本号偶数为稳定版
大于 2.6
版本名称 解释 mainline 主线版本 stable 稳定版 longterm 长期支持版 linux-next 预览版
在 Linux 上可通过 uname 命令查看内核版本
uname --all
内核版本功能:
- 内存管理
- 进程管理
- 设备驱动程序
- 系统调用和安全防护
发行版
发行版就是我们常说的操作系统,包括以下部分:
- Linux 内核
- GNU 工具
- 附加软件
- 软件包管理器
全球大约有几千种不同的 Linux 发行版,每个发行版都有自己的特征和目标人群
发行版 特征 目标人群 Debian 稳定、安全、软件包管理系统使用 APT;社区驱动,长期支持版本(LTS)。 服务器管理员、桌面用户、开发者 CentOS 由 Red Hat Enterprise Linux(RHEL)衍生的免费版;专注于稳定性和安全性。 企业用户、服务器管理员 Fedora 最新技术的测试平台;社区支持,短生命周期;使用 DNF 软件包管理器。 开发者、桌面用户 Arch 滚动更新、KISS(Keep It Simple, Stupid)原则;高度可定制性。 高级用户、Linux 爱好者 Kali 专为渗透测试和安全研究设计;预装大量安全工具和测试框架。 网络安全专家、渗透测试员 查看 Linux 发行版版本
查看
/etc/os-release文件cat /etc/os-release对于 Debian 系的系统,查看
/etc/debian_versioncat /etc/debian_version对于 Red Hat 系的系统,查看
/etc/redhat-releasecat /etc/redhat-release
习题#
一、填空
- Linux 诞生于 ________ 年,由 ________ 开发。
- Linux 是一个 ________ 任务 ________ 用户的操作系统。
- Linux 的版本分为 ________ 和 ________ 。
- Linux 的管理员账号是 ________ 。
二、选择
下列 ________ 是自由软件。
A. Windows XP
B. UNIX
C. Linux
D. Windows 2000Linux的内核版本 2.3.20 是 ________ 的版本。
A. 不稳定
B. 稳定的
C. 第三次修订
D. 第二次修订
环境准备#
VMware 虚拟机#
Debian 安装#
SSH 连接 Debian#
习题#
一、简答
- 使用虚拟机安装 Linux 时,为什么要选择稍后安装操作系统,而不是直接选择 Debian.iso 的系统映像光盘?
- 怎么开启关闭 SSH 服务?
Linux 文件系统#
磁盘是用来存储文件的,但是必须先把磁盘格式化为某种格式的文件系统,才能存储文件。
文件系统是操作系统用于用来组织、存储、管理和检索数据的机制。负责将数据组织成文件和目录的形式,使用户和应用程序能够轻松地创建、读取、修改和删除数据。简单来说,文件系统就像是一个大型的文件柜,它帮助我们将文件和目录按需存放,并能够方便地找到和使用它们。
文件系统类型#
| 文件系统类型 | 描述 |
|---|---|
| EXT4 | 第四代扩展文件系统,Linux 默认文件系统,支持大文件和分区、日志功能、延迟分配等特性。 |
| XFS | 高性能 64 位日志文件系统,支持大文件和高并发,适合处理大量数据的服务器和数据库应用。 |
| Btrfs | 现代的 CoW(写时复制)文件系统,支持快照、子卷、压缩和 RAID 功能,设计用于高可扩展性。 |
| ReiserFS | 早期的日志文件系统,具有高效的小文件存储能力,近年来由于缺乏维护和开发逐渐被淘汰。 |
| F2FS | 由三星开发的闪存文件系统,专为 NAND 闪存存储设备(如 SSD)优化,支持垃圾回收和热冷数据分离。 |
| JFS | IBM 开发的日志文件系统,具有低 CPU 使用率和快速恢复时间,适合大文件和多线程工作负载。 |
| ZFS | 具有高度可靠性和可扩展性的文件系统,支持数据完整性、压缩、快照和 RAID-Z,适用于存储服务器。 |
当添加新磁盘并且分区后需要进行格式化,操作系统才能够使用这个磁盘分区。格式化的目的是建立操作系统可以使用的文件系统类型。
每种操作系统使用的文件系统类型并不相同,Windows 用 NTFS 文件系统。并且在默认情况下 Windows 不能识别 Linux 文件系统的磁盘分区。
查看本机使用的文件系统
使用
df命令df -hT使用
lsblk命令lsblk -f示例输出:
假设你使用 df -hT 命令,你可能会看到类似以下的输出:
Filesystem Type Size Used Avail Use% Mounted on /dev/sda1 ext4 50G 30G 17G 64% / /dev/sdb1 xfs 100G 70G 25G 74% /data这里,
/dev/sda1使用的是ext4文件系统,而/dev/sdb1使用的是xfs文件系统。
目录存储结构#
对于一个磁盘来说,在被格式化相对应的文件系统后,整个分区被分为不同的块,根据使用的不同,块还可以分为以下几种:
- 超级块:存储文件系统的总体信息,包括文件系统的大小、inode 和数据块的数量、文件系统的状态等。它是文件系统操作的核心部分。
- inode(索引节点):存储文件的元数据,如权限、大小、创建时间等。每个文件在文件系统中都有一个唯一的 inode。inode 不包含文件名,文件名与 inode 的关联通过目录实现。
- 数据块:实际存储文件内容的区域。文件的内容被分割成多个数据块,这些块存储在磁盘上。文件系统通过 inode 来记录这些数据块的位置,以便在读取文件时能够找到这些块。
EXT4 的文件系统结构基本如下

FHS#
FHS(Filesystem Hierarchy Standard,文件系统层次结构标准) 是一套定义 Linux 和其他类 Unix 操作系统中文件和目录结构的标准。

它规定了各个目录的用途和它们应该包含的内容,以确保文件系统结构的一致性和可移植性,使不同的应用程序和系统能够更好地协同工作。
FHS 的优势
- 标准化:通过提供一致的文件和目录结构,FHS 帮助开发者和管理员更轻松地找到文件和配置。
- 兼容性:遵循 FHS 的 Linux 发行版在文件路径上保持兼容性,提高了软件移植和安装的效率。
- 安全性和稳定性:将系统文件与用户文件、可变数据与静态数据分开,有助于系统的安全性和稳定性管理。
FHS 的目录结构

文件系统 是底层的存储机制,负责管理和存储数据。
FHS 是一个标准,用来定义 Linux 文件系统的目录结构和组织方式。
绝对路径和相对路径#
路径是一个文件的位置,绝对路径从根目录(/)开始写起,相对路径指相对于当前路径的写法。
举例:在人民广场下车的外国人问你怎么找到厕所
- 绝对路径:首先坐飞机来到中国,出机场后乘坐地铁 3 号线来到人民广场,在人民广场下车后路口左转
- 相对路径:左转
| 路径类型 | 优点 | 缺点 |
|---|---|---|
| 绝对路径 | 始终准确定位文件或目录位置 | 路径长,维护不便 |
| 脚本中使用更稳定可靠 | 目录结构变化时需要更新 | |
| 相对路径 | 简短易输入,适合本地目录操作 | 依赖当前工作目录,易出错 |
| 目录结构变化时通常不需修改路径 | 跨系统时不如绝对路径明确 |
两个特殊的目录:
.表示当前目录,也可以用./..表示上一层目录,也可以用../
Linux 常见命令#
Linux 是一个强大的操作系统,它提供了许多常用的命令行工具,可以帮助我们用于管理文件、目录、进程、网络和系统配置等。
预备知识:上哪敲命令?#
终端
在 Linux 系统中,终端 是一个命令行界面,允许用户与操作系统进行交互。用户可以在终端中输入命令来执行各种操作,如运行程序、管理文件和配置系统。终端通常由一个文本输入区域和一个输出区域组成,其中显示命令结果和系统消息。终端是执行命令、脚本和程序的主要工具,常用于系统管理和开发工作。
终端模拟器
终端模拟器 是在图形用户界面(GUI)环境中模拟传统终端的应用程序。它允许用户在图形桌面上打开一个窗口,通过这个窗口来访问命令行界面。终端模拟器提供了类似于物理终端的功能,但可以在窗口中运行,支持多标签、字体调整、滚动缓冲区等高级功能。常见的终端模拟器包括 GNOME Terminal、Konsole、xterm 和 Terminator。
Linux 系统命令行的含义:
示例:root@app00:~# root //用户名,root 为超级用户 @ //分隔符 app00 //主机名称 ~ //当前所在目录,默认用户目录为 ~,会随着目录切换而变化 # //表示当前用户是超级用户,普通用户为 $
如何敲一个命令#
一个命令通常由以下部分组成:
示例:命令 参数名 参数值
命令名:
可以通过在线网站或手册查询能用的 Linux 命令:
参数:
同上可以通过在线网站或手册学习到 Linux 命令的所有参数
但一般 Linux 命令都带一个帮助参数
--help或者缩写-h
如果你想获得更详细的文档,可以去找那个男人
manman cat //man + 命令名
如果是一名合格的 Linux 用户,应该掌握如下命令:

生存命令#
查看当前目录(pwd)
pwd //显示当前位置路径切换目录(cd)
cd / //切换到根目录 cd /bin //切换到根目录下的 bin 目录 cd ../ //切换到上一级目录 或者使用命令:cd .. cd ~ //切换到 home 目录 cd xx(文件夹名) //切换到本目录下的 xx 的目录 cd /xxx/xx/x //输入绝对路径,直接切换到目标目录查看目录(ls)
ls //查看当前目录下的所有目录和文件 ls -a //查看当前目录下的所有目录和文件(包括隐藏的文件) ls -l //列表查看当前目录下的所有目录和文件 ls /bin //查看指定目录下的所有目录和文件查看文件(cat)
cat a.txt //查看文件内容 head a.txt //查看文件前几行内容 tail a.txt //查看文件后几行内容创建目录(mkdir)
mkdir tools //在当前目录下创建一个名为tools的目录 mkdir /bin/tools //在指定目录下创建一个名为tools的目录删除目录与文件(rm)
rm 文件名 //删除当前目录下的文件 rm -f 文件名 //删除当前目录的的文件(不询问) rm -r 文件夹名 //递归删除当前目录下此名的目录 rm -rf 文件夹名 //递归删除当前目录下此名的目录(不询问) rm -rf * //将当前目录下的所有目录和文件全部删除 rm -rf /* //将根目录下的所有文件全部删除提权(sudo)
sudo vim a.txt //可用管理员编辑文件搜索目录(find)
find /bin -name 'a*' //查找/bin目录下的所有以a开头的文件或者目录修改目录(mv)
mv 当前目录名 新目录名 //修改目录名,同样适用与文件操作 mv /usr/tmp/tool /opt //将/usr/tmp目录下的tool目录剪切到 /opt目录下面拷贝目录(cp)
cp /usr/tmp/tool /opt //将/usr/tmp目录下的tool目录复制到 /opt目录下面 cp -r /usr/tmp/tool /opt //递归剪复制目录中所有文件和文件夹
习题#
一、填空
- 在 Linux 系统中命令 ________ 大小写。在命令行中,可以使用 ________ 键来补充命令。
- 如果要在一个命令行上输入和执行多条命令,可以用 ________ 来分隔命令。
- 要使程序以后台方式运行,只需要在命令后面跟上 ________ 符号。
- ________ 代表当前目录,也可用 ./ 表示。________ 代表上一层目录,也可以用 ../ 表示。
- 若一个文件前多一个 “.”,则该文件是一个 ________ 。可以用 ________ 命令查看。
- 要查看当前所在的目录,应使用的命令是 ________ 。
- 用长格式使用 ls 命令列出文件和目录的命令是 ________ 。
二、选择
如果忘了 ls 的用法,可以用 ________ 来获取帮助
A ? ls
B help ls
C man ls
D get ls存放 Linux 基本命令的目录是 ________
A /bin
B /tmp
C /lib
D /root如果当前目录是 /home/sea/china ,那么 “china” 的父目录是 ________
A /home/sea
B /home
C /
D /sea利用 cp 复制系统文件 /etc/profile 到当前目录下,命令是 ________
A # cp /etc/profile /
B # cp /etc/profile ./
C $ cp /etc/profile ./
D $ cp ./ /etc/profile
三、简答
- 添加参数的目的是什么?
- 使用 rm 时用什么参数来避免二次确定
Linux 用户及文件管理#
Linux 是多用户多任务的操作系统,掌握用户管理至关重要。因为多用户操作,为了确保系统安全性,在安装 Linux 时必须设置 root 密码。虽然 root 用户操作不受任何限制,但能力越大责任越大,一不小心就会毁掉整个系统,虚拟机不怕。
用户管理#
在 Linux 中用户身份有如下:
通过使用用户号码 UID 区分
- 管理员 UID 为 0:系统的管理员用户
- 系统用户 UID 为 1~999:Linux 系统为了避免黑客入侵控制整台服务器,为每一个服务程序都设置一个专门的系统用户来运行,防止提权,控制破坏范围
- 普通用户 UID 为 1000 开始:由管理员创建的日常工作的用户。
UID 不能冲突,普通用户的 UID 如果没有自行指定,则从 1000 开始,即使 999 没人用。
为了方便管理众多用户,而引入用户组这个概念,用用户组号码区分 GID
用户账号的管理#
添加新的用户账号使用 useradd 命令,其语法如下:
useradd 选项 用户名删除一个已有的用户账号使用 userdel 命令,其格式如下:
userdel 选项 用户名修改已有用户的信息使用 usermod 命令,其格式如下:
usermod 选项 用户名指定和修改用户口令的命令是 passwd。
超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令。命令的格式为:
passwd 选项 用户名
用户组的管理#
增加一个新的用户组使用 groupadd 命令。其格式如下:
groupadd 选项 用户组如果要删除一个已有的用户组,使用 groupdel 命令,其格式如下:
groupdel 用户组修改用户组的属性使用 groupmod 命令。其语法如下:
groupmod 选项 用户组如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。
newgrp 用户组
用户账号系统文件#
/etc/passwd文件是用户管理工作涉及的最重要的一个文件。Linux 系统中的每个用户都在 /etc/passwd 文件中有一个对应的记录行,它记录了这个用户的一些基本属性。
这个文件对所有用户都是可读的。它的内容类似下面的例子:
cat /etc/passwd root:x:0:0:Superuser:/: daemon:x:1:1:System daemons:/etc: bin:x:2:2:Owner of system commands:/bin: sys:x:3:3:Owner of system files:/usr/sys: adm:x:4:4:System accounting:/usr/adm: uucp:x:5:5:UUCP administrator:/usr/lib/uucp: auth:x:7:21:Authentication administrator:/tcb/files/auth: cron:x:9:16:Cron daemon:/usr/spool/cron: listen:x:37:4:Network daemon:/usr/net/nls: lp:x:71:18:Printer administrator:/usr/spool/lp: sam:x:200:50:Sam san:/home/sam:/bin/sh从上面的例子我们可以看到,/etc/passwd 中一行记录对应着一个用户,每行记录又被冒号
:分隔为 7 个字段,其格式和具体含义如下:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录 Shell
/etc/shadow中的记录行与 /etc/passwd 中的一一对应,它由 pwconv 命令根据 /etc/passwd 中的数据自动产生下面是 /etc/shadow 的一个例子:
cat /etc/shadow root:Dnakfw28zf38w:8764:0:168:7::: daemon:*::0:0:::: bin:*::0:0:::: sys:*::0:0:::: adm:*::0:0:::: uucp:*::0:0:::: nuucp:*::0:0:::: auth:*::0:0:::: cron:*::0:0:::: listen:*::0:0:::: lp:*::0:0:::: sam:EkdiSECLWPdSa:9740:0:0::::它的文件格式与 /etc/passwd 类似,由若干个字段组成,字段之间用
:隔开。这些字段是:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
用户组的所有信息都存放在
/etc/group文件中。将用户分组是 Linux 系统中对用户进行管理及控制访问权限的一种手段。
每个用户都属于某个用户组;一个组中可以有多个用户,一个用户也可以属于不同的组。
当一个用户同时是多个组中的成员时,在 /etc/passwd 文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。
用户要访问属于附加组的文件时,必须首先使用 newgrp 命令使自己成为所要访问的组中的成员。
/etc/group 文件的一个例子如下:
cat /etc/group root::0:root bin::2:root,bin sys::3:root,uucp adm::4:root,adm daemon::5:root,daemon lp::7:root,lp users::20:root,sam此文件的格式也类似于 /etc/passwd 文件,由冒号
:隔开若干个字段,这些字段有:组名:口令:组标识号:组内用户列表
用户组的口令信息在
/etc/gshadow文件中/etc/gshadow文件的一个例子如下:cat /etc/gshadow root:::brltty,root sys:!*::bin mem:!*:: ftp:!*:: mail:!*:: log:!*:: smmsp:!*:: proc:!*::此文件的格式,由冒号
:隔开若干个字段,这些字段有:组名:口令:管理员用户列表:组内用户列表。
批量添加用户#
见我的另一篇文章
习题#
一、填空
- Linux 是 多 ________ 多任务的操作系统,它允许多个用户同时登录到系统,使用系统资源。
- Linux 下的用户账号分为两种: ________ 和 ________
- Linux 中 root 的 UID 为 ________ ,普通用户的 UID 如果不指定默认从 ________ 开始按顺序编号。
- Linux 系统中用户账户及相关信息(口令除外)都放在 ________ 文件中。
- 所有用户对 /etc/passwd 都有 ________ 权限,为了系统安全性,加密后的口令都存放在 ________ 文件中。
- 组的信息都存放在 ________ 文件中,而一些信息(组口令,组成员)存放在 ________ 文件中。
二、选择
下列哪个命令可以删除一个用户和他的主目录
A rmuser -r
B deluser -r
C userdel -r
D usermgr -r
三、简答
- 默认时普通用户使用 sudo 需不需要验证密码?
文件权限管理#
为了保护系统的安全性,Linux 系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
在 Linux 中我们通常使用以下两个命令来修改文件或目录的所属用户与权限:
- chown (change owner) : 修改所属用户与组。
- chmod (change mode) : 修改用户的权限。
下图中通过 chown 来授权用户,通过 chmod 为用户设置可以开门的权限。

在 Linux 中我们可以使用 ll 或者 ls –l 命令来显示一个文件的属性以及文件所属的用户和组,如:
ls -l
total 64
dr-xr-xr-x 2 root root 4096 Dec 14 2012 bin
dr-xr-xr-x 4 root root 4096 Apr 19 2012 boot
从左至右第 0-9 位上的字符所表示的信息有:

对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。
同时,在 Linux 系统中,用户是按组分类的,一个用户属于一个或多个组。
文件所有者以外的用户又可以分为文件所属组的同组用户和其他用户。
因此, Linux 系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限。
更改文件属性#
chgrp:更改文件属组语法:
chgrp [-R] 属组名 文件名chown:更改文件所有者(owner),也可以同时更改文件所属组。语法:
chown [–R] 所有者 文件名 chown [-R] 所有者:属组名 文件名chmod:更改文件 9 个属性Linux 文件属性有两种设置方法,一种是数字,一种是符号。
Linux 文件的基本权限就有九个,分别是 owner/group/others (拥有者/组/其他)三种身份各有自己的 read/write/execute 权限。
其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:
类型 缩写 代表数字 r read 4 w write 2 x execute 1 每种身份 (owner/group/others) 各自的三个权限 (r/w/x) 分数是需要累加的,例如当权限为:
-rwxrwx---分数则是:owner = rwx = 4+2+1 = 7 group = rwx = 4+2+1 = 7 others= --- = 0+0+0 = 0所以该文件的权限数字就是 770。
变更权限的指令
chmod的语法如下:chmod [-R] xyz 文件或目录或者可以使用字符来代表添加或删除权限
语法如下:
chmod [u/g/o] [+/-] 文件例如:
chmod u+x text chmod g+w text chmod o-r text
习题#
一、简答
- 某文件的权限用数字法表示为 755,那么对应的字符法表示是什么?
实训#
按顺序执行
在当前用户主目录下建立以姓名命名的目录,并进入
在当前目录下建立文件 exam.c,将文件 exam.c 拷贝到 /tmp 这个目录下
进入 /tmp 后回到用户主目录
查看当前目录(隐藏文件也显示)后进入姓名文件夹
在当前目录中新建文件 text.txt 并设置文件的属性为文件属主 (u) 增加执行权限与文件属主同组用户 (g) 增加写权限其他用户 (o) 删除读权限
创建用户 test1 和 test2 并将 /home/test1 目录中的所有文件拷贝到目录 /home/test2 中
在姓名目录中建立文件 file1.txt 并更名为 file2.doc
用一行命令修改姓名目录下所有文件属性对拥有者、群组可读可写可执行?
新建一个组 group1,将 root 用户添加到该组,并查看是否添加成功?
姓名目录中建立文件 ff.txt 并用数字的形式把文件的权限改为 rw-rw-rw-?
在姓名目录中新建 1.txt 2.txt 3.txt 1.c 2.c 3.c 1.doc 2.doc 3.doc
将姓名目录中扩展名为 c、txt 和 doc 的文件全部复制到 /home 目录中

