第1章 Linux操作系统概述 1
1.1 操作系统的功能与分类 3
1.1.1 操作系统的发展目标与动力 3
1.1.2 操作系统的主要功能 4
1.1.3 操作系统的类型 6
1.1.4 进程 16
1.2 Linux的产生与发展 20
1.2.1 Linux的产生 20
1.2.2 Linux发展的里程碑 20
1.2.3 Linux版本简介 22
1.3 Linux的主要特性与结构 25
1.3.1 Linux的主要特性 26
1.3.2 Linux与UNIX的主要区别 27
1.3.3 Linux操作系统结构 28
1.4 文件系统 30
1.4.1 Ext4文件系统的特点 31
1.4.2 文件系统的向前和向后兼容 32
本章小结 33
第2章 RHEL7系统安装与运行 34
2.1 RHEL7系统安装基础 36
2.1.1 安装方式 36
2.1.2 安装前准备 36
2.1.3 硬盘分区和文件系统 38
2.2 本地安装RHEL7系统 42
2.2.1 获得ISO映像文件 42
2.2.2 虚拟机 42
2.2.3 安装Linux系统 43
2.4 Linux系统的登录、注销和关机 50
2.4.1 登录 50
2.4.2 注销 50
2.4.3 关机 51
本章小结 54
第3章 GNOME 3与系统常用命令 55
3.1 用户界面 57
3.1.1 字符用户界面 57
3.1.2 图形用户界面 57
3.2 GNOME 3桌面环境 58
3.2.1 GNOME的特点与应用软件 59
3.2.2 激活的GNOME3桌面 60
3.2.3 GNOME 3桌面工作区 61
3.2.4 启动终端 62
3.2.5 锁定/解锁屏幕与注销 62
3.2.6 关机与重启系统 62
3.2.7 GNOME 3桌面环境操作举例 63
3.3 Bash基础 64
3.3.1 Bash命令的组成 64
3.3.2 提示符 65
3.3.3 Shell的启动过程 66
3.4 常用的系统命令 66
3.4.1 date命令 66
3.4.2 passwd命令 67
3.4.3 file命令 67
3.4.4 cat命令 68
3.4.5 head命令 69
3.4.6 tail命令 70
3.4.7 more命令 71
3.4.8 less命令 73
3.4.9 wc命令 75
3.4.10 Tab补全命令 75
3.4.11 history命令 76
3.5 编辑命令行 81
本章小结 82
第4章 文件与文件管理 83
4.1 文件系统简介 85
4.1.1 逻辑盘空间 85
4.1.2 文件系统 85
4.1.3 文件类型 87
4.1.4 Linux文件名 88
4.1.5 文件的链接 89
4.2 Linux目录与路径 90
4.2.1 目录结构 90
4.2.2 Linux文件目录 91
4.2.3 Linux系统的重要目录 92
4.2.4 绝对路径与相对路径 95
4.3 文件内容的管理 96
4.3.1 查看当前工作目录 96
4.3.2 切换目录 97
4.3.3 修改文件时间戳 101
4.3.4 显示文件内容 102
4.3.5 创建目录 105
4.3.6 复制文件 107
4.3.7 移动文件 108
4.3.8 删除文件 111
4.3.9 删除目录 113
4.3.10 文件链接 114
4.3.11 检查修复Linux文件 116
4.3.12 文件管理常用命令的总结 117
4.4 使用路径名扩展匹配文件名 117
4.4.1 模式匹配 117
4.4.2 波形符扩展 119
4.4.3 大括号扩展 119
4.4.4 命令替换 119
4.4.5 防止选项被扩展 120
4.4.6 路径名扩展的匹配模式 120
本章小结 121
第5章 获取帮助 122
5.1 使用man导航命令读取文档 124
5.1.1 man page简介 124
5.1.2 导航与搜索 124
5.1.3 man命令 125
5.2 info文档与内容读取 127
5.2.1 GNU info简介 127
5.2.2 GNU info与man page导航比较 128
5.2.3 读取GNU info系统的文档 130
5.3 读取/user/share/doc中的文档 131
5.3.1 软件包文档简介 131
5.3.2 查看软件包文档 132
5.4 从Red Hat获取帮助 133
5.4.1 使用Red Hat支持工具搜索知识库 133
5.4.2 使用Red Hat支持工具管理的案例 135
5.4.3 创建和查看诊断报告 137
5.4.4 查看和打印帮助文档 138
本章小结 140
第6章 文本文件的创建与编辑 141
6.1 Linux系统程序与文件描述符 143
6.1.1 Linux系统中的程序分类 143
6.1.2 文件描述符 143
6.2 重定向 144
6.2.1 重定向的概念 144
6.2.2 重定向标准输出 145
6.2.3 重定向标准输入 148
6.3 重定向标准错误 149
6.3.1 标准错误 149
6.3.2 标准输出和标准错误分离 150
6.3.3 合并标准输出和标准错误 151
6.4 管道 152
6.4.1 基于管道的程序连接 153
6.4.2 管道的应用 155
6.5 文本编辑器 156
6.5.1 基于Shell提示符的vi编辑器 156
6.5.2 文本编辑器vim 162
6.5.3 图形化文本编辑器gedit 167
本章小结 170
第7章 用户与用户组管理 171
7.1 用户与用户组的概念 173
7.1.1 用户 173
7.1.2 用户组 175
7.1.3 用户与任务 176
7.1.4 多用户操作系统的安全 176
7.2 用户和用户组的配置文件 177
7.2.1 用户的配置文件 177
7.2.2 用户组的配置文件 179
7.2.3 基于配置文件的用户管理 182
7.3 用户管理 187
7.3.1 用户身份查询 187
7.3.2 用户账号管理 190
7.3.3 用户口令管理 192
7.4 用户组的管理 193
7.4.1 有效组与初始组 194
7.4.2 增加一个新的用户组 195
7.4.3 删除一个已有的用户组 195
7.4.4 修改用户组的属性 196
7.4.5 用户在用户组之间转换 196
7.5 用户身份切换 197
7.5.1 su命令 197
7.5.2 sudo命令 198
本章小结 200
第8章 权限控制文件与目录的访问 201
8.1 文件和目录的权限 203
8.1.1 文件与目录权限 203
8.1.2 文件属性 204
8.1.3 特殊权限 207
8.2 文件或目录的权限改变 209
8.2.1 文件管理器 209
8.2.2 权限数字法 209
8.3 常用命令 210
8.3.1 chmod命令 210
8.3.2 chown命令 214
8.4 默认权限与文件访问 215
8.4.1 设置特殊权限 216
8.4.2 默认文件权限 216
8.5 综合案例 217
8.5.1 从命令行管理文件安全性 217
8.5.2 控制文件权限与所有权 219
本章小结 220
第9章 Linux进程的监控与管理 221
9.1 Linux进程概述 223
9.1.1 Linux进程相关的概念 223
9.1.2 Linux系统的进程表示 226
9.1.3 进程中的虚拟内存 228
9.1.4 Linux进程环境 228
9.1.5 Linux进程生命周期 229
9.2 Linux进程分类与优先级 229
9.2.1 Linux进程分类 229
9.2.2 Linux进程优先级 230
9.3 Linux进程的监控 230
9.3.1 Linux进程状态 231
9.3.2 ps命令 232
9.3.3 top命令 236
9.3.4 kill命令 239
9.3.5 w命令 240
9.4 Linux进程管理 242
9.4.1 基本概念 242
9.4.2 进程的前后台的切换 244
9.4.3 控制作业 245
9.4.4 中断进程 248
9.4.5 监控进程活动 251
9.4.6 实时进程监控 253
9.5 控制服务和守护进程 253
9.5.1 识别自动启动的系统进程 253
9.5.2 控制系统服务 255
本章小结 256
第10章 配置与保护OpenSSH服务 257
10.1 中间人攻击及防御 259
10.1.1 中间人攻击及方式 259
10.1.2 中间人攻击的防御 260
10.2 OpenSSH远程系统 261
10.2.1 远程登录和远程执行的SSH命令 261
10.2.2 登录OpenSSH远程系统的过程 262
10.3 SSH主机密钥 264
10.3.1 在本地客户端系统存储主机ID 264
10.3.2 在SSH服务器上存储主机密钥 265
10.4 配置基于SSH密钥的身份验证 265
10.4.1 基于SSH密钥的身份验证 265
10.4.2 SSH密钥演示 266
10.4.3 使用SSH密钥的身份验证过程 266
10.5 自定义SSH服务配置 267
10.5.1 OpenSSH服务器配置文件 267
10.5.2 禁止root用户使用SSH登录 268
10.5.3 禁止使用SSH进行密码身份验证 268
本章小结 272
第11章 日志的分析与存储 273
11.1 日志系统的概述 275
11.1.1 系统日志的作用 275
11.1.2 日志文件系统的工作过程 275
11.1.3 RHEL7日志文件 276
11.2 查看系统日志文件 277
11.2.1 系统日志优先级 277
11.2.2 syslog协议 278
11.2.3 rsyslog服务 278
11.2.4 日志文件轮转 282
11.3 系统日志条目的分析 285
11.3.1 日志条目消息的结构 285
11.3.2 利用tail命令监控日志文件 286
11.3.3 使用logger命令发送系统日志消息 286
11.4 通过journactl命令查看systemd日志条目 287
11.4.1 joumactl命令 287
11.4.2 查找日志事件 289
11.4.3 verbose输出格式 291
11.5 systemd日志保存 292
11.5.1 永久存储系统日志 292
11.5.2 保持准确时间 293
11.5.3 Chrony 296
本章小结 300
第12章 Linux网络管理 301
12.1 计算机网络的基本概述 303
12.1.1 TCP/IP参考模型简介 303
12.1.2 IP信息包的传递方式 304
12.1.3 IP地址表示法 304
12.1.4 IP地址的等级 305
12.1.5 子网 309
12.1.6 IPv4与IPv6 310
12.1.7 网络接口名称 311
12.2 测试与检查网络配置 311
12.2.1 ip命令 311
12.2.2 显示IP地址与网络性能的统计信息 312
12.2.3 ping命令 313
12.2.4 路由排除故障 316
12.2.5 端口和服务故障的排除 318
12.3 使用nmcli配置网络 320
12.3.1 网络管理命令行工具 320
12.3.2 NetworkManager 321
12.3.3 通过nmcli查看网络信息 322
12.3.4 通过nmcli创建网络连接 323
12.3.5 通过nmcli修改网络接口 324
12.4 编辑网络配置文件 325
12.5 配置主机名称和名称解释 325
12.5.1 hostname命令 325
12.5.2 快速设置主机名称 326
12.5.3 配置主机名称解释举例 328
12.5.4 举例说明配置主机名称和名称解释过程 329
本章小结 331
第13章 文件复制与归档 332
13.1 数据的压缩与备份 334
13.1.1 数据的压缩 334
13.1.2 数据的备份 334
13.2 tar存档 335
13.2.1 tar命令 336
13.2.2 使用tar命令归档文件和目录 337
13.2.3 列出tar存档的内容 338
13.2.4 提取用tar创建的文档 338
13.2.5 创建压缩的tar存档 339
13.2.6 备份tar文档及从中恢复文件 340
13.3 在系统之间复制文件 341
13.3.1 scp命令 341
13.3.2 使用scp命令远程复制文件 342
13.3.3 使用sftp命令远程传输文件 343
13.4 在系统之间安全地同步文件 344
13.4.1 rsync 344
13.4.2 rsync命令 345
13.4.3 使用rsync安全地同步两个目录 348
本章小结 349
第14章 软件包的安装和更新 350
14.1 系统与软件更新关联 352
14.1.1 Red Hat订阅管理 352
14.1.2 基于图形界面的注册和订阅 352
14.1.3 自动注册和订阅 353
14.1.4 授权证书 354
14.2 RPM软件包与yum 354
14.2.1 软件包与RPM 354
14.2.2 yum软件包管理器 356
14.2.3 yum命令 356
14.3 利用yum命令管理软件包 357
14.3.1 列出存储库、软件包和软件包组 358
14.3.2 使用yum管理软件更新 358
14.4 启用yum软件存储库 364
14.4.1 启用Red Hat存储库 364
14.4.2 启用第三方软件存储库 365
14.5 检查RPM软件包文件 366
14.5.1 使用RPM检查下载的软件包 366
14.5.2 从RPM文件包提取文件 368
14.5.3 RPM查询命令 368
本章小结 368
第15章 访问Linux文件系统 369
15.1 识别文件系统与设备 370
15.1.1 存储管理的概念 370
15.1.2 ls-l命令 371
15.1.3 检查文件系统 372
15.2 文件系统的挂载和卸载 374
15.2.1 利用mount命令完成挂载文件系统 374
15.2.2 blkid命令 376
15.2.3 文件系统的卸载 377
15.2.4 访问可移动的存储设备 379
15.2.5 挂载文件和卸载文件举例 379
15.3 制作文件间的链接 380
15.3.1 创建硬链接 380
15.3.2 创建软链接 381
15.3.3 创建链接举例 382
15.4 查找系统中的文件 383
15.4.1 locate命令与文件查找 383
15.4.2 使用find命令搜索文件 385
本章小结 390
第16章 Shell编程 391
16.1 创建与执行Shell程序 393
16.2 变量与特殊字符 395
16.2.1 变量赋值 395
16.2.2 访问变量值 396
16.2.3 内部变量 396
16.2.4 位置参数 397
16.2.5 特殊字符 397
16.3 表达式的比较 400
16.3.1 pdksh和Bash 400
16.3.2 tcsh 405
16.4 循环语句 408
16.4.1 for语句 408
16.4.2 while语句 410
16.4.3 until语句 411
16.4.4 repeat语句 411
16.4.5 select语句 411
16.4.6 shift语句 412
16.5 条件语句 412
16.5.1 if语句 412
16.5.2 case语句 414
16.6 函数 416
本章小结 417
参考文献 418