第Ⅰ部分 入门 3
第1章 开始使用Linux 3
1.1理解什么是Linux 4
1.2了解如何区分Linux和其他操作系统 5
1.3探讨Linux历史 5
1.3.1 Bell实验室中自由流动的UNIX文化 6
1.3.2商业化的UNIX 8
1.3.3 GNU将UNIX转变为免费 9
1.3.4 BSD失去了一些动力 10
1.3.5 Linus弥补了缺失的部分 11
1.3.6 OSI开源定义 11
1.4理解Linux发行版本是如何出现的 12
1.4.1选择Red Hat发行版本 13
1.4.2选择Ubuntu或者其他Debian发行版本 15
1.5利用Linux找到职业机会 15
1.5.1了解如何利用Linux挣钱 16
1.5.2获得Red Hat认证 17
1.6小结 20
第2章 创建完美的Linux桌面 21
2.1了解Linux桌面技术 22
2.2开始使用Fedora GNOME桌面Live镜像 23
2.3使用GNOME3桌面 24
2.3.1计算机启动之后 24
2.3.2设置GNOME3桌面 30
2.3.3扩展GNOME3桌面 31
2.3.4启动桌面应用程序 33
2.3.5停止GNOME3桌面 37
2.4使用GNOME2桌面 37
2.4.1使用Metacity窗口管理器 38
2.4.2更改GNOME外观 39
2.4.3使用GNOME面板 40
2.4.4使用AIGLX添加3D效果 43
2.5小结 45
2.6习题 45
第Ⅱ部分 成为一名Linux高级用户 49
第3章 使用Shell 49
3.1 Shell和Terminal窗口 50
3.1.1使用Shell提示符 50
3.1.2使用Terminal窗口 51
3.1.3使用虚拟控制台 52
3.2选择Shell 52
3.3运行命令 53
3.3.1了解命令语法 53
3.3.2查找命令 56
3.4使用命令历史记录重复执行命令 58
3.4.1命令行编辑 58
3.4.2命令行补齐 60
3.4.3命令行重复执行 61
3.5连接和扩展命令 62
3.5.1命令之间的管道 62
3.5.2连续命令 63
3.5.3后台命令 63
3.5.4扩展命令 64
3.5.5扩展算术表达式 64
3.5.6扩展变量 64
3.6使用Shell变量 64
3.6.1创建和使用别名 66
3.6.2退出Shell 66
3.7创建自己的Shell环境 67
3.7.1配置Shell 67
3.7.2设置提示符 68
3.7.3添加环境变量 69
3.8获取关于命令的信息 70
3.9小结 71
3.10习题 71
第4章 在文件系统中移动 73
4.1使用基本的文件系统命令 75
4.2使用元字符和运算符 77
4.2.1使用文件匹配元字符 77
4.2.2使用文件重定向元字符 78
4.2.3使用括号扩展字符 79
4.3列出文件和目录 80
4.4了解文件权限和所有权 83
4.4.1使用命令chmod(数字)更改权限 84
4.4.2使用chmod(字母)更改权限 85
4.4.3使用umask设置默认的文件权限 85
4.4.4更改文件所有权 86
4.5移动、复制和删除文件 87
4.6小结 88
4.7习题 88
第5章 使用文本文件 91
5.1使用vim和vi编辑文件 91
5.1.1开始使用vi 92
5.1.2在文件中跳过 96
5.1.3搜索文本 96
5.1.4使用ex模式 96
5.1.5学习更多关于vi和vim的知识 97
5.2查找文件 97
5.2.1使用locate命令根据名称查找文件 97
5.2.2使用find命令搜索文件 98
5.2.3使用grep命令在文件中搜索 103
5.3小结 104
5.4习题 104
第6章 管理运行中的进程 107
6.1理解进程 107
6.2列出进程 108
6.2.1使用ps命令列出进程 108
6.2.2使用top命令列出和更改进程 109
6.2.3使用System Monitor列出进程 110
6.3管理后台和前台进程 112
6.3.1启动后台进程 112
6.3.2使用前台和后台命令 113
6.4杀死和改变进程 114
6.4.1使用kill和killall命令杀死进程 114
6.4.2使用nice和renice命令设置处理器优先级 115
6.5使用cgroups限制进程 116
6.6小结 118
6.7习题 118
第7章 编写简单的Shell脚本 119
7.1理解Shell脚本 119
7.1.1执行和调试Shell脚本 119
7.1.2理解Shell变量 120
7.1.3在Shell脚本中执行算法 123
7.1.4在Shell脚本中使用编程结构 124
7.1.5使用一些有用的文本操作程序 129
7.1.6使用简单的Shell脚本 130
7.2小结 132
7.3习题 132
第Ⅲ部分 成为一名Linux系统管理员 137
第8章 学习系统管理 137
8.1理解系统管理 137
8.2使用图形化管理工具 138
8.2.1使用system-config-*工具 139
8.2.2使用基于浏览器的管理工具 140
8.3使用root用户账户 140
8.3.1通过Shell成为root用户(su命令) 141
8.3.2通过GUI允许管理访问权限 142
8.3.3使用sudo获取管理访问权限 142
8.4探索管理命令、配置文件和日志文件 143
8.4.1管理命令 144
8.4.2管理配置文件 144
8.4.3管理日志文件和SystemdJournal 148
8.5使用其他管理账号 149
8.6检查和配置硬件 150
8.6.1检查硬件 150
8.6.2管理可移动硬件 153
8.6.3使用可加载模块 154
8.7小结 156
8.8习题 156
第9章 安装Linux 159
9.1选择计算机 160
9.2从Live介质安装Fedora 161
9.3从安装介质安装Red Hat Enterprise Linux 164
9.4了解基于云的安装 166
9.5在企业中安装Linux 167
9.6探索共同的安装主题 168
9.6.1升级或者从头开始安装 168
9.6.2双启动 169
9.6.3安装Linux并以虚拟方式运行 170
9.6.4使用安装启动选项 170
9.6.5使用专门的存储器 173
9.6.6对硬盘进行分区 174
9.6.7使用GRUB启动加载程序 176
9.7小结 182
9.8习题 182
第10章 获取和管理软件 183
10.1在桌面管理软件 183
10.2超越Software窗口 184
10.3了解Linux RPM和DEB软件打包 185
10.3.1理解DEB包 186
10.3.2理解RPM包 187
10.4使用YUM管理RPM软件包 188
10.4.1了解yum的工作原理 189
10.4.2借助于第三方的软件库使用YUM 192
10.4.3使用YUM命令管理软件 192
10.5使用rpm命令安装、查询和验证软件 198
10.5.1使用rpm安装和删除软件包 199
10.5.2查询rpm信息 199
10.5.3验证RPM软件包 201
10.6在企业中管理软件 202
10.7小结 203
10.8习题 203
第11章 获取用户账户 205
11.1创建用户账户 205
11.1.1使用useradd命令添加用户 207
11.1.2设置用户默认值 209
11.1.3使用usermod修改用户 210
11.1.4使用userdel删除用户 211
11.2了解组账户 212
11.2.1使用组账户 212
11.2.2创建组账户 213
11.3在企业中管理用户 214
11.3.1使用ACL设置权限 214
11.3.2为用户添加目录以便进行协作 218
11.4集中用户账户 220
11.4.1使用Users窗口 221
11.4.2使用Authentication Configuration窗口 221
11.5小结 222
11.6习题 222
第12章 管理磁盘和文件系统 225
12.1了解磁盘存储器 225
12.2对硬盘进行分区 227
12.2.1理解分区表 227
12.2.2查看磁盘分区 227
12.2.3创建单分区磁盘 229
12.2.4创建一个多分区磁盘 232
12.3使用逻辑卷管理分区 235
12.3.1检查现有的LVM 235
12.3.2创建LVM逻辑卷 238
12.3.3扩大LVM逻辑卷 239
12.4挂载文件系统 240
12.4.1被支持的文件系统 240
12.4.2启用交换区 242
12.4.3禁用交换区 243
12.4.4使用fstab文件定义挂载文件系统 243
12.4.5使用mount命令来挂载文件系统 245
12.4.6以环回方式挂载磁盘镜像 246
12.4.7使用umount命令 246
12.5使用mkfs命令创建文件系统 247
12.6小结 248
12.7习题 248
第Ⅳ部分 成为一名Linux服务器管理员 253
第13章 了解服务器管理 253
13.1开始学习服务器管理 254
步骤1:安装服务器 254
步骤2:配置服务器 255
步骤3:监视服务器 258
13.2使用Secure Shell服务管理远程访问 259
13.2.1启动openssh-server服务 260
13.2.2使用SSH客户端工具 261
13.2.3使用基于密钥(无密码)的身份验证 266
13.3配置系统日志 268
13.3.1使用rsyslog启用系统日志 268
13.3.2使用logwatch查看日志 271
13.4使用sar检查系统资源 272
13.5检查系统空间 274
13.5.1使用df显示系统空间 274
13.5.2使用du检查磁盘使用情况 274
13.5.3使用find确定磁盘消耗 275
13.6管理企业中的服务器 275
13.7小结 276
13.8习题 276
第14章 管理网络 279
14.1配置桌面网络 280
14.1.1检查网络接口 281
14.1.2配置网络接口 285
14.1.3配置网络代理连接 287
14.2使用命令行配置网络 289
14.2.1编辑连接 289
14.2.2了解网络配置文件 291
14.2.3设置别名网络接口 295
14.2.4设置Ethernet通道捆绑 295
14.2.5设置自定义路由 296
14.3配置企业中的网络 297
14.3.1将Linux配置为一个路由器 297
14.3.2将Linux配置为DHCP服务器 298
14.3.3将Linux配置为DNS服务器 298
14.3.4将Linux配置为代理服务器 299
14.4小结 299
14.5习题 300
第15章 启动和停止服务 301
15.1了解初始化守护进程(init或者systemd) 302
15.1.1了解经典的init守护进程 303
15.1.2了解Upstart int守护进程 308
15.1.3了解systemd初始化 313
15.2检查服务的状态 320
15.2.1检查SysVinit系统的服务 320
15.2.2检查Upstart系统的服务 321
15.2.3检查systemd系统的服务 322
15.3停止和启动服务 323
15.3.1停止和启动SysVinit服务 323
15.3.2停止和启动Upstart服务 324
15.3.3停止和启动systemd服务 325
15.4启用持续性服务 327
15.4.1配置SysVinit的持续性服务 328
15.4.2配置Upstart的持续性服务 329
15.4.3配置systemd的持续性服务 329
15.5配置默认的运行级别或者目标单元 331
15.5.1配置SysVinit默认运行级别 331
15.5.2配置Upstart中的默认运行级别 331
15.5.3为systemd配置默认目标单元 332
15.6添加新的或自定义服务 333
15.6.1向SysVinit添加新服务 333
15.6.2向Upstart添加新服务 335
15.6.3向systemd添加新服务 336
15.7小结 339
15.8习题 339
第16章 配置打印服务器 341
16.1通用UNIX打印系统(CUPS) 341
16.2设置打印机 343
16.2.1自动添加打印机 343
16.2.2使用基于Web的CUPS管理 343
16.2.3使用Print Settings窗口 345
16.3使用CUPS打印 351
16.3.1配置CUPS服务器(cupsd.conf) 351
16.3.2启动CUPS服务器 352
16.3.3手动配置CUPS打印机选项 352
16.4使用打印命令 354
16.4.1使用lpr进行打印 354
16.4.2使用Ipc命令列出状态 354
16.4.3使用lprm命令删除打印作业 355
16.5配置打印服务器 355
16.5.1配置共享的CUPS打印机 356
16.5.2配置共享Samba打印机 357
16.6小结 359
16.7习题 359
第17章 配置Web服务器 361
17.1了解Apache Web服务器 361
17.2获取和安装Web服务器 362
17.2.1了解httpd软件包 362
17.2.2安装Apache 365
17.3启动Apache 365
17.3.1确保Apache安全 366
17.3.2了解Apache配置文件 367
17.3.3向Apache添加虚拟主机 371
17.3.4允许用户发布自己的Web内容 373
17.3.5使用SSL/TLS保护Web流量 374
17.4对Web服务器进行故障排除 378
17.4.1检查配置错误 378
17.4.2禁止访问和服务器内部错误 380
17.5小结 381
17.6习题 381
第18章 配置FTP服务器 383
18.1了解FTP 383
18.2安装vsftpd FTP服务器 384
18.3启动vsftpd服务 386
18.4确保FTP服务器安全 388
18.4.1为FTP打开防火墙 388
18.4.2在TCP Wrappers中允许FTP访问 390
18.4.3为FTP服务器配置 SELinux 390
18.4.4使Linux文件权限与vsftpd相关联 392
18.5配置FTP服务器 392
18.5.1设置用户访问 392
18.5.2允许上传 393
18.5.3为Internet设置vsftpd 394
18.6使用FTP客户端连接服务器 395
18.6.1通过Firefox访问FTP服务器 395
18.6.2使用lftp命令访问FTP服务器 396
18.6.3使用gFTP客户端 397
18.7小结 398
18.8习题 399
第19章 配置Windows文件共享(Samba)服务器 401
19.1了解Samba 401
19.2安装Samba 402
19.3启动和停止Samba 404
19.3.1启动Samba(smb)服务 404
19.3.2启动NetBIOS(nmbd)名称服务器 406
19.3.3停止Samba(smb)和NetBIOS(nmb)服务 406
19.4确保Samba服务器的安全 407
19.4.1为Samba配置防火墙 407
19.4.2为Samba配置SELinux 408
19.4.3配置Samba主机/用户权限 410
19.5配置Samba 410
19.5.1使用system-config-samba 411
19.5.2在smb.conf文件中配置Samba 415
19.6访问Samba共享 419
19.6.1在Linux中访问Samba共享 419
19.6.2在Windows中访问Samba共享 421
19.7在企业中使用Samba 422
19.8小结 422
19.9习题 422
第20章 配置NFS文件服务器 425
20.1安装NFS服务器 426
20.2启动NFS服务 427
20.3共享NFS文件系统 428
20.3.1配置/etc/exports文件 429
20.3.2导出共享文件系统 431
20.4确保NFS服务器安全 432
20.4.1为NFS打开防火墙 432
20.4.2在TCP Wrappers中允许NFS访问 434
20.4.3为NFS服务器配置SELinux 434
20.5使用NFS文件系统 435
20.5.1查看NFS共享 435
20.5.2手动挂载NFS文件系统 436
20.5.3在启动时挂载NFS文件系统 437
20.5.4使用autofs按需挂载NFS文件系统 439
20.6卸载NFS文件系统 442
20.7小结 442
20.8习题 443
第21章 Linux的故障排除 445
21.1启动故障排除 445
21.1.1了解启动方法 446
21.1.2从固件(BISO或UEFI)开始 447
21.1.3为GRUB启动加载程序进行故障排除 449
21.1.4启动内核 451
21.2排除软件包的故障 458
21.3排除网络故障 461
21.3.1排除传出连接的故障 461
21.3.2排除传入连接的故障 464
21.4解决内存问题 467
21.5在救援模式中进行故障排除 471
21.6小结 472
21.7习题 472
第Ⅴ部分 学习Linux安全技术 475
第22章 理解基本的Linux安全 475
22.1了解安全基本知识 475
22.1.1实现物理安全 475
22.1.2实现灾难恢复 476
22.1.3保护用户账户的安全 476
22.1.4保护密码 479
22.1.5保护文件系统 484
22.1.6管理软件和服务 487
22.1.7高级执行 488
22.2监视系统 488
22.2.1监视日志文件 488
22.2.2监视用户账户 491
22.2.3监视文件系统 494
22.3审核和审查Linux 500
22.3.1进行合规审查 500
22.3.2进行安全审查 500
22.4小结 501
22.5习题 501
第23章 理解高级的Linux安全 503
23.1利用加密实现Linux安全 503
23.1.1理解哈希 504
23.1.2理解加密/解密 505
23.1.3实现Linux加密 513
23.2使用PAM实现Linux安全 520
23.2.1理解PAM身份验证过程 521
23.2.2在Linux系统上管理PAM 524
23.2.3获取更多关于PAM的信息 535
23.3小结 535
23.4习题 535
第24章 使用SELinux增强Linux安全 537
24.1了解SELinux的优点 537
24.2了解SELinux的工作原理 538
24.2.1了解类型强制 538
24.2.2了解多层次安全 539
24.2.3实现SELinux安全模型 540
24.3配置SELinux 545
24.3.1设置SELinux模式 545
24.3.2设置SELinux策略类型 547
24.3.3管理SElnux安全上下文 548
24.3.4管理SELinux策略规则包 550
24.3.5通过布尔值管理SELinux 552
24.4监视和排除SELinux故障 553
24.4.1了解SELinux日志 553
24.4.2排除SELinux日志记录故障 555
24.4.3解决常见的SELinux问题 555
24.5全部放在一起 557
24.6获取更多关于SELinux的信息 557
24.7小结 558
24.8习题 558
第25章 保护网络上的Linux 561
25.1审核网络服务 561
25.1.1使用nmap评估对网络服务的访问 562
25.1.2使用nmap审核网络服务广告 565
25.1.3控制对网络服务的访问 568
25.2使用防火墙 570
25.2.1了解防火墙 570
25.2.2实现防火墙 571
25.3小结 581
25.4习题 581
第Ⅵ部分将Linux扩展到云 585
第26章 使用Linux进行云计算 585
26.1 Linux和云计算概述 585
26.1.1云虚拟机管理程序 586
26.1.2云控制器 586
26.1.3云存储 586
26.1.4云身份验证 587
26.1.5云开发和配置 587
26.1.6云平台 587
26.2尝试基础的云技术 587
26.3建立一个小型的云 589
26.3.1配置虚拟机管理程序 589
26.3.2配置存储 592
26.3.3创建虚拟机 594
26.3.4管理虚拟机 597
26.3.5迁移虚拟机 597
26.4小结 598
26.5习题 599
第27章 将Linux部署到云 601
27.1在云中运行Linux 601
27.2创建Linux云镜像 602
27.2.1配置和运行cloud-init云实例 603
27.2.2对云实例进行研究 604
27.2.3克隆云实例 605
27.2.4尝试Ubuntu云镜像 606
27.2.5扩展cloud-init配置 607
27.2.6在企业计算中使用cloud-init 609
27.3使用OpenStack来部署云镜像 610
27.4使用Amazon EC2部署云镜像 614
27.5小结 614
第Ⅶ部分 附录 617
附录A介质 617
附录B习题答案 625