第一部分 安装Linux操作系统作为服务器软件 1
第1章 Linux发行版本与Windows NT的技术异同 1
1.1 Linux操作系统和Linux发行版本 1
1.2 “自由”软件和GNU许可证 1
1.2.1 什么是GNU公共许可证 2
1.2.2 “自由”软件的优势 2
1.3 NT和Linux操作系统的主要差异 3
1.3.1 单用户、多用户、网络用户情况的比较 3
1.3.2 GUI图形界面与操作系统内核的彼此相对独立 4
1.3.3 Windows中的“网络邻居”概念 5
1.3.4 Windows中的注册表文件与文本文件的比较 6
1.3.5 域的概念 7
1.4 小结 7
第2章 按服务器配置安装Linux 9
2.1 安装之前 9
2.1.1 硬件设备 9
2.1.2 服务器主机的规划 10
2.1.3 双引导系统 11
2.1.4 安装方式 12
2.1.5 安装后可能面临的问题 12
2.2 安装Red Hat Linux操作系统 13
2.2.1 制作一张引导盘 13
2.2.2 开始安装 14
2.3 小结 30
第3章 GNOME和KDE桌面环境 31
3.1 X-Windows的历史 31
3.1.1 X-Windows的不足之处 32
3.1.2 进入GNOME和KDE 33
3.1.3 GNOME和KDE并非完全不兼容意味着什么 33
3.2 关于KDE桌面环境 33
3.2.1 许可证问题 34
3.2.2 启动X-Windows和KDE 34
3.2.3 KDE的基本元素 35
3.2.4 KDE的控制中心 36
3.3 关于GNOME桌面环境 41
3.3.1 启动X-Windows和GNOME 42
3.3.2 GNOME的基本元素 43
3.3.3 GNOME的配置工具 44
3.4 小结 47
第4章 安装软件 49
4.1 Red Hat Package Manager软件包管理工具软件 49
4.1.1 安装新的软件包 50
4.1.2 查询软件包 51
4.1.3 反安装(清除)软件包 51
4.1.4 .gnorpm工具 51
4.2 自行编译软件 52
4.2.1 获得并解压缩新的软件包 52
4.2.2 查找软件包中的有关文档 53
4.2.3 配置新软件包 53
4.2.4 编译新软件包 54
4.2.5 安装新软件包 54
4.2.6 安装完成后的清理工作 55
4.3 小结 55
第二部分 单主机系统的管理 57
第5章 用户的管理 57
5.1 关于用户 57
5.1.1 用户登录子目录 58
5.1.2 口令 58
5.1.3 shell 59
5.1.4 启动上机脚本程序 60
5.1.5 电子邮件 60
5.2 用户数据库 60
5.2.1 /etc/passwd文件 61
5.2.2 /etc/shadow文件 62
5.2.3 /etc/group文件 63
5.3 用户管理工具 63
5.3.1 使用命令行进行用户管理 63
5.3.2 使用LinuxConf进行用户管理 67
5.4 SetUID和SetGID程序 71
5.5 如果没有文件的所有权 71
5.6 小结 72
第6章 命令行 73
6.1 BASH简介 73
6.1.1 作业控制 74
6.1.2 环境变量 74
6.1.3 管道 75
6.1.4 重定向 76
6.1.5 BASH的命令行快捷键 76
6.2 文档工具 77
6.2.1 man命令 78
6.2.2 texinfo系统 79
6.3 文件列表、所有权和访问权限 79
6.3.1 列出文件清单命令ls 79
6.3.2 文件和子目录类型 79
6.3.3 改变文件的所有权命令chown 81
6.3.4 改变用户分组命令chgrp 81
6.3.5 改变文件属性命令chmod 81
6.4 文件管理和操作 83
6.4.1 拷贝文件命令cp 83
6.4.2 移动文件命令mv 83
6.4.3 链接文件:ln命令 84
6.4.4 查找文件命令find 84
6.4.5 转换并拷贝文件命令dd 85
6.4.6 文件压缩命令gzip 85
6.4.7 建立子目录命令mkdir 86
6.4.8 删除子目录命令rmdir 86
6.4.9 显示当前工作子目录命令pwd 87
6.4.10 磁带文件归档命令tar 87
6.4.11 合并文件命令cat 88
6.4.12 分屏显示文件命令more 88
6.4.13 磁盘操作工具命令du 89
6.4.14 查找文件保存在哪个子目录里命令which 89
6.4.15 查找命令的保存位置命令whereis 89
6.4.16 释放磁盘空间命令df 89
6.4.17 同步磁盘命令sync 90
6.5 进程管理 90
6.5.1 列出进程清单命令ps 90
6.5.2 交互列出进程清单命令top 92
6.5.3 向某个进程发送消息命令kill 93
6.6 其他工具 94
6.6.1 显示系统名称命令uname 94
6.6.2 查看用户命令who 95
6.6.3 改变用户身份命令su 95
6.6.4 编辑器程序 95
6.7 小结 96
第7章 开机和关机 98
7.1 LILO 98
7.2 配置LILO 98
7.2.1 附加的LILO参数 100
7.2.2 添加引导用的新内核 101
7.3 运行LILO 102
7.4 开机引导的步骤 102
7.4.1 rc命令脚本程序 103
7.4.2 编写自己的rc命令脚本程序 105
7.4.3 激活或者禁止服务项目 107
7.5 小结 108
第8章 文件系统 109
8.1 文件系统的构成 109
8.1.1 i-结点 109
8.1.2 超级块 110
8.2 管理文件系统 110
8.2.1 挂装和卸载本地磁盘 111
8.2.2 使用fsck程序 114
8.3 对硬盘进行分区 115
8.3.1 硬盘的表示方法 116
8.3.2 建立硬盘分区 116
8.3.3 建立文件系统 121
8.4 网络文件系统 122
8.4.1 挂装NFS分区 122
8.4.2 使用automounter自动挂装子系统 123
8.5 硬盘空间配额的管理 125
8.5.1 实现配额管理的准备工作 125
8.5.2 设置配额 126
8.5.3 管理配额 128
8.6 小结 129
第9章 核心级系统服务 130
9.1 init服务 130
9.1.1 /etc/inittab文件 130
9.1.2 telinit命令 132
9.2 inetd进程 132
9.2.1 etc/inetd.conf文件 132
9.2.2 安全性与inetd.conf文件 133
9.3 syslogd守护进程 134
9.3.1 调用syslogd 134
9.3.2 /etc/syslog.conf文件 135
9.4 cron程序 138
9.5 小结 139
第10章 编译Linux内核 141
10.1 内核到底是什么 141
10.2 获取内核源代码 142
10.2.1 选择正确的版本 143
10.2.2 解包内核源代码 143
10.3 建立内核 145
10.3.1 make xconfig过程 145
10.3.2 内核功能与模块 146
10.3.3 编译内核 151
10.4 安装内核 151
10.5 给内核打补丁 153
10.5.1 下载并解包补丁文件 153
10.5.2 打补丁 154
10.6 小结 154
第11章 提高单个服务器的安全性 156
11.1 TCP/IP与网络安全 156
11.2 追踪服务 157
11.2.1 使用netstat命令 158
11.2.2 netstat命令输出与系统的安全性 159
11.2.3 关闭服务 159
11.3 监控系统 160
11.3.1 挖掘syslog命令潜力 161
11.3.2 使用MRTG监控带宽 162
11.3.3 COPS 162
11.3.4 TripWire 162
11.3.5 SATAN 163
11.4 Web求助站点和邮件表 163
11.4.1 CERT 163
11.4.2 BugTraq 163
11.4.3 Rootshell 164
11.4.4 Security Focus 164
11.5 其他 164
第三部分 Internet网络服务 165
第12章 DNS域名解析服务 165
12.1 DNS前身:/etc/hosts文件 166
12.2 DNS的组成部分 167
12.2.1 域和主机 167
12.2.2 子域 168
12.2.3 in-addr.arpa域 169
12.2.4 服务器类型 170
12.3 安装DNS服务器 170
12.3.1 下载、解包和阅读有关资料 171
12.3.2 编译BIND 172
12.4 配置客户 173
12.5 配置服务器 182
12.5.1 修改/etc/named.conf文件以配置一个主区域 182
12.5.2 修改/etc/named.conf文件以配置一个从区域 183
12.5.3 修改/etc/named.conf文件以配置一个缓冲区域 184
12.5.4 DNS记录类型 185
12.6 组装各部分 188
12.7 DNS工具箱 193
12.7.1 nslookup 193
12.7.2 dig 194
12.7.3 whois 194
12.7.4 其他参考资料 195
12.8 小结 195
第13章 FTP 204
13.1 FTP的基本原理 204
13.2 获得最新版本的wu-ftpd软件 205
13.2.1 阅读README文件 206
13.2.2 编译并安装wu-ftpd软件 206
13.3 配置wu-ftpd软件 207
13.3.1 通过/etc/ftpaccess文件控制访问权限 207
13.3.2 系统日志文件 216
13.3.3 即时文件转换 216
13.3.4 配置主机访问权限 217
13.4 套接字配置 218
13.4.1 匿名用户访问 218
13.4.2 注册用户访问和混合式访问 222
13.5 配置虚拟FTP服务器 223
13.6 小结 224
第14章 使用Apache设置Web服务器 225
14.1 HTTP协议的基本原理 225
14.1.1 标题 225
14.1.2 非标准端口 226
14.1.3 进程所有者 227
14.2 安装Apache HTTP服务器 228
14.2.1 编译Apache软件 228
14.2.2 启动和终止Apache软件 229
14.2.3 测试Apache软件 230
14.3 配置Apache软件 230
14.3.1 建立一个简单的顶级主页 230
14.3.2 Apache软件的配置文件 231
14.3.3 常见配置修改情况 231
14.4 小结 233
第15章 SMTP 234
15.1 SMTP的基本原理 234
15.1.1 SMTP的基本实现过程 234
15.1.2 安全性 236
15.1.2 SMTP和POP的比较 237
15.1.4 推荐参考书 237
15.2 获得并安装Sendmail软件 238
15.2.1 下载Sendmail软件 238
15.2.2 编译Sendmail软件 239
15.3 通过MC文件配置Sendmail软件 240
15.3.1 配置Sendmail软件需要的M4语言知识 241
15.3.2 Sendmail软件使用的宏命令 242
15.3.3 一个完整的配置示例 249
15.3.4 把宏命令编译到配置文件里 250
15.4 安装Sendmail软件 250
15.5 主配置文件以外的其他配置文件 250
15.5.1 aliases文件 251
15.5.2 “access”(访问权限)数据库 252
15.6 Sendmail运行中的问题 253
15.6.1 mailq命令 253
15.6.2 Sendmail在运行吗 254
15.6.3 Sendmail把它的队列和缓冲池保存在什么地方 254
15.6.4 怎样从队列里删除一个项目 255
15.6.5 加速处理邮件队列 255
15.6.6 对电子邮件进行系统记录 256
15.7 小结 256
第16章 POP 258
16.1 POP的基本原理 258
16.1.1 使用telnet阅读邮件 259
16.1.2 POP和其他协议之间的冲突 261
16.2 Qpopper软件 261
16.2.1 安装Qpopper软件 262
16.2.2 编译Qpopper软件 262
16.2.3 设置Qpopper软件 264
16.2.4 测试 265
16.3 Qpopper软件的高级配置操作 265
16.3.1 服务器工作模式 265
16.3.2 特殊身份验证功能 265
16.3.3 带身份验证加强功能的POP 266
16.3.4 公告板 267
16.3.5 Qpopper软件的命令行参数 268
16.4 小结 268
第17章 SSH 269
17.1 公共密钥密码学 269
17.2 SSH的版本及其发行版本 271
17.2.1 SSH的版本 272
17.2.2 SSH客户软件的其他供货商 272
17.3 下载、编译和安装SSH软件包 273
17.3.1 编译SSH的版本1软件包 273
17.3.2 编译SSH的版本2软件包 274
17.4 配置SSH软件包 275
17.4.1 配置SSH2和SSH1同时运行 275
17.4.2 服务器的启动和关闭 276
17.4.3 配置客户的密钥交换功能 276
17.5 与SSH软件包有关的应用程序 277
17.6 小结 278
第四部分 内部网(Intranet)网络服务 279
第18章 网络文件系统(NFS) 279
18.1 NFS的基本原理 279
18.1.1 挂装和存取硬盘分区 279
18.1.2 NFS的安全性 280
18.1.3 NFS的版本 280
18.2 激活NFS 280
18.2.1 NFS的组件 281
18.2.2 NFS的内核支持 281
18.3 配置NFS服务器 282
18.3.1 /etc/exports配置文件 282
18.3.2 通知NFS服务器进程/etc/exports文件中的改动 283
18.3.3 常见问题 283
18.4 配置NFS客户 284
18.5 NFS分区常见用途 285
18.6 检查并排除NFS故障 286
18.6.1 孤立失效的文件句柄 286
18.6.2 拒绝访问 286
18.6.3 硬、软挂装的比较 286
18.7 小结 287
第19章 网络信息服务(NIS) 288
19.1 NIS的基本原理 288
19.1.1 NIS服务器 289
19.1.2 “域”的概念 289
19.2 配置主控NIS服务器 290
19.2.1 建立域名 290
19.2.2 启动NIS 290
19.2.3 编辑Makefile文件 291
19.2.4 使用ypinit命令 293
19.3 配置NIS客户 294
19.3.1 编辑/etc/yp.conf文件 295
19.3.2 设置启动脚本程序 295
19.3.3 /etc/nsswitch.conf文件 296
19.3.4 测试NIS客户的配置情况 296
19.4 配置附属NIS服务器 297
19.4.1 设置域名 297
19.4.2 设置NIS主控服务器对辅助NIS服务器的推操作 297
19.4.3 执行ypinit命令 297
19.5 NIS软件工具 298
19.6 在配置文件里使用NIS 299
19.7 在一个现实网络里实现NIS 300
19.7.1 小型网络 300
19.7.2 带分支的网络 300
19.7.3 规模大过建筑物的网络 301
19.8 小结 301
第20章 Samba服务 302
20.1 SMB服务的基本原理 302
20.1.1 用户名和口令 302
20.1.2 加密口令 303
20.1.3 守护进程smbd和nmbd之间的区别 303
20.1.4 编译并安装Samba 304
20.1.5 设置SWAT工具 305
20.2 Samba的系统管理 306
20.3 使用SWAT工具 307
20.3.1 SWAT软件的菜单 307
20.3.2 建立共享关系 309
20.4 使用smbclient程序 311
20.4.1 浏览服务器 311
20.4.2 远程文件访问 312
20.4.3 远程打印机访问 312
20.5 使用smbmount命令 313
20.6 对加密口令功能的支持 313
20.6.1 允许使用NULL口令 313
20.6.2 使用smbpasswd命令修改口令 314
20.7 检查并排除Samba故障 314
20.8 小结 314
第21章 打印服务 316
21.1 lpd守护进程的基础知识 316
21.1.1 启动lpd守护进程 317
21.1.2 允许远程用户 317
21.2 配置/etc/printcap文件 317
21.2.1 /etc/printcap文件中的命令 318
21.2.2 使用Samba服务打印 319
21.2.3 让修改生效 320
21.3 lpd的客户 320
21.3.1 lpr 321
21.3.2 lprm 321
21.3.3 lpq 322
21.4 小结 322
第22章 动态主机配置协议(DHCP) 323
22.1 DHCP协议的基本原理 323
22.2 DHCP服务器 324
22.2.1 下载、编译和安装DHCP服务器 324
22.2.2 配置DHCP服务器 324
22.2.3 dhcpd.conf文件示例 329
22.2.4 正常运行情况 330
22.3 DHCP客户守护进程 330
22.3.1 下载、编译和安装DHCP客户 330
22.3.2 配置DHCP客户 331
22.4 小结 332
第23章 备份 333
23.1 评估自己的备份需求 333
23.2 管理备份设备和文件 334
23.2.1 使用mknod命令建立设备文件 335
23.2.2 使用mt命令操作磁带设备 335
23.3 命令行工具程序 336
23.3.1 dump命令和restore命令 336
23.3.2 tar命令 340
23.4 小结 340
第五部分 Linux操作系统的高级网络功能 341
第24章 网络配置 341
24.1 网络基本知识 341
24.1.1 IP地址 341
24.1.2 CIDR技术 343
24.2 模块和网络接口卡 344
24.3 ifconfig程序 344
24.3.1 简单用法 345
24.3.2 其他参数 347
24.4 使用route命令 347
24.4.1 简单用法 348
24.4.2 显示路由 349
24.5 小结 350
第25章 Linux的高级网络功能 351
25.1 IP假名技术 351
25.2 数据包过滤 352
25.2.1 数据包过滤的实现 353
25.2.2 ipchains工具软件 355
25.2.3 几种解决方案 361
25.3 IP地址欺诈技术 364
25.3.1 IP欺诈的三语句解决方案 366
25.3.2 地址欺诈代理 367
25.4 小结 368
第26章 /proc文件系统 369
26.1 /proc文件里有些什么东西 369
26.2 部分有用的/proc数据项 370
26.3 通过/proc实现的常见报告和设置 372
26.3.1 对SYN Flood攻击现象的防护 372
26.2.2 大容量服务器的问题 373
26.3.3 调试硬件冲突 373
26.4 小结 373
附录A Red Hat Linux发行版本中的程序设计语言 375
附录B Linux操作系统中的常用软件 379