第一篇Ubuntu入门 3
第1章 了解Ubuntu 3
1.1什么是Linux 3
1.2 Linux发行版 5
1.2.1 Debian 6
1.2.2 Ubuntu 6
1.2.3 Arch Linux 7
1.2.4 Fedora 8
1.2.5 OpenSUSE 8
1.2.6 CentOS 9
1.2.7 Red Hat Enterprise Linux 10
1.3 Ubuntu概述 10
1.3.1什么是Ubuntu 10
1.3.2 Ubuntu的版本 11
1.3.3 Ubuntu的特点 12
1.3.4如何获得Ubuntu 13
1.4 GNU GPL和POSIX介绍 14
1.4.1什么是GNU GPL 14
1.4.2 GNU GPL发展历史 14
1.4.3如何正确理解GNU GPL 15
1.4.4了解POSIX标准 15
1.5学习Ubuntu的方法 15
第2章 安装Ubuntu 17
2.1准备安装Ubuntu 17
2.1.1获得安装介质 17
2.1.2 Ubuntu的硬件要求 19
2.1.3 Ubuntu的安装方式 20
2.2虚拟机软件 20
2.2.1常见虚拟机软件 20
2.2.2选择虚拟机软件 21
2.2.3安装Oracle VM VirtualBox 21
2.3安装Ubuntu的方式 26
2.3.1下载ISO镜像文件 26
2.3.2创建虚拟机 26
2.3.3安装Ubuntu过程 29
2.4通过网络安装Ubuntu 35
2.4.1下载网络安装器 35
2.4.2通过网络安装Ubuntu步骤 35
2.5将Ubuntu安装到U盘中 41
2.5.1 Rufus工具 42
2.5.2制作LiveUSB Ubuntu系统 42
2.6安装过程中的常见问题 44
2.6.1选择32位还是64位的Ubuntu 44
2.6.2应该选择哪种语言 45
2.6.3 Ubuntu中的磁盘分区与Windows中的磁盘分区 45
第3章 桌面环境 46
3.1常见的桌面环境 46
3.1.1 KDE 46
3.1.2 GNOME 48
3.1.3 Xfce 50
3.1.4 Unity 51
3.2使用Unity 52
3.2.1菜单栏 52
3.2.2启动器 54
3.2.3 Dash 55
3.2.4 工作区 56
3.2.5管理窗口 58
3.2.6文件管理器 59
3.2.7搜索文件和文件夹 61
3.2.8定制桌面 63
3.3使用GNOME 65
3.3.1桌面布局 65
3.3.2活动按钮 66
3.3.3工作区 66
3.3.4浮动面板 67
3.3.5显示应用程序 68
3.3.6锁定、关闭或者重启电脑 69
第4章 文件系统基础知识 70
4.1文件系统的层次结构 70
4.1.1树形层次结构 70
4.1.2路径名 72
4.1.3 Linux目录结构 74
4.2文件类型 75
4.2.1普通文件 75
4.2.2目录文件 78
4.2.3字符设备文件 79
4.2.4块设备文件 80
4.2.5管道 81
4.2.6套接字 84
4.2.7文件链接 84
4.3文件权限 87
4.3.1文件权限概述 88
4.3.2显示文件权限 89
4.3.3修改文件权限 91
4.3.4更改文件所有权 94
4.3.5文件特殊权限 95
第5章 文件和目录管理 98
5.1创建文件 98
5.1.1使用touch命令创建文件 99
5.1.2使用重定向创建文件 99
5.1.3使用vi命令创建文件 101
5.2显示文件列表 103
5.2.1使用Is命令显示文件列表 103
5.2.2显示隐藏文件 106
5.2.3递归显示目录内容 107
5.3显示文件内容 108
5.3.1拼接文件内容:cat命令 108
5.3.2分屏显示:more命令 111
5.3.3前后翻页分屏显示:less命令 113
5.3.4查看前几行内容:head命令 113
5.3.5查看最后几行内容:tail命令 114
5.4文件的常用操作 116
5.4.1复制文件 116
5.4.2移动文件 118
5.4.3删除文件 119
5.4.4比较文件 120
5.4.5重命名文件 122
5.5搜索文件 122
5.5.1快速搜索文件:locate命令 122
5.5.2按类型搜索:whereis命令 125
5.5.3搜索二进制文件:which命令 125
5.5.4全功能搜索:find命令 126
5.6文本内容筛选 127
5.6.1使用grep命令检索文本内容 128
5.6.2筛选其他命令的输出结果 129
5.6.3在grep命令中使用正则表达式 130
5.7文本排序 132
5.7.1使用sort命令文本排序 133
5.7.2合并有序文件 134
5.8文件的压缩和解压 135
5.8.1压缩文件 135
5.8.2解压文件 138
5.9目录管理 139
5.9.1显示当前工作目录 139
5.9.2改变目录 139
5.9.3创建目录 140
5.9.4移动目录 141
5.9.5复制目录 141
5.9.6删除目录 141
第6章 用户和权限管理 142
6.1用户和用户组基础 142
6.1.1用户和用户标识号 142
6.1.2用户组和组标识号 143
6.1.3 /etc/passwd文件 144
6.1.4 /etc/shadow文件 145
6.1.5 /etc/group文件 146
6.2用户管理 147
6.2.1添加用户:useradd命令 147
6.2.2添加用户:adduser命令 148
6.2.3修改用户:usermod命令 150
6.2.4删除用户:userdel命令 151
6.2.5修改用户密码:passwd命令 152
6.2.6显示用户信息:id命令 153
6.2.7用户间切换:su命令 154
6.2.8受限的特权:sudo命令 154
6.3用户组管理 157
6.3.1添加用户组:groupadd命令 157
6.3.2添加用户组:addgroup命令 157
6.3.3修改用户组:groupmod命令 157
6.3.4删除用户组:groupdel命令 158
6.4权限管理 158
6.4.1权限概述 158
6.4.2改变文件所有者:chown命令 160
6.4.3改变文件所属组:chgrp命令 161
6.4.4设置权限掩码:umask命令 162
6.4.5修改文件访问权限:chmod命令 163
6.4.6修改文件ACL: setfacl命令 165
6.4.7查询文件ACL: getfacl命令 166
第二篇 进阶篇 169
第7章 系统启动和关闭 169
7.1Ubuntu启动过程 169
7.1.1BIOS阶段 169
7.1.2引导程序阶段 170
7.1.3内核阶段 173
7.1.4进入系统 174
7.2引导相关组件 174
7.2.1主引导记录 174
7.2.2 GRUB启动程序 175
7.3登录 181
7.3.1 login进程 181
7.3.2选择Shell 183
7.3.3用户初始化文件 185
7.4关闭系统 187
7.4.1 shutdown命令 187
7.4.2 init命令 188
7.4.3其他命令 188
第8章 服务和进程管理 189
8.1初始化程序概述 189
8.1.1初始化程序 190
8.1.2 systemd 196
8.1.3 systemd基本配置文件 197
8.2 systemd单元 198
8.2.1单元类型 198
8.2.2列出单元 200
8.2.3查看单元状态 203
8.2.4单元依赖 205
8.2.5单元配置文件 207
8.3 systemd单元管理 209
8.3.1启动服务 210
8.3.2停止服务 210
8.3.3重启服务 210
8.3.4重新加载服务配置文件 211
8.3.5查看服务状态 211
8.3.6配置服务自动启动 212
8.3.7禁止服务自动启动 213
8.3.8重新加载单元配置文件 214
8.3.9显示服务属性 214
8.3.10设置服务属性 216
8.4常用systemd命令 216
8.4.1 systemd-analyze命令分析系统启动时的性能 216
8.4.2 hostnamectl命令 219
8.4.3 localectl命令 220
8.4.4 timedatectl命令 220
8.4.5 loginctl命令 221
8.5目标 222
8.5.1理解目标 222
8.5.2切换目标 225
8.5.3默认目标 226
8.6日志管理 226
8.6.1读取日志 226
8.6.2过滤输出 227
8.6.3日志大小限制 229
8.6.4手动清理日志 230
8.7进程管理 231
8.7.1查询进程及其状态 231
8.7.2监控进程及系统资源 233
8.7.3终止进程 238
8.7.4调整进程优先级 239
第9章 软件包管理 241
9.1软件包管理概述 241
9.1.1软件包管理基本概念 241
9.1.2软件包管理工具 243
9.2 apt-get命令 245
9.2.1搜索软件包 245
9.2.2 apt-get命令基本语法 247
9.2.3安装软件包 248
9.2.4重新安装软件包 249
9.2.5删除软件包 250
9.2.6更新和升级软件包 251
9.3 apt命令 253
9.3.1 apt命令基本语法 253
9.3.2搜索软件包 253
9.3.3安装软件包 254
9.3.4删除软件包 254
9.3.5更新和升级软件包 255
9.4 aptitude命令 255
9.4.1 aptitude命令基本语法 255
9.4.2搜索软件包 257
9.4.3安装软件包 259
9.4.4删除软件包 259
9.4.5更新和升级软件包 260
9.4.6图形化界面 260
9.5 synaptic软件管理工具 261
9.5.1安装软件包 261
9.5.2删除软件包 264
9.5.3更新和升级软件包 265
第10章 磁盘和文件系统管理 266
10.1磁盘管理基础 266
10.1.1磁头 266
10.1.2磁道 267
10.1.3柱面 267
10.1.4扇区 267
10.1.5磁盘分区 268
10.2文件系统基础知识 268
10.2.1常见文件系统 269
10.2.2块 271
10.2.3引导块 272
10.2.4超级块 272
10.2.5索引节点 272
10.3创建文件系统 273
10.3.1创建分区 273
10.3.2 mkfs命令 278
10.3.3创建ext2/ext3/ext4文件系统 281
10.3.4创建NTFS文件系统 282
10.3.5创建FAT文件系统 282
10.3.6调整文件系统 284
10.4挂载与卸载文件系统 285
10.4.1挂载点 285
10.4.2 mount和findmnt命令 286
10.4.3 /etc/fstab文件 289
10.4.4手工挂载文件系统 290
10.4.5自动挂载文件系统 291
10.4.6卸载文件系统 291
10.5检查与修复文件系统 292
10.5.1 fsck和e2fsck命令 293
10.5.2交互式检查与修复文件系统 294
10.5.3自动检查与修复文件系统 294
10.5.4恢复严重受损的超级块 295
10.6磁盘阵列 296
10.6.1磁盘阵列概述 296
10.6.2磁盘阵列级别 296
10.6.3创建磁盘阵列 299
10.7逻辑卷管理 305
10.7.1逻辑卷管理基本概念 305
10.7.2安装LVM 306
10.7.3创建物理卷 306
10.7.4创建卷组 309
10.7.5创建逻辑卷 310
10.7.6扩展逻辑卷 311
10.7.7压缩逻辑卷 312
第11章 网络管理 314
11.1网络接口 314
11.1.1查看网络接口 314
11.1.2网络接口命名 319
11.1.3配置网络接口IP地址 319
11.1.4域名解析 323
11.2常用网络配置命令 324
11.2.1 ifconfig命令 324
11.2.2 ip命令 326
11.2.3 route命令 333
11.2.4 netstat命令 335
11.2.5 nslookup命令 338
11.2.6 ping命令 339
11.3防火墙 340
11.3.1 ufw简介 340
11.3.2 ufw配置 340
11.3.3 ufw与应用系统的整合 342
11.3.4 ufw日志管理 344
第三篇精通Linux 347
第12章Shell编程 347
12.1 Shell编程基础 347
12.1.1 Shell 347
12.1.2 Shell脚本 348
12.1.3 Shell脚本的执行方法 349
12.1.4位置参数 350
12.1.5内部命令 351
12.2变量 353
12.2.1变量分类 353
12.2.2变量声明 354
12.2.3变量赋值 355
12.2.4变量的引用和替换 355
12.2.5变量的间接引用 356
12.2.6特殊变量替换 357
12.2.7单引号和双引号 358
12.2.8命令替换 359
12.3算术运算 359
12.3.1 let命令 360
12.3.2 expr命令 360
12.3.3 S(())表达式 361
12.3.4$?表达式 361
12.4数组 361
12.4.1定义数组 362
12.4.2获取数组长度 363
12.4.3遍历数组 363
12.4.4删除元素 365
12.4.5数组切片 365
12.4.6数组替换 366
12.5条件测试 366
12.5.1条件测试语法 367
12.5.2文件测试 367
12.5.3字符串测试 370
12.5.4整数值测试 371
12.5.5逻辑运算符 372
12.6条件语句 372
12.6.1 if语句 373
12.6.2 case语句 375
12.7循环语句 377
12.7.1 for语句 377
12.7.2 while语句 379
12.7.3 until语句 381
12.7.4 select语句 382
12.7.5嵌套循环 384
12.7.6 continue和break语句 384
12.8信号的捕获与处理 387
12.8.1信号 387
12.8.2捕获信号 388
第13章 网络服务管理 391
13.1 SSH服务 391
13.1.1SSH协议 391
13.1.2配置SSH服务 392
13.1.3管理SSH服务 395
13.1.4使用账号密码登录SSH服务 396
13.1.5使用密钥对登录SSH服务 397
13.2 FTP文件传输服务 402
13.2.1 FTP文件传输协议 402
13.2.2安装vsftpd 402
13.2.3 vsftpd配置文件 403
13.2.4管理FTP用户:匿名用户、本地用户、虚拟用户 406
13.2.5演示:使用FTP传输文件 411
13.3 DNS域名服务 416
13.3.1域名、IP地址、域名服务器 417
13.3.2 BIND以及组件 418
13.3.3 BIND配置文件 418
13.3.4配置区域 424
13.3.5资源记录 425
13.3.6演示:DNS服务器配置实例 427
13.4 NFS服务 430
13.4.1安装NFS服务 431
13.4.2共享文件系统 431
13.4.3挂载NFS文件系统 433
13.4.4 NFS文件系统权限 434
13.5其他网络服务管理 437
13.5.1 Samba资源共享 437
13.5.2 Apache万维网服务 441
13.5.3 MySQL数据库服务 444
第14章 虚拟化和云计算 447
14.1虚拟化基础知识 447
14.1.1虚拟化技术 447
14.1.2常用虚拟化方案 447
14.2 KVM 448
14.2.1 KVM及其相关组件 448
14.2.2安装KV M 448
14.2.3创建虚拟机 449
14.2.4管理虚拟机 451
14.3 Docker 452
14.3.1 Docker以及基础知识 452
14.3.2安装Docker 453
14.3.3使用镜像 454
14.3.4管理容器 456
14.3.5使用网络:外部访问容器 459
14.3.6使用网络:容器互联 461
14.4 LXC和LXD 461
14.4.1 LXC和LXD简介 462
14.4.2安装LXD 462
14.4.3创建容器 463
14.4.4列出容器 464
14.4.5查看容器 466
14.4.6管理容器 466
14.4.7与容器交互 467
14.4.8管理镜像 469
14.5 OpenStack 471
14.5.1 OpenStack的核心组件 471
14.5.2通过DevStack部署OpenStack 473
14.5.3仪表盘 474
14.5.4实例管理 478
14.5.5镜像管理 486
14.5.6卷管理 488
14.5.7网络管理:网络拓扑 489
14.5.8网络管理:网络的修改和删除 490
14.5.9网络管理:路由 494
14.5.10网络管理:安全组 496
第15章 系统和网络安全 499
15.1用户管理安全 499
15.1.1管理好root用户 499
15.1.2用户资料安全 500
15.1.3密码策略 501
15.2防火墙 503
15.2.1ufw 503
15.2.2 IP伪装 504
15.2.3日志 504
15.3 AppArmor 505
15.3.1安装AppArmor 505
15.3.2使用AppArmor 505
15.3.3 AppArmor配置文件 507
15.4数字证书 509
15.4.1获取数字证书 509
15.4.2生成密钥 509
15.4.3生成证书签署请求 510
15.4.4安装证书 511
15.5弱点扫描 511
15.5.1安装OpenVAS 512
15.5.2 OpenVAS仪表盘 514
15.5.3扫描任务管理 514
15.5.4扫描报表 516
15.6入侵检测 518
15.6.1安装Snort 518
15.6.2 Snort配置文件 519
15.6.3 Snort检测规则 519
15.6.4测试Snort 521