新书推荐
《Linux实战》
点击上图了解及购买
以实践项目驱动,聚焦Linux管理核心技能,通过12个实际项目带你精通Linux系统安全、管理与运维。
编辑推荐
如果不亲自动手实践,你就学不到任何知识,Linux也不例外。所有认真的用户,包括开发人员、管理人员以及DevOps专业人员,都需要具备诸如保护文件、文件夹以及服务器、安装补丁与应用以及网络管理等技能。通过学习本书中的实践教程,你就可以卷起袖子,一个项目接一个项目地进行学习。
本书中共有12个实际项目,包括自动备份与恢复系统、建立一个私有的Dtropbox风格的文件云以及构建你自己的MediaWiki服务器等。当你开展诸如虚拟化、灾难恢复、安全、备份、DevOps以及系统故障诊断等核心实践时,你将会接触到一些有趣的例子。每章都以回顾主要名词、安全最佳实践、命令行以及习题结束。
读完本书你将学到
- 虚拟化:使用虚拟化技术构建沙箱计算机环境(第2章);启动chroot会话来恢复损坏的配置及文件系统,或者重设一个身份认证密码(第6章和第9章);了解基础设施编排(第16章)。
- 连接:掌握创建、管理并排除如下这些连接故障所需要的核心Linux工具:从远程服务器管理(第3章)到脚本化的归档文件备份(第4章),从提供Web服务器(第7章)和文件共享(第8章)到系统监控(第11章)。
- 加密:SSH会话加密(第3章)、加密网络文件共享(第8章)、网站加密以及TLS证书(第9章)、VPN(第10章)。
- 网络化:如何将Linux用作构建诸如VPN和DMZ等复杂连接解决方案的平台(第10章);使用NFS在私有网络上进行数据共享的可能(第12章);一整套网络性能优化工具(第14章)。
- 映像管理:如何将文件系统的完整映像用于数据的备份与恢复,如克隆与共享VirtualBox虚拟机(第2章)。
- 系统监控:用监控工具应对与安全和系统性能相关的问题(第13章)。
名人推荐
“这本书是理解Linux的必备指南,书中提供了大量的实际项目案例。”
——Dario Victor Durán, HiQ 斯德哥尔摩
“讲授各种各样的Linux特性,使你的生活更加轻松,非常实用。”
——Jens Christian B. Madsen, IT Relation
“Linux系统管理的首选书籍。”
——Gustavo Patino, 奥克兰大学威廉博蒙特医学院
“涵盖你着手维护Linux时所需的一切知识和技能。它不是关于如何使用Linux而是关于如何管理Linux的书。"
——Maciej Jurkowski, Grupa Pracuj
作者简介
戴维•克林顿(David Clinton)是一名系统管理员、教师及作家。他已经为很多重要的技术主题撰写和创建了培训资料,涉及Linux系统、云计算(特别是AWS)以及诸如Docker等容器技术。他是《Learn Amazon Web Services in a Month of Lunches》(Manning,2017)一书的作者。在网站https://www.pluralsight.com/可以找到他的许多视频培训课程。同时,可以在https://bootstrap-it.com找到他编著的其他书籍(关于Linux管理及服务器虚拟化)的链接。
目录
译者序
前言
第1章 欢迎使用Linux1
1.1 是什么让Linux与其他操作系统不同2
1.2 基本的实践技能3
1.2.1 Linux文件系统4
1.2.2 探索:Linux导航工具5
1.2.3 完成任务:Linux文件管理工具9
1.2.4 键盘技巧13
1.2.5 伪文件系统13
1.2.6 向他们展示谁才是老大:sudo14
1.3 获取帮助15
1.3.1 man文件15
1.3.2 info命令16
1.3.3 互联网17
1.4 小结18
第2章 Linux虚拟化:构建Linux工作环境21
2.1 什么是虚拟化22
2.2 使用VirtualBox25
2.2.1 使用Linux包管理器25
2.2.2 定义虚拟机32
2.2.3 安装操作系统35
2.2.4 克隆和共享VirtualBox虚拟机38
2.3 使用Linux容器40
2.3.1 LXC入门40
2.3.2 创建第一个容器41
2.4 小结44
第3章 远程连接:安全访问联网的计算机48
3.1 加密的重要性48
3.2 OpenSSH入门49
3.3 使用SSH登录一台远程服务器52
3.4 免密码SSH访问53
3.4.1 生成新的密钥对54
3.4.2 在网络上复制公钥55
3.4.3 使用多个加密密钥57
3.5 使用SCP安全地拷贝文件57
3.6 使用SSH连接上的远程图形程序58
3.7 Linux进程管理59
3.7.1 用ps命令查看进程60
3.7.2 使用systemd62
3.8 小结63
第4章 归档管理:备份或拷贝整个文件系统66
4.1 为什么要归档66
4.1.1 压缩67
4.1.2 归档文件:一些重要注意事项68
4.2 将什么归档69
4.3 备份到何处71
4.4 使用tar命令归档文件和文件系统71
4.4.1 几个简单的归档和压缩示例72
4.4.2 流式传输文件系统的归档文件73
4.4.3 使用find命令聚合文件75
4.4.4 保护权限与所有权并展开归档文件76
4.5 使用dd命令归档分区80
4.5.1 dd操作80
4.5.2 使用dd擦除硬盘81
4.6 使用rsync命令同步归档文件81
4.7 规划注意事项83
4.8 小结84
第5章 自动化管理:自动异地备份的配置87
5.1 用Bash编写脚本88
5.1.1 备份系统文件的脚本示例88
5.1.2 用于更改文件名的示例脚本92
5.2 将数据备份至AWS S393
5.2.1 安装AWS命令行接口94
5.2.2 配置你的AWS账户94
5.2.3 建立你的第一个bucket96
5.3 使用cron调度定期备份96
5.4 使用anacron预定非正常备份99
5.5 利用系统计时器设定常规备份100
5.6 小结102
第6章 应急工具:构建一个系统恢复设备105
6.1 在恢复/救援模式下工作106
6.1.1 GRUB引导加载程序107
6.1.2 在Ubuntu环境下使用恢复模式108
6.1.3 在CentOS下使用救援模式108
6.1.4 找到命令行救援工具109
6.2 创建一个原生系统引导恢复设备110
6.2.1 系统救援映像110
6.2.2 将原生系统引导映像写入USB驱动112
6.3 让你的原生系统引导设备运行115
6.3.1 检测系统存储区115
6.3.2 受损的分区117
6.3.3 从损坏的文件系统中恢复文件119
6.4 密码恢复:使用chroot安装文件系统120
6.5 小结122
第7章 Web服务器:建立MediaWiki服务器125
7.1 建立LAMP服务器126
7.2 手动设置Apache Web服务器127
7.2.1 在Ubuntu上安装Apache Web服务器127
7.2.2 填充你的网站文档root128
7.3 安装SQL数据库129
7.3.1 强化SQL131
7.3.2 SQL管理131
7.4 安装PHP134
7.4.1 在Ubuntu中安装PHP134
7.4.2 测试你的PHP安装134
7.5 安装和配置MediaWiki135
7.5.1 缺少扩展的故障排除136
7.5.2 将MediaWiki连接到数据库138
7.6 在CentOS上安装Apache Web服务器140
7.6.1 了解网络端口141
7.6.2 网络流量控制142
7.6.3 在CentOS上安装MariaDB142
7.6.4 在CentOS上安装PHP143
7.7 小结145
第8章 网络文件共享:构建Nextcloud文件共享服务器148
8.1 企业文件共享和Nextcloud149
8.2 使用snaps安装Nextcloud149
8.3 手动安装Nextcloud152
8.3.1 硬件预备知识152
8.3.2 建立LAMP服务器153
8.3.3 配置Apache154
8.3.4 下载和解压缩Nextcloud156
8.4 Nextcloud管理158
8.5 将AWS S3作为Nextcloud的主存储介质161
8.6 小结163
第9章 保护Web服务器166
9.1 显而易见的事情167
9.2 控制网络访问168
9.2.1 配置防火墙168
9.2.2 使用非标准端口175
9.3 加密传输中的数据177
9.3.1 准备你的网站域178
9.3.2 用Let抯 Encrypt生成证书179
9.4 强化认证过程180
9.4.1 使用SELinux控制文件系统对象181
9.4.2 安装并激活SELinux182
9.4.3 应用SELinux策略184
9.4.4 系统组与最少特权原则185
9.4.5 隔离容器中的进程187
9.4.6 扫描危险的用户ID值187
9.5 审计系统资源188
9.5.1 扫描打开的端口188
9.5.2 扫描激活的服务189
9.5.3 搜索已安装的软件190
9.6 小结190
第10章 保护网络连接:创建VPN或DMZ194
10.1 构建OpenVPN隧道195
10.1.1 配置OpenVPN服务器196
10.1.2 配置OpenVPN客户端202
10.1.3 测试你的VPN203
10.2 构建抗入侵网络205
10.2.1 非军事区205
10.2.2 使用iptables207
10.2.3 使用iptables创建DMZ208
10.2.4 使用shorewall创建DMZ210
10.3 为基础设施测试构建虚拟网络213
10.4 小结215
第11章 系统监控:使用日志文件218
11.1 使用系统日志219
11.1.1 使用journald记录日志220
11.1.2 使用syslogd记录日志222
11.2 管理日志文件224
11.2.1 journald 方法224
11.2.2 syslogd方法224
11.3 处理大文件226
11.3.1 使用grep226
11.3.2 使用awk227
11.3.3 使用sed228
11.4 使用入侵检测进行监控229
11.4.1 搭建邮件服务器229
11.4.2 安装Tripwire230
11.4.3 配置Tripwire232
11.4.4 生成Tripwire测试报告235
11.5 小结235
第12章 在私有网络上共享数据239
12.1 通过网络文件系统共享文件240
12.1.1 设置NFS服务器241
12.1.2 建立客户端242
12.1.3 在引导时挂载NFS共享243
12.1.4 NFS安全性245
12.2 使用Samba与Windows用户共享文件247
12.2.1 测试你的Samba配置248
12.2.2 从Windows访问Samba服务器249
12.3 使用符号链接与自己共享文件250
12.4 小结251
第13章 解决系统性能问题255
13.1 CPU负载问题256
13.1.1 测量CPU负载256
13.1.2 管理CPU负载257
13.1.3 制造麻烦(模拟CPU负载)260
13.2 内存问题260
13.2.1 评估内存状态260
13.2.2 评估交换状态261
13.3 存储可用性问题261
13.3.1 索引节点的限制262
13.3.2 解决方案264
13.4 网络负载问题265
13.4.1 测量带宽265
13.4.2 解决方案266
13.4.3 与tc形成网络流量267
13.5 监控工具268
13.5.1 收集监测数据268
13.5.2 将数据进行可视化269
13.6 小结270
第14章 排除网络故障274
14.1 理解TCP/IP寻址275
14.1.1 什么是NAT寻址275
14.1.2 使用NAT寻址275
14.2 建立网络连接278
14.3 排除传出连通性故障278
14.3.1 跟踪网络状态280
14.3.2 分配IP地址281
14.3.3 配置DNS服务284
14.3.4 管道286
14.4 排除传入连通性故障286
14.4.1 内部连通性扫描:netstat 287
14.4.2 外部连通性扫描:netcat287
14.5 小结288
第15章 排除外围设备故障292
15.1 识别连接的设备292
15.2 用Linux内核模块管理外设294
15.2.1 查找内核模块295
15.2.2 手动加载内核模块297
15.3 引导时手动管理内核参数298
15.3.1 引导时传递参数298
15.3.2 通过文件系统传递参数299
15.4 管理打印机300
15.4.1 lp基础301
15.4.2 使用CUPS管理打印机301
15.5 小结303
第16章 DevOps工具:使用Ansible部署一个脚本化的服务器环境305
16.1 部署协调器可以为你做什么306
16.2 Ansible:安装和设置308
16.2.1 设置对宿主机的无密码访问309
16.2.2 组织Ansible的宿主机309
16.2.3 测试连接性310
16.3 认证311
16.4 Ansible playbook312
16.4.1 编写一个简单的playbook313
16.4.2 创建多层、角色驱动的playbook314
16.4.3 用Ansible管理密码316
16.5 小结317
总结320
附录 每章命令行回顾324

你与世界
只差一个
公众号