编者的话 1
第1章 UNIX的发展和成就 1
1.1 UNIX的诞生 1
丛书前言 1
1.2 UNIX的特点 2
1.3 UNIX的发展 3
第2章 UNIX的系统管理 5
2.1 系统管理的要求 5
2.1.1 系统软硬件的设置 5
2.1.2 系统资源的分配 5
2.1.3 软件资源的优化 6
2.1.4 软件资源的保护 6
2.1.5 日常维护 7
2.2 系统的安装和初始化 7
2.2.1 系统启动 7
2.2.3 系统启动有关的文件 8
2.2.2 系统运行级 8
2.3 系统运行级的切换 11
2.3.1 系统缺省运行级的修改 11
2.3.2 系统启动后的运行级切换 12
2.3.3 切换到单用户状态 12
2.3.4 切换到多用户状态 13
2.3.5 切换到RFS状态 13
2.3.6 切换到运行级0 13
2.3.7 切换到运行级1 13
2.3.8 切换到运行级6 14
2.3.9 init q 14
2.3.10 变更启动设置的例子 14
2.4 关机和重启动 16
2.4.1 关机操作 16
2.4.2 系统重启动 17
3.1 概述 19
第3章 用户管理 19
3.2 用户组 20
3.2.1 用户和用户组 20
3.2.2 用户组的管理 22
3.3 用户 24
3.3.1 建立一个新的用户 24
3.3.2 删除用户 27
3.3.3 显示用户和组的信息 28
3.3.4 与用户有关的文件 28
3.4 用户工作环境的设置 30
3.4.1 系统的profile文件 30
3.4.2 用户的profile文件 32
3.4.3 环境变量 33
3.4.4 建立默认的文件方式 34
3.5.2 新闻news 35
3.5.1 日期信息/etc/motd 35
3.5 系统管理员和用户之间的通信 35
3.5.3 发往所有用户的wall 36
3.5.4 写往某一用户的write 36
3.5.5 邮件Mail 36
第4章 UNIX的基本指令 37
4.1 文件操作 37
4.1.1 管道和定向 37
4.1.2 ls 38
4.1.3 ar 38
4.1.4 awk 38
4.1.5 banner 38
4.1.14 cmp 39
4.1.13 cc 39
4.1.12 cat 39
4.1.11 lp 39
4.1.9 btou 39
4.1.10 c89 39
4.1.8 biff 39
4.1.7 bfs 39
4.1.6 bdiff 39
4.1.15 col 40
4.1.16 comm 40
4.1.17 conmpress 40
4.1.18 cp 40
4.1.19 crypt 40
4.1.20 csplit 40
4.1.21 cut 40
4.1.29 gnuzip 41
4.1.28 file 41
4.1.27 fc 41
4.1.26 f77 41
4.1.25 egrep 41
4.1.24 echo 41
4.1.23 ddifanls,ddifps,ddiftext 41
4.1.22 dbx 41
4.1.30 ln 42
4.1.31 man 42
4.1.32 mkdir 43
4.1.33 more 43
4.1.34 mv 43
4.1.35 od 43
4.1.36 paste 43
4.1.37 tar 43
4.1.38 tree 44
4.1.44 spell 45
4.1.43 sort 45
4.1.42 sleep 45
4.1.41 rmdir 45
4.1.39 Pg 45
4.1.40 rm 45
4.1.45 tee 46
4.1.46 wc 46
4.2 系统管理 46
4.2.1 admin 46
4.2.2 at 46
4.2.3 atq 46
4.2.4 atrm 47
4.2.5 kill 47
4.2.6 last 47
4.2.7 lastcomm 47
4.2.11 nohup 48
4.2.13 ps 48
4.2.12 passwd 48
4.2.10 nice 48
4.2.9 nfsstat 48
4.2.8 newgrp 48
4.2.14 time 49
4.2.15 limit 49
4.2.16 umask 49
4.2.17 unalias 49
4.3 网络应用 50
4.3.1 Mail 50
4.3.2 Rsh 50
4.3.3 java 50
4.3.4 chat 50
4.3.5 chfn 50
4.3.11 write 51
4.3.9 talk 51
4.3.10 telnet 51
4.3.7 rcp 51
4.3.6 ftp 51
4.3.8 rlogin 51
4.4 消息查询 52
4.4.1 acctcom 52
4.4.2 basename 52
4.4.3 bc 52
4.4.4 cal 52
4.4.5 df 53
4.4.6 domainname 53
4.4.7 du 53
4.4.8 env 54
4.4.9 eucset 54
4.4.13 head 55
4.4.15 id 55
4.4.14 hostname 55
4.4.12 find 55
4.4.11 finger 55
4.4.10 expr 55
4.4.16 iostat 56
4.4.17 locale 56
4.4.18 lp,lpq,lpr,lprm,lpstst 56
4.4.19 nslookup 56
4.4.20 pwd 56
4.4.21 rup 57
4.4.22 rusers 57
4.4.23 rwall 57
4.4.24 rwho 57
4.4.25 showmount 57
4.4.30 whois 58
4.4.28 which 58
4.4.29 who 58
4.4.26 uname 58
4.4.27 whereis 58
4.4.31 ypcat,yppasswd,ypwhich 59
4.5 系统更变 59
4.5.1 sh 59
4.5.2 alias 59
4.5.3 cd 59
4.5.4 chgrp 59
4.5.5 chmod 59
4.5.6 chown 60
4.5.7 chsh 60
4.5.8 clear 60
4.5.9 lock 60
4.5.10 mesg 60
5.1 Vi的基本概念 61
5.2 Vi的输入模式 61
第5章 UNIX的编辑器 61
5.2.1 新增(append) 62
5.2.2 插入(insert) 62
5.2.3 开始(open) 62
5.3 Vi的基本编辑 62
5.3.1 删除与修改 62
5.3.2 移动游标 63
5.3.4 档案指令 64
5.3.3 进阶编辑指令 64
5.4 Emacs 65
5.4.1 Emacs启动 65
5.4.2 符号说明 65
5.4.3 档案操作 67
5.4.4 视窗 67
5.4.5 Emacs扩充指令 68
5.4.6 Tags 69
6.1.1 head 72
6.1 head和tail 72
第6章 文件处理工具 72
6.1.2 tail 74
6.2 more和pg 74
6.2.1 more 75
6.2.2 pg 77
6.3 cut和Daste 81
6.3.1 cut 81
6.3.2 paste 83
6.4 split与csplit 85
6.4.1 split 85
6.4.2 csplit 86
6.5 od 87
6.6 join 88
6.7 gawk 89
6.7.1 简介 89
6.7.2 读取输入档案 91
6.7.3 显示 92
6.7.4 patterns 94
6.7.5 算式(Expression)作为Actions的叙述 96
6.7.6 Actions里面的控制叙述 97
6.7.7 内建函式(Built-in Functions) 98
6.7.8 使用者定义的函式(User-defined Functions) 100
6.7.9 例子 100
6.7.10 结论 102
第7章 shell程序设计 103
7.1 命令 103
7.2 将命令纳入文件 104
7.3 if操作符 107
7.4 test命令 108
7.5 exit命令 111
7.6 expr命令 112
7.7 for操作符 112
7.8 while操作符 114
7.9 case操作符 115
7.10 脚本.profile和/etc/profile 116
7.11 一个典型的.profile文件 117
7.12 source操作 119
7.13 命令行变元 119
7.14 使用shell中的错误和shell的错误信息 121
7.15 深入讨论 122
7.16 shell函数 127
7.17 Korn shell和C shell 128
第8章 Make与Imake 130
8.1 概述 130
8.2 依赖关系 130
8.3 建立Makefile文件 132
8.3.1 描述档案(Description File) 132
8.3.2 检查附属档案(Dependency Checking) 133
8.3.3 重建最小化(Minimizing Rebuilds) 134
8.3.4 语法的基本规则(Basic Rules of Syntax) 136
8.4 巨集(Macros) 137
8.4.1 文法规则(Syntax Rules) 139
8.4.2 定义在make内部的巨集(Internally Defined Macros) 140
8.4.3 在命令行上定义的巨集(Macros Defined on the Command Line) 141
8.4.4 Shell变数(Shell Variable) 141
8.4.5 指派巨集的优先顺序(Priority of Macro Assignments) 142
8.4.6 把环境变数当作内定值(Relying on Environment Variable for Defaults) 143
8.4.7 巨集字串的代换(Macro String Substitution) 145
8.4.8 必备档案与目标所用的内部巨集(Internal Macros for Prerequisites and Targets) 146
8.5 一个非常简单的Makefile 149
8.6 Imake的使用 150
第9章 UNIX通信原理 165
9.1 TCP/IP的发展历史和特点 165
9.2 TCP/IP的协议结构 165
9.2.1 TCP/IP协议的分层模型 166
9.2.2 TCP/IP协议族 168
9.3 TCP/IP中的地址 169
9.3.1 TCP/IP的编址思想 170
9.3.2 IP地址的类别划分 170
9.3.3 IP地址的管理和扩展 171
9.4 地址解析 172
9.5 子网、网关与路由 173
第10章 FTP服务及配置 175
10.1 FTP服务的基本概念 175
10.1.1 FTP服务和协议简介 175
10.1.2 FTP服务的基本命令 176
10.2 匿名FTP服务器的配置 184
10.2.1 匿名FTP服务器的配置方法 184
10.2.2 匿名FTP服务器的安全性 185
10.3 FTP服务器的高级配置 186
10.3.1 启动ftpd守护进程的参数 187
10.3.2 限制用户的访问 188
10.3.3 根据服务器的负载限制用户访问 189
10.3.4 基于安全考虑限制用户访问 189
10.3.5 限制用户操作 189
10.3.6 创建和管理用户组 190
10.3.7 向用户显示信息 190
10.3.8 记录系统日志 192
10.3.9 限制上载 192
第11章 网络应用程序的使用 194
11.1 电子邮件概述 194
11.1.1 电子邮件的工作原理 194
11.1.2 SMTP协议 195
11.1.3 电子邮件系统的构成 196
11.2 如何使用电子邮件 197
11.2.1 邮件地址 197
11.2.3 E-mail的其他内容 198
11.2.2 E-mail地址的特色 198
11.2.4 处理信件的软件 199
11.2.5 读写中文信 200
11.2.6 讨论群(Mailing List) 200
11.3 如何管理电子邮件 200
11.3.1 sendmail的功能 200
11.3.2 mail相关文件 201
11.4 网络新闻(USENET NEWS) 202
11.4.1 News的历史 202
11.4.2 读News应有的知识 202
11.4.3 tin的使用 203
11.5 Gopher 204
11.6 电子公告牌(BBS) 205
12.1 NFS简介 207
12.1.1 NFS的主要特点 207
第12章 NFS与NIS 207
12.1.2 NFS的基本工作原理 208
12.2 NFS的配置与使用 208
12.2.1 NFS的守护进程 208
12.2.2 NFS服务器的配置 210
12.2.3 NFS客户机的配置 211
12.2.4 NFS服务的启动和中止 213
12.3 NIS的工作原理 213
13.1.1 ifconfig命令 215
第13章 UNIX网络的管理与维护 215
13.1 配置网络接口 215
13.1.2 netstat命令 217
13.2 创建子网 221
13.2.1 创建子网的主要目的 221
13.2.2 设置子网地址和子网掩码 222
13.3 标准网络配置文件 222
13.3.1 /etc/hosts 222
13.3.3 /etc/services 223
13.3.2 /etc/protocols 223
13.4 故障检测与排除 226
13.4.1 确定检查对象 229
13.4.2 常用的诊断工具 230
13.4.3 不同协议故障的的诊断 236
13.5 电子邮件故障与排除 240
13.6 故障的防范 241
13.6.1 监视系统 241
13.6.2 备份文件 242
13.6.3 查看日志文件 242
第14章 用户与编程安全 243
14.1 口令安全 243
14.2 文件许可权 243
14.4 umask命令 244
14.5 设置用户ID和同组用户ID许可 244
14.3 目录许可 244
14.6 cp、mv、ln和cpio命令 245
14.7 su和newgrp命令 246
14.8 文件加密 246
14.9 其他安全问题 246
14.10 保持户头安全的要点 248
14.11 系统子程序 249
14.12 进程控制 250
14.13 文件属性 251
14.14 UID和GID的处理 252
14.15 标准C库 252
14.16 写安全的C程序 254
14.17 root程序的设计 256
第15章 系统管理员安全 258
15.1 安全管理 258
15.2 超级用户 258
15.3.2 设备文件 259
15.3.1 UNIX文件系统概述 259
15.3 文件系统安全 259
15.3.3 /etc/mknod命令 260
15.3.4 find命令 261
15.3.5 secure程序 261
15.3.6 ncheck命令 262
15.3.7 安装和拆卸文件系统 262
15.3.8 系统目录和文件 262
15.4 作为root运行的程序 263
15.4.1 启动系统 263
15.4.2 init进程 263
15.4.3 进入多用户 263
15.4.4 shutdown命令 263
15.4.5 系统V的cron程序 264
15.4.6 系统V版本2之后的cron程序 264
15.4.7 /etc/profile 264
15.5.2 UID和GID 265
15.5.1 口令时效 265
15.5 /etc/passwd文件 265
15.6 /etc/group文件 266
15.7 增加、删除、移走用户 266
15.7.1 增加用户 266
15.7.2 删除用户 267
15.7.3 将用户移到另一个系统 267
15.8 安全检查 267
15.8.1 记帐 267
15.8.2 其他检查命令 268
15.8.3 安全检查程序的问题 268
15.8.4 系统泄密后怎么办? 269
15.9 加限制的环境 270
15.9.1 加限制的shell(rsh) 270
15.9.2 用chroot()限制用户 270
15.10 小系统安全 271
15.12 用户意识 272
15.11 物理安全 272
15.13.1 保持系统管理员个人的登录安全 273
15.13 系统管理员意识 273
15.13.2 保持系统安全 274
第16章 网络安全 276
16.1 UUCP系统概述 276
16.1.1 UUCP命令 276
16.1.2 uux命令 277
16.1.3 uucico程序 277
16.1.4 uuxqt程序 277
16.2 UUCP的安全问题 278
16.2.1 USERFILE文件 278
16.2.4 uucp使用的文件和目录 279
16.3 HONEYDANBER UUCP 279
16.2.3 uucp登录 279
16.2.2 L.cmds文件 279
16.3.1 HONEYDANBER UUCP与老UUCP的差别 280
16.3.2 登录名规则 280
16.3.3 MACHINE规则 282
16.3.4 组合MACHINE和LOGNAME规则 283
16.3.5 uucheck命令 283
16.3.7 登录文件检查 284
16.3.6 网关(gateway) 284
16.4 其他网络 285
16.4.1 远程作业登录(RJE) 285
16.4.2 NSC网络系统 286
16.5 通信安全 286
16.5.1 物理安全 286
16.5.2 加密 287
16.5.3 用户身份鉴别 288
16.6.1 确保NFS的安全 289
16.6.2 NFS安全性方面的缺陷 289
16.6 Sun OS系统的网络安全 289
16.6.3 远程过程调用(RPC)鉴别 290
16.6.4 UNIX鉴别机制 290
16.6.5 DES鉴别系统 291
16.6.6 公共关键字的编码 292
16.6.7 网络实体的命名 292
16.6.8 DES鉴别系统的应用 293
16.6.9 遗留的安全问题 294
16.6.10 性能 294
16.6.11 启动和setuid程序引起的问题 295
16.6.12 总结 295
16.7 WWW服务器的安全性 296
16.7.1 选择好的操作系统 296
16.7.2 选择WWW服务器 296
16.7.3 WWW服务器的安装 297
16.7.4 CGI安全问题 298
16.7.5 商业应用的安全性 300
16.7.6 结论 301
第17章 UNIX下的中文环境 302
17.1 cxterm 302
17.1.1 cxterm的输入法详解 313
17.1.2 字典文件:*.cit 314
17.2 chinput 316
17.3 cdict 316
17.4 不同shell下中文的输入 318
17.5 中文打印 319
17.6 编码转换 319
17.6.1 ps2cps 320
17.6.2 gb2ps 320
17.7 多国语文字编辑器Mule 321
17.7.1 Mule所支持的中文输入体系 321
17.7.2 编译及安装Mule 322
17.8 其他常用中文软件(hztty) 323
17.7.3 安装Mule上的中文汉字字模 323
17.9 深入讨论UNIX中汉字问题 324
17.9.1 安装X Font 324
17.9.2 X Font现有的格式种类 325
17.9.3 转换字体 325
17.9.4 编辑X汉字字体的软件 325
17.9.5 实现汉字和ASCII的混合显示 325
17.9.6 竖向或有角度地显示汉字 325
17.9.7 特殊效果的汉字显示 326
17.10 汉化与包装 326
17.10.1 没有源程序时的汉化 326
17.10.2 有源程序时的汉化 326
17.10.3 解决汉字输入问题 327
17.10.4 在netscape里输入中文 327
第18章 UNIX下常见问题分析 330
18.1 如何配置UNIX的PPP客户机? 330
18.2 如何限制用户的登陆地点? 331
18.3 一些奇怪的unix指令名字的由来 332
18.4 怎么删除档名以“-”字元开头的档案? 333
18.5 怎样删除档名中含有特殊字元的档案? 334
18.6 怎样列出整个目录树? 335
18.7 怎样设定prompt以显示出目前所在目录? 335
18.8 写shell script时,如何从terminal读入字元? 337
18.9 怎样把“*.foo”改名为*.bar”?怎样把档案名称改成小写? 337
18.10 为什么用“rsh host command”会有一些奇怪的信息出现? 339
18.11 怎样用程序或在shell script中设定目前shell的环境变量或改变所在的目录? 340
18.12 如何将csh的stdout与stderr导向到不同的地方? 340
18.13 如何在.cshrc中判断是否在login shell中? 341
18.14 在shell中怎样用pattern表示除了“.”与“..”外的所有档案? 342
18.15 在Bourne shell script里怎样找出最后一个参数? 342
18.16 为什么有人说$PATH里不可以放“.”? 344
18.19 怎样截断一个档案? 345
18.18 执行rsh时怎样才能不必等远方指令执行结束就回到shell? 345
18.17 如何得知一个档案建立的时间? 345
18.20 为什么执行find时使用的{}符号无法达到预期的结果? 347
18.21 如何改变一个symbolic link的permission? 348
18.22 如何“undelete”一个档案? 348
18.23 一个process怎样侦测出自己是否在背景状态执行? 349
18.24 为什么在Bourne shell中,对循环的输出/入转向无法达到预期的效果? 350
18.25 怎样在一个shell script中或在背景执行“ftp”、“telnet”、“tip”等interactive程序? 351
18.26 在shell script或c程序中,怎样才能找到某个程式的process ID? 352
18.27 经由rsh执行远方指令时怎样检查远方指令的结束状态? 353
18.28 能不能把shell变数传进awk程序中? 353
18.29 怎样避免在内存中留下zombie processes? 354
18.30 使用者怎样不必按RETURN的情况下从terminal读进数据? 355
18.31 怎样在读进数据的情况下检查是否有字元等待读取? 355
18.33 一个执行中的程序如何知道自己的pathname? 356
18.34 如何用popen()对一个进程做读写操作? 356
18.32 怎样知道一个已打开的档案的档案名? 356
18.35 在C程序中要怎样用sleep()使sleep时间少于1秒? 357
18.36 如何让setuid的shell script可以使用? 359
18.37 如何得知有哪些进程打开了某一档案,或某一进程正在使用哪一个文件? 360
18.38 如何知道是谁在finger自己? 361
18.39 能不能在一个process和terminal的连接已经断掉之后再接回来,例如在background运行然后logout而断掉的程序? 361
18.40 有没有办法可以偷听一个terminal,将其输出复制一份至其他的terminal? 362
18.41 在一个shell script中如何调用另一个shell script? 363
18.42 是不是所有shell都有alias,有没有别的替代方案? 363
18.43 如何设定shell的变量? 363
18.44 如何得知是否是在一个interactive shell中? 363
18.45 以“.”开始档名的档案在各种shell中的用途? 363
18.46 各种shell更多的相异之处 365
附录A 国内匿名FTP站点 366
附录B 一个DNS的spoolf程序 369
附录C 一个login的特洛伊木马程序 387