1.2 五步引导过程概述 1
1.3 第1步:固件——硬件自识别 1
目录 1
序 1
前言 1
第一部分 基本操作 1
第1章 启动和关机 1
1.1 介绍 1
1.3.1 固件的一些实例 2
1.3.3 固件设置 3
1.3.2 固件的工作 3
1.3.4 固件的机制和特点 4
1.4.2 bootloader的机制和特点 12
1.4.1 bootloader的工作 12
1.4 第2步:bootloader——载入OS 12
1.5 第3步:内核——初始化和控制转移 13
1.5.1 内核的工作 14
1.5.2 内核的机制和特点 15
1.6 第4步:init进程和初始化脚本 16
1.6.2 init的机制和特点:inittab 17
1.6.1 init的工作 17
1.6.3 init的机制和特点:init脚本 20
1.7 第5步:交给管理员——其他杂项 22
1.9 dmesg显示的Red Hat引导顺序 23
1.8 系统关闭和更改init级别 23
1.10 dmesg显示的Solaris引导顺序 26
1.11 最佳操作 29
1.13 注释 30
1.12 在线参考 30
2.2 物理设备 32
2.1 介绍 32
第2章 管理磁盘硬件 32
2.3.2 FireWire(IEEE 1394)简述 33
2.3.1 串行通信简述 33
2.3 独立于OS的硬件通信标准 33
2.3.5 并行通信简述 34
2.3.4 ATAPI简述 34
2.3.3 USB简述 34
2.3.6 IDE/ATA 35
2.3.7 SCSI 37
2.4.1 命名约定 48
2.4 了解你的系统 48
2.4.2 让OS报告它识别到的硬件 49
2.5 添加/删除磁盘(和其他设备) 52
2.5.1 添加设备 53
2.5.2 删除设备 55
2.6 最佳操作 56
2.7 在线参考 57
2.8 注释 59
3.2.1 虚拟设备:分区 62
3.2 合理划分磁盘空间 62
第3章 文件系统管理 62
3.1 介绍 62
3.2.2 逻辑结构:文件系统 66
3.2.3 划分原则 69
3.2.4 分区的技术细节 74
3.3 文件系统的进一步讨论 76
3.3.1 文件系统组成部分管理员须知 77
3.3.2 文件系统类型 85
3.4.1 本地文件系统创建 90
3.4 管理本地文件系统 90
3.4.2 本地文件系统可用性管理 91
3.4.3 空间管理 96
3.5 可移动存储介质 100
3.6 最佳操作 101
3.8 注释 102
3.7 在线参考 102
4.1 身份、实体、权力的定义 105
第4章 用户管理 105
4.2.1 /etc/passwd 107
4.2 在本地存储基本用户信息 107
4.2.2 /etc/group 109
4.2.3 /etc/shadow 111
4.3.1 rsync,rdist,cfengine 115
4.3 在网络上共享用户(或其他人的)信息 115
4.3.2 NIS(被NIS+取代) 116
4.3.3 LDAP 127
4.4.1 策略 129
4.4 创建帐户 129
4.4.2 技术问题 133
4.5.1 策略 136
4.5 删除帐户 136
4.5.2 技术问题 138
4.6 最佳操作 140
4.7 在线参考 142
4.8 注释 143
5.2.1 Interrnet是网络的网络 147
5.2 TCP/IP 147
第5章 网络应用 147
5.1 介绍 147
5.2.2 IP地址 150
5.2.3 IP配置与故障排除命令 156
5.2.4 服务与端口 162
5.3 最佳操作 166
5.4 在线参考 167
6.2.1 BSD系统日志 169
6.2 标准UNIX系统日志:syslog 169
第6章 日志 169
6.1 介绍 169
6.2.2 syslog内部模式 173
6.2.3 syslog.conf 174
6.3 计时:ntp 178
6.3.2 在系统中配置ntp 179
6.3.1 ntp结构 179
6.4 配置系统的日志安全 180
6.4.1 保护本地日志配置 181
6.4.2 保护远程日志配置 182
6.5 使用syslog记录应用程序日志 185
6.7 syslog以外的标准系统日志 186
6.6 syslog以外的特定应用程序日志 186
6.9 日志分析和报告 190
6.8 跨平台记录syslog的其他方式 190
6.9.1 日志分析 192
6.9.2 实时/准实时警告和通知 194
6.9.3 日志循环和保存 196
6.10 最佳操作 198
6.11 在线参考 199
6.12 注释 200
7.3 UNIX密码验证概述 201
7.2 身份验证的定义 201
第7章 身份验证 201
7.1 介绍 201
7.4 好的密码和糟糕的密码 202
7.4.2 Solaris 2.8中的密码检查规则 203
7.4.1 Linux Red Hat 7.1中的密码检查规则 203
7.4.3 Linux Red Hat 7.1中的密码有效期 205
7.5 基本UNIX密码实现 206
7.4.4 Solaris 2.8中的密码有效期 206
7.5.1 Linux Red Hat 7.1中的密码散列 207
7.5.5 Solaris 2.8中的shadow密码项域 208
7.5.4 Linux Red Hat 7.1中的shadow密码项域 208
7.5.2 Solaris 2.8中的密码散列 208
7.5.3 Linux Red Hat 7.1和Solaris 2.8的本地密码文件格式 208
7.5.8 Linux Red Hat 7.1中的newusers程序 209
7.5.7 在Solaris 2.8中编辑密码文件 209
7.5.6 在Linux Red Hat 7.1中编辑密码文件 209
7.6 密码破解 210
7.7 网络信息系统 211
7.7.2 Solaris 2.8中的nsswitch.conf文件 213
7.7.1 Linux Red Hat 7.1中的nsswitch.conf文件 213
7.8.2 Solaris 2.8中的散列算法 214
7.8.1 Linux Red Hat 7.1中的散列算法 214
7.8 其他UNIX密码算法 214
7.9 其他身份验证方案 215
7.10.1 Linux Red Hat 7.1的OpenSSH 217
7.10 ssh和身份验证 217
7.10.2 Solaris 2.8中的ssh选项 218
7.11 集成PAM 220
7.10.3 Kerberos 220
7.11.1 Linux Red Hat 7.1中的PAM 223
7.12 ident服务器和身份验证 224
7.11.2 Solaris 2.8中的PAM 224
7.13 最佳操作 225
7.12.2 Solaris 2.8的identd守护进程 225
7.12.1 Linux Red Hat 7.1的identd守护进程 225
7.14 参考 226
8.1 必须加强系统 228
第8章 系统安装后的保护措施 228
8.2 安装补丁:过程与策略 229
8.2.1 安装Solaris时 230
8.2.2 在Red Hat Linux系统中安装补丁 231
8.3.1 第1步:有人在程序中发现了一个bug 232
8.3 除了安装补丁以外,为什么还需要其他措施 232
8.2.3 Mandrake Linux 232
8.2.4 安装补丁的综合考虑 232
8.3.2 第2步:有人意识到这个bug是个安全漏洞 233
8.3.4 第4步:有人可能会将漏洞的信息公开 234
8.3.3 第3步:有人指出如何利用这个漏洞 234
8.3.6 第6步:发布二进制形式的(供应商)补丁 235
8.3.5 第5步:发布源代码补丁 235
8.4.1 第一部分:inetd/xinetd审查 236
8.4 审查服务 236
8.3.7 第7步:人们应用了补丁 236
8.4.2 第二部分:使用netstat、lsof和一些检查工具跟踪其余信息 243
8.5.1 TCP Wrappers(tcpd) 253
8.5 安全的网络守护进程替代产品 253
8.4.3 定期检查完整性 253
8.5.3 安全portmapper(portmap/rpcbind) 254
8.5.2 Secure Shell(ssh) 254
8.6 审查密码 255
8.7 使用Bastille Linux实现自动化锁定Linux/UNIX 256
8.7.2 文件权限(FilePermissions.pm) 257
8.7.1 帐户安全(AccountSecurity.pm) 257
8.7.7 禁用用户工具(DisableUserTools.pm) 258
8.7.6 配置各种PAM设置(Configure-MiscPAM.pm) 258
8.7.3 关闭各种守护进程(Miscellaneous-Daemons.pm ) 258
8.7.4 引导安全(BootSecurity.pm) 258
8.7.5 添加功能增强的日志(logging.pm) 258
8.7.12 sendmail(sendmail.pm) 259
8.7.11 FTP(FTP.pm) 259
8.7.8 打印(printing.pm) 259
8.7.9 Apache(Apache.pm) 259
8.7.10 DNS(DNS.pm) 259
8.7.16 端口扫描攻击检测程序(psad.pm) 260
8.7.15 防火墙(firewall.pm) 260
8.7.13 安全的inetd配置(SecureInetd.pm) 260
8.7.14 tmp目录保护(TMPDIR.pm) 260
8.8.1 Titan 261
8.8 使用其他工具实现自动化锁定Solaris/UNIX 261
8.9 最佳操作 264
8.8.2 Solaris专用的加强工具:YASSP和jass 264
8.11 注释 265
8.10 资源 265
9.2.1 成为root的重要性 268
9.2 主动的系统管理员 268
第9章 日常系统管理 268
9.1 概述 268
9.2.2 进程管理 269
9.2.3 查看系统日志 273
9.2.5 赞成和反对使用配额的理由 274
9.2.4 检查分区使用情况 274
9.2.7 所有程序都在运行吗 275
9.2.6 系统是何时启动的 275
9.2.8 备份完成了吗 276
9.3.1 降低防范 277
9.3 反应式管理 277
9.2.9 成为系统环境专家 277
9.3.2 排除故障 278
9.3.3 解释用户请求 279
9.3.4 删除的mailspool 281
9.3.6 “需要为Web页组和邮件组创建帐户”的情况 283
9.3.5 “新人员需要帐户”的情况 283
9.3.8 需要新硬件 284
9.3.7 “〈在此插入应用程序名〉有问题”的情况 284
9.4 最佳操作 285
9.3.9 需要新软件/许可证 285
9.5 在线参考 286
10.3 X发行版导航 287
10.2.2 Solaris风格 287
第二部分 关键子系统 287
第10章 X Window系统 287
10.1 介绍 287
10.2 X目录结构 287
10.2.1 XFree86风格 287
10.4 非基础性的基础知识 289
10.5.1 基于主机的授权 290
10.5 安全性 290
10.5.2 xauth:更强的验证方法 291
10.5.4 启动安全验证 293
10.5.3 其他验证方案 293
10.6.1 .xsession 294
10.6 自定义环境(以用户身份) 294
10.6.2 资源 295
10.6.3 键映射 298
10.6.4 实用应用程序:xkeycaps 299
10.6.5 窗口管理器和环境 300
10.7.1 xdm 301
10.7 系统级X环境 301
10.7.2 X字体 304
10.7.3 字体存储方式 306
10.8 参考 307
10.7.5 字体路径 307
10.7.4 字体存储位置 307
11.1.1 域和子域 309
11.1 介绍 309
第11章 名称服务(DNS) 309
11.1.3 名称服务基本原理 310
11.1.2 BIND 310
11.2 客户端(即解析程序) 313
11.1.5 FQDN 313
11.1.4 服务器与客户端的区别 313
11.3.1 主名称服务器和从属名称服务器 315
11.3 名称服务器 315
11.3.2 配置BIND启动 316
11.3.3 配置区 317
11.3.4 维护DNS 324
11.4.1 nslookup 325
11.4 工具和故障排除 325
11.3.5 仅起高速缓存作用的名称服务器 325
11.6 在线参考 326
11.5 最佳操作 326
11.4.2 dig 326
12.1 UNIX邮件处理 328
第12章 邮件 328
12.1.1 UNIX邮件投递代理 329
12.1.2 UNIX邮件传输代理 331
12.1.3 UNIX邮件用户代理 334
12.1.4 SMTP协议 336
12.2 sendmail MTA包 344
12.2.2 使用m4宏预处理程序 345
12.2.1 配置sendmail 345
12.3.1 UNIX工作站邮件配置 347
12.3 UNIX邮件客户端 347
12.3.2 使用PINE阅读和发送邮件消息 348
12.4.1 专用域邮件集中器 349
12.4 服务器主题 349
12.4.2 使用procmail作为本地邮件投递代理 351
12.4.3 SMTP验证 355
12.4.4 IMAP服务器和POP服务器 358
12.4.5 IMAP和POP安全 362
12.5 最佳操作 363
12.6 在线参考 364
13.1.1 文件共享的概念 365
13.1 文件共享概述 365
第13章 文件共享 365
13.1.2 文件共享的历史 366
13.1.3 文件共享的现状 367
13.1.4 当网络策略不支持同时使用文件共享时的共享技术 369
13.2.1 NFS概述 370
13.2 设置NFS 370
13.2.2 服务器设置 374
13.2.3 客户端设置 381
13.2.4 NFS性能调节和故障排除 386
13.3 设置Samba 390
13.3.1 Samba概述 391
13.3.2 服务器设置 394
13.3.3 Samba客户端设置 404
13.3.4 Samba故障排除和性能调节 405
13.5 在线参考 406
13.4 最佳操作 406
14.1 介绍 408
第14章 打印 408
14.2.1 将作业加入队列 409
14.2 后台打印系统 409
14.2.2 过滤作业 411
14.3.1 配置文件 412
14.3 System V下的打印 412
14.2.3 命令 412
14.3.3 添加本地打印机配置 413
14.3.2 命令 413
14.3.6 修改默认目标 414
14.3.5 删除打印机配置 414
14.3.4 在客户端添加远程打印机配置 414
14.3.11 终止/启动打印 415
14.3.10 终止/启动后台队列 415
14.3.7 提交打印作业请求 415
14.3.8 状态信息 415
14.3.9 取消打印作业请求 415
14.4.2 命令 416
14.4.1 配置文件 416
14.3.12 将作业转移到另一个目标 416
14.3.13 记帐 416
14.4 BSD系统下的打印 416
14.4.3 添加本地打印机配置 417
14.4.4 在客户端添加远程打印机配置 418
14.4.9 取消打印作业请求 419
14.4.8 状态信息 419
14.4.5 删除打印机配置 419
14.4.6 修改默认目标 419
14.4.7 提交打印作业请求 419
14.5.1 配置文件 420
14.5 LPRng下的打印 420
14.4.10 终止/启动后台队列 420
14.4.11 终止/启动打印 420
14.4.12 记帐 420
14.5.2 命令 421
14.5.3 添加本地打印机配置 422
14.5.8 状态信息 423
14.5.7 提交打印作业请求 423
14.5.4 在客户端添加远程打印机配置 423
14.5.5 删除打印机配置 423
14.5.6 修改默认目标 423
14.6.1 配置文件 424
14.6 CUPS下的打印 424
14.5.9 取消打印作业请求 424
14.5.10 终止/启动后台队列 424
14.5.11 终止/启动打印 424
14.5.12 将作业转移到另一个目标 424
14.5.13 记帐 424
14.6.3 添加本地打印机配置 425
14.6.2 命令 425
14.6.7 提交打印作业请求 428
14.6.6 修改默认目标 428
14.6.4 在客户端添加远程打印机配置 428
14.6.5 删除打印机配置 428
14.7 最佳操作 429
14.6.14 打印机配置 429
14.6.8 状态信息 429
14.6.9 取消打印作业请求 429
14.6.10 终止/启动后台队列 429
14.6.11 终止/启动打印 429
14.6.12 将作业转移到另一个目标 429
14.6.13 记帐 429
14.8 在线参考 430
15.2 提供基本Web服务 431
15.1 介绍 431
第15章 基本Web服务 431
15.3.1 Apache须知 432
15.3 获取并安装Apache 432
15.3.3 配置源代码 433
15.3.2 获取源代码 433
15.3.5 安装新服务器 434
15.3.4 生成Apache 434
15.4.1 配置文件 436
15.4 配置Apache 436
15.4.2 全局配置指令 437
15.4.3 配置默认服务器 439
15.4.4 配置虚拟服务器 443
15.5.2 在Apache中配置SSI 444
15.5.1 使用SSI的原因 444
15.5 服务器端嵌入 444
15.5.3 测试SSI示例 445
15.6 配置MIME 446
15.7.1 启用CGI 448
15.7 CGI脚本 448
15.8.1 Apache模块的定义 449
15.8 使用Apache模块添加特性 449
15.7.2 测试配置 449
15.8.2 标准模块 450
15.8.4 模块配置指令 451
15.8.3 附加模块 451
15.9 运行改变根目录的(chrooted)Web服务器 452
15.9.2 设置chroot环境 453
15.9.1 运行改变根目录服务器的原因 453
15.11 最佳操作 454
15.10 参考 454
16.1 介绍 455
第16章 备份 455
16.2 备份的步骤和条件 456
16.2.2 系统或数据的关键性 459
16.2.1 预算 459
16.2.3 了解可能遇到的恢复类型 460
16.2.6 离场存储 462
16.2.5 保存 462
16.2.4 恢复速度 462
16.2.9 选择备份介质 463
16.2.8 完成配置——备份窗口和其他约束 463
16.2.7 中央专用备份服务器 463
16.2.11 还原/恢复测试 464
16.2.10 监视的重要性 464
16.2.13 指定备份计划 465
16.2.12 配套的系统配置文档 465
16.2.14 书写备份策略 466
16.3.1 常用嵌入工具 467
16.3 备份与恢复 467
16.2.15 改进系统 467
16.3.2 免费工具 468
16.3.3 商业化产品 479
16.4 最佳操作 480
16.6 总结 481
16.5 在线参考 481
17.1.1 有关自由软件的更多话题 483
17.1 介绍 483
第三部分 应用程序和工具 483
第17章 开放源码软件管理 483
17.1.3 在哪里查找自由和开放源码软件 484
17.1.2 一些基本的自由软件 484
17.1.5 应当选择源码还是二进制形式 485
17.1.4 厂商提供的“自由”软件 485
17.1.6 安装二进制版本 486
17.1.7 Solaris包 488
17.2 生成源码分发 493
17.2.1 需求 494
17.2.2 生成一个软件包:OpenSSH 495
17.2.3 生成软件 500
17.2.4 高级软件配置 502
17.3 管理软件安装 511
17.4 注释 519
18.2.1 什么是数据库 520
18.2 数据库综述 520
第18章 数据库 520
18.1 介绍 520
18.2.2 系统结构 523
18.2.3 数据库就是操作系统 524
18.2.4 数据库为什么要吞噬如此多的资源 527
18.3.3 性能和复杂性 533
18.3.2 支持大型系统还是支持小型系统 533
18.3 挑选一家数据库厂商 533
18.3.1 平台选择 533
18.3.5 价格和厂商可用性 534
18.3.4 支持和接口 534
18.4 Oracle数据库综述 535
18.4.1 机器设置 536
18.4.2 基本结构 539
18.4.3 安装过程 542
18.4.4 数据库环境和文件配置 544
18.4.5 备份 547
18.4.6 MySQL概述 549
18.5 总结 552
19.2.1 解释型和编译型语言 554
19.2 脚本编制 554
第19章 自动化 554
19.1 介绍 554
19.2.2 其他脚本编制语言:Expect、Perl等 560
19.3.1 at:面向未来事件的一次性调度 563
19.3 调度和定期执行的进程 563
19.3.2 cron:定期调度 564
19.3.4 cron的例子 565
19.3.3 anacron:可拦截的定期调度 565
19.4 用cfengine进行自动化配置管理 567
19.4.1 工作原理 568
19.4.3 一个cfengine命令实例——tidy: 569
19.4.2 用网络分发cfengine的配置文件 569
19.4.4 示范cfengine.conf文件 571
19.5.1 再教育 573
19.5 改进自动化技术的提示 573
19.6 对自动化价值的解释 574
19.5.2 良好工程 574
19.8 在线参考 575
19.7 最佳操作 575
20.1.1 动态与静态站点 576
20.1 提供高级Web服务 576
第20章 高级Web服务 576
20.1.2 站点所用软件 578
20.1.4 把用户看成测试者 582
20.1.3 运行时间、可靠性和风险 582
20.1.6 成本(以及由管理层决定的事情) 583
20.1.5 集成和系统级设置 583
20.2 脚本语言 588
20.1.7 不便共享时:专用服务器的情况 588
20.3 数据库 592
20.4.1 PHP 594
20.4 语言 594
20.4.2 Perl 597
20.4.3 Java 599
20.4.5 ASP 600
20.4.4 JSP 600
20.4.6 JavaScript 601
20.4.7 身份验证、状态保存和Cookie 603
20.4.8 服务器身份验证 605
20.5 安全性 607
20.4.9 状态变量 607
20.5.2 访问:谁有权用它和在哪里使用 608
20.5.1 系统安全性 608
20.5.3 污染 609
20.6 后期工作 610
20.6.1 人/页 611
20.6.3 负载问题 612
20.6.2 趋势分析 612
20.6.5 干扰和准确的用户数据 613
20.6.4 重新设计和报酬 613
20.6.6 可视化和使用情况 614
20.6.7 Web广告 615
21.2 为什么要担心 617
21.1 介绍 617
第四部分 改善系统管理 617
第21章 安全性 617
21.3 复杂系统的危险性 618
21.4 构建一个威胁模型 619
21.5.2 两种安全哲学 621
21.5.1 我们完了 621
21.5 安全哲学 621
21.6.2 系统加固 623
21.6.1 备份 623
21.6 安全就是麻烦 623
21.6.3 系统补丁 625
21.6.4 阅读日志 626
21.6.5 侦测问题 627
21.7 配置管理 629
21.8.1 策略理论 630
21.8 策略 630
21.8.2 规程 631
21.9 道德 632
21.8.3 管理层要买帐 632
21.12 资源 634
21.11 最佳操作 634
21.10 总结 634
22.2 网络的危险性 636
22.1 介绍 636
第22章 入侵侦测 636
22.3.1 封装 637
22.3 网络协议概念 637
22.3.2 分层 638
22.4.1 ISO OSI七层模型 639
22.4 堆栈 639
22.4.2 TCP/IP模型 640
22.5.2 端口扫描 656
22.5.1 缓冲区溢出 656
22.5 探索TCP/IP协议 656
22.7 负签名 657
22.6 正签名 657
22.8.1 安装Snort 659
22.8 Snort 659
22.8.2 测试Snort 661
22.9 NIDS 665
22.10 最佳操作 674
22.11 在线参考 675
23.1 需求分析 676
第23章 需求分析和性能监视 676
23.1.2 工作目标 677
23.1.1 资源 677
23.1.4 需求分析中的注意事项 678
23.1.3 需求分析驱动设计 678
23.2.1 找出瓶颈 679
23.2 性能监视 679
23.2.2 系统整体性能状态 680
23.3 容量展望与计划 693
23.3.3 维持灵活性 694
23.3.2 指定替换部件 694
23.3.1 建立计划表 694
23.5 在线参考 695
23.4 最佳操作 695
24.2 用户想要什么 696
24.1 赢得尊重 696
第24章 与人相处 696
24.3 做一名有远见的管理员 697
24.3.2 让他人更能干 698
24.3.1 如何教用户 698
24.3.3 如何教老板 700
24.4 成功的仪表 701
24.3.4 提前维护 701
24.5 与其他管理员相处 702
24.5.1 指导 703
24.6 研讨会和协会 705
24.5.2 新上岗的管理员须知 705
24.6.1 加入Usenix和SAGE 706
24.6.2 和志同道合者聊一聊 708
24.7 编写文件的好处 709
24.8 管理性策略 711
24.8.1 领导能力 712
24.8.2 制定章程 714
24.9 获取所需资源 715
24.11 你不可能取悦每个人 718
24.10 好的系统管理员同时也是好人 718
附录A 高级安装步骤 721
第五部分 附录 721
附录B 从磁盘到文件系统 726
附录C 用户创建核对表 737
附录D 二进制、十六进制小结 739
附录E UNIX密码系统 747
附录F 方便的命令 758
附录G 参考资料 765