第一部分 系统管理 2
第1章 系统管理:核心概念 2
1.1 以root特权身份运行命令 3
1.1.1 sudo:以root特权身份运行命令 5
1.1.2 sudoers:配置sudo 9
1.1.3 root账号解锁(为root指派口令) 13
1.1.4 su:获取另一个用户的特权 14
1.2 基于事件的Upstar init守护进程 14
1.2.1 软件包 15
1.2.2 定义 15
1.2.3 作业 17
1.2.4 SysVinit(rc)脚本:启动和停止系统服务 20
1.3 系统操作 23
1.3.1 运行级别 23
1.3.2 引导系统 24
1.3.3 恢复(单用户)模式 25
1.3.4 进入多用户模式 28
1.3.5 登录 28
1.3.6 注销 29
1.3.7 关闭系统 30
1.3.8 系统崩溃 31
1.4 避开特洛伊木马 32
1.5 获取帮助 33
1.6 文本界面系统管理实用工具 33
1.6.1 kill:向进程发送信号 33
1.6.2 其他字符界面实用工具 35
1.7 设置服务器 38
1.7.1 配置文件中的标准规则 38
1.7.2 rpcinfo:显示portmap的有关信息 39
1.7.3 超级服务器inetd和xinetd 41
1.7.4 服务器安全 41
1.7.5 DHCP:配置网络接口 46
1.8 nsswitch.conf:服务搜索顺序 49
1.9 PAM 52
1.9.1 更多信息 52
1.9.2 配置文件、模块类型和控制标志 53
1.9.3 示例 54
1.9.4 修改PAM配置 55
1.10 本章小结 56
1.11 练习 56
1.12 高级练习 57
第2章 文件、目录和文件系统 58
2.1 重要的文件和目录 58
2.2 文件类型 69
2.2.1 普通文件、目录、链接和索引节点 69
2.2.2 特殊文件 70
2.3 文件系统 73
2.3.1 mount:挂载文件系统 74
2.3.2 umount:卸载文件系统 76
2.3.3 fstab:记录文件系统 77
2.3.4 fsck:检查文件系统完整性 78
2.3.5 tune2fs:修改文件系统参数 79
2.3.6 RAID文件系统 80
2.4 本章小结 80
2.5 练习 81
2.6 高级练习 81
第3章 软件下载与安装 82
3.1 起步:使用aptitude安装和删除软件包 83
3.2 查找含有所需文件的软件包 85
3.3 APT:让软件保持最新 86
3.3.1 仓库 86
3.3.2 sources.list:指定APT要搜索的仓库 87
3.3.3 APT本地软件包索引和APT缓存 88
3.3.4 apt cron脚本和APT配置文件 88
3.3.5 aptitude:操作软件包和本地软件包索引 89
3.3.6 apt-cache:显示软件包信息 93
3.3.7 apt-get source:下载源文件 94
3.4 dpkg:Debian软件包管理系统 94
3.4.1 deb文件 95
3.4.2 dpkg:Debian软件包管理系统的基础 96
3.5 BitTorrent 99
3.6 安装非dpkg软件包 101
3.6.1 /opt和/usr/local目录 101
3.6.2 GNU配置和构建系统 102
3.7 wget:非交互式下载文件 103
3.8 本章小结 104
3.9 练习 104
3.10 高级练习 104
第4章 CUPS打印 105
4.1 引言 105
4.1.1 先决条件 106
4.1.2 更多信息 106
4.1.3 注意 107
4.2 起步1:配置本地打印机 107
4.3 system-config-pinter:配置打印机 107
4.3.1 配置选项卡 108
4.3.2 设置远程打印机 109
4.4 起步2:用CUPS的Web界面配置远程打印机 111
4.5 传统的UNIX打印 115
4.6 用CUPS配置打印机 116
4.6.1 CUPS的Web界面 116
4.6.2 CUPS命令行界面 118
4.6.3 共享CUPS打印机 121
4.7 在Windows上打印 122
4.7.1 使用CUPS打印 122
4.7.2 使用Samba打印 123
4.8 打印到Windows 123
4.9 本章小结 124
4.10 练习 124
4.1 1 高级练习 124
第5章 重建Linux内核 125
5.1 前提条件 126
5.2 下载内核源代码 126
5.2.1 aptitude:下载并安装内核源代码 126
5.2.2 git:获取最新内核源代码 126
5.3 阅读资料 127
5.4 配置和编译Linux内核 127
5.4.1 .config内核配置文件 127
5.4.2 定制内核 129
5.4.3 清除源代码树 130
5.4.4 编译内核映像文件和可加载模块 130
5.4.5 使用可加载内核模块 131
5.5 安装内核、模块及相关文件 133
5.6 重新引导 134
5.7 grub:Linux加载程序 134
5.7.1 menu.lst:配置grub 135
5.7.2 update-grub:更新menu.lst文件 137
5.7.3 grub-install:安装MBR和grub文件 139
5.8 dmesg:显示内核消息 140
5.9 本章小结 141
5.10 练习 141
5.11 高级练习 141
第6章 管理任务 142
6.1 配置用户和组账号 142
6.1.1 users-admin:管理用户账号 142
6.1.2 useradd:添加用户账号 144
6.1.3 userdel:删除用户账号 145
6.1.4 usermod:修改用户账号 145
6.1.5 groupadd:添加组 145
6.1.6 groupdel:删除组 145
6.2 备份文件 145
6.2.1 选择备份介质 146
6.2.2 备份实用工具 146
6.2.3 执行简单备份 148
6.2.4 dump、restore:备份和恢复文件系统 149
6.3 任务调度 151
6.3.1 cron和anacron:调度例行任务 151
6.3.2 at:运行临时任务 153
6.4 系统报告 154
6.4.1 vmstat:报告虚存统计信息 154
6.4.2 top:列出使用最多资源的进程 155
6.5 parted:报告硬盘信息并对硬盘进行分区 156
6.6 提醒用户 159
6.7 问题来源 159
6.8 解决问题 160
6.8.1 在用户未能登录时进行援助 160
6.8.2 系统加速 161
6.8.3 lsof:找出已打开文件 162
6.8.4 机器日志 162
6.8.5 保持系统安全 163
6.8.6 记录root的文件和邮件 163
6.8.7 监视磁盘使用情况 164
6.8.8 logrotate:管理日志文件 165
6.8.9 从目录中移除未使用空间 167
6.8.10 磁盘配额系统 167
6.8.11 syslogd:记录系统消息 168
6.9 本章小结 170
6.10 练习 170
6.11 高级练习 170
第7章 搭建局域网 171
7.1 安装硬件 171
7.1.1 连接计算机 171
7.1.2 路由器 172
7.1.3 NIC:网络接口卡 173
7.1.4 工具 173
7.2 配置系统 174
7.2.1 network-admin:配置网络连接 175
7.2.2 nm-applet:自动配置网络连接 176
7.2.3 iwconfig:配置无线NIC 177
7.3 搭建服务器 178
7.4 更多信息 179
7.5 本章小结 179
7.6 练习 179
7.7 高级练习 180
第二部分 客户端使用和服务器设置 182
第8章 OpenSSH:安全网络通信 182
8.1 引言 182
8.2 关于OpenSSH 183
8.2.1 相关文件 183
8.2.2 OpenSSH的工作原理 185
8.2.3 更多信息 185
8.3 OpenSSH客户端 185
8.3.1 所需软件包 186
8.3.2 起步:使用ssh和scp 186
8.3.3 安装 186
8.3.4 ssh:连接到远程系统或者在远程系统上执行命令 188
8.3.5 scp:从/向远程系统复制文件 190
8.3.6 sftp:安全的FTP客户端 191
8.3.7 配置文件~/.ssh/config和/etc/ssh/ssh config 192
8.4 sshd:OpenSSH服务器 193
8.4.1 前提条件 194
8.4.2 注意事项 194
8.4.3 起步:启动sshd守护进程 194
8.4.4 授权密钥:自动化登录 194
8.4.5 命令行选项 196
8.4.6 配置文件/etc/ssh/sshd_cornfig 196
8.5 故障诊断 198
8.6 隧道技术/端口转发 198
8.7 本章小结 201
8.8 练习 201
8.9 高级练习 201
第9章 FTP:跨越网络传送文件 202
9.1 引言 202
9.2 更多信息 203
9.3 FTP客户端 203
9.3.1 前提条件 204
9.3.2 起步1:使用ftp下载文件 204
9.3.3 注意事项 207
9.3.4 匿名FTP 207
9.3.5 自动登录 207
9.3.6 二进制传输模式和ASCII传输模式 208
9.3.7 ftp细节 208
9.4 FTP服务器(vsftpd) 212
9.4.1 前提条件 212
9.4.2 注意事项 212
9.4.3 起步2:启动vsftpd服务器 213
9.4.4 测试配置 213
9.4.5 vsftpd.conf:vsftpd配置文件 214
9.5 本章小结 224
9.6 练习 225
9.7 高级练习 225
第10章 exim4:设置邮件客户端、服务器及其他 226
10.1 exim4引言 227
10.1.1 前提条件 227
10.1.2 注意事项 228
10.1.3 更多信息 228
10.2 起步1:配置exim4使用中继主机 229
10.3 起步2:配置exim4发送和接收电子邮件 230
10.4 exim4的工作原理 231
10.4.1 邮件日志 232
10.4.2 处理消息 233
10.4.3 别名和转发 233
10.4.4 相关的程序 234
10.5 配置exim4 235
10.5.1 使用文本编辑器编辑exim4 235
10.5.2 update-exim4.conf.conf配置文件 236
10.5.3 dpkg-reconfigure:配置exim4 237
10.6 SpamAssassin 238
10.6.1 前提条件 238
10.6.2 SpamAssassin的工作原理 239
10.6.3 测试SpamAssassin 239
10.6.4 配置SpamAssassin 240
10.7 其他电子邮件工具 242
10.7.1 Webmail 242
10.7.2 邮件列表 243
10.7.3 设置IMAP或POP3服务器 245
10.8 验证转发 245
10.9 exim4的替代品 247
10.10 本章小结 247
10.11 练习 248
10.12 高级练习 248
第11章 NIS:网络信息服务 249
11.1 NIS引言 249
11.2 NIS的工作原理 249
11.3 设置NIS客户端 252
11.3.1 前提条件 252
11.3.2 注意事项 253
11.3.3 逐步设置 253
11.3.4 测试设置 254
11.3.5 yppasswd:修改NIS口令 255
11.4 设置NIS服务器 257
11.4.1 前提条件 257
11.4.2 注意事项 257
11.4.3 逐步设置 257
11.4.4 测试 262
11.4.5 yppasswdd:NIS口令更新守护进程 262
11.5 本章小结 263
11.6 练习 263
11.7 高级练习 264
第12章 NFS:共享文件系统 265
12.1 引言 265
12.2 更多信息 268
12.3 设置NFS客户端 268
12.3.1 前提条件 268
12.3.2 起步1:挂载远程目录层次 268
12.3.3 mount:挂载目录层次 269
12.3.4 提高性能 271
12.3.5 /etc/fstab:自动挂载目录层次 272
12.4 设置NFS服务器 273
12.4.1 前提条件 273
12.4.2 注意事项 273
12.4.3 起步2:使用shares-admin配置NFS服务器 274
12.4.4 手动导出目录层次 275
12.4.5 系统存放NFS挂载信息的位置 278
12.4.6 exportfs:维护已导出目录层次列表 280
12.4.7 测试服务器设置 281
12.5 automount:自动挂载目录层次 281
12.5.1 前提条件 282
12.5.2 更多信息 282
12.5.3 autofs:自动挂载目录层次 282
12.6 本章小结 284
12.7 练习 284
12.8 高级练习 284
第13章 Samba:Linux与Windows间的互访 285
13.1 引言 285
13.2 关于Samba 286
13.2.1 前提条件 286
13.2.2 更多信息 286
13.2.3 注意事项 287
13.2.4 Samba用户、用户映射和口令 287
13.3 起步:使用shares-admin配置Samba服务器 287
13.4 swat:配置Samba服务器 289
13.5 smb.conf:手工配置Samba服务器 292
13.5.1 smbd.conf文件中的参数 293
13.5.2 [homes]共享:共享用户的主目录 299
13.6 从Windows访问Linux共享 299
13.6.1 浏览共享 299
13.6.2 映射共享 299
13.7 从Linux访问Windows共享 299
13.7.1 smbtree:显示Windows共享 299
13.7.2 smbclient:连接Windows共享 300
13.7.3 浏览Windows网络 300
13.7.4 挂载Windows共享 301
13.8 故障诊断 301
13.9 本章小结 303
13.10 练习 304
13.11 高级练习 304
第14章 DNS/BIND:探知域名和地址 305
14.1 DNS引言 305
14.1.1 节点、域和子域 306
14.1.2 区域 307
14.1.3 查询 308
14.1.4 服务器 309
14.1.5 资源记录 310
14.1.6 DNS查询和响应 312
14.1.7 逆向域名解析 313
14.2 关于DNS 315
14.2.1 DNS工作原理 315
14.2.2 前提条件 315
14.2.3 更多信息 316
14.2.4 注意事项 316
14.3 起步:设置DNS缓存服务器 316
14.4 设置BIND 318
14.4.1 named.conf:named配置文件 318
14.4.2 区域文件 320
14.4.3 DNS缓存 321
14.4.4 DNS黏结记录 324
14.4.5 TSIG:事务签名 325
14.4.6 在chroot监牢中运行BIND 326
14.5 故障诊断 328
14.6 一个全功能域名服务器 329
14.7 辅助服务器 332
14.8 水平分割服务器 333
14.9 本章小结 337
14.10 练习 337
14.11 高级练习 337
第15章 firestarter和iptables:设置防火墙 338
15.1 关于firestarter 338
15.1.1 前提条件 339
15.1.2 注意事项 339
15.1.3 更多信息 340
15.2 起步:使用firestarter防火墙向导设置防火墙 340
15.3 firestarter:维护防火墙 342
15.3.1 “状态”选项卡 342
15.3.2 “事件”选项卡 343
15.3.3 “策略”选项卡 345
15.4 iptables的工作原理 346
15.5 关于iptables 348
15.5.1 更多信息 348
15.5.2 前提条件 349
15.5.3 注意事项 349
15.6 iptables命令的结构 349
15.7 构建规则集 351
15.7.1 命令 351
15.7.2 分组匹配条件 352
15.7.3 显示条件 353
15.7.4 匹配扩展 353
15.7.5 目标 355
15.8 向内核复制规则,从内核中读取规则 356
15.9 使用NAT共享因特网连接 357
15.9.1 多个客户端共享同一个因特网连接 358
15.9.2 多个服务器共享同一个因特网连接 360
15.10 本章小结 360
15.11 练习 360
15.12 高级练习 361
第16章 Apache:设置Web服务器 362
16.1 引言 362
16.2 关于Apache 363
16.2.1 前提条件 363
16.2.2 更多信息 364
16.2.3 注意事项 364
16.3 起步:设置并运行Apache 365
16.3.1 修改配置文件 365
16.3.2 测试Apache 366
16.3.3 准备好内容 366
16.4 配置Apache 367
16.4.1 配置工具 367
16.4.2 Include指令 368
16.4.3 文件系统布局 369
16.5 配置指令 370
16.5.1 指令Ⅰ:刚开始时可能希望修改的指令 371
16.5.2 上下文和容器 376
16.5.3 指令Ⅱ:高级指令 379
16.6 Ubuntu的apache2.conf文件 392
16.7 Ubuntu的default配置文件 393
16.8 重定向 394
16.9 内容协商 394
16.9.1 类型映射 394
16.9.2 Multiviews 395
16.10 服务器生成的目录清单(索引) 396
16.11 虚拟主机 396
16.11.1 设置虚拟主机 396
16.11.2 虚拟主机类型 396
16.11.3 default虚拟主机 397
16.11.4 示例 397
16.12 故障诊断 399
16.13 模块 399
16.13.1 mod_cgi和CGI脚本 400
16 13.2 mod_ssl 400
16.13.3 身份验证模块与.htaccess 402
16.13.4 脚本模块 403
16.13.5 多路处理模块(MPM) 403
16.14 webalizer:分析Web流量 404
16.15 MRTG:监视流量负载 405
16.16 错误代码 405
16.17 本章小结 405
16.18 练习 406
16.19 高级练习 406
附录A 安全 407
附录B 自由软件的定义 421
附录C Linux 2.6内核 424