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