第一篇 Linux基础篇 2
第1章 Linux入门 2
1.1 什么是Linux 2
1.2 Linux的发展历史 2
1.3 Linux的优势 3
1.4 Linux的应用领域 4
1.5 Linux的安装 4
1.5.1 硬件需求 5
1.5.2 安装方式 5
1.5.3 安装过程 6
1.6 Linux的启动过程 14
1.7 图形界面登录和退出Linux 14
1.8 字符界面登录和退出Linux 15
1.9 本章小结 16
1.10 习题 16
第2章 文件和磁盘管理 17
2.1 Linux文件系统入门 17
2.1.1 Linux常用文件系统介绍 17
2.1.2 Linux文件介绍 18
2.1.3 Linux目录介绍 19
2.1.4 Linux目录结构 20
2.2 文件与目录基本操作 22
2.2.1 显示文件内容命令:cat、more、less、head、tail 22
2.2.2 文件内容查询命令:grep、egrep、fgrep 25
2.2.3 文件查找命令:find、locate 26
2.2.4 文本处理命令:sort、uniq 28
2.2.5 文件内容统计命令:wc 30
2.2.6 文件比较命令:comm、diff 31
2.2.7 文件的复制、移动和删除命令:cp、mv、m 33
2.2.8 文件链接命令:ln 35
2.2.9 目录的创建与删除命令:mkdir、rmdir 36
2.2.10 改变工作目录、显示路径以及显示目录内容命令:cd、pwd、ls 36
2.3 文件/目录访问权限管理 39
2.3.1 文件/目录访问权限简介 39
2.3.2 使用chmod改变文件/目录的访问权限 40
2.3.3 使用命令chown更改文件/目录的所有权 41
2.4 管理磁盘存储器 42
2.4.1 存储设备的命名 42
2.4.2 磁盘空间管理 42
2.4.3 使用Fdisk工具进行磁盘分区 45
2.4.4 优化Linux系统硬盘 46
2.5 本章小结 48
2.6 习题 48
第3章 常见软件设置和硬件配置 49
3.1 设置用户界面 49
3.1.1 GNOME桌面系统 50
3.1.2 KDE桌面系统 52
3.1.3 设置文件浏览界面 53
3.1.4 首选项 56
3.2 安装软件 59
3.2.1 基于源代码的软件安装 59
3.2.2 基于可执行文件的软件安装 62
3.2.3 RPM可执行文件的软件安装 62
3.3 卸载软件 63
3.4 常见硬件的检测 63
3.4.1 中央处理器状态的检测 63
3.4.2 硬盘物理坏道的检测 65
3.4.3 内存的检测 67
3.5 硬件驱动和配置 69
3.5.1 声卡驱动与配置 69
3.5.2 显卡的配置 72
3.5.3 网卡的配置 73
3.5.4 打印机的配置、管理和使用 75
3.6 本章小结 77
3.7 习题 78
第二篇 Linux系统管理与维护篇 80
第4章 用户和组管理 80
4.1 用户和组文件 80
4.1.1 用户账号文件——passwd 80
4.1.2 用户影子文件——shadow 82
4.1.3 用户组账号文件——group 83
4.1.4 组账号文件——gshadow 84
4.1.5 使用pwck和grpck命令验证用户和组文件 85
4.2 使用命令行方式管理用户和组 87
4.2.1 使用useradd命令添加用户 87
4.2.2 使用usermod命令修改用户信息 88
4.2.3 使用userdel命令删除用户 89
4.2.4 使用groupadd命令创建用户组 89
4.2.5 使用groupmod命令修改用户组属性 90
4.2.6 使用groupdel命令删除用户组 90
4.3 使用Red Hat用户管理器管理用户和组 91
4.3.1 启动Red Hat用户管理器 91
4.3.2 创建用户 91
4.3.3 修改用户属性 92
4.3.4 创建用户组 93
4.3.5 修改用户组属性 94
4.4 本章小结 95
4.5 习题 95
第5章 软件包管理 96
5.1 RPM包管理 96
5.1.1 RPM软件包的查询 96
5.1.2 RPM软件包的安装 98
5.1.3 RPM软件包安装可能出现的问题 99
5.1.4 RPM软件包的卸载 100
5.1.5 RPM软件包的升级 100
5.1.6 RPM软件包的验证 101
5.1.7 添加/删除应用程序 102
5.2 RPM软件包的密钥管理 104
5.2.1 下载与安装PGP 104
5.2.2 RPM使用PGP产生签名所需的配置 105
5.2.3 配置RPM宏 106
5.2.4 RPM的PGP签名选项 106
5.2.5 添加数字签名 106
5.3 TAR包管理 106
5.3.1 TAR命令语法及参数选项 106
5.3.2 创建tar文件 108
5.3.3 显示tar文件内容 109
5.3.4 向tar文件中添加一个文件 109
5.3.5 从tar文件中取出文件 110
5.4 Linux下常用的压缩工具 111
5.4.1 gzip压缩工具 111
5.4.2 zip/unzip命令 113
5.4.3 bzip2/bunzip2命令 118
5.5 本章小结 120
5.6 习题 120
第6章 GRUB引导器 121
6.1 GRUB概述 121
6.2 GRUB的特点 121
6.3 GRUB运行原理 122
6.4 使用GRUB 122
6.4.1 GRUB的选择安装 122
6.4.2 GRUB的设备名称 123
6.4.3 GRUB的文件名称 124
6.4.4 GRUB的基本接口 124
6.4.5 GRUB的基本命令 126
6.4.6 GRUB配置文件介绍 127
6.5 GRUB的应用举例 128
6.6 本章小结 130
6.7 习题 131
第7章 Linux中的进程管理 132
7.1 Linux进程概述 132
7.2 Linux进程原理 132
7.2.1 Linux进程的状态 132
7.2.2 Linux进程工作模式 133
7.3 Linux守护进程介绍 134
7.3.1 守护进程简介 134
7.3.2 重要守护进程介绍 134
7.4 启动Linux进程 135
7.4.1 手工启动 135
7.4.2 在指定时刻执行命令序列——at命令 136
7.4.3 在资源比较空闲的时候执行命令——batch命令 139
7.4.4 不断重复执行某些命令——cron命令 139
7.4.5 操作cron后台进程的表格——crontab命令 139
7.5 进程的挂起及恢复 142
7.6 Linux进程管理 142
7.6.1 使用ps命令查看进程状态 142
7.6.2 使用top命令查看进程状态 144
7.6.3 使用kill命令终止进程 145
7.6.4 使用sleep命令暂停进程 146
7.7 进程文件系统PROC 147
7.8 本章小结 149
7.9 习题 149
第8章 远程登录管理 150
8.1 使用Telnet 150
8.1.1 Telnet简介 150
8.1.2 Telnet原理 150
8.1.3 安装和启动Telnet 151
8.1.4 配置Telnet 152
8.1.5 Telnet会话示例 153
8.2 使用SSH 154
8.2.1 SSH介绍 154
8.2.2 安装与启动SSH 155
8.2.3 简单测试和使用SSH 155
8.2.4 配置/etc/ssh/sshd config文件 157
8.2.5 配置/etc/ssh/ssh config文件 160
8.2.6 SSH的密匙管理 161
8.2.7 使用scp远程复制文件 162
8.2.8 使用SSH设置加密通道 163
8.2.9 配置SSH的客户端 164
8.2.10 配置SSH自动登录 165
8.3 使用VNC 167
8.3.1 VNC简介 167
8.3.2 安装和启动VNC 168
8.3.3 配置VNC 168
8.3.4 VNC会话示例 170
8.4 本章小结 171
8.5 习题 171
第9章 TCP/IP网络基础 172
9.1 网络简介 172
9.2 网络的体系结构 172
9.3 TCP/IP简介 174
9.3.1 IP协议介绍 175
9.3.2 TCP协议介绍 178
9.3.3 UDP协议介绍 180
9.4 使用xinetd启动Linux网络服务 181
9.5 本章小结 184
9.6 习题 184
第三篇 Linux服务器配置篇 186
第10章 Samba服务器配置 186
10.1 Samba服务器简介及安装 186
10.1.1 Samba工作原理 186
10.1.2 Samba服务器的功能 186
10.1.3 SMB协议 187
10.1.4 安装Samba 187
10.2 启动及关闭Samba服务器 188
10.2.1 在命令行中启动和关闭Samba服务 188
10.2.2 在System Services中启动和关闭Samba服务 189
10.2.3 简单测试Samba服务器 190
10.3 配置Samba服务器的用户信息 192
10.3.1 创建服务器待认证用户 193
10.3.2 将系统用户转换为Samba用户 193
10.3.3 Samba服务器和主浏览器 194
10.4 smb.conf配置文件实例详解 195
10.4.1 设置工作组 195
10.4.2 设置共享Linux账户主目录 196
10.4.3 设置公用共享目录 197
10.4.4 设置一般共享目录 197
10.4.5 设置共享打印机 198
10.4.6 打印机配置相关问题 199
10.5 一个完整的smb.conf文件实例 200
10.5.1 global段 201
10.5.2 home段 205
10.5.3 printers段 205
10.5.4 netlogon段 206
10.5.5 Profiles段 206
10.5.6 public段 206
10.5.7 一般共享段 207
10.5.8 测试smb.conf文件 207
10.5.9 该配置在Windows系统下的显示结果 208
10.6 smb.conf中的其他选项 209
10.7 Linux和Windows文件互访 211
10.7.1 Windows客户使用Linux系统共享文件 211
10.7.2 用smbclient命令访问局域网上的Windows系统 211
10.7.3 用smbmount命令访问局域网上的其他系统 213
10.7.4 使用LinNeighborhood访问局域网上的共享文件 213
10.8 本章小结 215
10.9 习题 215
第11章 Proxy服务器配置 216
11.1 Proxy服务器原理简介 216
11.2 Squid简介 217
11.3 安装和启动Squid服务器 218
11.3.1 安装Squid服务器 218
11.3.2 启动和关闭Squid服务器 220
11.4 在客户端使用Squid服务器 220
11.4.1 在IE浏览器中设置 221
11.4.2 在Linux浏览器中设置 222
11.5 配置Squid服务器 223
11.5.1 配置Squid服务器的基本参数 223
11.5.2 配置Squid服务器的访问控制 225
11.5.3 配置Squid服务器的简单实例 229
11.6 配置基于Squid的透明代理 229
11.6.1 Linux内核的相关配置 229
11.6.2 Squid的相关配置选项 230
11.6.3 iptables的相关配置 231
11.7 配置多级缓存改善Proxy服务器的性能 231
11.7.1 多级缓存(cache)简介 231
11.7.2 配置多级缓存 232
11.8 Squid日志管理 233
11.8.1 配置文件中有关日志的选项 233
11.8.2 日志管理主文件——accesss.conf 234
11.9 使用Webalizer对Squid进行流量分析 236
11.9.1 Webalizer的特点 236
11.9.2 安装Webalizer 237
11.9.3 配置Webalizer 238
11.9.4 使用Webalizer 238
11.10 本章小结 241
11.11 习题 241
第12章 数据库服务器配置 242
12.1 Linux下数据库系统简介 242
12.2 MySQL数据库系统简介 242
12.3 MySQL数据库系统的安装 242
12.3.1 基于源代码包的MySQL安装 242
12.3.2 基于RPM包的MySQL安装 246
12.4 设置用户访问权限 247
12.4.1 建立MySQL的用户和用户组 247
12.4.2 设置用户访问权限 247
12.4.3 启动MySQL 248
12.6 MySQL常用操作 250
12.5.1 连接MySQL服务器 250
12.5.2 退出MySQL服务器 251
12.5.3 密码管理 251
12.5.4 增加新用户 251
12.5.5 命令分行 252
12.5.6 命令历史记录 252
12.5.7 显示数据库列表 252
12.5.8 显示数据库中的数据表 253
12.5.9 显示数据库的表结构 254
12.5.10 新建数据库 254
12.5.11 新建数据库表 255
12.5.12 删库和删表 255
12.5.13 将表中记录清空 256
12.5.14 显示表的记录 256
12.5.15 向表中插入记录 256
12.5.16 MySQL数据导入和备份 256
12.6 在程序中操作MySQL数据库 257
12.7 安装Oracle数据库系统 258
12.7.1 安装Oracle 11g的硬件条件 258
12.7.2 下载Oracle 11g的安装文件 258
12.7.3 安装前的准备工作 259
12.7.4 安装Oracle 260
12.8 测试Oracle数据库系统 261
12.8.1 使用svrmgrl测试安装是否成功 262
12.8.2 使用sql*plus测试安装是否成功 262
12.9 设置Oracle服务自动启动 262
12.10 操作Oracle数据库 262
12.10.1 创建表空间和创建用户 263
12.10.2 删除用户 263
12.10.3 修改用户密码 263
12.10.4 数据导出 263
12.10.5 数据导入 264
12.10.6 其他数据操作 264
12.11 在程序中操作Oracle数据库 264
12.11.1 用C语言操作Oracle数据库 264
12.11.2 用PHP语言访问Oracle数据库 268
12.12 本章小结 271
12.13 习题 272
第13章 Apache服务器配置 273
13.1 Apache简介 273
13.1.1 Apache的诞生 273
13.1.2 Apache的特性 274
13.2 Apache的获取和安装 274
13.2.1 Apache获取及其最新信息 274
13.2.2 基于源代码的Apache安装 275
13.2.3 基于RPM软件包的Apache安装 281
13.3 启动和停止Apache服务器 281
13.3.1 手动启动和停止Apache服务器 281
13.3.2 在/etc/rc.d目录下httpd文件中用脚本启动 282
13.3.3 测试Apache 284
13.4 配置Apache服务器 284
13.4.1 httpd.conf文件中的全局配置选项 284
13.4.2 .htaccess文件和访问限制 287
13.4.3 httpd.conf文件中的CGI设置 288
13.4.4 httpd.conf文件中的URL路径名设置 289
13.4.5 httpd.conf文件中的MIME类型 292
13.5 虚拟主机的设置 293
13.5.1 基于域名的虚拟主机 293
13.5.2 基于IP的虚拟主机 294
13.6 日志记录 294
13.7 SSI设置 295
13.7.1 SSI简介 295
13.7.2 启用SSI 295
13.7.3 SSI指令 296
13.8 一个完整的配置文件 299
13.8.1 全局环境的设置 300
13.8.2 动态共享对象支持DSO的设置 302
13.8.3 主服务器设置 303
13.8.4 设置日志管理 305
13.8.5 设置虚拟目录 306
13.8.6 设置虚拟主机 307
13.8.7 设置MIME类型 307
13.8.8 错误显示 309
13.8.9 语言管理 310
13.9 本章小结 311
13.10 习题 312
第14章 FTP服务器配置 313
14.1 FTP简介 313
14.1.1 FTP协议介绍 313
14.1.2 FTP文件类型 314
14.1.3 FTP文件结构 315
14.1.4 FTP传输模式 315
14.1.5 FTP常用命令 315
14.1.6 FTP典型消息 316
14.2 使用Vsftp服务器 317
14.2.1 Vsftp简介 317
14.2.2 安装Vsftp服务器 317
14.2.3 启动和关闭Vsftp服务器 319
14.2.4 配置vsftpd.conf文件 320
14.2.5 配置ftpusers文件 322
14.2.6 配置user list文件 323
14.3 深入使用Vsftp服务器 323
14.3.1 匿名用户使用Vsftp服务器 324
14.3.2 本地用户使用Vsftp服务器 325
14.3.3 虚拟用户使用Vsftp服务器 327
14.3.4 配置Vsftp服务器中chroot 329
14.3.5 配置Vsftp服务器在非标准端口工作 329
14.3.6 配置虚拟FTP服务器 330
14.4 使用Wu-ftp服务器 332
14.4.1 安装Wu-ftp服务器 332
14.4.2 启动和使用Wu-ftp服务器 333
14.4.3 配置Wu-ftpd服务器 334
14.5 本章小结 335
14.6 习题 335
第15章 NFS服务器配置 337
15.1 NFS简介 337
15.2 安装和启动NFS服务器 338
15.2.1 安装NFS服务器 338
15.2.2 启动NFS服务器 341
15.3 配置NFS服务器 341
15.4 使用NFS服务器 343
15.4.1 查看NFS共享目录 343
15.4.2 挂载NFS共享目录 344
15.4.3 自动挂载共享目录 346
15.5 本章小结 347
15.6 习题 347
第16章 Mail服务器配置 348
16.1 邮件系统简介 348
16.1.1 邮件传递代理(MTA) 348
16.1.2 邮件存储和获取代理(MSA) 348
16.1.3 邮件客户代理(MUA) 349
16.2 SMTP介绍 349
16.2.1 SMTP的模型 349
16.2.2 SMTP的基本命令 350
16.2.3 电子邮件介绍 352
16.2.4 Open Relay的原理 354
16.3 建立Sendmail服务器 354
16.3.1 安装与启动Sendmail 354
16.3.2 设置sendmail.cf 357
16.3.3 使用sendmail.mc文件 359
16.3.4 创建新的邮件账号 361
16.3.5 设置账号别名 361
16.3.6 使用access数据库 361
16.3.7 配置带SMTP认证的Sendmail服务器 362
16.4 建立Dovecot邮件服务器 363
16.4.1 安装Dovecot服务器 364
16.4.2 配置Dovecot服务器 365
16.4.3 启动Dovecot服务器 366
16.4.4 发送/接收邮件实例 366
16.5 配置邮件客户端 367
16.6 防范垃圾邮件 371
16.6.1 常用技术 372
16.6.2 使用Sendmail防范垃圾邮件 373
16.7 本章小结 374
16.8 习题 374
第17章 网络信息安全 375
17.1 网络信息安全简介 375
17.1.1 网络信息安全的要素 375
17.1.2 网络中存在的威胁 376
17.1.3 网络信息安全领域的研究重点 376
17.2 常见的攻击类型 378
17.2.1 端口扫描 378
17.2.2 特洛伊木马 379
17.2.3 DoS攻击 381
17.2.4 Linux下的病毒 382
17.3 防火墙(FireWall)技术 384
17.3.1 防火墙简介 385
17.3.2 防火墙的分类 385
17.3.3 传统防火墙技术及其特点 387
17.3.4 新一代防火墙的主要技术特点 388
17.3.5 新一代分布式防火墙概述 388
17.3.6 新一代嵌入式防火墙技术 388
17.3.7 新一代智能防火墙技术 389
17.3.8 防火墙技术的发展趋势 389
17.3.9 使用netfilter/iptables防火墙框架 391
17.4 入侵检测系统(IDS) 395
17.4.1 入侵检测系统简介 395
17.4.2 Snort介绍 396
17.4.3 安装Snort 396
17.4.4 使用Snort 398
17.4.5 配置Snort规则 401
17.4.6 编写Snort规则 403
17.4.7 Snort规则应用举例 404
17.5 使用Tripwire保护网络系统的数据安全 406
17.5.1 Tripwire简介 406
17.5.2 Tripwire工作原理 406
17.5.3 使用Tripwire 408
17.5.4 使用Tripwire的技巧 412
17.6 本章小结 413
17.7 习题 413
第四篇 Linux编程篇 416
第18章 Linux下的编程 416
18.1 Linux下常用的开发工具 416
18.1.1 GCC 416
18.1.2 CVS 416
18.1.3 Perl 416
18.1.4 Linux上的Delphi——Kylix 417
18.2 Linux下的Vi文本编辑器 417
18.2.1 Vi编辑器介绍 418
18.2.2 启动Vi编辑器 419
18.2.3 显示Vi中的行号 420
18.2.4 光标移动操作 420
18.2.5 屏幕命令 421
18.2.6 文本插入(insert)命令 422
18.2.7 附加(append)命令 422
18.2.8 新行(open)命令 423
18.2.9 文本修改命令 423
18.2.10 退出Vi编辑器 426
18.3 Linux的C编译器——GCC 426
18.3.1 GCC的编译过程 427
18.3.2 GCC的基本用法和常用选项 427
18.3.3 使用GDB调试C程序 429
18.3.4 编写Makefile文件 434
18.4 Linux下的PHP编程 438
18.4.1 PHP简介 439
18.4.2 配置运行环境 439
18.4.3 一个简单的PHP例子 441
18.5 本章小结 442
18.6 习题 442
第19章 Linux下的C编程 443
19.1 C语言概述 443
19.1.1 发展历史与特点 443
19.1.2 程序的基本结构 444
19.1.3 基本组成元素 444
19.1.4 语句 447
19.1.5 数组 451
19.1.6 指针 452
19.1.7 结构体 453
19.1.8 函数 455
19.2 基本应用 456
19.2.1 字符串操作 456
19.2.2 数据转换 459
19.2.3 内存分配与释放 461
19.3 文件操作 462
19.3.1 创建/打开文件 462
19.3.2 关闭文件 463
19.3.3 读写文件 463
19.4 进程操作 465
19.4.1 进程的概念 465
19.4.2 进程的创建 466
19.4.3 进程的终止 467
19.4.4 进程信息的获取 469
19.5 本章小结 470
19.6 习题 471
第20章 Linux下的网络编程 472
20.1 套接字编程概述 472
20.2 套接字数据结构 474
20.2.1 套接字地址结构 474
20.2.2 通用套接字地址结构 475
20.2.3 主机名结构 476
20.2.4 服务名结构 476
20.3 套接字函数 477
20.3.1 创建套接字 477
20.3.2 绑定套接字 478
20.3.3 监听网络端口 478
20.3.4 接受连接请求 479
20.3.5 建立连接 479
20.3.6 面向连接的数据传输 479
20.3.7 无连接的数据传输 480
20.3.8 关闭套接字 481
20.3.9 应用实例 481
20.4 服务器模型 487
20.4.1 循环服务器 487
20.4.2 并发服务器 488
20.5 域名系统 490
20.5.1 通过域名获取主机信息 490
20.5.2 通过地址获取主机信息 491
20.5.3 获取本地主机信息 491
20.6 本章小结 492
20.7 习题 493