第Ⅰ部分 安装Linux操作系统作为服务器软件第1章 Linux发行版本和Windows 2003的技术摘要 3
1.1 了解Linux操作系统 4
1.2 自由软件和GNU 5
1.2.1 GNU公共许可证 6
1.2.2 自由软件的优势 6
1.3 理解Windows和Linux的差异 7
1.3.1 单用户、多用户和网络用户 7
1.3.2 单内核和微内核 8
1.3.3 GUI与内核相对独立 9
1.3.4 网络邻居 9
1.3.5 注册表文件和文本文件 10
1.3.6 域和活动目录 11
1.4 其他参考书目 12
第2章 按服务器配置安装Linux 13
2.1 硬件和环境的考虑 14
2.2 服务器主机的规划 14
2.3 双启动问题 16
2.4 安装方法 16
2.5 安装Fedora Core Linux 17
2.5.1 安装前的准备 17
2.5.2 执行安装 18
2.5.3 初始化系统配置 32
2.6 本章小结 35
第3章 安装软件 37
3.1 软件包管理工具 38
3.1.1 使用RPM查询 40
3.1.2 使用RPM安装软件包 43
3.1.3 使用RPM卸载软件 45
3.1.4 RPM的其他功能 46
3.1.5 GUI RPM包管理器 48
3.2 GNU软件的编译和安装 50
3.2.1 获取软件包并解压缩 50
3.2.2 查找软件包中的文档 52
3.2.3 配置软件包 52
3.2.4 编译软件包 53
3.2.5 安装软件包 54
3.2.6 测试软件包 54
3.2.7 软件安装之后的清理工作 55
3.3 从源代码构建软件时的常见问题 55
3.3.1 库文件问题 55
3.3.2 没有配置脚本的情况 56
3.3.3 源代码问题 56
3.4 本章小结 56
第Ⅱ部分 单主机系统的管理 59
第4章 用户管理 59
4.1 用户的确切定义 60
4.1.1 用户信息的保存位置 60
4.1.2 /etc/passwd文件 61
4.1.3 /etc/shadow文件 64
4.1.4 /etc/group文件 65
4.2 用户管理工具 65
4.2.1 命令行下的用户管理 66
4.2.2 GUI下的用户管理 69
4.3 用户和访问许可 70
4.4 可植入认证模块 71
4.4.1 PAM的工作原理 71
4.4.2 PAM的文件及其所保存的位置 72
4.4.3 PAM的配置 72
4.4.4 PAM的调试 76
4.5 重要的漫游 76
4.5.1 使用useradd命令创建用户 76
4.5.2 使用groupadd命令创建组 77
4.5.3 使用usermod命令改变用户的属性 78
4.5.4 使用groupmod命令改变组的属性 79
4.5.5 使用groupdel和userdel命令删除组和用户 79
4.6 本章小结 79
第5章 命令行 81
5.1 bash入门 82
5.1.1 作业管理 83
5.1.2 环境变量 84
5.1.3 管道 85
5.1.4 重定向 86
5.2 命令行快捷键 86
5.2.1 文件的扩展名 86
5.2.2 环境变量作为参数 87
5.2.3 多条命令的联合使用 87
5.2.4 反单引号 87
5.3 文档工具 88
5.3.1 man命令 88
5.3.2 texinfo系统 90
5.4 文件列表、所有权和访问权限 90
5.4.1 文件清单命令ls 90
5.4.2 文件和子目录类型 91
5.4.3 块设备 92
5.4.4 字符设备 92
5.4.5 命名管道 92
5.4.6 改变文件的所有权命令chown 93
5.4.7 改变用户组命令chgrp 93
5.4.8 改变文件属性命令chmod 93
5.5 文件管理和操作 95
5.5.1 复制文件命令cp 96
5.5.2 移动文件命令mv 96
5.5.3 链接文件命令ln 97
5.5.4 查找文件命令find 97
5.5.5 文件压缩命令gzip 98
5.5.6 bzip2 98
5.5.7 建立子目录命令mkdir 98
5.5.8 删除子目录命令rmdir 99
5.5.9 显示当前工作子目录命令pwd 99
5.5.10 磁带文件归档命令tar 99
5.5.11 合并文件命令cat 101
5.5.12 分屏显示文件命令more 102
5.5.13 磁盘操作工具du 102
5.5.14 查找文件所在目录命令which 102
5.5.15 查找程序保存位置命令whereis 103
5.5.16 释放磁盘空间命令df 103
5.5.17 同步磁盘命令sync 103
5.6 移动用户及其主目录 104
5.6.1 列出进程清单命令ps 106
5.6.2 交互式列出进程清单命令top 108
5.6.3 向进程发送信号命令kill 109
5.7 其他工具 110
5.7.1 显示系统名称命令uname 110
5.7.2 查看用户命令who 111
5.7.3 who命令的变化版本w命令 111
5.7.4 切换用户命令su 111
5.8 编辑器程序 112
5.8.1 vi编辑器 112
5.8.2 emacs编辑器 113
5.8.3 joe编辑器 113
5.8.4 pico编辑器 114
5.9 标准 114
5.10 本章小结 115
第6章 开机和关机 117
6.1 引导加载器 118
6.1.1 GRUB 118
6.1.2 LILO 126
6.1.3 引导电路 127
6.2 init进程 127
6.3 rc脚本 128
6.3.1 概述 128
6.3.2 编写自己的rc命令脚本程序 129
6.4 启用/禁用服务 133
6.5 启动和关机的问题 136
6.5.1 fsck工具 136
6.5.2 启动到单用户(恢复)模式 136
6.6 本章小结 137
第7章 文件系统 139
7.1 文件系统的构成 140
7.1.1 i结点 140
7.1.2 超级块 140
7.1.3 ext3和ReiserFS文件系统 141
7.1.4 文件系统的选择 142
7.2 管理文件系统 142
7.2.1 挂载和卸载本地磁盘 143
7.2.2 使用mount命令 143
7.2.3 卸载文件系统 144
7.2.4 /etc/fstab文件 145
7.2.5 使用fsck程序 147
7.3 添加一块新磁盘 149
7.3.1 分区概览 149
7.3.2 磁盘和分区的命名习惯 149
7.4 卷管理 150
7.4.1 创建分区 152
7.4.2 创建物理卷 154
7.4.3 将物理卷分配给卷组 155
7.4.4 创建逻辑卷 156
7.5 创建文件系统 158
7.6 本章小结 160
第8章 核心级系统服务 161
8.1 init服务 162
8.1.1 /etc/inittab文件 162
8.1.2 telinit命令 164
8.2 xinetd和inetd进程 164
8.2.1 /etc/xinetd.conf文件 165
8.2.2 变量的含义 166
8.2.3 简单的服务条目示例 168
8.2.4 启用/禁用echo服务 169
8.3 syslogd守护进程 170
8.3.1 调用syslogd 171
8.3.2 /etc/syslog.conf文件 171
8.3.3 日志消息分类 171
8.3.4 /etc/syslog.conf文件的格式 173
8.3.5 /etc/syslog.conf文件示例 174
8.4 cron程序 175
8.4.1 crontab文件 175
8.4.2 编辑crontab文件 176
8.5 本章小结 177
第9章 编译Linux内核 179
9.1 内核的概念 180
9.2 获取内核源代码 181
9.2.1 选择正确的内核版本 182
9.2.2 解压缩内核源代码 182
9.3 构建内核 183
9.3.1 配置内核前的准备 184
9.3.2 配置内核 184
9.3.3 编译内核 188
9.4 安装内核 189
9.5 引导内核 190
9.6 新内核不正常的解决办法 191
9.7 给内核打补丁 191
9.7.1 下载并应用补丁文件 192
9.7.2 补丁正常 193
9.7.3 补丁异常 193
9.8 本章小结 194
第10章 proc文件系统 195
10.1 /proc目录中的内容 196
10.2 调整/proc下的文件 197
10.3 一些有用的/proc条目 197
10.4 /proc条目列举 199
10.5 通过/proc实现的常见报告和设置 199
10.5.1 SYN泛洪保护 200
10.5.2 大容量服务器上的问题 201
10.5.3 调试硬件冲突 201
10.6 SysFS 201
10.7 本章小结 203
第Ⅲ部分 安全和网络 207
第11章 TCP/IP网络管理 207
11.1 分层 208
11.1.1 报文 208
11.1.2 TCP/IP和OSI模型 211
11.2 报头 214
12.2.1 以太网 214
12.2.2 IP 215
11.2.3 TCP 218
11.2.4 UDP 220
11.3 TCP连接的完整过程 221
11.3.1 建立连接 221
11.3.2 传输数据 223
11.3.3 关闭连接 223
11.4 ARP的工作原理 224
11.5 IP网络集成 226
11.5.1 主机和网络 226
11.5.2 子网划分 227
11.5.3 子网掩码 227
11.5.4 静态路由 229
11.5.5 使用RIP的动态路由 230
11.6 深入tcpdump 235
11.6.1 通常应该注意的问题 235
11.6.2 使用tcpdump来监视traceroute 237
11.6.3 DNS慢的原因 238
11.6.4 其他的图表 240
11.7 本章小结 243
第12章 网络配置 245
12.1 模块和网络接口 246
12.2 使用ifconfig配置IP地址 247
12.2.1 简单用法 248
12.2.2 在系统引导时设置网卡 249
12.2.3 其他参数 250
12.3 使用路由 251
12.3.1 简单用法 251
12.3.2 显示路由 252
12.4 简单的Linux路由器 253
12.5 Linux对IP地址的选择 256
12.6 小结 257
第13章 配置Linux防火墙 259
13.1 Netfilter的工作原理 260
13.1.1 NAT入门 261
13.1.2 NAT友好协议 263
13.1.3 链(chain) 264
13.2 Netfilter的安装 266
13.2.1 在内核中启用Netfilter 267
13.2.2 编译IP Tables 268
13.3 Netfilter的配置 269
13.3.1 保存Netfilter配置 270
13.3.2 iptables命令 271
13.4 解决方案说明 277
13.4.1 Rusty的三行NAT 278
13.4.2 配置一个简单的防火墙 278
13.5 小结 280
第14章 本地安全 281
14.1 公共风险来源 282
14.1.1 SetUID程序 283
14.1.2 不必要的进程 284
14.1.3 以root身份运行的程序 286
14.1.4 用户访问许可 286
14.2 降低风险 288
14.2.1 使用chroot 289
14.2.2 SELinux 291
14.3 系统监视 291
14.3.1 日志记录 292
14.3.2 使用ps和netstat命令 292
14.3.3 使用df命令 292
14.3.4 邮件列表 292
14.4 本章小节 293
第15章 网络安全 295
15.1 TCP/IP和网络安全 296
15.2 服务追踪 297
15.2.1 netstat命令的使用 297
15.2.2 netstat的输出中的安全暗示 298
15.2.3 停止服务 299
15.3 系统监视 301
15.3.1 充分利用syslog 301
15.3.2 使用MRTG监视带宽 302
15.4 攻击的应对 302
15.4.1 什么也不要相信 303
15.4.2 改变系统口令 303
15.4.3 停止网络流量 303
15.5 网络安全工具 303
15.5.1 nmap 304
15.5.2 Snort 304
15.5.3 Nessus 304
15.5.4 Ethereal/tcpdump 304
15.6 本章小结 305
第Ⅳ部分 Internet服务 309
第16章 DNS 309
16.1 hosts文件 310
16.2 DNS的工作原理 311
16.2.1 域名和主机名的命名习惯 311
16.2.2 子域 313
16.2.3 in-addr.arpa域 314
16.2.4 服务器的类型 315
16.3 DNS服务器的安装 316
16.3.1 理解BIND配置文件 318
16.3.2 细节 318
16.4 配置DNS服务器 321
16.4.1 在named.conf文件中定义一个主要区域 321
16.4.2 在named.conf文件中定义一个辅助区域 322
16.4.3 在named.conf文件中定义一个缓存区域 323
16.4.4 DNS记录的类型 323
16.5 安装BIND数据库文件 327
16.6 DNS工具箱 332
16.6.1 host 332
16.6.2 dig 333
16.6.3 nslookup 335
16.6.4 whois 336
16.6.5 nsupdate 337
16.6.6 rndc工具 337
16.7 配置DNS客户端 338
16.7.1 解析器 338
16.7.2 /etc/resolv.conf文件 339
16.7.3 /etc/nsswitch.conf文件 339
16.7.4 配置客户端 340
16.8 本章小结 341
第17章 FTP 343
17.1 FTP的技术细节 344
17.1.1 客户端/服务器交互 344
17.1.2 获取并安装vsftpd 345
17.1.3 配置vsftpd 346
17.1.4 定制FTP服务器 351
17.2 本章小结 356
第18章 使用Apache安装Web服务器 357
18.1 理解HTTP协议 358
18.1.1 协议头 358
18.1.2 端口号 359
18.1.3 进程的所有者和安全性 359
18.2 Apache HTTP服务器的安装 360
18.3 Apache的启动和停止 362
18.4 安装的测试 363
18.5 Apache的配置 364
18.5.1 创建一个简单的根页面 364
18.5.2 Apache配置文件 365
18.5.3 一般配置选项 365
18.6 Apache的故障排除 369
18.7 本章小结 370
第19章 SMTP 371
19.1 理解SMTP 372
19.1.1 SMTP的根本的细节 372
19.1.2 安全性 374
19.2 安装Postfix邮件服务器 374
19.2.1 使用RPM安装Postfix 374
19.2.2 从源代码安装Postfix 375
19.3 配置Postfix服务器 377
19.3.1 main.cf文件 377
19.3.2 检查配置 379
19.4 运行邮件服务器 379
19.4.1 检查邮件队列 380
19.4.2 刷新邮件队列 380
19.4.3 newaliases命令 380
19.4.4 确保一切正常 380
19.5 本章小结 381
第20章 POP和IMAP 383
20.1 POP和IMAP协议的原理 385
20.1.1 检查POP服务器 386
20.1.2 检查IMAP服务器 386
20.2 UM-IMAP和POP3服务器的安装 387
20.3 邮件服务中的其他问题 390
20.3.1 SSL安全性 390
20.3.2 可用性 391
20.3.3 日志文件 391
20.4 本章小结 392
第21章 安全Shell(SSH) 393
21.1 公钥加密系统的理解 394
21.1.1 关键特征 396
21.1.2 加密技术参考书目 396
21.2 理解SSH的版本与发行 397
21.2.1 OpenSSH和OpenBSD 397
21.2.2 SSH客户端可选择的供应商 398
21.2.3 不可靠的连接 398
21.3 SSH源代码的下载、编译和安装 399
21.4 使用RPM安装OpenSSH 400
21.4.1 服务的启动与关闭 401
21.4.2 sshd的配置文件 402
21.5 使用OpenSSH 402
21.6 创建一个安全隧道 403
21.6.1 安全拷贝scp 406
21.6.2 安全FTP(sftp) 406
21.6.3 SSH使用的文件 407
21.7 本章小结 407
第Ⅴ部分 Intranet服务 411
第22章 网络文件系统 411
22.1 NFS的技术细节 412
22.1.1 NFS的版本 412
22.1.2 NFS的安全方面的考虑 413
22.1.3 挂载并访问一个分区 414
22.1.4 启用NFS 414
22.1.5 NFS的组件 415
22.1.6 NFS的内核支持 416
22.2 NFS服务器的配置 417
22.2.1 配置文件/etc/exports 417
22.2.2 向NFS服务器进程通知/etc/exports文件的变化 418
22.2.3 showmount命令 419
22.2.4 服务器端NFS问题疑难解答 420
22.3 NFS客户端的配置 420
22.3.1 mount命令 421
22.3.2 软挂载和硬挂载的对比 422
22.3.3 磁盘的交叉挂载 422
22.3.4 intr选项的重要性 423
22.3.5 性能调整 423
22.4 客户端NFS问题疑难解答 423
22.4.1 无效的文件句柄 423
22.4.2 许可被拒绝 424
22.5 客户端和服务器的NFS配置 424
22.6 通常的NFS的使用 426
22.7 本章小结 426
第23章 网络信息服务NIS 429
23.1 NIS内幕 430
23.1.1 NIS服务器 431
23.1.2 NIS域 431
23.2 配置主NIS服务器 432
23.2.1 创建域名 432
23.2.2 启动NIS 433
23.2.3 编辑Makefile 434
23.2.4 使用ypinit 437
23.3 配置NIS客户端 439
23.3.1 编辑/etc/yp.conf文件 439
23.3.2 ypbind的启用与启动 440
23.3.3 编辑/etc/nsswitch.conf文件 440
23.3.4 NIS的使用 443
23.3.5 NIS客户端配置的测试 444
23.4 配置辅助NIS服务器 444
23.4.1 设置域名 444
23.4.2 设置NIS主服务器向辅助服务器发送更新 444
23.4.3 运行ypinit 445
23.5 NIS工具 446
23.6 在配置文件中使用NIS 446
23.7 在真实的网络中实现NIS 447
23.7.1 小型网络 447
23.7.2 分段的网络 448
23.7.3 超过园区网的网络 448
23.8 本章小结 449
第24章 Samba 451
24.1 SMB的机制 452
24.1.1 用户名和口令 452
24.1.2 加密的口令 453
24.1.3 Samba守护进程 453
24.1.4 安装Samba 454
24.1.5 使用源代码编译、安装Samba 454
24.2 Samba的管理 456
24.3 SWAT的使用 457
24.3.1 安装SWAT 457
24.3.2 SWAT菜单 459
24.3.3 创建共享 460
24.4 smbclient的使用 462
24.4.1 浏览服务器 462
24.4.2 远程文件访问 463
24.5 挂载远程Samba共享 464
24.6 创建Samba用户 464
24.6.1 允许空口令 465
24.6.2 使用smbpasswd更改口令 465
24.7 使用Samba认证Windows服务器 465
24.8 Samba故障排除 467
24.9 本章小结 468
第25章 LDAP 469
25.1 LDAP概述 470
25.1.1 LDAP目录 470
25.1.2 客户端/服务器模型 471
25.1.3 LDAP的使用 471
25.1.4 LDAP术语 472
25.2 OpenLDAP 472
25.2.1 服务器端进程 472
25.2.2 OpenLDAP工具 473
25.2.3 安装OpenLDAP 473
25.2.4 配置slapd 475
25.2.5 slapd的启动与停止 477
25.3 配置OpenLDAP客户端 478
25.3.1 创建目录项 478
25.3.2 搜索、查询以及修改目录 480
25.3.3 使用OpenLDAP进行用户认证 481
25.4 本章小结 484
第26章 打印 485
26.1 打印术语 486
26.2 CUPS系统 486
26.2.1 运行CUPS 487
26.2.2 安装CUPS 487
26.2.3 配置CUPS 488
26.3 添加打印机 489
26.3.1 本地打印机和远程打印机 489
26.3.2 使用Web接口 490
26.3.3 使用命令行工具添加打印机 492
26.4 CUPS日常管理 493
26.4.1 设置默认打印机 493
26.4.2 打印机启用与禁用 493
26.4.3 打印作业的接受与拒绝 494
26.4.4 打印权限的管理 494
26.4.5 删除打印机 495
26.4.6 通过Web接口管理打印机 495
26.5 客户端打印工具的使用 496
26.5.1 lpr 496
26.5.2 lpq 496
26.5.3 lprm 497
26.6 本章小结 498
第27章 DHCP 499
27.1 DHCP协议的基本原理 500
27.2 DHCP服务器 500
27.2.1 使用RPM安装DHCP软件 501
27.2.2 配置DHCP服务器 501
27.2.3 参数 503
27.2.4 选项 506
27.3 dhcpd.conf文件示例 506
27.4 一般运行行为 507
27.5 DHCP客户端守护进程 507
27.6 本章小结 509
第28章 备份 511
28.1 备份需求评估 512
28.1.1 备份的数据量 512
28.1.2 备份媒体的类型 512
28.1.3 磁带性能考虑 513
28.1.4 网络的吞吐量 514
28.1.5 数据恢复时间 514
28.1.6 磁带管理类型 514
28.2 磁带设备管理 515
28.2.1 使用mknod和scsidev创建设备文件 516
28.2.2 使用mt操作磁带设备 516
28.3 命令行工具 517
28.3.1 dump和restore 517
28.3.2 使用dump 518
28.3.3 使用restore 520
28.4 本章小结 521