书籍详情
Linux管理入门经典(第8版)
作者:[美] 威尔·索因卡(Wale Soyinka) 著
出版社:清华大学出版社
出版时间:2021-10-01
ISBN:9787302588207
定价:¥118.00
购买这本书可以去
内容简介
主要内容 ?? 安装和配置Linux,包括Fedora、Ubuntu、CentOS、openSUSE、Debian和RHEL的z新发行版。 ?? 设置及管理核心系统服务、守护进程、用户和组。 ?? 从源代码或二进制包管理软件应用程序。 ?? 定制、构建或修补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工具来探索虚拟化和容器技术。 ?? 下载专门创建的虚拟机映像和容器,可从中复制本书中的各种练习、软件、服务器、命令和脚本。
作者简介
Wale Soyinka是一位系统管理员、DevOps/SecOps迷、开源布道者和白帽黑客;生活中是一位慈父,还自封为备受推崇的世界名厨。Wale撰写了Advanced Linux Administration以及其他多本有关Linux、网络和Windows管理培训的书籍。
目录
目 录
第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
第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
猜您喜欢