前 言
党的二十大报告指出,新一轮科技革命和产业变革深入发展,国际力量对比深刻调整,我国发展面临新的战略机遇。习近平总书记多次强调,信息化为我国抢占新一轮发展制高点、构筑国际竞争新优势提供了有利契机,为中华民族带来了千载难逢的机遇。当前,数字技术日益成为创新驱动发展的先导力量,开启了一次具有全局性、战略性、革命性意义的数字化转型,带动人类社会生产方式变革、生产关系再造、经济结构重组、生活方式巨变。党的二十大为教育事业明确了新定位、提出了新要求,将信息教育推向了新高度,指明了新方向。要深入贯彻落实党的二十大精神,持续实施国家信息教育战略行动,推动信息教育取得新进展,实现新突破。
为了进一步提高课程思政效果,在课堂教学中要进一步关注课程情感教学目标的课堂实现,在知识传递、能力培养的过程中强化思政引领,实现育人育才的统一;要深刻学习领会党的二十大精神,深入剖析课程思政内容,将党的二十大精神与计算机课程内容深度融合,提炼能自然融入课堂的鲜活案例,通过润物无声的方法实现知识、素质双育人。
中国正面临百年未有之大变局,国际竞争越来越体现为国与国之间科技实力的竞争,一个国家只有拥有更加强大的科技创新能力,才能攀升至全球产业链和价值链的顶端。在全面建设社会主义现代化国家的新征程上,我们必须坚持科技是第一生产力、人才是第一资源、创新是第一动力,立足自身长远发展,以高水平科技自立自强提升我国经济发展的层次和质量,筑牢社会主义现代化强国基石。
本书将思政内容贯穿始终,包括但不限于以下内容:
(1)爱国主义精神。培养学生的爱国主义精神,强调国家利益高于个人利益 。
(2)科学态度。计算机科学技术不仅是一门技术学科,更是一门科学学科,在探索计算机的本质和规律时,需要具备科学的态度 。
(3)创新意识。计算机是一门创新性极强的学科,创新意识是适应时代发展的关键 。
(4)法律意识 。计算机应用领域涉及许多法律问题,学生应具备法律意识,遵守相关法律法规 ,共同营造风清气正的计算机网络环境。
(5)人文关怀 。计算机科技的发展离不开对人的关注和关怀,应引导学生关注人的需求,提供优质人性化的服务 。
(6)价值观塑造。引导学生树立正确的价值观,包括诚信、平等、公正和敬业等 。
(7) 社会责任感 。计算机技术的发展与社会发展紧密相连,学生应具有强烈的社会责任感,时刻关注社会发展和人民利益 。
在Linux的教学中,选择教材是首要问题。市面上的现有教材总是或多或少有一些缺憾,不能很好地满足教学需求。有的教材内容陈旧,出版年份较早,已经与现在的应用脱节;有的教材理论内容太多,这对于实践性非常强的Linux来说不太合适;有的教材虽然也是在讲最新版的红帽系统,但内容杂乱,内在连贯性差;有的教材侧重服务器配置,对基础知识讲解不足;有的教材内容丰富,但内在逻辑不是很紧凑。于是,编者萌生了编写教材的想法。
编写一本本科的实践教材,弥补各类现有教材的缺憾,我们认为必须立足于以下几点:
(1)实践第一,理论第二。Linux是一门实践性课程,必须少讲多做,在做中学,在练中会。为此,必须将动手实践的内容作为每个章节的重点。
(2)厚植基础,注重能力。Linux的内容非常庞杂,如何选取非常重要。教材应立足于让学生掌握基本概念、基本命令、基本操作,将动手能力放在第一位。有了深厚扎实的基础,学生会自主扩展知识边界。
(3)精讲精练,取舍得当。教材通过内容传达知识,知识要有内在的逻辑,因为成体系的东西更容易被学生接受而内化。对某些内容则进行了取舍,例如服务器配置,仅仅选取了有代表性的Web服务器配置。其他服务器为什么舍弃了呢?因为有些服务器(如邮件服务器)太简单,而生产环境中的服务器非常多,这些内容让学生自己去摸索更好;有些服务器(如DHCP)在生产中一般都是内嵌到其他系统中,很少作为单独的服务器使用,因此这些内容就没有必要进行详细的讲解。
全书分为15章,主要内容如下:
第1章简要介绍了Linux的发展史并引导读者搭建Linux的服务器环境。第2章讲解了常用的Shell命令,掌握这些命令才能更好地操控Linux。第3章是Vim编辑器,该工具是Linux配置的必备工具,必须熟练掌握。第4章是磁盘与文件系统,介绍文件在磁盘中的保存格式。第5章是软件的安装和卸载,软件的安装方法与Windows差异很大,这是很多初学者的障碍,本章对此做了最详尽的梳理。第6章是用户和群组管理,作为服务器操作系统,在多用户多任务的环境下,用户管理是必不可少的。第7章是进程和内存管理,这涉及系统在运行时的性能。第8章为权限管理,分别介绍了Linux中的各类权限。第9章是网络管理和防火墙配置,计算机联网是最基本的配置,而计算机的第一道安防措施就是防火墙。第10章简要介绍了远程登录的场景和应用软件。以上10章内容为Linux的入门知识。第11章通过最常用的Web服务器的搭建操作综合运用了前面各章节的内容。第12章是虚拟化的配置,这是云的底层技术。第13章是Docker容器配置,这是现在企业最常用的技术。第14章是关于日志的知识,学会查看日志、通过日志排除故障都是必备技能。第15章是综合项目实训。
本书具有以下特色。
(1)从实际应用角度出发,精心选择典型案例,详细展示配置过程,分析透彻。
(2)深入浅出、轻松易学,以实例为主线,上手非常容易,让读者真正学会RHEL 9最实用、最方便的运维技能。
(3)根据需要在各章使用了很多案例,让读者做中学,在学习过程中更轻松地理解相关知识点及技能。
本书主要由宋考、熊金波共同完成,是两位老师多年来在本科课堂教学方面的思考与总结。本书在编写过程中得到江泽豪、许潇等同学的协助,他们做了大量细致的工作,在此表示衷心感谢。本书部分内容参考自网络资源,对原作者表示衷心感谢。
在本书的撰写过程中,我们深感理论与实践的结合是推动知识进步的关键。在此,我们要特别感谢福建省攀宇信息科技有限公司,其在安溪华侨职业中专学校的校企合作、产教融合经验不仅为本书提供了坚实的理论基础,更通过实践证明了其正确性与可行性。正是这种理论与实践的高度统一,使得本书的内容更加丰富、更具说服力,也让我们更加坚信这一方法值得广泛推广,从而将宝贵的实践经验分享给更多的读者。希望读者在阅读本书时,能够感受到理论与实践相结合的力量,并将其应用到自己的学习和工作中,共同推动领域的进步与发展。再次感谢所有为本书提供支持与帮助的人,感谢清华大学出版社的大力支持,对协助本书出版的所有相关人员的辛勤工作表示感谢。
本书的出版得到福建省高校教育教学研究重大项目(FBJY20230113)、福建师范大学本科教学改革研究项目(I202201049)、福建师范大学研究生培养质量提升工程(ZLGC202204007)、教育部产学合作协同育人项目(220506043264819)的支持。
本书适用于红帽初级管理员、Linux运维工程师、Linux服务器工程师、Web开发人员、企业管理人员、云计算初学者、高等院校计算机相关专业学生。本书虽几经修改,但仍可能存在错误和疏忽,恳请读者批评指正。
编者
2026年2月于福州
目 录
第1章 Linux系统1
1.1 操作系统1
1.2 UNIX2
1.3 自由软件与开源软件3
1.3.1 自由软件运动3
1.3.2 开源协议3
1.4 Linux系统的起源4
1.5 虚拟机4
1.5.1 虚拟机的概念4
1.5.2 虚拟机的性能4
1.6 安装准备工作5
1.6.1 VMware的下载5
1.6.2 RHEL 9镜像的下载5
1.7 安装系统5
1.7.1 虚拟机安装5
1.7.2 安装RHEL 98
1.8 本章小结13
第2章 Shell命令14
2.1 Shell和Bash14
2.1.1 Linux哲学思想14
2.1.2 Shell15
2.1.3 Bash16
2.2 Bash用法16
2.2.1 命令行16
2.2.2 通配符16
2.2.3 别名18
2.2.4 命令自动补齐19
2.2.5 管道20
2.2.6 内置命令和外部命令20
2.3 目录相关命令21
2.3.1 Linux目录结构21
2.3.2 相对路径和绝对路径22
2.3.3 目录操作命令22
2.4 文件相关命令25
2.4.1 文件分类25
2.4.2 创建文件命令26
2.4.3 查看文件命令27
2.4.4 文件内容操作30
2.4.5 文件编辑命令35
2.4.6 文件查找命令39
2.5 上传与下载命令41
2.5.1 scp与sftp命令41
2.5.2 rsync命令42
2.5.3 wget命令43
2.6 打包与压缩命令43
2.6.1 常见压缩文件扩展名43
2.6.2 tar命令43
2.7 重定向45
2.8 帮助文档的使用46
2.8.1 help命令与--help参数46
2.8.2 man命令47
2.8.3 info命令48
2.9 本章小结49
第3章 Vim编辑器50
3.1 Vi编辑器50
3.2 Vi与Vim 51
3.3 Vim的安装51
3.4 Vim的工作模式51
3.5 启动和退出52
3.6 编辑和保存53
3.7 移动光标53
3.8 文本编辑命令54
3.9 查找和替换55
3.10 编辑多个文件55
3.11 本章小结57
第4章 磁盘与文件系统58
4.1 文件系统概述58
4.1.1 硬盘接口59
4.1.2 硬盘设备命名规则60
4.1.3 硬盘分区61
4.2 文件系统分类61
4.2.1 文件系统类型62
4.2.2 文件系统查看命令62
4.3 硬盘管理63
4.3.1 硬盘查看命令63
4.3.2 硬盘分区64
4.3.3 格式化分区67
4.3.4 分区的挂载和卸载67
4.4 磁盘配额管理68
4.5 逻辑卷管理73
4.5.1 逻辑卷73
4.5.2 逻辑卷的用法74
4.6 RAID磁盘阵列管理78
4.6.1 磁盘阵列的原理78
4.6.2 磁盘阵列的优缺点78
4.6.3 RAID级别78
4.6.4 应用示例80
4.7 本章小结84
第5章 软件安装和卸载85
5.1 软件包概述85
5.1.1 源码包85
5.1.2 二进制包86
5.2 源码包的安装86
5.2.1 源码包86
5.2.2 安装示例87
5.2.3 源码包的不同格式89
5.3 RPM包的安装91
5.3.1 RPM包管理器91
5.3.2 软件包命名格式92
5.3.3 RPM包的用法92
5.4 YUM本地源配置96
5.4.1 本地源配置96
5.4.2 YUM软件管理98
5.5 YUM网络源配置100
5.5.1 网络源配置100
5.5.2 获取网络源的Baseurl链接地址102
5.6 DNF包管理工具104
5.6.1 DNF工具104
5.6.2 DNF软件源配置105
5.6.3 DNF命令105
5.7 本章小结109
第6章 用户和群组110
6.1 用户和群组的概念110
6.1.1 用户110
6.1.2 群组111
6.1.3 用户和群组的对应关系111
6.2 用户的配置文件111
6.2.1 passwd文件112
6.2.2 shadow文件113
6.2.3 pwconv命令114
6.2.4 pwck命令114
6.3 群组配置文件115
6.3.1 group文件 115
6.3.2 gshadow文件116
6.4 用户管理命令117
6.4.1 useradd命令117
6.4.2 usermod命令118
6.4.3 passwd命令118
6.4.4 userdel命令119
6.5 群组管理命令119
6.5.1 groupadd命令120
6.5.2 groupmod命令120
6.5.3 groupdel命令121
6.6 批量创建用户121
6.6.1 newusers+chpasswd批量添加用户121
6.6.2 通过Shell程序添加用户122
6.7 本章小结123
第7章 进程和内存管理124
7.1 运行级别124
7.2 系统启动过程125
7.3 内存管理126
7.3.1 内存分布127
7.3.2 虚拟内存128
7.4 内存管理129
7.4.1 查看内存信息129
7.4.2 查看虚拟内存情况130
7.4.3 内存使用132
7.5 交换分区Swap133
7.5.1 创建交换分区133
7.5.2 创建交换文件134
7.5.3 移除交换分区135
7.6 进程管理135
7.6.1 ps查看进程136
7.6.2 uptime命令137
7.6.3 top命令137
7.6.4 pstree命令138
7.6.5 lsof命令139
7.7 进程优先级139
7.8 作业管理141
7.8.1 后台运行作业142
7.8.2 jobs命令142
7.8.3 fg命令143
7.8.4 bg命令143
7.8.5 kill命令144
7.9 计划任务144
7.9.1 at命令144
7.9.2 cron命令146
7.10 本章小结149
第8章 权限管理150
8.1 Linux权限概述150
8.2 文件与目录权限151
8.2.1 用户和组151
8.2.2 文件权限152
8.3 默认权限umask154
8.4 ACL权限155
8.4.1 为何需要ACL权限155
8.4.2 ACL的作用156
8.4.3 检查是否支持ACL156
8.4.4 设置ACL权限156
8.4.5 更改 ACL 权限157
8.4.6 删除 ACL 权限157
8.5 mask权限158
8.6 特殊权限位159
8.6.1 suid权限159
8.6.2 sgid权限160
8.6.3 sticky权限161
8.7 su和sudo权限162
8.7.1 su命令162
8.7.2 sudo命令162
8.8 权限对指令的影响163
8.8.1 目录权限和指令163
8.8.2 文件权限和指令165
8.8.3 权限示例165
8.9 SELinux权限166
8.9.1 SELinux166
8.9.2 SELinux的模式167
8.9.3 安全上下文格式 168
8.9.4 SELinux命令169
8.9.5 应用示例170
8.10 本章小结173
第9章 网络管理和防火墙配置175
9.1 网络管理命令175
9.1.1 网络接口175
9.1.2 路由表176
9.1.3 网络状态177
9.1.4 socket信息177
9.1.5 ping命令178
9.1.6 跟踪数据包178
9.2 虚拟机联网179
9.2.1 三种连接模式179
9.2.2 虚拟机联网181
9.3 配置静态地址183
9.3.1 查找IP、子网掩码、网关与DNS183
9.3.2 使用nmcli命令配置184
9.3.3 使用nmtui程序配置185
9.3.4 直接修改配置文件185
9.4 NetworkManager186
9.5 防火墙原理187
9.6 firewalld防火墙188
9.7 firewalld配置命令188
9.7.1 firewalld区域188
9.7.2 firewalld配置命令简介189
9.8 firewalld配置案例191
9.9 iptables防火墙195
9.10 iptables命令197
9.10.1 iptables安装197
9.10.2 iptables命令简介197
9.11 iptables配置案例201
9.12 本章小结203
第10章 远程登录服务器204
10.1 远程登录场景204
10.2 远程登录工具205
10.3 telnet登录205
10.4 ssh登录207
10.5 ssh免密登录208
10.6 利用secureCRT登录210
10.7 secureCRT免密登录214
10.8 远程桌面登录216
10.9 本章小结220
第11章 Web服务器搭建221
11.1 Apache安装221
11.2 Apache配置223
11.2.1 端口修改224
11.2.2 更改默认起始页225
11.2.3 更改默认目录227
11.3 Apache访问控制228
11.3.1 基于IP的访问控制228
11.3.2 用户认证229
11.4 Apache虚拟主机231
11.5 Apache的SSL配置232
11.6 Nginx服务器236
11.7 Nginx功能237
11.7.1 代理服务器237
11.7.2 负载均衡237
11.7.3 动静分离237
11.8 WordPress237
11.9 综合案例238
11.10 本章小结245
第12章 KVM虚拟化配置246
12.1 虚拟化246
12.2 KVM技术247
12.2.1 KVM247
12.2.2 QEMU249
12.3 安装KVM虚拟机249
12.4 虚拟机网络254
12.4.1 NAT模式254
12.4.2 桥接模式257
12.5 克隆虚拟机259
12.5.1 利用图形界面克隆259
12.5.2 利用Virt-clone工具克隆260
12.5.3 利用虚拟机配置文件克隆261
12.6 冷迁移262
12.7 热迁移264
12.8 本章小结268
第13章 Docker容器配置269
13.1 容器技术269
13.2 Docker270
13.3 Docker的安装271
13.4 Docker的管理274
13.4.1 Docker相关命令274
13.4.2 镜像相关命令274
13.4.3 容器相关命令275
13.5 利用容器部署LNMP环境277
13.5.1 Nginx部署278
13.5.2 PHP部署279
13.5.3 MySQL部署280
13.6 容器迁移备份282
13.6.1 容器保存为镜像282
13.6.2 镜像备份283
13.6.3 镜像恢复283
13.7 镜像制作283
13.7.1 Dockerfile文件283
13.7.2 Dockerfile命令283
13.7.3 构建案例284
13.8 本章小结285
第14章 Linux日志系统286
14.1 日志分类286
14.2 日志格式287
14.2.1 rsyslog配置格式287
14.2.2 日志采集格式289
14.3 日志查看290
14.3.1 less命令290
14.3.2 dmesg命令290
14.3.3 tail命令290
14.4 日志远程同步291
14.5 日志管理命令journalctl291
14.5.1 journalctl服务291
14.5.2 用journald永久保存日志292
14.6 日志轮替293
14.6.1 日志轮替文件命名293
14.6.2 日志轮替配置文件293
14.6.3 日志轮替文件配置参数295
14.6.4 自定义日志轮替295
14.7 本章小结296
第15章 综合项目实训297
15.1 安溪华侨职校校园网297
15.2 模拟校园网298
15.3 实训一 网络搭建及配置299
15.4 实训二 DHCP服务器的搭建303
15.5 实训三 DNS服务器的搭建305
15.6 实训四 Web服务器的搭建308
15.7 实训五 FTP服务器的搭建309
15.8 实训六 E-mail服务器的搭建310
15.9 本章小结316
参考文献317