描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302588207
这本实战书籍讲述如何在各个服务器上有效设置和管理流行的Linux发行版,并构建整个网络基础设施。本书对上一版做了全面更新,涵盖工具和技术,讲解清晰,步骤详明,示例紧贴实用。本书指导你配置硬件和软件、使用命令行或GUI、维护Internet和网络服务、保护数据,还详述性能调优、虚拟化、容器、软件管理、安全性和备份解决方案。
主要内容 :
安装和配置Linux,包括Fedora、Ubuntu、CentOS、openSUSE、Debian和RHEL的**发行版。
设置及管理核心系统服务、守护进程、用户和组。
从源代码或二进制包管理软件应用程序。
定制、构建或修补Linux内核。
理解和管理Linux网络栈和网络协议,包括TCP/IP、ARP、IPv4和IPv6。
小化安全威胁并使用Netfilter(iptables和nftables)和Linux构建可靠的防火墙和路由器。
创建及维护DNS、FTP、Web、电子邮件、打印、LDAP、VoIP、SSH服务器和服务。
使用GlusterFS、NFS和Samba共享资源。
在流行的云环境(如OpenStack、AWS、Azure、Linode和GCE)中启动和管理基于Linux的服务器。
使用KVM、Docker、Kubernetes和OCI工具来探索虚拟化和容器技术。
下载专门创建的虚拟机映像和容器,可从中复制本书中的各种练习、软件、服务器、命令和脚本。
目 录
第I 部分 简介与安装
第1 章 Linux、发行版和FOSS 简介. 2
1.1 Linux 操作系统 2
1.2 开源软件和GNU 概述 3
1.2.1 GNU 公共许可证 4
1.2.2 上游和下游 4
1.3 开源软件的优势 5
1.4 理解Windows 和Linux 的区别 6
1.4.1 单用户、多用户、网络用户 6
1.4.2 单片内核和微内核 6
1.4.3 GUI 与内核的分离 7
1.4.4 My Network Places 7
1.4.5 注册表与文本文件 8
1.4.6 域和Active Directory 8
1.5 小结 9
第2 章 安装Linux 服务器 10
2.1 硬件和环境考虑事项 10
2.2 服务器设计 10
2.3 安装方法 11
2.4 安装Fedora 发行版 12
2.5 安装 13
2.6 安装摘要 14
2.6.1 本地化部分 14
2.6.2 软件部分 . 14
2.6.3 系统部分 . 15
2.6.4 用户设置部分 20
2.6.5 安装 21
2.7 安装Ubuntu 服务器 .22
2.7.1 开始安装 . 22
2.7.2 配置网络 . 23
2.7.3 配置代理 . 23
2.7.4 配置Ubuntu 存档镜像 23
2.7.5 文件系统设置 23
2.7.6 配置文件的设置 24
2.7.7 SSH 安装 .24
2.7.8 特色服务器快照 25
2.7.9 安装完成 .25
2.8 小结 25
第3 章 在云中部署Linux 服务器 26
3.1 在云的背后 26
3.2 获取、运行新的虚拟Linux服务器 26
3.2.1 免费运行的虚拟Linux 服务器 27
3.2.2 商业云服务提供商 28
3.3 小结 29
第II 部分 单主机管理
第4 章 命令行 32
4.1 Bash 简介 32
4.1.1 作业控制 .33
4.1.2 环境变量 .34
4.1.3 管道 35
4.1.4 重定向 .35
4.2 命令行快捷键 .36
4.2.1 文件名扩展 36
4.2.2 环境变量作为参数 36
4.2.3 多个命令 .36
4.2.4 反引号 .37
4.3 文档工具 37
4.3.1 man 命令 .37
4.3.2 texinfo 系统 38
4.4 文件(类型、所有权和权限) 38
4.4.1 普通文件 .39
4.4.2 目录 39
4.4.3 硬链接 .39
4.4.4 符号链接 .39
4.4.5 块设备 .39
4.4.6 字符设备 .40
4.4.7 列出文件:ls 40
4.4.8 更改所有权:chown 40
4.4.9 更改组设置:chgrp 41
4.4.10 更改模式:chmod 41
4.5 文件的管理和操作 43
4.5.1 复制文件:cp 43
4.5.2 移动文件:mv 43
4.5.3 链接文件:ln 44
4.5.4 查找文件:find .44
4.5.5 文件压缩:gzip 44
4.5.6 文件压缩:bzip2 45
4.5.7 文件压缩:xz 45
4.5.8 创建目录:mkdir 45
4.5.9 删除文件或目录:rm 45
4.5.10 显示当前工作目录:pwd .46
4.5.11 磁带归档:tar .46
4.5.12 串联文件:cat .47
4.5.13 一次一屏地显示文件:more 或less 48
4.5.14 显示文件的目录位置:which 48
4.5.15 定位命令:whereis 48
4.6 编辑器 48
4.6.1 vi .49
4.6.2 emacs 49
4.6.3 pico 49
4.6.4 sed 50
4.7 其他工具 50
4.7.1 磁盘利用率:du 50
4.7.2 盘释放:df 51
4.7.3 列出进程:ps 51
4.7.4 显示进程的交互式列表:top …52
4.7.5 给进程发信号:kill 53
4.7.6 显示系统信息:uname 54
4.7.7 谁已登录:who 54
4.7.8 who 的一个变体:w 54
4.7.9 切换用户:su 54
4.8 综合起来(移动用户和其主目录) 55
4.9 小结 57
第5 章 管理软件 58
5.1 Red Hat 软件包管理器 .58
5.2 使用RPM 管理软件 60
5.2.1 查询RPM 的信息 . 60
5.2.2 用RPM 安装软件(一起移动) .. 62
5.2.3 用RPM 卸载软件(结束关系) .. 64
5.2.4 RPM 的其他功能 65
5.3 Yum 67
5.4 DNF 68
5.5 GUI RPM 包管理器 .68
5.5.1 Fedora 或Ubuntu 68
5.5.2 openSUSE 和SLE 69
5.6 Debian 软件包管理系统 69
5.7 Ubuntu 中的软件管理 70
5.7.1 查询信息 . 70
5.7.2 在Ubuntu 中安装软件 70
5.7.3 在Ubuntu 中删除软件 71
5.8 编译和安装GNU 软件 .72
5.8.1 获取并解压源包 72
5.8.2 寻找文档 . 73
5.8.3 配置包 74
5.8.4 编译包 74
5.8.5 安装包 75
5.8.6 测试软件 . 75
5.8.7 清理 76
5.9 从源代码中构建时的常见问题 …76
5.9.1 库的问题 . 76
5.9.2 缺少配置脚本 77
5.9.3 被破坏的源代码 77
5.10 小结 .77
第6 章 管理用户和组 . 78
6.1 用户的构成 78
6.2 保存用户信息的位置 78
6.2.1 etc/passwd 文件 79
6.2.2 /etc/shadow 文件 81
6.2.3 /etc/group 文件 82
6.3 用户管理工具 .82
6.3.1 命令行用户管理 83
6.3.2 GUI 用户管理器 85
6.4 用户和访问权限 86
6.4.1 理解SetUID 和SetGID 程序 … 87
6.4.2 粘滞位 87
6.5 可插拔的身份验证模块 88
6.5.1 PAM 的工作方式 88
6.5.2 PAM 的文件及其位置 88
6.5.3 配置PAM 89
6.5.4 示例PAM 配置文件 . 90
6.5.5 other 文件 92
6.5.6 我无法登录! 92
6.5.7 调试PAM 92
6.6 一场盛大的旅行 92
6.6.1 用useradd 创建用户 92
6.6.2 用groupadd 创建组 93
6.6.3 使用usermod 修改用户属性 … 94
6.6.4 用groupmod 修改组属性 94
6.6.5 用userdel、groupdel删除用户和组 . 95
6.7 小结 95
第7 章 启动和关闭 96
7.1 引导加载程序 .96
7.1.1 GRUB Legacy 96
7.1.2 GRUB 2 97
7.1.3 引导过程 101
7.2 init 进程 102
7.3 systemd 脚本 102
7.4 启用和禁用服务 105
7.4.1 启用服务 105
7.4.2 禁用服务 106
7.5 启动和关闭细节 106
7.5.1 fsck 106
7.5.2 启动到单用户“恢复模式” .107
7.6 小结 107
第8 章 文件系统 .108
8.1 文件系统的结构 108
8.1.1 i-node 108
8.1.2 块 109
8.1.3 超级块 110
8.1.4 ext4 110
8.1.5 Btrfs 111
8.1.6 XFS 111
8.2 管理文件系统 111
8.2.1 挂载和卸载本地磁盘 111
8.2.2 使用fsck 114
8.3 添加新磁盘 115
8.3.1 分区概述 115
8.3.2 传统的磁盘和分区命名约定 116
8.4 卷的管理 . 116
8.5 创建文件系统 121
8.6 小结 122
第9 章 核心系统服务 123
9.1 systemd 123
9.1.1 systemd 的作用 123
9.1.2 systemd 的优势 124
9.1.3 systemd 的工作原理 124
9.2 xinetd 127
9.2.1 /etc/xinetd.conf 文件 128
9.2.2 示例:简单的服务条目(echo) … 130
9.3 日志守护进程 132
9.3.1 rsyslog 132
9.3.2 systemd-journald . 138
9.4 cron 程序 . 139
9.4.1 crontab 文件 139
9.4.2 编辑crontab 文件 140
9.5 小结 141
第10 章 Linux 内核 142
10.1 内核到底是什么? 142
10.2 找到内核源代码 143
10.2.1 获得正确的内核版本 143
10.2.2 拆包内核源代码 . 144
10.3 构建内核 144
10.3.1 准备配置内核 145
10.3.2 内核配置 146
10.3.3 编译内核 149
10.3.4 安装内核 150
10.3.5 引导内核 151
10.3.6 它是无效的! 152
10.4 给内核打补丁 . 152
10.4.1 下载和应用补丁 . 153
10.4.2 如果补丁有效 155
10.4.3 如果补丁无效 155
10.5 小结 155
第11 章 API(虚拟)文件系统 156
11.1 /proc 目录中有什么? 156
11.2 一些有用的/proc 条目 157
11.3 常见的proc 设置和报告 159
11.3.1 SYN 泛洪保护 160
11.3.2 高容量服务器上的问题 160
11.4 SysFS .161
11.5 cgroups 162
11.6 tmpfs 163
11.7 小结 164
第Ⅲ部分 网络与安全
第12 章 TCP/IP 166
12.1 层 166
12.1.1 数据包 166
12.1.2 TCP/IP 模型和OSI 模型 …167
12.2 报头 170
12.2.1 以太网 170
12.2.2 IP(IPv4) 171
12.2.3 TCP 173
12.2.4 UDP 176
12.3 完整的TCP 连接 .176
12.3.1 打开连接 176
12.3.2 传输数据 177
12.3.3 关闭连接 178
12.4 ARP 的工作原理 178
12.5 把IP 网络合并起来 180
12.5.1 主机和网络 180
12.5.2 子网 181
12.5.3 子网掩码 181
12.5.4 静态路由 182
12.5.5 动态路由和RIP 184
12.6 tcpdump 的细节 188
12.6.1 读写转储文件 .188
12.6.2 每个数据包捕获或多或少的信息 188
12.6.3 性能影响 189
12.6.4 不要捕获自己的网络流量 189
12.6.5 解决慢名称解析(DNS)的问题….189
12.7 IPv6 190
12.7.1 IPv6 地址格式 190
12.7.2 IPv6 地址类型 191
12.7.3 IPv6 向后兼容性 .191
12.8 小结 192
第13 章 网络配置 193
13.1 模块和网络接口 193
13.1.1 网络设备配置实用工具(ip、ifconfig 和nmcli) 194
13.1.2 示例用例:ifconfig、ip和nmcli . 194
13.1.3 在启动时设置NIC 197
13.2 管理路由 202
13.2.1 示例用法:路由配置 203
13.2.2 显示路由 204
13.3 简单的Linux 路由器 206
13.4 VPC、子网、IP和路由配置(AWS 云示例) 208
13.4.1 VPC 和子网(AWS) . 208
13.4.2 Internet 网关和路由(AWS) 208
13.4.3 安全组(AWS) . 210
13.4.4 在自己的子网(AWS)中启动Linux服务器 . 210
13.5 主机名配置 210
13.6 小结 212
第14 章 Linux 防火墙(Netfilter) 213
14.1 Netfilter 的工作原理 213
14.1.1 NAT 基础知识 214
14.1.2 链 . 216
14.2 安装Netfilter 218
14.3 配置Netfilter 219
14.3.1 保存Netfilter 配置 219
14.3.2 iptables 命令 221
14.3.3 firewalld . 225
14.4 实用的解决方案 227
14.4.1 简单NAT:iptables 228
14.4.2 简单NAT:nftables 228
14.4.3 简单防火墙:iptables 229
14.5 小结 230
第15 章 本地安全 231
15.1 风险的常见来源 231
15.1.1 SetUID 程序 232
15.1.2 不必要的进程 233
15.2 选择正确的运行级别 234
15.3 非人类用户账户 234
15.4 受限的资源 235
15.5 降低风险 236
15.5.1 chroot .236
15.5.2 SELinux .238
15.5.3 AppArmor 239
15.6 监视系统 239
15.6.1 日志记录 239
15.6.2 使用ps 和netstat .240
15.6.3 监视空间(使用df) 240
15.6.4 自动化监视 240
15.6.5 保持联系(邮件列表) 240
15.7 小结 241
第16 章 网络安全 242
16.1 TCP/IP 和网络安全 242
16.2 跟踪服务 243
16.2.1 使用netstat 命令 .243
16.2.2 netstat 输出的安全含义 244
16.3 绑定接口 244
16.4 关闭服务 245
16.4.1 关闭xinetd 和inetd 服务 …245
16.4.2 关闭非xinetd 服务 245
16.5 监视系统 246
16.5.1 充分使用syslog 246
16.5.2 使用MRTG 监视带宽 .247
16.6 处理攻击 247
16.6.1 不要相信任何东西(也不要相信任何人) 247
16.6.2 修改密码 248
16.6.3 拔掉插头 248
16.7 网络安全工具 . 248
16.7.1 nmap 248
16.7.2 Snort 248
16.7.3 Nessus 和OpenVAS .249
16.7.4 Wireshark/tcpdump 249
16.8 小结 249
第Ⅳ部分 Internet 服务
第17 章 域名系统(DNS) 252
17.1 主机文件 252
17.2 DNS 的工作原理 . 253
17.2.1 域名和主机命名约定 253
17.2.2 根域 253
17.2.3 子域 254
17.2.4 in-addr.arpa 域 255
17.2.5 服务器类型 256
17.3 安装DNS 服务器 257
17.3.1 理解BIND 配置文件 258
17.3.2 具体信息 259
17.4 配置DNS 服务器 260
17.4.1 在named.conf 文件中定义主区域 261
17.4.2 在named.conf 文件中定义辅助区域 261
17.4.3 在named.conf 文件中定义缓存区域 262
17.5 DNS 记录类型 262
17.5.1 SOA:权威的开始 262
17.5.2 NS:名称服务器 263
17.5.3 A 和AAAA:地址记录 … 264
17.5.4 PTR:指针记录 264
17.5.5 MX:邮件交换器 264
17.5.6 CNAME:规范名称 265
17.5.7 RP 和TXT:文档条目 265
17.6 设置BIND 数据库文件 266
17.7 DNS 工具箱 270
17.7.1 host 270
17.7.2 dig 271
17.7.3 resolvectl 272
17.7.4 nslookup 272
17.7.5 whois . 273
17.7.6 nsupdate . 273
17.7.7 rndc 工具 273
17.8 配置DNS 客户端 274
17.8.1 解析器 274
17.8.2 配置客户端(传统的) 275
17.9 小结 276
第18 章 文件传输协议(FTP) 277
18.1 FTP 的机制 277
18.2 获取和安装vsftpd 278
18.2.1 配置vsftpd . 278
18.2.2 启动和测试FTP 服务器 … 279
18.3 定制FTP 服务器 . 282
18.3.1 设置只允许匿名的FTP服务器 282
18.3.2 使用虚拟用户设置FTP服务器 283
18.4 小结 286
第19 章 Apache Web 服务器 288
19.1 理解HTTP 288
19.1.1 报头 288
19.1.2 端口 289
19.1.3 进程所有权和安全性 289
19.2 安装Apache HTTP 服务器 .290
19.3 启动和关闭Apache 291
19.4 测试安装 292
19.5 配置Apache 292
19.5.1 创建简单的根级别页面 293
19.5.2 Apache 配置文件 293
19.5.3 常见配置选项 .293
19.6 Apache 故障排除 .297
19.7 小结 298
第20 章 简单邮件传输协议(SMTP) .. 299
20.1 理解SMTP .299
20.1.1 基本的SMTP 细节 299
20.1.2 安全信息 300
20.1.3 电子邮件组件 .301
20.2 安装Postfix 服务器 301
20.2.1 通过DNF 在Fedora、CentOS 或RHEL 发行版上安装Postfix .301
20.2.2 在Ubuntu 中通过APT安装Postfix 302
20.3 配置Postfix 服务器 302
20.3.1 main.cf 文件 302
20.3.2 检查配置 304
20.4 运行服务器 .305
20.4.1 检查邮件队列 .305
20.4.2 刷新邮件队列 .305
20.4.3 newaliases 命令 305
20.4.4 确保一切正常 .305
20.5 小结 306
第21 章 邮局协议和Internet 邮件访问协议(POP 和IMAP) .307
21.1 POP3 和IMAP 基础 308
21.2 Dovecot (POP3 和IMAP服务器) . 309
21.3 安装Dovecot 309
21.3.1 Dovecot 配置文件和选项 . 310
21.3.2 配置Dovecot 312
21.3.3 运行Dovecot 314
21.3.4 检查基本的POP3 功能 314
21.3.5 检查基本IMAP 功能 315
21.4 邮件服务的其他问题 316
21.4.1 SSL/TLS 安全性 . 316
21.4.2 可用性 318
21.4.3 日志文件 319
21.5 小结 319
第22 章 Internet 语音协议(VoIP) ..320
22.1 VoIP 概述 320
22.1.1 VoIP 服务器 320
22.1.2 模拟电话适配器(ATA) 321
22.1.3 IP 电话 321
22.1.4 VoIP 协议 321
22.2 VoIP 实现 322
22.3 Asterisk 323
22.4 Asterisk 的安装 323
22.5 理解Asterisk 配置文件和结构 324
22.5.1 拨号计划:extensions.conf 328
22.5.2 模块:modules.conf 328
22.6 Asterisk 网络、端口和防火墙需求 329
22.7 配置PBX 330
22.7.1 本地扩展 331
22.7.2 外部连接(VoIP 中继) 335
22.7.3 使用Twilio Elastic SIP Trunk来中继 336
22.8 Asterisk 的维护和故障排除 342
22.8.1 Asterisk CLI 命令 342
22.8.2 有用的CLI 命令 342
22.8.3 VoIP 的常见问题 343
22.9 小结 344
第23 章 SSH .345
23.1 理解公钥加密 . 345
23.2 SSH 基本信息(版本) 347
23.2.1 OpenSSH 和OpenBSD 347
23.2.2 SSH 客户端的备选供应商 347
23.2.3 在基于RPM的系统上安装OpenSSH 348
23.2.4 在Ubuntu 中通过APT安装OpenSSH 348
23.3 服务器的启动和停止 350
23.4 SSHD 配置文件 351
23.5 使用OpenSSH 351
23.5.1 ssh 客户端程序 351
23.5.2 安全复制(scp)程序 354
23.5.3 安全FTP(sftp)程序 354
23.6 OpenSSH 客户端使用的文件 . 355
23.7 小结 355
第Ⅴ部分 内部网服务
第24 章 网络文件系统(NFS) 358
24.1 NFS 的机制 358
24.1.1 NFS 的版本 358
24.1.2 NFS 的安全考虑 .359
24.1.3 分区的挂载和访问 359
24.2 在Fedora、RHEL和CentOS中启用NFS 360
24.3 在Ubuntu和Debian中启用NFS 361
24.4 NFS 的组件 361
24.5 配置NFS 服务器 362
24.5.1 配置文件/etc/exports 362
24.5.2 告诉NFS 服务器关于/etc/exports的进程信息 363
24.5.3 showmount 命令 364
24.5.4 服务器端NFS 问题的故障诊断 364
24.6 配置NFS 客户端 365
24.6.1 mount 命令 .365
24.6.2 软硬挂载 366
24.6.3 跨挂载磁盘 366
24.6.4 intr 选项的重要性 366
24.6.5 性能调优 366
24.7 NFS 客户端问题的诊断解决 .. 367
24.7.1 过期文件句柄 367
24.7.2 拒绝权限 367
24.8 示例NFS 客户端和NFS服务器配置 368
24.9 NFS的常见用法 369
24.10 小结 . 370
第25章 Samba 371
25.1 SMB机制 371
25.1.1 用户名和密码 371
25.1.2 加密的密码 372
25.1.3 Samba守护进程 . 372
25.1.4 通过RPM安装Samba 373
25.1.5 通过APT安装Samba . 373
25.2 Samba 的管理 . 373
25.3 创建共享 374
25.4 挂载远程Samba 共享 377
25.5 Samba 用户 378
25.5.1 创建Samba 用户 378
25.5.2 允许空密码 378
25.5.3 使用smbpasswd 修改密码 379
25.6 使用Samba 对Windows 服务器进行身份验证 379
25.7 Samba故障诊断 381
25.8 小结 382
第26 章 分布式文件系统(DFS) 383
26.1 DFS 概述 383
26.2 DFS 实现 385
26.3 小结 389
第27 章 轻量级目录访问协议(LDAP) 390
27.1 LDAP 基础 . 390
27.1.1 LDAP 目录 390
27.1.2 客户端/服务器模型 391
27.1.3 LDAP 的使用 391
27.1.4 LDAP 术语 392
27.2 OpenLDAP . 392
27.2.1 服务器端守护进程 392
27.2.2 OpenLDAP 实用程序 392
27.2.3 安装OpenLDAP 393
27.2.4 配置OpenLDAP 394
27.2.5 配置slapd .394
27.2.6 启动和停止slapd 397
27.3 配置OpenLDAP 客户端 398
27.4 搜索、查询和修改目录 399
27.5 使用OpenLDAP 进行用户身份验证 400
27.5.1 配置服务器 400
27.5.2 配置客户端 401
27.6 小结 403
第28 章 打印 . 404
28.1 打印术语 404
28.2 CUPS .405
28.2.1 运行CUPS 405
28.2.2 安装CUPS 405
28.2.3 配置CUPS 406
28.3 添加打印机 .407
28.3.1 本地打印机和远程打印机 407
28.3.2 使用Web 界面添加打印机 ..408
28.3.3 使用命令行添加打印机 …409
28.4 常规CUPS 管理 410
28.4.1 设置默认打印机 410
28.4.2 启用、禁用和删除打印机 410
28.4.3 接受和拒绝打印作业 .410
28.4.4 管理打印特权 411
28.4.5 通过Web 界面管理打印机 ..411
28.5 使用客户端打印工具 411
28.5.1 lpr 411
28.5.2 lpq 412
28.5.3 lprm 412
28.6 小结 413
第29 章 动态主机配置协议(DHCP) .. 414
29.1 DHCP 的机制 414
29.2 DHCP 服务器 415
29.2.1 通过RPM 安装DHCP 软件 415
29.2.2 在Ubuntu 上通过APT 安装DHCP软件 415
29.2.3 配置DHCP 服务器 415
29.2.4 示例dhcpd.conf 文件 418
29.3 DHCP 客户端守护进程 .420
29.4 小结 421
第30 章 虚拟化 422
30.1 为什么要虚拟化? 422
30.2 虚拟化的实现 . 423
30.2.1 Hyper-V 423
30.2.2 基于内核的虚拟机(KVM) … 423
30.2.3 QEMU . 423
30.2.4 VirtualBox 424
30.2.5 VMware 424
30.2.6 Xen 424
30.3 KVM . 424
30.3.1 KVM 示例 425
30.3.2 管理KVM 426
30.4 在Ubuntu/ Debian 中设立KVM 427
30.5 容器 429
30.5.1 容器与虚拟机 429
30.5.2 Docker 430
30.6 小结 432
第31 章 备份 433
31.1 评估备份需求 . 433
31.1.1 数据量 . 433
31.1.2 备份硬件和备份介质 . 434
31.1.3 网络吞吐量 434
31.1.4 数据恢复的速度和容易程度 435
31.1.5 重复数据的删除 435
31.1.6 磁带的管理 435
31.2 命令行备份工具 437
31.2.1 转储和恢复 437
31.2.2 tar 440
31.2.3 rsync 440
31.3 其他备份解决方案 440
31.4 小结 441
第Ⅵ部分 附录
附录A 在Flash/USB 设备上创建Linux安装程序 444
附录B 演示虚拟机和容器 450
前 言
1991年10月5日,Linus Torvalds 在一个在线新闻组上发布了一条简单的消息,向全世界介绍了Linux 操作系统的个版本。他(以及其他任何人)不知道的是,他开发出的Linux 后来成为世界上受欢迎、颠覆性的操作系统之一。今天,整个行业和社区都围绕Linux 建立起来并蓬勃发展。而且,你很可能已经以某种形式使用过它(或从中受益)!本书是我们延续开放、探索和学习这种传统的第8 次尝试(希望能成功)。当读者能从本书中学到一些东西,并应用它自信地解决现实问题,对我们来说就成功了。
本书读者对象本书书名的后一部分是“入门经典”,但假设你已经熟悉“高级用户”级别或更高级别的Microsoft Windows 服务器(或其他操作系统),假定你熟悉用于中小型计算机网络的术语和一些概念。任何与更大的网络或高级Windows 技术相关的经验将令读者从书中获得更多,但这不是必需的。
市面上已经有足够多的书仅指出应点击什么,而没有说明为什么;本书不应属于这一类。
除了具备Windows 背景外,我们假设你对本书中主题的更多信息感兴趣,而不仅是书中的内容。
毕竟,一些主题只有15~35 页,而这些主题有时需要用一整本书来专门讨论!因此,一些章节插入了指向其他资源的链接。读者好采纳这些建议。
我们相信,经验丰富的Linux 系统管理员也可以从本书中受益,因为它可以作为一本讨论各种主题的快速指南。
本书的内容本书由6 部分组成。
第Ⅰ部分:简介与安装
第Ⅰ部分包括3章。第1章很好地概述什么是GNU/Linux,以及在几个关键领域比较它与Windows。
第2 章详细介绍如何安装服务器级的Fedora 和Ubuntu Linux 发行版。第3 章概述如何在一些流行的云平台上启动Linux 服务器。
理想情况下,第Ⅰ部分的内容应足以让读者入门,有助于读者根据其他操作系统的现有知识,了解Linux 的工作方式。第Ⅰ部分完成的一些服务器安装任务和设计选择可作为本书其他部分的参考和起点。
第Ⅱ部分:单主机管理
第Ⅱ部分介绍管理“独立”系统(即不需要或不向网络上的其他系统提供任何服务的系统)的必要内容。尽管服务器不提供任何服务的概念乍一看与直觉不符,但它是构建其他许多概念的基础,在以后理解基于网络的服务时,它将派上用场。第Ⅱ部分共8章.
第4 章涵盖使用Linux 命令行接口(CLI)的基础知识,以便读者能在没有GUI 的情况下工作。尽管可在GUI 桌面中管理Linux 系统,但好能同时使用CLI 和GUI——对于管理Windows 系统也是如此。不相信吗?打开命令提示符,运行netsh,并尝试在GUI 中执行netsh 所执行的操作。
第5 章涵盖如何从预先打包的二进制文件和源代码中安装软件,以及如何执行标准的软件管理任务。该章学到和使用的一些软件安装技术在本书的大部分内容中都会用到。
第6 章涵盖Linux 平台上用户和组概念的基础知识,以及日常管理任务,如添加、删除用户和组,多用户操作,Linux 权限模型等。
第7 章记录整个开机和关机过程。该章详细介绍如何正确启动、关闭、添加、启用和禁用服务。
这些基本技能在书的后面会派上用场。
第8 章继续介绍文件系统的基础知识——文件系统的组织、创建以及管理(重要)。
第9 章讨论操作基础知识,介绍基本工具,如xinetd、rsyslog、cron、systemd、journald 等。xinetd是Linux 版的Windows svchost,rsyslog 在统一框架中管理所有应用程序的日志记录。rsyslog 和journald是更灵活的Windows 事件查看器版本。
第10 章解释在Linux 中配置、编译和安装自定义内核的过程。这个功能为Linux 管理员提供了大量对系统操作方式的细粒度控制。
第11 章涵盖通过/proc 和/sys 文件系统进行的一些内核级调整。如该章所述,通过/proc 和/sys 查看和修改某些内核级配置和运行时变量的能力,为管理员提供了几乎无限的系统微调可能性。当这些应用得当时,可以说是一种比Windows 平台更好、更容易调整内核的方法。
第Ⅲ部分:网络与安全
第Ⅲ部分开始进入网络和安全的世界。我们不太清楚为什么要把这两个主题放在同一部分,但如果非要证明这一点的话,可以说:“网络是邪恶的根源,因此需要保护。”然后我们会耸耸肩走开。
随着Internet 上安全和隐私日趋重要,以及SOX、HIPAA 等合规要求的发布,需要在高安全性场景中使用Linux。我们特意决定,在介绍基于网络的服务(第Ⅳ部分和第Ⅴ部分)之前,先讨论安全问题,以便了解一些基本的安全实践,这些实践有助于保护基于网络的服务不受攻击。
该部分从第12 章开始,概述了系统(和/或网络)管理员需要了解的TCP/IP 内容。第12 章详细介绍如何使用故障排除工具(如tcpdump)捕获数据包,并将其读取回来,逐步分析TCP 连接是如何工作的。
这些工具应该能有效地排除网络特性的故障。
第13 章关注基本网络配置(IPv4 和IPv6),回到管理问题。这包括设置IP 地址、路由条目等。
第14 章扩展基础知识,深入研究先进的网络概念,展示如何构建基于Linux 的防火墙和路由器。
介绍新的nftables 项目,它将取代现有的、流行的iptables 框架。
第15 章和第16 章详细讨论系统和网络安全的各个方面,包括特定于Linux 的问题以及一般的安全提示、技巧和常识,以便更好地配置系统,保护它免受攻击。
第Ⅳ部分:Internet 服务
本书有两个不同的部分:“Internet 服务”和“内部网服务”。尽管它们听起来很相似,但有区别。
Internet 服务定义为运行在Linux 系统上、直接暴露于Internet 的服务。例如Web 和域名系统(DNS)服务。内部网服务则定义为通常在防火墙后运行、用于内部用户的服务,这些服务大部分仅供内部使用。
本部分从第17 章开始,它涵盖了安装、配置和管理DNS 服务器所需的信息。除了运行DNS 服务器的实际细节外,还提供了关于DNS 如何工作的详细背景知识以及故障排除的一些技巧和工具。
在DNS 之后,就进入第18 章,其中涵盖了FTP 服务器的安装和维护。该章还介绍了FTP 的背景知识和它的发展。
第19 章继续讨论当今Linux 流行的可能用途之一:使用流行的Apache 软件运行Web 服务器。
该章介绍了Apache Web 服务器的安装、配置和管理。
第20 章和第21 章通过设置和配置SMTP、POP 和IMAP 服务器深入介绍电子邮件。将介绍配置这三种工具所需的信息,并展示它们如何交互。选择探讨Postfix SMTP 服务器,而不是传统的Sendmail服务器,因为Postfix 提供了更灵活的服务器和更好的安全记录。
第22 章在这个版本中做了全新的修订。我们做了大量工作,花费了大量精力,来酝酿和提炼VoIP这个非常广泛的主题。在该章末尾,基于Asterisk 软件构建了一个简单的基于VolP 的PBX;它很容易扩展,来取代商用PBX 解决方案,或与第三方VoIP 提供商交互,以便与世界其他国家交流。
第Ⅳ部分以第23 章结束,了解如何设置、使用和管理SSH 服务在几乎任何GNU/Linux 环境中都是至关重要的。
第Ⅴ部分:内部网服务
再次强调,内部网服务定义为通常在防火墙后运行、供内部用户使用的服务,而且大多数仅供内部使用。即使在这种环境中,Linux 也提供了很多功能。
第24 章介绍NFS。NFS 已经存在了近30 年,在过去几年里不断发展、成长和适应。该章介绍NFS 的功能,包括如何设置客户端和服务器,以及如何排除故障。
第25 章通过对Samba 服务的介绍,继续了共享磁盘和资源的思想。使用Samba,管理员可以共享磁盘和打印设施,并为Windows(和Linux)用户提供身份验证,而不必安装任何特殊的客户机软件。
因此,Linux 可成为一个有效的服务器,能在UNIX/Linux 系统和Windows 系统之间支持和共享资源。
如果你对这类事情感兴趣,甚至可将Samba 配置为成熟的Active Directory Microsoft Windows 服务器的临时替代品!
第26 章在第Ⅴ部分,而不是第Ⅳ部分,是一个掷硬币的问题,因为DFS 可以在Internet 和Intranet场景中使用/部署。在当今以云为中心的世界中,DFS 解决方案尤其重要。在许多可用的DFS 实现中,我们选择讨论GlusterFS,因为它易于配置,在不同发行版中都获得了支持。
第27 章讨论目录服务,包括LDAP 以及管理员如何使用这个标准服务来提供一个集中的用户数据库(目录),以便在异构操作系统之间使用,并管理大量用户。
第28章介绍Linux打印子系统。打印子系统与Samba结合使用时,允许管理员支持从基于Windows的客户机进行无缝打印。这样就可在一台服务器上集中Linux、Windows 甚至macOS 用户的打印选项!
第29 章涵盖了Linux 系统的另一种常见用法:DHCP 服务器。本章讨论了如何部署Internet SystemsConsortium (ISC) DHCP 服务器,它提供了一组强大的特性和选项。
接下来是第30 章。几个月以来,我们一直在为该章的标题而苦恼和斟酌,因为该章涵盖了虚拟化和容器(容器化)。这一章终命名为“虚拟化”,因为我们甚至不确定“容器化”是不是一个词;据一位编辑说,这是航运业的一个词!虚拟化则无处不在。它允许公司将以前需要几个专用裸机的服务和硬件整合到更少的裸机中。我们将讨论基本的虚拟化概念,并简要介绍Linux 中一些流行的虚拟化技术。该章还通过示例详细介绍了基于内核的虚拟机(Kernel-Based Virtual Machine,KVM)的实现。我们讨论的KVM 概念将有助于学习附录B 介绍的新功能。第30.5 节介绍“容器”。容器背后的概念是旧的,但又是新的。就像虚拟化一样,容器也无处不在,而且会一直存在。我们使用流行的Docker 平台实现容器,并指导如何部署容器样式的Web 服务器!
后的第31 章讨论“备份”。备份可以说是管理中关键的部分之一。基于Linux 的系统支持几种备份方法,这些方法易于使用,也很容易用于磁带驱动器和其他介质。该章讨论一些方法,并解释如何将它们用作备份计划的一部分。除了备份机制外,还讨论了一般的备份考虑事项、设计和优化。
第Ⅵ部分:附录
在书的后,包括了一些有用的参考资料和现实世界的资源,可以用于日常工作,可在家里、教室或实验室使用。
附录A 详细介绍在非光学介质(如USB 闪存驱动器、SD 卡等)上创建安装介质的替代和通用方法。
附录B 是本书的另一个新添加内容。它涵盖了一个新功能:获取和使用为本书专门创建的容器和虚拟机映像文件。一旦启动VM 或容器,你将看到本书中讨论的大多数命令、脚本、软件包、黑客和服务器/守护进程。
评论
还没有评论。