第一部分 基础知识 1
第1章 UNIX环境概述 1
1.1 UNIX的起源 1
1.1.1 历史 1
1.1.2 UNIX的版本 2
1.1.3 谁拥有什么 5
1.2 UNIX操作系统 6
1.2.1 UNIX内核 6
1.2.2 UNIX硬件 8
1.2.3 UNIX都有的特点 9
1.2.4 UNIX网络 11
1.3 市场上的UNIX服务 11
1.4 开放式系统标准 12
1.5 小结 14
第2章 登录 15
2.1 了解登录过程 15
2.1.1 用户登录名 15
2.1.2 超级用户 15
2.1.5 登录进入以后 16
2.1.4 登录错误 16
2.1.3 登录提示符 16
2.1.6 修改口令 17
2.1.7 退出系统 17
2.2 UNIX口令管理 18
2.2.1 安全的必要性 18
2.2.2 选择一个好口令 19
2.2.3 实行口令换代 22
2.3 小结 22
3.2 使用哪种Shell 23
3.1 什么是UNIX Shell 23
第3章 UNIX Shell和系统命令 23
3.3 选择Shell 24
3.4 查找目录 25
3.4.1 psw命令 25
3.4.2 cd命令 25
3.5 列文件名和目录名 26
3.5.1 ls命令 26
3.5.2 产生文件名 28
3.5.3 特殊字符 29
3.6.2 使用more显示文件 30
3.6 显示文件 30
3.6.1 使用cat显示文件 30
3.6.3 使用head查看文件头部 31
3.6.4 使用tail查看文件尾部 31
3.6.5 转储文件 31
3.7 使用文件和目录 32
3.7.1 使用cp拷贝文件和目录 32
3.7.2 使用mv移动和重命名文件 33
3.7.3 使用rm删除文件和目录 33
3.7.4 创建和删除目录 34
3.7.5 使用find查找文件 35
3.8 管道、I/O重定向和过滤 36
3.8.1 理解I/O 36
3.8.2 理解文件描述符 37
3.8.3 使用I/O重定向 37
3.8.4 使用管道 39
3.9 过滤命令 39
3.9.1 使用cut和paste 40
3.9.2 sort工具 40
3.9.4 grep命令 41
3.9.3 tee工具 41
3.9.5 awk命令 43
3.10 与用户一起工作 44
3.10.1 查看登录用户 44
3.10.2 获取用户信息 45
3.10.3 使用su切换到另一个用户 45
3.10.4 给用户发送消息 46
3.10.5 与其他用户对话 46
3.11 UNIX进程 47
3.12 小结 47
3.10.7 限制消息 47
3.10.6 向所有用户发送消息 47
第4章 vi编辑器 48
4.1 vi简介 48
4.2 vi操作模式 48
4.3 使用vi编辑文本 50
4.3.1 理解编辑进程 50
4.3.2 终端类型 51
4.3.3 启动vi 51
4.3.5 创建第一个vi文件 52
4.3.4 退出vi 52
4.3.6 在vi中定位 53
4.3.7 添加和插入文本 54
4.3.8 删除文本 55
4.3.9 修改和替换文本 55
4.3.12 重复命令 56
4.3.13 管理文件 56
4.3.11 撤消修改 56
4.3.10 连接一行 56
4.3.14 在崩溃后恢复文本 57
4.3.15 基本vi命令汇总 58
4.4 高级vi技巧 59
4.4.1 拷贝和粘贴文本 59
4.4.2 搜索文本 59
4.4.3 搜索和替换文本 60
4.4.4 退出到Shell 61
4.4.5 高级vi命令汇总 61
4.5.1 在vi内设置选项 62
4.5.2 选项列表 62
4.5 设置vi选项 62
4.5.3 在vi外设置选项 63
4.6 其它UNIX编辑器 63
4.7 小结 64
第5章 文件、目录和权限 66
5.1 UNIX文件和目录结构 66
5.1.1 文件和目录名 66
5.1.2 路径名 67
5.2 目录树的组织 68
5.2.1 根目录 68
5.2.2 系统目录 69
5.3 文件类型 71
5.3.1 检查文件类型 71
5.3.2 标准文件 71
5.3.3 目录 72
5.3.4 符号链 72
5.3.5 设备文件 72
5.3.6 命名管道 73
5.4 拥有者、分组和权限 73
5.4.1 查看权限 74
5.4.2 定义权限 74
5.4.3 改变文件和目录权限 75
5.5 改变拥有者和分组 77
5.5.1 改变拥有权 77
5.5.2 改变分组拥有权 78
5.6 i节点表 78
5.7 小结 79
第6章 UNIX进程 80
6.1 简介 80
6.2 进程 80
6.3 进程的创建 81
6.4 进程状态 82
6.5 查看进程/程序信息的命令 86
6.6 小结 95
第7章 Shell脚本基础 96
7.1 Shell编程简介 96
7.1.1 Korn Shell 96
7.1.2 管道 97
7.1.3 列表 97
7.1.4 重定向 98
7.1.6 注解 99
7.1.5 子Shell 99
7.2 变量 100
7.2.1 数组变量 100
7.2.2 环境变量 101
7.2.3 Shell变量 102
7.2.4 取消变量设置 102
7.3 替换和引用 103
7.3.1 命令替换 103
7.3.2 算术替换 103
7.4.1 流控 104
7.4 控制结构 104
7.3.3 引用 104
7.4.2 循环 107
7.5 小结 109
第8章 高级Shell脚本 110
8.1 使Shell脚本可执行 110
8.2 特殊变量和变量替换 111
8.2.1 特殊变量 111
8.2.2 变量替换 114
8.3 函数 115
8.4.1 getopts命令 117
8.4.2 一个使用getopts的例子 117
8.4 Shell脚本中的选项分析 117
8.5 处理信号 119
8.5.1 信号 119
8.5.2 trap命令 120
8.6 调试和记录Shell脚本 121
8.6.1 调试 121
8.6.2 记录 122
8.7 小结 123
9.2 CDE的特点 124
9.1 通用桌面环境概述 124
第9章 UNIX窗口系统 124
9.2.1 登录 125
9.2.2 CDE前台面板概述 125
9.2.3 图形工作区管理器 126
9.2.4 CDE前台面板的功能 127
9.3 CDE工具 128
9.3.1 dtterm 128
9.3.2 dtpad 131
9.3.3 文件管理器 134
9.3.4 日历管理器 138
9.4.1 格式管理器 141
9.4 定制窗口环境 141
9.4.2 创建及安装新动作和子面板 142
9.4.3 编辑配置文件 144
9.5 其它窗口系统 145
9.5.1 Open Windows 145
9.5.2 HP-VUE 145
9.5.3 KDE 146
9.6 小结 146
10.1 理解用户和组的概念 147
10.1.1 Passwd文件 147
第二部分 系统管理 147
第10章 用户帐号和组管理 147
10.1.2 Shadow文件 150
10.1.3 AIX的不同 151
10.1.4 group文件 152
10.2 理解UID和GID 153
10.3 创建用户帐号 153
10.4 删除用户帐号 158
10.5 更改用户帐号 159
10.6 编写Shell脚本创建用户帐号 160
10.7 创建组 163
10.8 修改组 164
10.9 删除组 166
10.10 定制用户环境 167
10.11 UNIX口令 169
10.12 小结 170
第11章 启动和关闭 172
11.1 启动进程 172
11.2 UNIX引导进程 173
11.2.1 运行级 174
11.2.2 引导阶段 175
11.3 init进程 175
11.3.1 inittab文件 177
11.3.2 运行控制脚本 179
11.3.3 运行控制目录 180
11.3.4 启动和杀死脚本 181
11.3.5 /etc/init.d目录 182
11.3.6 改变运行级 183
11.3.7 验证运行级 183
11.4 关机进程 184
11.3.8 初始化命令:init 184
11.5 为引导和启动进程查找故障 186
11.5.1 第一阶段——POST检测引导错误——硬件问题 186
11.5.2 第二阶段——引导程序错误 187
11.5.3 第三阶段——执行向多用户模式的引导 188
11.6 小结 189
第12章 设备管理 190
12.1 什么是设备管理 190
12.2 设备文件 190
12.2.1 硬盘和CD-ROM 191
12.2.2 磁带设备 193
12.2.3 串口/伪(Serial Ports/pseudo)端口 195
12.2.4 其它外围设备 195
12.3 加入硬盘设备 195
12.3.1 SunOS 4.x 196
12.3.2 Solaris 2.x 197
12.3.3 HP/UX 10/11 198
12.3.4 AIX 4.x 199
12.4 检验硬盘的存在 199
12.4.1 SunOS 4.x 199
12.4.3 HP/UX 10/11 200
12.4.2 Solaris 2.x 200
12.4.4 AIX 4 201
12.5 配置设备 201
12.5.1 SunOS 4.x 201
12.5.2 Solaris 2.x 202
12.5.3 HP/UX 10/11 204
12.6.4 AIX 4.x 205
12.6.3 HP/UX 10/11 205
12.6.2 Solaris 2.x 205
12.6.1 SunOS 4.x 205
12.6 测试驱动器 205
12.5.4 AIX 4.x 205
12.7 增加一个CD-ROM 206
12.7.1 SunOS 4.x和Solaris 2.x 206
12.7.2 HP/UX 10/11和AIX 4.x 206
12.8 验证CD-ROM的存在 206
12.8.1 Sun OS 4.x 206
12.9 终端和调制解调器 207
12.8.4 AIX 4.x 207
12.8.3 HP/UX 10/11 207
12.8.2 Solaris 2.x 207
12.9.1 终端设置 208
12.9.2 连接终端设备 208
12.9.3 SunOS 4.x 209
12.9.4 Solaris 2.x 210
12.9.5 HP/UX 10/11 211
12.9.6 AIX 4.x 211
12.9.7 终端处理 211
12.9.8 对终端问题的故障检测 211
12.10 小结 212
第13章 文件系统 213
13.1 简介 213
13.2 理解文件系统 213
13.2.1 文件类型 213
13.2.2 inodes和superblocks 214
13.3.4 msdos文件系统 215
13.3.3 iso9660文件系统 215
13.3.5 proc和swap文件系统 215
13.3.2 ufs文件系统 215
13.3.1 ext2文件系统 215
13.3 不同类型的文件系统 215
13.4 创建文件系统 216
13.4.1 磁盘定位——设备入口 216
13.4.2 格式化磁盘和为磁盘分区 216
13.5 安装和拆卸文件系统 220
13.5.1 安装一个文件系统 221
13.5.2 安装选项 221
13.5.3 拆卸文件系统 222
13.5.4 配置文件 223
13.6 监视文件系统 223
13.6.1 监视整体使用 224
13.6.2 磁盘限额 225
13.7 用fsck维护文件系统 227
13.7.1 fsck的阶段 227
13.7.2 运行fsck 228
13.8 小结 228
14.2 BSD(lpr/lpd)打印系统 229
14.2.1 lpr命令:将文件送去打印 229
14.1 简介 229
第14章 打印 229
14.2.2 在假脱机目录创建的数据文件:cf*,df* 231
14.2.3 lpd daemon:控制打印进程 232
14.3 管理打印队列 233
14.4 lprm命令:从打印队列中删除文件 233
14.4.1 使用lpc命令 234
14.4.2 用pac命令收集打印统计信息 236
14.4.3 在BSD系统安装和配置打印机 237
14.5 SVR4打印系统 240
14.5.1 什么是目的和类 240
14.5.2 对打印文件使用lp和cancel命令 241
14.5.3 lpadmin命令 242
14.6 小结 245
第15章 备份和恢复 246
15.1 理解数据的重要性 246
15.2 备份策略一览 246
15.3 选择合适的备份设备 247
15.3.1 磁带驱动器 248
15.3.2 硬盘 248
15.3.3 其它介质 249
15.4 执行备份策略 249
15.4.1 祖父-父-子方法 250
15.4.3 提示和一些小技巧 251
15.4.2 汉诺塔方法 251
15.5 备份和恢复工具 253
15.5.1 使用volcopy和labelit 253
15.5.2 使用dump和restore 253
15.5.3 使用tar 254
15.5.4 使用cpio 255
15.5.5 使用dd 256
15.5.6 商业备份产品 257
15.6.2 运行fsck 258
15.6 用fsck维护文件系统 258
15.6.1 /etc/fstab文件 258
15.6.3 p_fsck——并行fsck 259
15.7 恢复根文件系统 260
15.8 小结 261
第16章 任务自动化 262
16.1 简介 262
16.2 运行多个作业 262
16.2.2 把作业取到前台 263
16.2.3 将作业放到后台 263
16.2.1 jobs命令 263
16.3 在指定的时间执行命令 264
16.3.1 at命令 264
16.3.2 控制对at的访问 268
16.4 在周期性间隔时间调度命令的执行 268
16.4.1 cron进程 268
16.4.2 cron配置文件 269
16.4.3 依照cron的高级时间规格说明 271
16.4.6 控制对cron的访问 272
16.4.5 从cron中删除任务 272
16.4.4 增加和更改cron任务 272
16.4.7 为cron进行故障检测 273
16.5 小结 274
第三部分 TCP/IP网络管理 275
第17章 网络基础 275
17.1 网络综述 275
17.2 主机名和IP地址 276
17.3 网络连接命令 277
17.3.1 使用telnet 278
17.3.2 使用ftp 281
17.3.3 r-utilities 284
17.3.4 使用ping 288
17.3.5 使用finger 289
17.3.6 使用talk 290
17.4 小结 290
第18章 网络互连技术 291
18.1 定义连接 291
18.2 不同的网络模型 291
18.2.1 探索OSI模型 292
18.2.2 网络层次如何创建网络模型 293
18.3 看一看DOD模型 294
18.3.1 TCP/IP简史 295
18.3.2 协议和RFC 296
18.3.3 进程/应用层 297
18.3.4 主机-主机层 301
18.3.5 Internet层 303
18.3.6 IP地址分类 305
18.4 子网 306
18.4.1 子网掩码 306
18.4.2 网络访问层 307
18.5 不同类型的网络互连硬件 309
18.5.2 什么是网桥 310
18.5.3 什么是交换器 310
18.5.1 什么是中继器 310
18.5.4 什么是路由器 311
18.5.5 什么是桥式路由器 311
18.5.6 什么是网关 312
18.6 小结 312
19.1 TCP/IP安装概述 313
19.1.1 预安装信息 313
第19章 配置TCP/IP 313
19.1.2 安装硬件 316
19.1.3 编译新内核 316
19.1.4 配置网卡 317
19.1.5 测试TCP/IP连接 318
19.2 TCP/IP网络配置 318
19.2.1 hosts文件 318
19.2.2 netmasks文件 319
19.2.3 networks文件 320
19.2.4 services文件 320
19.2.6 RPC服务 321
19.2.5 resolve.conf文件 321
19.2.7 /etc/inetd.conf文件 322
19.3 不同类型的网络接口 324
19.4 使用网络接口 324
19.4.1 查看接口 324
19.4.2 改变网络接口参数 325
19.5 netstat命令 326
19.5.1 解释netstat-a的输出 326
19.5.2 解释netstat-r的输出 327
19.5.4 协议统计 328
19.5.3 解释netstat-i的输出 328
19.6 小结 329
第20章 IP路由选择 331
20.1 概述 331
20.2 怎样传输IP数据报 331
20.2.1 IP包格式 332
20.2.2 本地网段 332
20.2.3 单路由网段 333
20.2.4 多路由网段 333
20.3 为什么使用路由选择协议 334
20.4.1 路由选择协议分类 335
20.4 路由选择协议概述 335
20.4.2 距离向量和链路状态路由选择的比较 337
20.4.3 路由选择信息协议 340
20.4.4 开放式最短路径优先 341
20.4.5 内部网关路由选择协议 342
20.4.6 路由器发现协议 342
20.4.7 其它路由选择协议 343
20.5 维护内核路由选择表 344
20.5.5 静态路由 345
20.5.4 维护路由选择表 345
20.5.3 缺省路由 345
20.5.2 网络路由 345
20.5.1 主机路由 345
20.5.6 动态路由 346
20.5.7 route命令 346
20.6 UNIX路由选择协议Daemon 347
20.6.1 gated配置文件 348
20.6.2 routed配置文件 348
20.6.3 使用routed执行RIPⅠ 348
20.6.5 使用gated执行RIPⅡ 349
20.6.4 使用gated执行RIPⅠ 349
20.6.6 使用gated执行OSPF 350
20.6.7 使用in.rdisc和irdd执行RDISC 350
20.7 小结 352
第21章 高级网络技术 353
21.1 什么是高级网络 353
21.2 实现点到点协议 353
21.2.1 什么是PPP 353
21.2.2 UNIX中的PPP 354
21.2.4 测试PPP 355
21.2.3 安装PPP 355
21.3 专用网络、防火墙和NAT 356
21.3.1 专用网络 356
21.3.2 防火墙 357
21.3.3 代理服务器 359
21.3.4 Socks5代理服务器 360
21.4 Mbone 361
21.4.1 Mbone如何工作 361
21.4.2 在Mbone上可以利用的资源 362
21.4.3 怎样加入Mbone 362
21.4.4 在UNIX上使用Mbone工具 364
21.5 下一代Internet协议(第六版) 366
21.5.1 什么是IPng 366
21.5.2 IPv6的主要特点 366
21.5.3 IPv6对UNIX系统的影响 368
21.6 小结 370
第四部分 网络服务 371
第22章 NFS 371
22.1 分布式文件系统简介 371
22.2 NFS环境 371
22.2.1 远程过程呼叫协议 372
22.2.2 是UDP还是TCP 373
22.2.3 用XDR交换数据 374
22.2.4 NFS协议和Mount协议 374
22.3 NFS客户机 376
22.3.1 客户机Daemon 376
22.3.2 安装远程文件系统 376
22.3.3 使用fstab文件 377
22.3.4 许可和选项 378
22.3.5 拆卸远程文件系统 378
22.4.1 服务器方Daemon 379
22.4.2 共享和非共享的文件系统 379
22.4 NFS服务器 379
22.4.3 配置文件 380
22.4.4 使用share命令 381
22.5 NFS文件系统的监控、故障检测及恢复 382
22.6 自动安装文件系统 383
22.6.1 automount命令 383
22.6.2 master映像 384
22.6.3 直接映像 384
22.7 设置NFS服务器和客户机 385
22.6.4 间接映像 385
22.8 在非UNIX客户机上使用NFS 386
22.9 小结 386
第23章 DNS 388
23.1 Internet简史 388
23.2 域名服务概述 389
23.2.1 域结构 389
23.2.2 正式域名 390
23.2.3 域和区 391
23.3 DNS域名服务器 391
23.3.4 DNS询问举例 392
23.3.3 Caching Only域名服务器 392
23.3.1 主域名服务器 392
23.3.2 辅域名服务器 392
23.4 资源记录 393
23.4.1 授权起始(SOA)节 394
23.4.2 域名服务器(NS)节 395
23.4.3 数据库节 395
23.4.4 完整的区文件 396
23.5 配置DNS客户机 398
23.6 配置DNS服务器 398
23.6.1 伯克利网际命名域(BIND) 399
23.6.2 启动BIND 400
23.6.3 测试域名服务器 400
23.6.4 配置辅域名服务器 401
23.6.5 委托子域 402
23.6.6 设置邮件交换机 402
23.7 DNS的故障检测、恢复和调试 402
23.8 小结 403
24.1.1 HTTP 404
24.1 理解Web服务器 404
第24章 Apache Web服务器 404
24.1.2 URL 405
24.1.3 CGI 406
24.2 Apache服务器的安装 406
24.2.1 准备安装服务器 406
24.2.2 获得Apache服务器软件 408
24.2.3 Apache模块 408
24.2.4 编译和安装服务器 409
24.3.1 Apache配置文件 410
24.3 基本Apache配置 410
24.3.2 只用一个配置文件 418
24.4 高级Apache配置 418
24.4.1 用户访问控制 419
24.4.2 用户个人的Web服务器 421
24.4.3 虚拟主机 421
24.4.4 代理服务器 422
24.5 启动和终止Apache服务器 423
24.6 小结 424
25.1 电子邮件简介 425
第25章 Sendmail和POP 425
25.2 使用Email(MUA) 426
25.2.1 使用基于文本的MUA(mailx) 427
25.2.2 使用基于GUI的MUA(Netscape Messenger) 428
25.3 理解Email协议 429
25.3.1 SMTP协议简介 430
25.3.2 SMTP传输过程 430
25.3.3 邮件头语法 431
25.3.4 使用DNS进行邮件寻址和路由选择 432
25.3.5 SMTP服务扩展 432
25.4 Sendmail简介 433
25.3.6 多用途的网际邮件扩充协议 433
25.4.1 编译sendmail 434
25.4.2 sendmail中DNS的角色 434
25.4.3 sendmail别名 435
25.4.4 sendmail配置文件 436
25.4.5 使用M4宏处理器 439
25.4.6 运行sendmail 440
25.4.7 sendmail的故障检测与恢复 441
25.5 邮局协议 441
25.5.1 服务器上的POP 441
25.6 小结 442
25.5.2 客户机上的POP 442
第26章 安全 443
26.1 物理级安全和安全策略 443
26.2 操作系统安全 444
26.3 使用好的口令 445
26.3.1 保护/etc/passwd文件 446
26.3.2 伪造登录:口令窃贼 447
26.3.3 非必须的系统服务 447
26.4 审查和系统注册文件 448
26.3.4 拨入/拨出安全 448
26.5 网络安全 450
26.5.1 网络探查者 451
26.5.2 电子欺骗法 452
26.5.3 拒绝服务攻击 452
26.5.4 报文过滤是第一道防线 452
26.5.5 什么是应用网关 453
26.6 使用ssh保障远程管理的安全 453
26.6.2 Cops 454
26.6.2 Satan 454
26.7.1 理解用公共和私有密钥加密 455
26.7 PGP 455
26.7.2 如何获得、编译、配置PGP 456
26.7.3 使用PGP 458
26.7.4 解密PGP消息 458
26.8 CERT和其它Internet资源 459
26.9 小结 459
第27章 性能调整 460
27.1 性能调整过程 460
27.1.1 性能定义 460
27.1.2 分析数据 461
27.1.4 测试和验证 462
27.1.3 产生假设 462
27.1.5 实现解决方案 463
27.2 性能策略 463
27.2.1 容量计划 463
27.2.2 用RAID磁盘系统获得最大性能 463
27.2.3 使用限额 464
27.2.4 用计帐方法跟踪使用情况 464
27.3 常见性能瓶颈 465
27.3.1 系统硬件和外设 466
27.3.2 应用程序 466
27.4 收集统计结果:可用的工具 467
27.3.3 内核 467
27.3.4 网络 467
27.4.1 用ps和uptime获取通用系统信息 468
27.4.2 用vmstat监视CPU和内存 469
27.4.3 用iostat监视磁盘 471
27.4.4 用netstat监视网络接口 472
27.4.5 用nfstat监视NFS 472
27.4.6 用tcpdump或snoop监视网络 472
27.4.7 top命令 473
27.5.2 SUN公司的SE Tookit和Virtual Adrian 476
27.5.1 Digital UNIX的性能管理器4.0D 476
27.5 其它性能工具 476
27.6 小结 477
第五部分 附录 479
附录A RFC 479
A.0 前言 479
A.1 RFC的有关信息 479
A.1.1 寻找RFC 480
A.1.2 Internet标准化过程 480
A.2 参考RFC(FYI) 483
A.3.1 有关RFC的RFC 485
A.3 RFC分类 485
A.3.2 一般Internet RFC 486
A.3.3 文件传输协议RFC 487
A.3.4 Finger RFC 487
A.3.5 Firewall RFC 487
A.3.6 Internet Protocol Version 6 RFC 487
A.3.7 Mail RFC 488
A.3.10 Telnet RFC 490
A.3.11 World Wide Web RFC 490
A.3.9 点到点协议RFC 490
A.3.8 网络文件系统RFC 490
附录B TCP-UDP公用端口 492
B.1 简介 492
B.2 公用端口号 492
B.2.1 注册的端口号 495
B.2.2 协议和服务名 495
附录C 词汇表 498
附录D CD-ROM上的内容 504
D.1 CD-ROM的顶层文件 504
D.2 CD-ROM上的软件 504