红旗Linux中文教程

2020年05月05日 阅读数:1277
这篇文章主要向大家介绍红旗Linux中文教程,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

——红旗Linux受权培训中心指定用书——php

红旗Linux指定培训教材html

红旗Linux用户基础教程前端

中科红旗软件技术有限公司编著node

红旗Linux受权培训管理中心监制mysql

Publishing House of Electronics Industrylinux

北京BEIJING内容简介ios

本书属于“红旗Linux指定培训教材”系列,是红旗Linux受权培训中心指定用书。git

本书从最基本的红旗Linux2.0讲起,详细介绍了红旗Linux中外设、文件系统、Shell系统、经常使用命令、基本网络操做命令,XWindow系统的使用。本书在注重总体性和实用性的基础上,充分考虑了读者在学习工做中的各类困难,每章附有习题,以方便读者巩固所学知识。同时,本书还附有实验部分,这些实验设计精炼,内容充实,对读者巩固学习效果大有好处。程序员

本书适合于Linux入门用户,将带领读者进入红旗Linux的殿堂。同时,本书也是红旗Linux培训的教学用书。web

未经许可,不得以任何方式复制或抄袭本书之部分或所有内容。

版权全部,翻版必究。

图书在版编目(CIP)数据

红旗Linux用户基础教程/中科红旗软件技术有限公司编著.-北京:电子工业出版社,2001.1

(红旗Linux指定培训教材)

ISBN7-5053-6476-6

.........Linux操做系统-技术培训-教材Ⅳ.TP316.89

中国版本图书馆CIP数据核字(2000)第86533

丛书名:红旗Linux指定培训教材

书名:红旗Linux用户基础教程

编著:中科红旗软件技术有限公司

监制:红旗Linux受权培训管理中心

责任编辑:郭晶 罗建强

排版制做:电子工业出版社计算机排版室监制

印刷者:

出版发行:电子工业出版社URLhttp://www.phei.com.cn

北京海淀区万寿路173信箱邮编:100036

经销:各地新华书店

开本:787×9801/16印张:18字数:403.2千字

版次:20011月第120011月第1次印刷

ISBN7-5053-6476-6书号:TP·3545

印数:册订价:元

凡购买电子工业出版社的图书,若有缺页、倒页、脱页、所附磁盘或光盘有问题者,请向购买书店调换。

若书店售缺,请与本社发行部联系调换。电话:68279077

前言

关于本丛书

Linux是一套无偿使用和自由传播的类UNIX操做系统,是一个基于POSIXUNIX

的多用户、多任务、支持多线程和多CPU的操做系统。它能运行主要的UNIX工具软件、应用程序和网络协议。这个系统是由全世界各地的成千上万的程序员设计和实现的。其目的是创建不受任何商品化软件的版权制约的、全世界都能自由使用的UNIX兼容产品。

红旗LinuxLinux的一个发展产品,由中科红旗软件技术有限公司开发研制的以IntelAlpha芯片为CPU构成的服务器平台上第一个国产的操做系统版本。它标志着我国在发展国产操做系统的道路上迈出了坚实的一步。

红旗Linux与其余Linux中文版本有着不一样的特色。它使用的是最新的Linux2.2.16版的核心,预装了炎黄中文平台和方正TrueType字库,是目前国内唯一一套在Linux上支持大字符集(GBK)的中文操做系统,实现了Linux上的TrueType显示和打印功能,而且从安装到使用都提供了全中文化的操做环境;红旗Linux支持基于Intel芯片的各种PC机和服务器,而且支持基于Alpha芯片的工做站和服务器等等;红旗Linux完全支持Informix-SEOracle8以及Sybase等多种流行数据库,并提供了Linux上数据库解决方案的实例,为用户开发基于Linux的数据库应用开创了先例。

红旗Linux的推出,将对中国的计算机产业产生大的影响。操做系统的多元化带动着软件的多元发展,同时对硬件也有互动做用。有了国产操做系统后,许多优秀的应用软件,就能不受微软捆绑软件的威胁,而能在本身的操做系统上一展身手。为了配合红旗Linux的使用和推广,咱们特地推出了这套详细讲解红旗Linux的桌面版和服务器的培训教材,以期为国产软件的振兴略尽绵薄之力。

本套丛书包括四本:《红旗Linux桌面应用教程》、《红旗Linux用户基础教程》、《红旗Linux系统管理教程》、《红旗Linux网络管理教程》,内容从基本使用到高级配置,从桌面简单应用到服务器高端管理,基本涵盖了红旗Linux的全部内容。并且,每本书也自成体系,讲解深刻浅出,实例丰富,可针对不一样的用户,知足不一样的须要。不管您是从未涉足Linux的新手,仍是经验丰富的老手,本套书都有适合您的内容。本书是红旗Linux受权培训中心的指定用书,经过对本丛书的学习,读者能够参加红旗Linux产品应用专家考试体系(RAP)、红旗Linux认证工程师体系(RCE)的考试,并得到相应的认证。

在本套丛书推出过程当中,飞思科技产品研发中心全面负责审校、编辑、印刷、出版等主要环节的工做;北京汇智协同信息科技有限公司在本教材系列的教学研究和培训规划方面给予了全面支持。

关于本书

本书做为“红旗Linux指定培训教材”丛书基础级教材,主要介绍了红旗Linux服务器

2.0版的相关基础知识,是后续两本书《(红旗Linux系统管理教程》和《红旗Linux网络管理教程》)的基础。

本书包含入门级读者在学习Linux时所必须掌握的基础知识,如核心升级和应用软件安装、使用外部设备、经常使用Linux命令介绍、红旗Linux中文环境、Shell简介、使用Vi、备份数据和资料、多用户管理及用户安全、文件与目录系统及其操做、网络简介和网络服务等。

本书有以下特色:

1)实例丰富。本书讲解的每个知识点,都有具体的例子来讲明;

2)深刻浅出,按部就班。本书章节顺序通过精心考虑,即便您没有任何Linux的经验,只要按照书中各章的顺序完成学习,您最终将成为一名合格的Linux用户;

3)练习丰富,便于自学。每章都有足够数量的练习,您能够及时检查本身的学习效果;书后还附有一些较大的实验练习和习题答案,帮助您更上一层楼。

本书主要针对于从未使用过Linux或者UNIX的入门级读者,同时也是但愿进一步进行系统管理或网络管理的读者的基础读物。学完本书后,读者可以轻松定制我的化的红旗Linux工做站,熟练使用常见命令,深入理解红旗Linux系统,并为后两本书的学习打下扎实的基础。

本书由中科红旗软件技术有限公司编著,刘晓华、杨艳、黄科参与了写做工做,在此表示深深的感谢。因为本书涉及的内容丰富,加之篇幅、时间所限,书中不足之处,敬请读者批评指正。

目  录

1Linux及红旗Linux简介 11

1.1Linux历史 11

1.1.1Linux的产生及发展 11

1.1.2自由软件 12

1.2Linux现状 13

1.2.1Linux用户 13

1.2.2Linux的功能 14

1.2.3Linux的缺陷 14

1.3Linux与其余操做系统性能对比 15

1.3.1DOS系统比较 15

1.3.2Windows系统比较 16

1.4什么是红旗Linux 16

1.5红旗Linux的功能 17

1.5.1通常的操做系统功能 17

1.5.2网络服务 18

1.5.3中文及窗口环境支持 19

1.5.4红旗服务器2.0版本主要特性 19

习题 20

2章红旗Linux中文环境 21

2.1Shell中文环境 21

2.1.1简单介绍 21

2.1.2安装 22

2.1.3使用 22

2.1.4配置 23

2.2KDE中文环境 24

2.2.1简单介绍 24

2.2.2启动输入法程序 25

2.2.3使用中文输入法 26

2.3红旗Linux上的中文打印机配置 27

2.3.1配置打印机 27

2.3.2中文打印 30

2.4语言切换 30

习题 31

3章经常使用Linux命令介绍 32

3.1做业控制命令 32

3.2显示命令 33

3.3文件和目录操做命令 34

3.4网络命令 37

3.5其余实用命令 38

习题 43

4Shell简介 45

4.1Shell的基本概念 45

4.2进程 47

4.2.1分时 47

4.2.2前台进程和后台进程 47

4.2.3父进程和子进程 47

4.2.4进程状态命令ps 48

4.2.5杀死进程 48

4.3输入输出重定向 48

4.3.1标准输入与输出 48

4.3.2输入重定向 49

4.3.3输出重定向 50

4.3.4管道 51

4.3.5命令替换 51

4.4Bourne Shell script编程基础 52

4.4.1分支语句 52

4.4.2循环控制 54

4.4.3从循环中退出 56

4.4.4处理不定长的参数 58

4.4.5结构化编程:定义函数 59

4.4.6使用And/Or结构进行有条件的命令执行 61

4.4.7使用getopts命令读取Linux格式选项 61

习题 63

5章使用vi 65

5.1vi的两种模式 65

5.2启动和退出vi 65

5.3编辑模式 65

5.4vi基本编辑方法 66

5.5vi高级应用 66

5.5.1移动光标 66

5.5.2高级编辑指令 68

5.5.3文件指令 68

习题 69

6章使用外部设备 70

6.1使用CDROM 70

6.2使用软盘 71

6.3使用Zip驱动器 71

6.4让系统识别并行端口Zip驱动器 71

6.5自动安装(mount)功能 71

6.6设置32I/O硬件驱动器 72

6.7使用打印机 72

6.7.1安装远程打印机 72

6.7.2Linux下的打印工做 73

6.7.3命令行方式下的打印操做 74

6.7.4KDE中打印机的操做和管理 75

6.8配置和使用声卡 75

6.9使用外设的若干常见问题 76

习题 77

7章多用户管理及用户安全 78

7.1用户类别 78

7.2用户管理 78

7.2.1添加用户 78

7.2.2权限设置 79

7.2.3删除和查封用户 81

7.2.4超级用户 81

7.3用户组管理 82

7.3.1用户组的实例 82

7.3.2将用户添加至用户组 83

7.3.3添加用户组 83

7.3.4删除用户组 83

7.3.5设置群组密码 83

7.3.6修改群组记录 84

7.3.7在用户组间切换 84

7.3.8用户组权限需求分析 84

7.4用户安全 85

7.4.1多用户访问权限控制 85

7.4.2口令安全 86

7.4.3关于PAM 88

7.4.4限制用户对主机的使用 89

7.4.5其余安全问题 92

习题 95

8章备份数据和资料 96

8.1备份计划 96

8.1.1备份的重要 96

8.1.2备分内容 96

8.1.3选择备份介质 97

8.2实施备份 98

8.2.1简单备份 98

8.2.2多级备份 102

8.2.3 压缩备份 102

习题 103

9章文件系统 105

9.1      105

9.1.1  创建、安装及拆卸文件系统 107

9.2  网络文件系统 109

9.2.1  网络文件系统的概念 109

9.2.2  网络文件系统的安装 109

9.3  磁盘空间配额管理 110

9.4  碎片清理和文件系统维护 111

9.5      111

9.5.1  建立交换空间 111

习题 112

10      114

10.1  文件名和路径名 114

10.1.1  文件名 114

10.2      115

10.2.1  目录树 115

10.2.2  根(/)文件系统 115

10.2 3  /usr文件系统 116

10.2.4  /var文件系统 116

10.2.5  /proc 文件系统 116

10.2.6  /dev文件系统 117

10.2.7  /etc目录文件 117

10.3      128

习题 129

11  文件和目录操做 130

11.1  文件基本操做 130

11.1.1  列文件 130

11.1.2  复制文件 131

11.1.3  删除文件 131

11.1.4  移动和重命名文件 132

11.2  文件属性操做 132

11.2.1  改变访问权限 132

11.2.2  改变组属 133

11.2.3  查看文件内容 133

11.2.4  压缩和解压 134

11.2.5  fsck检查文件系统完整性 135

11.2.6  badblocks检查磁盘错误 135

11.2.7  文件碎片 136

11.2.8  ext2文件系统的其余工具 136

11.3  LinuxWindows 9X资源共享 136

11.3.1  Linux下共享Windows 9X的资源 136

11.3.2  Windows系统中使用Linux分区的资源 137

11.4  文件系统疑难解决 138

习题 140

12  核心升级和应用软件安装 141

12.1  升级和安装概述 141

12.1.1  取得Linux软件 141

12.1.2  解包工具 141

12.1.3  安装和升级的限制 143

12.2      143

12.2.1  核心升级步骤 144

12.3  应用软件安装 147

12.3.1  Oracle安装 147

12.3.2  安装Sybase客户端 151

12.3.3  ApacheMySqlPHP安装 153

12.3.4  红旗网络商务通eoffice的安装 157

习题 158

13  配置网络和网络服务 160

13.1      160

13.2  配置PPP链接 162

13.3  配置WWW服务器 163

13.4  域名服务器(DNS 164

13.5  配置匿名FTP 165

13.6  配置Sendmail 166

13.7  配置网络远程管理 167

13.8  网络文件系统(NFS 167

13.9      168

13.10  经过局域网中另外一台机器的调制解调器使用Internet 169

13.11  Linux做为Windows服务器 169

13.12  远程计算机的访问:r-系列命令 170

习题 172

附录1       172

实验1  熟悉红旗Linux操做系统的环境 173

实验2  操做文件和目录 175

实验3  编辑器vi的使用 178

实验4  Bash中操做 180

实验5  在图形环境中工做 182

实验6  Linux中打印文件 185

实验7  使用中文软件 186

附录2  引导过程 190

2.1  Linux引导过程 190

2.2  配置和使用声卡的进一步讨论 192

2.3      192

2.4  安装驱动文件 193

2.5  安装库文件和实用程序 193

2.6  编辑/etc/modules.conf文件 194

2.7  系统测试和声卡设备调整 195

2.8  聆听自由的声音 200

2.9  修改登陆画面 201

2.10  Bash的设置 202

2.11  LILO的一些问题 207

附录3  习题参考答案 209

1Linux及红旗Linux简介

本章内容提要

Linux的历史

Linux的现状

Linux及其特色

☆红旗Linux2.0版本的新特色

☆重点掌握Linux的常识,了解红旗Linux

☆在介绍红旗Linux服务器版以前,先从Linux的历史讲起。红旗Linux用户基础教程

1.1Linux历史

1.1.1Linux的产生及发展

Linux最先是由赫尔辛基大学的一位学生LinusTorvalds编写的。当时Linux是他的一项我的研究项目,其目的是为Minix用户设计一个比较有效的UNIXPC版本,LinusTorvalds称它为Linux1991年发行了Linux0.11版本,并将它发布在Internet上,免费供人们使用。随后他又在comp.os.minix新闻组内请求其余编程人员帮助完善。通过各地Linux爱好者的补充和修改,到1994Linux1.0发布之时,这一操做系统已经具有了抢先多任务和对称多处理的功能。现在Linux家族已经有近140个不一样的版本。全部这些不一样的版本都基于最初的、免费的源代码。不一样的公司能够推出不一样的Linux产品,可是他们都必须承诺对初始源代码的任何改动皆公布于众。

以销量计算,1999年在浏览器操做系统市场占有率方面,MicrosoftWindowsNT仍然位居榜首,与1998年同样占有市场的38%,“后起之秀”Linux则售出135万套占第二位,市场占有率由1998年的16%升至25%。同时,UNIX操做系统的销量却由1998年的19%下跌至15%。调查还显示,Linux软件销量增加速度比预期快得多。因为如今大多数应用软件都是针对PCMac系统的,而这些计算机大都运行WindowsMacOS,用户购买电脑时采用的操做系统不会特别地趋向Linux,即便未来Linux上的应用软件更加丰富,取代桌面Windows操做系统的可能性也不大。Linux组织也正在努力将Windows的应用软件移植到Linux上运行。他们制定了Wine计划,目的就是将Windows95WindowsNT上的应用软件无缝地转移到Linux系统上。Corel公司在这方面已经先行一步,该公司正在试图将Windows下的CorelDrawWordPerfect运行于Linux上。

Linux自十年前问世以来,就一直象征着自由与创新。目前它已成为世界上最快的操做系统,它的使用源于网络空间,只要这种操做系统和它的源代码一块儿,就能够提供给世界各地的人免费从因特网上下载信息。尤为在因特网基础设施不很完备的地区,Linux成功的机会很高。主要缘由在于Linux不须要很新的电脑。事实上,它能够兼容任何一种平台:英特尔、ALPHAPC机,具备很普遍的使用空间。许多大公司没必要因需增长计算机的容量就淘汰掉无缺的PC机、服务器、主机,而安装新的版本。Linux能够充分使用CPU循环系统,使用不多的设备作更多的工做。

Linux有三种操做系统,主要是一种伴有开启资源模式UNIXOS的资源软件,能够使编程者对资源从新更改、再分配,称之为“因特网时间”。Linux具备全球范围的编程者和开发者,不时对操做系统的内部进行更改和完善。Linux的可靠性使其成为因特网及其余网络活动的完美选择。几个现存的工具就能够使LinuxWindowsAppleNetWare一块儿运做。

1.1.2自由软件

软件按其提供方式和是否赢利可分为三种:商业软件(CommercialSoftware)、共享软件(Shareware)和自由软件(Freeware)。

商业软件由开发者出售拷贝并提供技术服务,用户只有使用权,不得进行非法拷贝,扩散和修改。共享软件由开发者提供软件使用受权,共享软件其实是商业软件,软件的做者但愿获得回报,就像商业软件的制做者同样,鼓励自由传播,可是软件的升级和bug的修改只有交费的用户能够获得,而且不提供软件的源代码,也能够说,共享软件是商业软件的另外一种发布方式。自由软件则由开发者提供软件的所有源代码,任何用户都有权使用、拷贝、扩散、修改该软件,同时用户也有义务将本身修改过的程序代码公开。

支持自由软件的人一般认为,每一个计算机的使用者都有本身特定的须要,不可能有一个适合全部需求的软件系统。所以软件开发者和系统管理员须要获得软件的源代码以便对软件进行定制和扩展。此外,任何软件产品都存在各类BUG,若是不提供软件的源代码,那么软件使用者在遇到BUG时,只能被动地等待。若是提供了软件的源代码,使用者就能够根据本身的实际状况修改软件,使之适合本身的须要。

自由软件的支持者Stallman1973年建立FSFFreeSoftwareFoundation)用于接受资金支持自由软件的开发。在Stallman看来,“free”不是免费,而是“自由”,即用户能够拥有源代码,有修改和发布软件的自由。FSF开发了大量的软件来达到这个目的。1984年,基于“源代码共享,思想共享”的思想,Stallman提出了GNU计划。GNU计划的目的是开发一个彻底自由的,与UNIX相似但功能更强大的操做系统,以便为全部的计算机使用者提供一个功能齐全,性能良好的基本系统。在其余人的协做下,他创做了通用公共许可证(GeneralPublicLicenseGPL),这对推进自由软件发展起了重要的做用。与传统的商业软件许可证不一样,GPL保证任何人有共享和修改自由软件的自由,任何人都有权取得、修改和从新发布自由软件的源代码,而且规定在不增长附加费用的条件下获得源代码(基本发布费用除外)。这一规定保证了自由软件整体费用是低的,在使用Internet的状况下则是免费的。GPL条款还规定自由软件的衍生做品继续保持自由状态,而且用户在扩散GNU软件时,必须让下一个用户也有得到源代码的权利。这些工做为后来的Linux操做系统的迅速发展奠基了坚实的基础。

1994年,Linux的第一个“产品”版Linux1.0问世时,是按彻底自由扩散版权进行传

播的。它要求全部的源代码必须公开,并且任何人不得从Linux交易中获利。然而这种纯粹的自由软件的理想对于Linux的扩散和发展来讲,其实是一种障碍而不是一股推进力,因红旗Linux用户基础教程为它限制了Linux以磁盘拷贝或者CDROM等媒体形式发行的可能,也限制了一些商业公司参与Linux的进一步开发并提供技术支持的良好愿望,因而Linux决定转向GPL版权。

这一版权的转变对于Linux的进一步发展极为重要,今后之后,便有多家技术力量雄厚的商业软件公司加入了原先彻底由业余爱好者参与的这场自由软件运动,开发出了多种Linux的发行版本,极大扩展了Linux全球用户基础。

Linux成功的意义不只在于Linux操做系统自己,还在于LinusTorvalds所创建的全新的软件开发方法和StallmanGNU精神。Linux操做系统能够从Internet上直接免费下载使用,只要用户有快速的网络链接便可。并且,Linux平台上的许多应用程序也是免费获取的。

1.2Linux现状

1.2.1Linux用户

按用户的性质分,能够将目前Linux的用户分为:我的用户、专业用户和大规模采用了Linux系统的商业应用用户。

1.我的用户

这类用户能够说是业余用户,大多为电脑爱好者或电脑发烧友。对于我的用户来讲,彻底是出于好奇,或者是抱着用用看的心态才安装Linux的,不多有用户在安装前就但愿它能真正干点什么。这类用户中,学生占据了很大的比例。

我的用户大多对UNIX不了解,更多的人在安装Linux系统以前,根本未曾接触过UNIX,对于这类用户,看到长长的控制台命令就有点不知所措。遇到复杂的配置过程,大多数用户都是机关用尽。

我的用户在Linux的使用者中占据着极大的一部分。随着Linux的进一步发展,这些用户是Linux得以发展的潜在的最大用户群。随着Linux的各类发行版本对系统配置的进一步简单化,我的用户的数量就会大大增长。

2.专业用户

相对而言,专业用户大可能是UNIX的使用者,因为长期受商业UNIX的限制,他们一发现Linux,就对它产生了好感。由于Linux的确能够为他干很多工做,并且关键是它的伸缩性很强,用户能够随便更改。对于专业用户而言,因为他们自己对UNIX比较熟悉,清楚Linux究竟能够干什么,又有使用UNIX的经验,因此上手快,也能够发挥出Linux的强大功能。

因为在使用Linux时,不受软件版权的限制,专业用户能够所有得到全部的源程序,自由更改其中一些本身认为必要的部分,也能够对系统彻底进行量身定作,使系统达到彻底的高效运行状态。不过,目前国内这种用户的数量还比较少。更多的人则是从源程序中得到一些编程技巧,或者对内核提供的一些功能进行深刻学习,从中找到一些有用的方法、思想等。

专业用户是Linux最忠实的拥护者,无论媒体对Linux的见解是好是坏,专业用户永远不会受到丝毫的影响,由于他们从Linux的应用中获得真实的感觉:“它真的很好用,功能真正很强大!”。

3.商业用户

因为要向客户提供商业服务,因此商业用户在选择系统时特别认真,他们一般要考虑不少因素,例如安全性、可靠性、费用等。综合各类因素,有的商业用户选择了Linux,这说明Linux已至关稳定,正在逐渐被商业用户所接受。固然,目前选择使用Linux系统的商业用户还不够多,普遍使用Linux的商业用户多为信息服务提供商,如大量的ISPICP等。

商业用户看中的是Linux的可靠性、免费性。可是,鉴于人们对Linux的观望态度、不信任态度(在人们的意念中,花钱的东西确定比不花钱的东西要好),目前Linux的商业用户还不够多。可是,随着Linux优秀的性能逐渐被广大的商业用户所认识,总会有一天,它会同今天的UNIX同样,最终被人们接受。

1.2.2Linux的功能

Linux的功能强大而全面,在此先简述之。

提供WWW服务。

WWW服务器在全球全部的WWW服务器中占据了将近60%70%的份额,这在很大程度上是由于Apache软件包,目前它的版本为Apache1.3.9。提供Wu-ftp来提供FTP服务、Sendmail提供电子邮件服务、inn提供新闻组服务。另外,Linux还被普遍用做DNS服务器、NIS服务、NFS服务等。

文件及打印服务。

长期以来,人们习惯了使用NT做文件服务,可是,用过NetWare的人都会发现,NT提供的文件服务功能太弱。好比,它没法对用户使用的磁盘进行定额限制,只要管理人员向用户开发了写入权限,一个贪婪的用户就能够将整个硬盘都复制满数据。而使用Linux就不会这样,Linux下的Samba服务器能够轻松为用户提供文件及打印服务,还能够经过磁盘定额(quote)达到一样的目的。

数据库服务。

数据库服务是全部商业用户在选择系统时首先要考虑的问题,由于全部的商业系统几乎没有不用数据库系统的。Linux提供了数据库系统的全力支持,最先的数据系统有:MySQLPostgreSQLmsql等,其中MySQL能够支持到5TB以上的数据库。后来,随着Linux影响的不断扩大,各大数据库厂商纷纷看中Linux广阔的前景,前后推出了本身基于Linux系统下的大型数据库。如今,运行在其余环境下的大型数据库系统,所有能够在Linux下运行。目前能够在Linux运行的大型数据库系统有:SybaseASE11.0.3.3SybaseASE11.9.2Informix-seInformixDynimicServer7.3Oracle8.0.5forLinuxOracle8.1.5forLinuxIBMDB2forLinux6.1BetaNotes/Domino5.0.1等。

网络服务。

Linux可提供网络服务,如将Linux系统用做路由器等。这些系统一般状况下只安装简单的网络服务功能软件包。大多状况下是将一台老的486或较好一点的586机插两块网卡,用做一个简易的路由器或网桥。对于安全性要求较高的网络,还能够将Linux机用做防火墙(IPChain)来使用,以杜绝外部入侵者的破坏。另外,Linux还能够用做代理服务器(SocketSquid等),也能够采用IP掩蔽(IPMasquade)将整个局域网上的用户所有接入Internet。面向用户提供WWWFTPE-mail等服务。

典型应用。

一个经济性的ISP:全部的PC机上安装Linux,每一台PC机上安装4块硬盘,采用md将其以raid0方式拉成一个大盘,其余目录以NFS格式输出。其余PC机上一样安装4块硬盘,一样采用raidtool将其拉成一块大盘,一样以NFS格式输出。最后,在主服务器上,经过加挂(mountNFS文件系统到主服务器上。从而造成一个大的存储空间。WWW服务采用Apache1.3.12,数据库使用了MySQL,经过PHPWeb同数据相连,用户直接经过页面就能够访问数据库。以上种种,就构成了一个经济型的ISP

1.2.3Linux的缺陷

由上面看来,Linux真可谓是无所不能,用户彻底能够不用Word写文章,也能够不用AdobePhotoshop处理图形,而改用emacs进行字处理,改用gmid来处理图形。可是,目前在Linux下的应用软件还不太多,尚未像WordwordprofectwordproWPS同样的重量级字处理软件。目前Linux下的应用软件还不够丰富,人们的选择性还不大。

从处理中文的角度上来说,用户目前须要的是像运行在英文Windows下的中文之星、四通利方那样的外挂式中文系统。Linux缺乏全面汉化或者说是内核汉化的中文系统。不过,这一切正在改善,目前国内也发行了许多本身的发行版,可是,大多数发行版的中文系统还不够成熟、不够稳定。可喜的是红旗服务器版本2.0对中文的支持大大增强,用户能够尽情享受中文带来的乐趣了。

读者大概都据说过,很多Linux系统的狂热支持者声称Linux要战胜NT。其实,这在短时间内是不可能的。PC操做系统的市场占据了大多数的我的用户,而我的用户并不一样于专业用户,因此Linux要战胜NTWindows,首先要作的事情是:让Linux易用起来。虽然目前的Linux在安装界面、操做界面上较之之前的发行版有了很大的提升,可是,其界面还不够友好,易用性目前还不如Windows。因此说,目前Linux最缺乏的东西就是它的操做易用性、安装易用性、配置易用性。解决了这些问题,Linux取胜的可能性就会大起来。

对于业余用户而言,Linux缺乏的则是应用。大多数人安装过红旗LinuxRedhatSlackWareOpenLinuxDebianTurboLinux……然而,不少人都会感到迷惑:Linux究竟能够帮助本身干点什么,是啊,自始至终,除了一种感觉外,好像Linux并不能为本身真正作点什么。人们习惯了用WordWPS处理文字,习惯了用VBVC编写程序,而这个安装在本身机器上的Linux,却找不到这些可用的软件。因而,不少人又悄悄地将Linux从本身的硬盘上卸掉了,只留下一种期盼……

对于软件开发商而言,到目前为止尚未Linux环境下的集成开发环境。Linux系统的软件开发环境都是字符环境,用户在Linux环境下编写程序,一般都是使用Emacs写好程序,再在Emacs中使用编译器对源程序进行编译。不过,随着Linux的发展,必定会有软件开发商推出新的IDE开发环境。Inpress公司,也即原来的Borland公司正在开发Linux环境下的Jbuilder,不久之后就会推出。SGI也推出一个Linux系统下的集成开发环境,用户能够到其站点下载并无偿使用。

对商业用户来讲,Linux缺乏的则是可靠性。虽然Linux曾经有过600多天不宕机的记录,可是,硬件的不可靠性仍然可能形成系统的意外宕机,目前在各类操做系统中,都有本身的双机热备份系统或集群系统,这些高可靠性的措施,能够大大下降商业用户的后顾之忧,而Linux目前尚未一个成熟的双机热备份系统,基于Linux系统的集群系统还在研制中。全部的这一切,都阻碍了Linux在商业系统中的应用。

总之,Linux虽说是无所不能,但仍是远不能知足目前用户对它的要求。Linux要走的路很长。

1.3Linux与其余操做系统性能对比

1.3.1DOS系统比较

在同一系统上运行LinuxMS-DOS已很广泛,就发挥处理器功能来讲,MS-DOS没红旗Linux用户基础教程有彻底实现x86处理器的功能,而Linux彻底在处理器保护模式下运行,而且开发了处理器的全部特性。Linux能够直接访问计算机内的全部可用内存,提供完整的UNIX接口。而MS-DOS只支持部分UNIX的接口。

就使用费用而言,LinuxMS-DOS是两种彻底不一样的实体。与其余商业操做系统相比,MS-DOS价格比较便宜,并且在PC机用户中有很大的占有率,任何其余PC机操做系统都很难达到MS-DOS的普及程度,由于其余操做系统的费用对大多数PC机用户来讲都是一个不小的负担。但Linux是免费的,用户能够从Internet上或者其余途径得到它的版本,并且能够任意使用,不须要考虑费用问题。

就操做系统的功能来讲,MS-DOS是单任务的操做系统,一旦用户运行了一个MS-DOS的应用程序,它就独占了系统的资源,用户不可能再同时运行其余应用程序。而Linux是多任务的操做系统,用户能够同时运行多个应用程序。

1.3.2Windows系统比较

从发展背景看,Linux与其余操做系统的区别是,Linux是从一个比较成熟的操做系统发展而来的。而其余操做系统,如WindowsNT等,都是自成体系,没有对应的相依托的操做系统。这一区别使得Linux的用户能大大地从UNIX团体贡献中获利。由于UNIX是世界上使用最广泛、发展最成熟的操做系统之一,它是20世纪70年代中期发展起来的微机和巨型机的多任务系统,虽然有时接口比较混乱,并缺乏相对集中的标准,但仍是发展成为了最普遍使用的操做系统之一。不管是UNIX的做者仍是UNIX的用户,都认为只有UNIX才是一个真正的操做系统,许多计算机系统(从我的计算机到超级计算机)都存在UNIX版本,UNIX的用户能够从不少方面获得支持和帮助。所以,Linux作为UNIX的一个克隆产品,一样会获得相应的支持和帮助,直接拥有UNIX在用户中创建的牢固的地位。

从使用费用上看,Linux与其余操做系统的区别在于Linux是一种开放、免费的操做系统,而其余操做系统都是封闭的系统,须要有偿使用。这一区别使得用户可以不用花钱就能获得不少Linux的版本以及为其开发的应用软件。当用户访问Internet时,会发现几乎全部可用的自由软件都可以运行在Linux系统上,由来自不少软件商的多种UNIX实现。UNIX的开发、发展商以开放系统的方式推进其标准化,但却没有一个公司来控制这种设计。所以,任何一个软件商(或开发者)都能在某种UNIX实现中实现这些标准。OS/2WindowsNT等操做系统是具备版权的产品,其接口和设计均由某一公司控制,并且只有这些公司才有权实现其设计,它们是在封闭的环境下发展的。

1.4什么是红旗Linux

Linux是一套无偿使用和自由传播的类UNIX操做系统,是一个基于POSIXUNIX的多用户、多任务、支持多线程和多CPU的操做系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了UNIX以网络为核心的设计思想,是一个性能稳定的多用户网络操做系统。它主要用于基于Intelx86系列CPU的计算机上。这个系统是由全世界各地的成千上万的程序员设计和实现的。其目的是创建不受任何商品化软件的版权制约的、全世界都能自由使用的UNIX兼容产品!

Linux以高效性和灵活性著称。Linux模块化的设计结构,使得它既能在价格昂贵的工做站上运行,也可以在廉价的PC机上实现所有的UNIX特性,具备多任务、多用户的能力。

Linux是在GNU公共许可权限下免费得到的,是一个符合POSIX标准的操做系统。Linux操做系统软件包不只包括完整的Linux操做系统,并且还包括了文本编辑器、高级语言编译器等应用软件。它还包括带有多个窗口管理器的XWindow图形用户界面,如同WindowsNT同样,容许用户使用窗口、图标和菜单对系统进行操做。

红旗LinuxLinux的一个发展产品。是由中科红旗软件技术有限公司开发研制的,以IntelAlpha芯片为CPU构成的服务器平台上第一个国产的操做系统版本,它标志着我国在发展国产操做系统的道路上迈出了坚实的一步。

红旗Linux与其余Linux中文版本有着不一样的特色。红旗Linux1.0.0版使用的是最新的Linux2.2.15版的核心,是全中文化的Linux发行版本,预装了炎黄中文平台和方正TrueType字库,是目前国内唯一一套在Linux上支持大字符集(GBK)的中文操做系统,实现了Linux上的TrueType显示和打印功能,而且从安装到使用都提供了全中文化的操做环境。红旗Linux支持基于Intel芯片的各种PC机和服务器,而且支持基于ALPHA芯片的工做站和服务器等等,目前该平台产品在硬件平台支持方——康柏电脑公司的PC服务器及ALPHA机上均能稳定运行,为从此在高端产品上的发展奠基了基础;红旗Linux完全支持Informix-SEOracle8以及Sybase等多种流行数据库,并提供了Linux上数据库解决方案的实例,为用户开发基于Linux的数据库应用开创了先例。

红旗Linux的推出,将对中国的计算机产业产生很大的影响。操做系统的多元化带动着软件的多元发展,同时对硬件也有互动做用。有了国产操做系统后,许多优秀的应用软件,就能不受微软捆绑软件的威胁,而在本身的操做系统上一展身手了。

1.5红旗Linux的功能

1.5.1通常的操做系统功能

红旗Linux首先是操做系统,它支持多道程序的并行执行,为了使多道程序能有条不紊的执行,它具备如下操做系统功能。

1.存储器管理

存储器的分配和回收。多道程序并发执行的首要条件是程序有本身的内存空间。所以,为多道程序分配内存是存储管理的首要功能。当多道程序运行结束后,必须释放所占有的存储空间,由存储管理程序回收以便再分配。有两种存储分配的方法:静态分配法(一次性分配)和动态分配法(运行过程当中随机分配)。

信息保护。为了保证各道程序能在本身已经分到的内存空间中正确运行,互不干扰,互不破坏,尤为是不能让用户程序破坏操做系统常驻内存内的程序,存储管理必须提供信息保护措施。即随时对每道执行中的程序进行检查,查看它们对内存的访问权限是否合法,若是越界则拒绝执行,并发出越界错误信号。

地址映射。由目标程序所限定的地址范围称为程序的地址空间,地址空间中的地址是逻辑地址。内存空间是内存的物理地址的集合。在多道程序系统中,操做系统必须把程序地址空间中的逻辑地址转换为内存空间中的物理地址,这就须要有地址转换机构和地址映射功能。

虚拟存储技术支持。因为内存的大小会直接影响到大型做业或多个做业的并行执行,为了知足用户对内存容量的要求,改善系统性能,通常还要求操做系统支持虚拟存储技术。

2.进程管理

在多道程序并行执行的环境下,处理器的分配和运行都是以进程为基本单位进行的。进程管理主要有如下主要功能:

进程控制:建立进程、撤销进程以及控制进程的状态转换。

进程同步:对并发执行的进程进行协调。

进程通讯:管理相互合做的进程之间的通讯。

进程调度:当一个正在执行的进程已经完成或因某些缘由没法继续执行时,系统进行调度,从新分配处理机。

3.设备管理

设备管理包括:

缓冲区管理。在系统中设有不少不一样类型的缓冲区,利用缓冲区来缓冲CPUI/O设备之间速度不匹配的矛盾。所以,在系统中必须对全部的缓冲区进行有效的管理。

设备分配。根据用户请求的设备类型和采用的分配方式,对设备进行分配并将未得到所须要设备的进程列入相应设备的等待队列。

设备处理。启动指定的I/O设备,完成用户规定的I/O操做,并及时响应设备发出的中断请求进行相应的处理。

实现虚拟设备的功能。使每一个用户都以为本身在独占设备。

4.文件管理

文件管理主要有如下的功能:

文件存储空间的管理。要求文件系统对文件存储空间进行分配与回收,为用户提供充足有序的存储空间。

目录管理。为了使用户方便地存取所需文件,一般由系统为每一个文件创建一个文件控制块,其中包括文件名、文件属性、文件所在的物理位置以及有关的信息。文件系统对全部的文件和目录进行组织管理,以方便对文件和目录的查找。

对文件的读或写。文件读写管理系统在对某文件进行读写操做时,根据用户给定的目标地址和传送的字节数将文件信息从外存储器读入缓冲区,再复制到指定的用户区或系统区。

文件保护。为了防止文件被其余用户有意无心地破坏或盗用,对文件进行保护和加密,保护措施有口令、存取权限、加密等。

提供接口。为了方便用户,操做系统为用户提供一个使用方便的接口,用户经过该接口取得文件系统的服务,如使用创建、打开、关闭、读或这些文件等系统调用,供编程时使用。

5.做业管理

根据用户和系统的要求对做业的运行进行合理的组织和控制。它主要有如下的功能:

做业调度。根据系统的能力和当前做业的运行状况,按必定的策略,从后备做业队列中选出一批做业,为它们分配所需的I/O设备和存储空间,将它们调入内存并创建相应的进程,使之成为具备得到处理器资格的被选进程。

做业控制。在做业进入系统直到运行完成的整个过程当中,用户能够经过某种形式发出各类命令,对本身的做业进行控制和管理。主要的做业控制方式有两种:脱机控制方式和联机控制方式。

此外,操做系统的管理功能还有中断管理系统、错误处理功能等。

1.5.2网络服务

红旗Linux和其余Linux系统同样,具备强大的网络服务功能。首先,它具备很强的网络兼容性,它支持的网络协议众多,如TCP/IPIPX/SPXNetBEUIX.25等;还能够兼容和提供NetWare服务、LANManager服务、AppleTalk服务等,这些能力为Linux提供了无与伦比的网络亲和性。此外,红旗Linux的网络管理能力和安全性也很让人放心,它拥有一套完善的网络管理机制和规则,使得网络的可配置能力很强,为系统管理员提供了极大的灵活性。整体说来它的网络服务具备如下几个方面:

1Internet/Intranet服务器

Internet/Intranet包括WWWFTPE-mail等服务。Linux被普遍应用于InternetIntranet中,提供WWW服务。LinuxWWW服务器在全球的WWW服务器中占据了将近60%~70%的份额,这多亏了Apache软件包。另外,Linux还被普遍用做DNS服务器、NIS服务器、NFS服务器等。

2.网络管理服务器

网络管理服务器包括FirewallRouterIPMASQ等。能够将Linux用做防火墙(IPChain),以杜绝外部入侵者的破坏。另外,Linux还能够绝不费力地用做代理服务器(SocketSquid等),也能够采用IP掩蔽(IPMasquerade)将整个局域网上的用户所有接入Internet

3.企业群组服务器

企业群组服务器包括文件服务、打印服务、数据库服务、目录服务等。可是,用过NetWare的用户都会发现,NT提供的文件服务功能太弱。Linux下的Samba服务器能够轻松地向用户提供文件及打印服务,还能够经过磁盘定额达到与NetWare一样的功效。同时Linux提供了对数据库系统的全力支持,各大数据库厂商纷纷看中Linux广阔的前景,前后推出基于Linux系统下的大型数据库。目前能够在Linux运行的大型数据库系统有:SybaseASE11033SybaseASE1192InformixseInformixDynimicServer73Oracle805forLinuxOracle815forLinuxIBMDB2forLinux61BetaNotesDomino501等。

4.应用服务器

应用服务器包括电子商务、CORBADCOM等服务。此外还能够实现自动拨号(Dial)、论坛、BBS、新闻服务器、LinuxWindows9x/NT联络(Samba)、DNSOracleforLinuxPerlPHP3WebMail、搜索引擎等等。

1.5.3中文及窗口环境支持

对于中国用户来讲,中文显示、中文打印是很是重要的。桌面系统对中文的显示、打印等要求很高,Linux在汉字处理方面开发的时间较短,还不够成熟,在字型字体、显示打印等方面与其余桌面系统比起来存在着必定的差距。不过红旗Linux中文能力在这方面处于领先的位置。红旗Linux预装了炎黄中文平台和方正TrueType字库,是目前国内唯一一套在Linux上支持大字符集(GBK)的中文操做系统,实现了Linux上的TrueType显示和打印功能,而且从安装到使用提供了全中文化的操做环境。

1.5.4红旗服务器2.0版本主要特性

支持三种语言,简体中文、繁体中文和英文。并可动态切换。

提供了日志文件系统reiserfs,支持海量文件系统。

增长了UPS电源管理。

增强了系统备份的工具。

提供了LVS的支持,用户能够架构本身的Web集群服务器。

提供了网络防病毒软件。

提供了红旗网络商务通e-Office系统。

部分支持USB设备。

习题

1Linux家族()。

A.已经有近140个不一样的版本。

B.抢先具有了多任务和对称多处理的功能。

C.不一样的版本都是基于最初的、免费的源代码。

D.在浏览器操做系统市场占有率方面居榜首。

2.下列哪些是使用Linux的好处?()

A.能够提供给世界各地的人免费从因特网上下载信息。

BLinux不须要很新的电脑。

C.具备很普遍的使用空间。

DLinux是免费的,无需任何额外的投资。

EWindows95WindowsNT上的应用软件能够无缝地转移到Linux系统上。

3Linux能够()。

A.做WWW服务器。

B.用做文件及打印服务。

C.数据库服务。

D.网络服务。

E.经济型的ISP

4.红旗Linux支持哪些数据库()?

AInformix-SE

BOracle8

CSybase等多种流行数据库。

DSQLServer2000

EMySql

5.通常的操做系统功能包括()。

A.存储器管理。

B.进程管理。

C.设备管理。

D.文件管理。

E.做业管理。

6.红旗Linux首先是操做系统,它支持()。

A.多道程序的并行执行。

B.单道程序。

C.多道程序串行执行。

D.单道程序的并行执行。

7.红旗Linux2.0服务器版能()。

A.支持海量文件系统。

B.支持LVS

C.支持三种语言,简体中文、繁体中文和英文。

D.部分支持USB设备。

2章红旗Linux中文环境

本章内容提要

红旗Linux提供的中文环境解决了XWindow系统和Shell方式下的中文输入及显示问题。不但附带了Shell方式下的中文环境,还提供了汉化的中文环境KDE,而且实现了XWindow中的中文显示和打印。在中文环境中,提供了多种中文输入法,能够知足不一样用户对汉字输入的要求。

与业余爱好者编制的中文环境相比,红旗Linux提供的中文环境支持大字符集(GBK),从而提供更多可选用的汉用字。

本章重点内容

Shell中文环境

KDE中文环境

☆中文打印

☆语言切换

☆要求在红旗Linux下能熟练的使用中文和英文

2.1Shell中文环境

红旗Linux2.0提供了Shell方式下的中文环境,用来支持字符方式的中文显示和输入。配合中文环境,Linux的配置工具也进行了汉化,方便用户配置和管理Linux系统。默认的状况下,不须要额外安装炎黄中文环境,系统中已经存在安装时选下的炎黄中文环境版本。只有用户须要升级炎黄中文环境的时候,才会用于中文环境的安装。

Shell方式下的中文环境的使用,主要涉及中文环境的启动,输入法的开启和关闭,汉字的输入这三个方面。因为Shell方式没有图形化的接口,大部分的操做都是经过键盘的热键进行。若是须要使用Shell方式下的中文环境,这些热键必须有所掌握。

Shell方式下的中文环境配置比较麻烦,因为没有很好的工具,若是须要配置中文环境,用户只能对配置文件进行手工的修改。炎黄中文环境也提供动态的装载和卸载,建议用户使用配置文件进行设置。

2.1.1简单介绍

红旗Linux在字符方式的Shell下面,是经过执行一个程序,完成中文环境的启动。执行的程序,就是炎黄中文环境的初始化程序。在正常执行之后,会生成一个新的Shell命令方式的控制台。新的控制台是在图形方式下模拟出的字符方式,能够支持中文的显示和输入。也正是由于如此,在中文环境中显示汉字和英文的速度,比起原先的Shell方式有所下降。可是相比而言,红旗Linux的中文环境,由于采用了直接写屏技术,比其余方法实现的速度要快一些。在Shell方式下面运行炎黄中文环境,经过输入yh命令进行。Yh是“炎黄”二者字的汉语拼音的第一个字母。

在运行炎黄中文环境之后,会显示出加载的输入法信息,包括输入法的名称和切换的热键。例如:按下【Shift+F3】会切换到智能ABC输入法。在屏幕的下面,有一个状态条,提示当前中文环境的信息。从左边开始,依次是“半角/全角”、“中/英”、“GBK/BIG5”。“/”代表能够利用系统提供的热键进行先后的两个状态之间的切换。

2.1.2安装

新安装好的红旗Linux2.0默认状况下就带有炎黄中文环境,不须要额外的工做。只有在须要使用新的炎黄输入法,或者在其余非红旗Linux的系统上,才会用到安装。安装前首先须要得到炎黄中文平台的源代码或可运行版本。目前最新的炎黄中文平台的版本是V3.1,在红旗Linux的光盘中,即附带有炎黄平台:/RedFlag/RPMS/rf-yh-input-e.1-1.i382.rpm

对于上面的rpm格式的包,下面的命令就会完成炎黄中文平台的安装:rpm-I-forcerf-yh-input-3.1-1.i382.rpm。若是之前安装过炎黄中文环境,那么上面的命令会自动从新安装最新的版本。

若是得到的炎黄中文环境不是rpm包的格式,而是yh-3.1.tar.gz,须要利用targzip程序解开包。tar程序是把许多文件组合成一个大文件的工具,gzip用来对文件进行压缩。

在使用的时候,能够经过tar命令的参数调用gzip程序,从而省去了gzip程序的使用。下面的命令能够完成解包:tarfzxvyh-3.1.tar.gz

注意:上面的命令都假设包文件在当前目录。

命令执行完之后,会在当前目录创建一个yhinstall目录,进入这个目录,而后使用install程序安装。下面的命令完成全部的这些操做:

$tarfzrvyh-3.1.tar.gz

$cdyhinstall

$./install

安装完毕,在Shell提示符下输入yh命令,就会发现炎黄中文软件已经安装成功。

2.1.3使用

启动炎黄中文环境之后,就能够直接利用Linux系统提供的多种工具进行中文的阅读。

例如,使用lessmore命令,能够查看一个中文的文本文件内容。

除了查看之外,还能够经过Shell方式的编辑器,进行中文文件的编辑,也能够对其余程序输入中文。在输入的时候,须要指定使用的中文输入法。经常使用的输入法有:智能ABC输入法、GBK拼音输入法、郑码、区位码。每一种输入法都有本身特定的编码规则,遵循它们就能够输入指定的汉字。其中最简单的输入法莫过于拼音输入法,只须要知道汉字的发音,就能够把它输入计算机。在炎黄中文环境中,提供了两种拼音输入法,它们是智能ABC输入法和GBK拼音输入法。

因为有多种输入法,为了在输入的时候,正确选择须要的输入法,炎黄中文平台提供了热键用来切换输入法,【Shift+F3】到【Shift+F7】均可以安装输入法。在中文平台的屏幕下面的状态条上,默认的英文输入的时候,就会有热键的提示。具体的输入法和热键之间的对应关系,主要依靠炎黄系统启动的设置。在中文平台刚刚启动的时候,有加载的输入法的热键对应状况。用户也能够本身指定输入法的热键使用。

在切换到指定的输入法之后,就能够按照规则输入,在输入中文的时候,对于拼音输入法,英文字母对应拼音的符号。不过只有小写的半角字母才起做用,大写和全角的字母将会直接接入到系统中,而不会看成拼音符号处理。因为拼音的相同字不少,因此在输入完成之后,还要在候选的同音汉字中选取须要的汉字,选取能够经过汉字前面的数字键进行。例如,若是须要选取“安”字,那么按它前面的数字“2”键。若是候选的汉字太多,那么系统会按每10个一组显示,经过“—”和“=”键进行转换。

在须要输入英文的小写字母的时候,不用转换到英文输入状态,能够利用【Shift+F1】暂时关闭输入法,这样就不会有屏幕最底行的提示状态条,系统恢复英文输入状态。另一个在DOS下面经常使用的热键【Ctrl+Space】也能够用来暂时关闭输入法,等于【Shift+F1】。若是须要输入全角的标点符号或者英文字母,经过【Shift+F2】热键,就能够在全角和半角之间进行切换。另外,在输入的时候,也能够输入繁体的BIG5汉字,经过【Ctrl+Alt+b】切换到BIG5输入模式,【Ctrl+Alt+g】恢复为原先的GBK码输入模式。利用热键【Ctrl+Alt+b】切换到BIG5编码之后,炎黄中文平台的显示也变成了繁体。之前输入的简体中文,如今变成了乱码。说明炎黄中文环境的确已经切换到了BIG5码的体系,阅读和输入繁体汉字已经没有问题了。

2.1.4配置

炎黄中文平台的配置主要是配置系统使用的输入法。在启动的时候,系统会自动经过配置文件加载对应的输入法,通常状况下,启动的输入法是:智能ABCGGK拼音和郑码输入法,按照顺序对应输入法的切换热键为【Shift+F3】到【Shift+F5】。

注意:炎黄中文平台同时只能使用5个输入法,最多输入法切换热键只到【Shift+F7】。

若是有多于5个输入法,没有办法同时使用,可是系统提供方法,能够动态地卸载和装载输入法。在须要的时候,先卸载一个不用的输入法,而后再加载新的输入法。

1.自动加载的输入法的配置

有两个位置存放输入法的启动配置文件,一个用来配置系统的默认输入法启动,另一个用来配置用户私有的输入法启动。炎黄中文平台在启动的时候,首先寻找用户的起始目录,确认是否存在.ims文件,这个文件就是用户私有的配置文件,若是存在,就按照.ims文件的配置加载输入法;不存在,就按照炎黄系统的配置文件/usr/local/yh/lib/system.ims加载输入法。通常状况,我的的.ims文件都没有建立,能够经过Shell或者KDE中的编辑器创建。

配置文件其实是一个文本文件,在每一行里面,写有须要启动的输入法程序的名称。

按照行的前后的顺序,加载输入法。下面就是一个配置文件的内容:

$cat/usr/local/yh/lib/system/ims

abc

gbkpy

$

abc是智能ABC输入的程序名称,gbkpy则是GBK拼音的输入法程序。经过上面的设置,在炎黄启动的时候,就会启动上面三个默认的输入法。建议用户在使用的时候,不要改变系统的设置,而是给本身建立一个输入法配置文件,这样就不会干扰其余用户的使用。

每一种输入法都对应一个程序名称,系统附带的输入法程序安装在/usr/local/yh/bin目录中,如表2-1所示。

2-1输入法名称与程序对应关系表

程序名称 abc gbkpy  qvwei  zm

输入法名称 智能拼音GBK 拼音区位码 郑码

2.动态卸载输入法

2章红旗Linux中文环境abc是智能ABC输入的程序名称,gbkpy则是GBK拼音的输入法程序。经过上面的设置,在炎黄启动的时候,就会启动上面三个默认的输入法。建议用户在使用的时候,不要改变系统的设置,而是给本身建立一个输入法配置文件,这样就不会干扰其余用户的使用。每一种输入法都对应一个程序名称,系统附带的输入法程序安装在/usr/local/yh/bin目录中,如表2-1所示。表2-1输入法名称与程序对应关系表程序名称abcgbkpyqvweizm输入法名称智能拼音GBK拼音区位码郑码2.动态卸载输入法无论用什么方法安装输入法,均可以在炎黄中文平台运行的时候,利用热键动态地卸载【(Shift+F8】)。使用卸载功能,首先切换到须要卸载的输入法。例如,智能ABC对应于热键【Shift+F3】,如今须要卸载它,首先要按热键【Shift+F3】切换到智能ABC输入法,而后按下热键【Shift+F8】。这个时候在屏幕下部的输入法状态条中,就会再次出现英文的提示状态,正如刚刚启动炎黄系统的时候同样。

在安装中文输入法之后,默认的英文输入状态将会定义在最后一个可用的热键上,例如,安装了三个输入法,那么热键就定义到【Shift+F5】,那么切换到英文输入法就是【Shift+F6】。所以,若是安装了5个中文输入法,那么就不能再使用英文的输入状态,由于切换的热键【Shift+F8】恰好对应输入法卸载热键,会致使中文输入法被卸载。须要使用英文输入法,只能利用【Ctrl+Space】或者【Shift+F1】关闭输入法状态条。

3.动态装载输入法

根据用户的须要,除了利用配置文件启动输入法之外,还能够在炎黄中文环境启动之后动态地增长输入法。若是没有先启动炎黄中文环境,输入法程序将执行出错。动态加载输入法,实际上就是在中文环境中,直接执行输入法程序。

注意:因为输入法程序会耗费系统的资源,并且过多的输入法不会彻底用到,所以建议用户尽可能只加载必要的输入法。

2.2KDE中文环境

炎黄中文平台除了支持Shell方式下的中文显示和输入之外,还支持XWindow中的中文显示和打印。红旗LinuxXWindow中的KDE环境进行了汉化,方便了中文用户的使用。

红旗LinuxXWindow的中文支持采用了外挂式的中文平台,也正是炎黄中文平台的一部分。对于中文的显示,红旗Linux系统已经内建支持,不须要额外启动外挂程序,只要在须要输入的时候,再启动中文输入法程序便可。

启动了KDE环境中文输入法,外观和使用都与中文Windows系列相近,桌面环境面板的右边,有一个中文输入的选择框,上面显示当前正在使用的输入法信息。只要使用鼠标,就能够改变当前输入法,选择合适的中文输入方案。

相对于Shell方式下的中文环境,KDE中的中文处理更加简便,输入法的切换也采用鼠标的方式进行,不须要记忆热键,免去了Shell方式下中文输入法使用的麻烦。

2.2.1简单介绍

当红旗Linux正常完成安装过程之后,进入KDE桌面环境,显示的面板上有一个方框,里面标明了当前的输入法状态。初始的时候,系统处于英文显示状态,所以在输入法状态中,显示En,表明当前输入英文。

2-1所示就是在KDE面板中的输入法状态栏,面板的右部的En就是。全部KDE

境中的中文输入法的切换,只要经过这个状态栏和鼠标就能够完成。配合键盘的使用,KDE中的炎黄中文环境,也提供了标准的热键,用来切换输入法,进行适当的功能选择。

2-1KDE面板中的输入法状态栏

若是没有启动输入法程序,那么在KDE面板上,不会出现输入法状态栏。若是须要使用中文输入,那么用户必须手工运行输入法程序,详细的方法见下一节。

2.2.2启动输入法程序

尽管在KDE系统中,不用额外程序就能够显示中文,可是为了输入汉字,必须启动外挂的输入法程序,由于炎黄中文环境对于KDE的汉化,是采用了外挂的方式,相似早期的汉化Windows平台,如中文之星、四通利方等等。外挂的汉字平台具备移植方便,不依赖于版本,能够运行在任何普通的英文平台上,在汉化平台上完成汉化工做等优势。缺点在于速度慢,稳定性和系统总体组合不是很好。可是目前来讲,几乎全部的中文XWindow环境,都是采用外挂式实现,主要由于XWindow过于庞大,总体的改造仍有待时日,并且外挂的汉字平台,也能够知足目前用户的全部须要,可是完全的汉化XWindow相信在将来还202章红旗Linux中文环境是会实现的。

炎黄中文环境在KDE桌面上,启动的输入法程序是rfinput。在KDE系统的“自动启动”文件夹(KDE桌面的左边,有它的快捷方式,点击鼠标就能够进入)中,在系统刚刚装好的时候,就有中文输入法的快捷方式,能够保证在KDE桌面启动以后,自动加载中文输入法程序。图2-2所示就是KDE桌面“自动启动”文件夹的内容。

2-2“自动启动”文件夹

因为有“自动启动”文件夹的设备,通常来讲用户不须要手工启动中文输入法,只有在它不工做的时候,才须要手工启动。在系统中,rpinput程序位于/usr/local/rfinput目录下,在须要手工启动这个程序的时候,能够先启动KDE下的终端仿真程序,而后在Shell命令行下,输入/usr/local/rfinput/bin/rfinput,就会完成中文输入法的安装。若是系统中已经存在中文输入法,那么安装会报告出错,若是正常运行,在面板的输入法状态栏位置会显示En

只要运行一次中文输入法程序,它就会一直存在,直到XWindow系统关闭,或者强制关闭程序。

在保证中文输入法已经运行成功(注意看面板上是否有输入法状态栏)后,就能够利用KDE进行中文的输入了。

注意:红旗LinuxXWindow对于汉字的显示,不用再额外运行程序。

2.2.3使用中文输入法

KDE中使用中文输入法与在Shell中相比,简单了许多。其大部分工做均可以经过鼠标的点击完成,配合键盘热键使用,更加快速。在本节中,假设中文输入法程序已经正确启动,只详细介绍如何使用KDE中的炎黄中文环境。

1.开启汉字输入法

利用鼠标开启汉字输入法。只要在面板的输入法状态栏上,用左键单击一下,就会弹

出一个菜单,供用户选择须要的输入法类型。图2-3所示就是弹出的菜单的外观。

2-3输入法选择菜单

在繁体中文中,随系统提供的中文输入法总共有3种,分别是:仓颉、注音、九方。“En英语”输入法对应KDE系统默认的英文输入,在须要输入英文的时候使用。

在选中合适的输入法之后,点击鼠标左键,就会开启相应的输入法。除了英语输入法之外,其余的每一种中文输入法,在开启之后,都有相对应的图标在面板的输入法状态栏显示,而且会开启一个输入条,用来进行输入汉字。图2-4所示就是利用鼠标开启了仓颉输入法后,显示的KDE桌面。

2-4启动仓颉输入法

屏幕右下角是输入法状态条,用户能够在这个地方选择输入法,也可经过【Ctrl+Shift】来切换输入法。

2.输入汉字

要输入汉字首先须要打开输入法,参见上面的步骤。在打开中文输入法之后,按下的键盘英文字母,就会被系统解释成为中文输入法的输入,而后依据输入法规则,提示候选的汉字,过程相似于Shell方式下的输入。图2-5所示就是使用九方输入法进行输入的KDE界面。

2-5输入法使用

在输入的时候,相似在Shell下面的方法,经过英文输入字的外码,而后利用数字键选择合适的汉字,而且经过“—”和“=”切换每一组显示的汉字。在图2-5中,左边的是目前输入的汉字,右边的就是符合拼音的候选汉字。

3.输入法切换

在输入法使用中,若是还须要使用其余输入法,那么能够进行输入法切换。切换输入法能够经过鼠标和面板上的输入法状态进行,也能够利用热键。

经过用鼠标点击面板上的输入法状态栏,按照开启输入法同样的步骤,就能够选择须要切换的输入法。也能够使用热键【Ctrl+Shift】进行输入法的切换,每次按下这个热键,输入法会按照顺序进行切换,经过反复的使用,便能作到全部输入法之间的切换。

4.关闭输入法

当再也不须要输入中文,而转换到英文输入时,能够选择关闭中文输入法。炎黄中文系统提供热键【Ctrl+Space】关闭中文输入法,在按下之后,就会直接切换到英文输入法,从而关闭了当前的中文输入法。

若是当前的输入法是英文输入法,那么热键【Ctrl+Space】将把英文输入法切换到中文输入法。切换到的中文输入法类型,就是先前使用的中文输入法类型。例如原先使用仓颉输入法,关闭之后,再使用热键【Ctrl+Space】就会再次回到仓颉输入法。当用户须要同时输入中文和英文的时候,利用这个热键,就能够很好的完成中文和英文共同输入。

关闭中文输入法,实际上也就是切换到英文输入法。所以经过上面的切换输入法操做也能完成中文输入法的关闭。例如,能够直接在面板上的输入法状态栏中选择英文输入法,也能够不断按下【Ctrl+Shift】直到出现英文输入法为止。

2.3红旗Linux上的中文打印机配置

2.3.1配置打印机

RedflagLinuxServer2.0中配置打印机的命令是Printtool,此命令只能在XWindow下使用,或者也能够用主菜单中的【系统配置】→【打印机】→【打印机配置】来配置打印机。PrintTool是一个方便的配置打印机的程序,其主界面如图2-6所示。

2-6Pinttool主界面

利用Printtool,用户能够添加,编辑和删除打印机队列。

1)添加一个新的打印机队列,能够选择Add,如图2-7所示。

2-7添加打印机

2)而后选择要增长的打印机类型,能够使用printtool来配置四种打印队列类型:LocalPrinter:指链接于本地系统并口或串口上打印机的打印队列。

RemoteUNIXlpdQueue:指能够经过TCP/IP网络来访问的链接于非本地系统的打印队列。

SMB/Windows95/NTPrinter:指能够经过SMB网络来访问的链接于非本地系统的打印队列。

NetWarePrinter:指能够经过NetWare网络来访问的链接于非本地系统的打印队列,在创建此打印队列以前,必须安装NCP文件系统。

选择了相应的打印队列后,就进入到具体的配置界面,这里以本地打印机为例,如图2-8所示。

2-8编辑本地打印机

其中:

Namesnamel|name2|……):打印机列名称。能够指定多个名字,之间用“|”(管道)符号隔开。

SpoolDirectory:这个本地机器上的目录将用来存放要打印的文件。注意不要让多个打印队列共享一个假脱机目录。

FileLimitinKb0=nolimit):所接受的最大打印做业量,以KB为单位(1KB=1024bytes)。0表示不施加任何限制。

SuppressHeaders:表示是否每一个打印做业前打印一张起始信息页,其默认值为不打印起始信息页。

InputFilter:过滤器用来将打印文件转换成打印机能够处理的格式。选择Select来选择最适合您的打印机的过滤器,见图2-9所示。

2-9配置打印机

从图2-9中能够看出,左边为打印机的具体类型,右边为打印的具体选项,除了配置用以打印图形和PostScript格式文档的打印队列外,您还能够配置一个用来打印纯文本的打印机,仅用来打印纯英文的ASCII文本。

PrintingOptions中,其中的主要选项意义为:

SendEOFafterjobtoejectpage:

此选项选中后,将在一个打印任务完成后,强迫打印机弹出纸张。这是因为一些打印机若是收不到EOF字符将不打印。若是用户在每次打印时获得一张额外的空白页,应该将此项关闭。

Fixstair-steppingtext?

若是打印后获得阶梯状的文本,就应该选中这一项,以纠正这一现象。

Fasttextprintingnon-PSprintersonly?

此项在设置非PS打印机时有用。若是用户只是打印纯英文文本文件,能够将此项选中,这样能够提升打印速度;若是用户要打印含有中文的文本文件,就必定要将此项关闭,以便可以正确地打印。请注意,这只对非PostScript打印机有效。

添加完打印机队列后,还须要重起打印守护进程(lpd),这只须要选择printtool主界面上的菜单项【lpd】→【restart】便可。用户还能够打印测试样张来检测打印机是否设置正确。

2.3.2中文打印

RedflagServer2.0中提供了完善的中文打印解决方案,其中采用了中文TrueType字库,打印效果完美,同时支持简体中文和繁体中文的QT/KDE应用程序、文本文件和Netscape中的超文本文档的中文打印。

1.中文文本文件的打印

要打印中文文本文件,首先要将语言环境设置为简(繁)体中文,这样才能正确显示和打印中文文本文件。在RedflagServer2.0中支持在控制台下直接打印中文文本文件,其命令格式为:

lprtext-filename

同时也可在应用程序Kedit中应用打印菜单项便可直接打印简(繁)中文文本文件。

因为在RedflagServer2.0中的中文文本打印应用了mpage程序,因此须要在设置打印机属性的时候不选中FastTextPrinting这一项,这样才能应用lpr命令直接打印出中文文本文件。具体设置能够参见打印机设置一节。

注意:若是只是打印纯英文文本文件,能够在设置打印机时选中FastTextPrinting这一项,这样能够提升打印的速度。

2Netscape中的中文超文本文档打印

Netscape中打印中文超文本文件时,首先要使当前页面中的中文可以正常显示,须要在菜单项【查看】→【字符集】中设置与文档相应的字符集,其中查看BIG5的文档要选择“中文繁体(Big5)”一项,而后就能够用Netscape菜单中的【文件】→【打印】命令打印中文超文本文件。

3.基于QT/KDE的应用程序的中文打印

RedflagServer2.0中,几乎全部的QT/KDE应用程序都可实现简(繁)体中文打印,而不须要额外的设置。只要在应用程序中的中文可以被正确显示,就能够在基于QT的应用程序中正确的打印。

注意:在kmai中,若是选择安装的是中文简体版,则只能打印简体中文的emial,若是要打印繁体中文的emial,请先将语言环境换为繁体中文。

2.4语言切换

红旗Linux服务器版支持三种文字,分别是:简体中文、繁体中文和英文,用户只要根据本身须要,在X窗口环境下,在桌面上点击Language上面的图标,或者在系统菜单中选【系统配置】→【KDE桌面】→【桌面】→【语言】,便可进行地区设置。如图2-10所示。

2-10语言选择

在切换显示语言以后,须要从新启动XWindow,不然不能进行完全的语言切换,会出现乱码。若是您以图形方式登陆,须要退出X窗口,从新登陆一次。若是您以文本方式登陆,须要退出X窗口,并退出系统,从新登陆,再启动XWindow

习题

1.动态卸载输入法的热键是:()

A.【Shift+F3B.【Shift+F8C.【Shift+F5D.【Shift+F10

2.输入法切换的热键是:()

A.【Ctrl+ShiftB.【Ctrl+AltC.【Ctrl+F1D.【Ctrl+Space

3章经常使用Linux命令介绍

本章内容提要

Linux下的很大一部分工做就是一个一个的输入命令。要使用Linux,就必须使用其中的命令。必须按照必定的规则来写命令。关于命令如何输入的正式说明称为命令的语法。本章将介绍Linux中常见的命令及如何使用它们。经过本章的学习,用户能够了解一些命令的使用,并在从此使用中经过阅读联机手册掌握更多的命令。

本章重点内容

☆经常使用的Linux命令如atcatcd

☆要求掌握书中列出的命令

3.1做业控制命令

常见的做业控制命令有以下几种:

1at,batch,atq,atrm

at,batch,atq,atrm:安排,检查,删除队列中的工做。

at[-V][-q队列][-f文件名][-mlbv]时间

at-c做业[做业]

atq[-V][-q队列][-v]

atrm[-V]做业[做业]

batch[-V][-q队列][-f文件名][-mv][时间]

at:在设定时间执行做业。

atq:列出用户排在队列中的做业,若是是超级用户,就列出队列中全部的做业。

atrm:删除队列中的做业。

batch:用低优先级运行做业,只要系统的loadavg(系统平均负载)<1.5(或者在atrun中设定的值),它就可开始执行做业。

at超级用户能够在任何状况下使用at系列的命令。通常用户使用at系列命令的权限由文件/etc/atallow/etc/atdeny控制。若是/etc/atallow存在,则只有列在这个文件中的用户才能使用at系列命令。若是/etc/atallow文件不存在,则检查文件/etc/atdeny这个文件。只要不列在这个文件中的用户均可以使用at系列的命令。默认的配置是文件/etc/atdeny是一个空文件,这代表全部的用户均可以使用a系列的命令。

例如:在两天后上午8点执行文件workfile中的做业,可以使用以下命令。

$at-fworkfile8am+2days

2crontab命令

crontab——操做每一个用户的守护程序和执行的时间表。

crontabfile[-uuser]——用指定的文件替代目前的crontab

crontab-[-uuser]——用标准输入替代目前的crontab

crontab-l[user]——列出用户目前的crontab

crontab-e[user]——编辑用户目前的crontab

crontab-d[user]——删除用户目前的crontab

crontab-cdir——指定crontab的目录。

crontab文件的格式:MHDmdcmd

M:分钟(0-59

H:小时(0-23

D:天(1-31

m:月份(1-12

d:一星期内的天(0-60为星期天)

cmd:要运行的程序,程序被送入shell执行,这个shell只有USERHOMESHELL三个环境变量。

例如:列出用户目前的crontab

$crontab-l

$MINHOURDAYMOUTHDAYOFWEEKCOMMAND

86***clear

$

3.2显示命令

1cat命令

cat——链接文件并打印到标准输出。cat经常用来显示文件,相似于DOS下的命令TYPE

例如:显示文件file的内容,便可采用以下命令。

$catfile

file1file2链接起来输出到文件file3中,便可采用以下命令。

$catfile1file2>file3

2head命令

head——显示文件的前几行。

例如:输出文件/etc/crontab的第一行

$head-n1/etc/crontab

SHELL=/bin/bash

$

3less命令

less——相对于more命令,用来按页显示文件。

例如:显示文件test

31红旗Linux用户基础教程

lesttest

4more命令

more——逐页阅读文本。

more命令十分有用,能够不须要修改就在屏幕上显示文件内容。

键入:morename_of_text_file

使用q命令退出。

3.3文件和目录操做命令

1cd命令

cd——改变目录,能处理绝对和相对路径。

例:假如当前在根目录中,想进入/etc子目录。键入(相对目录):

$cd/etc/

若是想进入/usr/bin目录,键入(绝对目录):

$cd/usr/bin/

此命令有一些实用选项:

$cd回到父目录(注意cd和之间有空格)

$cd回到目前目录了。

$cd~cd~到达我的目录

2ls命令

ls命令——列出当前目录下的文件,经常使用的两个选项是:-a显示隐文件和-l显示长文件名,将加目录名字到ls命令后。例如:

ls-al/usr/X11R6/bin

键入:

$manls

将显示全部ls命令选项。

此外,ls命令还能够使结果显示某种颜色,用户能够直接ls-F--color;也能够试试编辑/ect/bashrc/home/下的bashrc,加入一行:aliasls="ls--color-f-N"编译以后从新运行bash会当即生效,若是加在/etc/bash则对全部使用bashshell的用户有效。若是使用其余的shell,则q去找对应的配置文件。注意不是/etc/aliass文件,那是sendmail的别置文件。

其中颜色的含义以下:

蓝色——目录

绿色——可执行文件

红色——压缩文件

浅蓝色——连接文件

灰色——其余文件

3file命令

file——探测文件和目录类型。

$fileboot

boot:directory

4find命令

find——搜索目录中文件。

find[路径][匹配表达式]

例如:在整个文件系统中查找名字为“passwd”的文件或目录,可采用以下命令。

$find./-name"passwd"-print

./etc/passwd

./etc/pamd/passwd

./etc/uucp/passwd

./home/ftp/etc/passwd

./usr/bin/passwd

./usr/doc/uucp-1.06.1/sample/passwd

5wc命令

wc——统计一个文件中的字节数,单词数,行数。

6chmod命令

chmod——改变文件保护权限。

文件保护控制用户对文件的访问权,有三个安全级别:全部者级别,组访问级别,其余用户访问级别。在这三个级别中,又有三种权限:读(r),写(w),执行(x)。(用户能够使用ls-lg命令来观看某一文件的所属的group)。

对于文件来讲,读权限意味着能够看文件的内容,写权限能够修改或删除文件,执行权限则能够执行它。对于目录来讲,读权限意味能够查看目录下的内容,写权限意味着能够在目录中创建新文件,并能够从目录中删除文件,执行权限意味着能够从一个目录转到另外一个目录。

保护权限

格式为[ugoa][[+-=][rwxXstugo]][]"ugoa"。控制哪些用户对该文件权限将会改变:

u),文件的全部者;(g),与文件全部者同组的用户;(0),其它组的用户;(a),全部用户。操做符“+”使得用户权限被追加到每一个目录文件。操做符“-”使得用户权限被取消,操做符“=”使用户只有这些权限。"rwxXstugo"选择新的属性:r),读权限;(w),写权限;

x),执行权限(和对目录的访问权);(X),只有目标文件对某些用户是可执行的或该目标文件是目录时才追加X属性;(s),同时设定用户或组ID;(t),保存程序的文本到交换设备上;(u),目标文件属主;(g),目标文件属主所在的组;(o),其余用户。若是数字来表示属性,则(0),没有权限;(1),执行权;(2),读权;(4),写权,而后相加,因此数字属性的格式应为307的八进制数,其顺序是(u)、(g)、(o)文件名:以空格分开的要改变权限的文件列表,支持通配符。

例:使全部用户对文件testfile有执行权,输入以下命令:

$chmoda+xtestfile

使全部用户对文件testfile有读权,输入以下命令:

$chmod222testfile

7chown命令

chown——改变文件的属主和组。

用户:能够是用户名或用户ID

组:能够是组名或组的ID

文件名:以空格分开的要改变权限的文件列表,支持通配符。

例如:将文件file1的属主改成host组的test,可用以下命令:

$chownhost:testfile1

8clear命令

clear——清除屏幕(像DOS中的cls)。

例如:清除屏幕,提示符将被移到左上角。

$clear

9touch命令

touch——改变文件的时间参数。

touch将会改变文件的访问时间,修改时间设置为系统的当前时间,若是该文件不存在

则创建一个空的新文件。

10ln命令

ln——在文件间创建链接ln[参数]源文件[目标文件]

在目录间创建链接ln[参数]源文件[目录]

注意:对链接文件作改变属性是没有意义的,由于只有它们链接到的文件才是文件的真正属性。

例如:将文件sourcefile链接到文件testfile

$ln-ssourcefiletestfile

11mv命令

mv——将文件更名。

mv[参数]源文件目标文件

mv[参数]源文件列表(支持通配符)目标文件

例如:

$mv-vsourcefiledestfile

sourcefile->destfile

$

12cp命令

cp——拷贝文件。

用法:

cp[options]源文件目标文件

选项:

-f--force:强行覆盖已存在的目标文件

-i-interactive:在强行覆盖已存在的目标文件时给出提示。

-R--recursive:整个目录拷贝。

例如:拷贝文件sourcefile到文件destfile

cpsourcefiledestfile

13dd命令

dd——拷贝一个文件(并能够同时转化它)。

例如:将文件sourcefile拷贝到文件destfile

$ddif=sourcefileof=destfile

0+1recordsin

0+1recordsout

$

14rm命令

rm——删除文件。

用法:

rmfile_name

rm命令接受通配符。经常使用选项是:-i在删除前询问肯定和-r删除一个目录全部文件。

例如:删除当前目录下html子目录的全部html文件。

$rm-i/html/*Html

警告:当文件被删除后,不能恢复。

15mountumount命令

mount安装一个文件系统。

Umount卸下一个文件系统。

例如:若是您想列出目前系统的文件系统

$mount

/dev/sda1on/typeext2rw

noneon/proctypeprocrw

/dev/hda2on/INSTALLtypeext2rw

$

3.4网络命令

1ping命令

ping命令——肯定网络上机器是否可到达和到达速率。

用法:ping选项IP地址/域名

例如:

$pingwww.263.net

Pingingwww.263.net[202.96.44.130]with32bytesofdata:

Replyfrom202.96.44.130:bytes=32time=30msTTL=252

Replyfrom202.96.44.130:bytes=32time=20msTTL=252

Replyfrom202.96.44.130:bytes=32time=50msTTL=252

Replyfrom202.96.44.130:bytes=32time=20msTTL=252

Pingstatisticsfor202.96.44.130:

Packets:Sent=4,Received=4,Lost=00%loss,

Approximateroundtriptimesinmilli-seconds:

Minimum=20ms,Maximum=50ms,Average=30ms

ping命令将大小固定的数据包发送给对方,并要求对方返回。经过数据判断是否返回以及返回时间,用户能够肯定对方是否可达,是否开机,以及网络延时时间。

2telnet命令

telnet命令——远程登陆命令,此命令使得用户能像使用本地机器同样访问网上机器(必须有除root外的帐号)。有许多网络服务都是经过telnet命令来提供的,如BBSachive等。

用法:telnet选项IP/机器名:端口号

例如:若是想经过telnet链接“水木清华”BBS站,键入以下内容:

$telnetsmth.org

这时候咱们按要求输入“BBS”之后能够看见如图3-1所示的进站画面:

输入相应的帐号和密码之后,进入BBS站,便可看到当前上站人数列表,如图3-1所示。

3-1进站画面

固然,也能够经过直接键入telnet命令,出现telnet提示符后,再使用open命令来实现链接。除了open命令外,还有许多命令,请使用help命令来查询。

telnet下也能使用vi

TELNET/VI被设计为能够经过远程终端机使用。不少终端机与控制台不一样,没有方向及编辑键。VI控制状态下能够用普通键盘移动光标,如h,j,k,l,分别对应左,下,上,右,Ctrl-fCtrl-b用来翻页,更多功能能够查看VI使用指南。另外Win9X带的TELNET客户软件功能太弱,建议使用NETTERM,光标位置就不会出错了。

3ftp命令

ftp命令——文件传输命令,使用此命令能够传输文件。

用法:ftp选项IP/机器名

例如:若是想到北京大学计算机系下载软件的话,输入下面的内容:

$ftp://ftp.cs.pku.edu.cn

链接后,要求输入用户名和密码;大多数ftp站点都接收用户名:ftpanonymous,密码请使用本身的E-mail地址。

telnet命令同样,ftp也提供了一个命令行环境,其中的命令很类似,在ftp环境中用help命令能够随时查到帮助。

Linux系统中,命令ncftpwget是两个更加卓越的ftp客户端软件,ncftpftp加强命令,而wget是镜像站点的好助手。

3.5其余实用命令

1aliasunalias命令

aliasunalias——设置别名。

3-2所示是一个使用aliasunalias的例子。

3-2例子

2date命令

date——打印或设置系统日期和时间。

date[-u][-ddatestr][-sdatestr][--utc][--universal][--date=datestr][--set=datestr][--help][--version][+FORMAT][MMDDhhmm[[CC]YY][.ss]]+FORMAT:控制如何显示日期。

指令:%:%

n:新行

t:TAB

时间域

%H:小时(00。。23

%l:小时(00。。12

%k:小时(0。。23

%l:小时(1。。12

%M:小时(00。。59

%pAM或者PM

%r12小时(hh:mm:ss[AP]M

%s:从1970-01-0100:00:00UTC开始的时间

%S:秒(00。。59

%T:时间表示(%H:%M:%S

%Z:时区(如EDT)。如没有指定时区则不显示。

日期域:

%a:缩写形式的星期名(Sun..Sat

%A:星期名(Sunday..Saturday

%b:缩写形式的月名(Jan..Dec

%B:月名(January..December

%c:日期和时间(SatNov0:02:33EST1989

%d:每月的第几天(01..31

%D:日期(mm/dd/yy

%h:等同于%b

%j:一年的第几天(001..366

%m:月份(01..12

%U:一年中的第几个星期,星期天为星期的第一天(00:53

%w:每一个星期的第几天,(0..6)为星期天

39红旗Linux用户基础教程

%W:一年中的第几个星期,星期一为星期的第一天(00:53

%x:日期(mm/dd/yy

%y:年份的后两个数字(00..99

%Y:年份(1970..

[MMDDhhmm[[CC]YY][.ss]]

MM:月份

DD:日期

hh:小时

mm:分钟

CC:年份的前两位(可选项)

YY:年份的后两位(可选项)

ss:秒(可选项)

只有超级用户才有权限设置系统时间(启动时在CMOS中读出)。

-ddatestr--datedates:显示datestr中指定的日期和时间。

-sdatestr--setdatestr:设定datestr中指定的日期和时间。

-u--universal:显示或设定格林威治时间(默认为本地时间)

--help:在标准输出上输出帮助信息并退出。

--version:在标准输出上输出版本信息并退出。

例如:

显示当前的时间:

$date-u--date'2daysago'

TueAug2410:20:39UTC1999

显示月份

$date'+%B%d'

August24

3cal命令

cal——显示日历。

输入的命令行及结果如图3-4所示。

3-4输入cal命令后所得结果

4bc命令

bc——Linux下的计算器。

5df命令

df——报告磁盘剩余空间。

例如:

$df-a-T

Filesystem Type 1 k –blocks Used Available Use% Mounted on

/dev/sda1 ext2 1020541 846524 121288 87%/

none proc 0 0 0 -/proc

none devpts 0 0 0 -/dev/pts

/dev/had2 ext2 114914392792116185185%/work

6du命令

du——报告磁盘空间使用状况。

例如:

$du

366.sr/doc/gnome-libs-devel-1.0.9/devel-docs/gnome/html

243./usr/doc/gnome-libs-devel-1.0.9/devel-docs/gnome/sgml

53./usr/doc/gnome-libs-devel-1.0.9/devel-docs/gnome/tmpl

729./usr/doc/gnome-libs-devel-1.0.9/devel-docs/gnome

$

7grep命令

grepegrepfgrep——在文件中搜索匹配的行并输出。

例如:在文件中/etc/passwd查找含有root的行。

$grep root/etc/passwd

root:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:

$

8gzip命令

gzipgunzipzcat——压缩或展开文件,详细状况请用mangzip查看。

$gzip -V sourcefile

sourcefile:15.2%--replacedwithsourcefile

9passwd命令

passwd——设置用户的密码。

用户能够使用passwd这个命令来更改本身的登陆密码,通常用户只能更改本身的密码,超级用户才能更改其余用户的密码,超级用户和组的管理者能更改组的密码,还能够用这个命令来更改用户的其余信息,如用户的全名,用户的登陆Shell,用户的密码失效时间间隔等等。

例如:

$passwd

New UNIX password:

Re-enternew password:

password changed

$

10ps命令

ps——命令罗列运行进程。

在屏幕中显示分为两列:命令列和PID列。命令列显示进程名字,PID列显示进程号(用kill命令中止运行程序将会使用此进程号)。

用法:ps options

参数选项

u能提供更多信息

ax能辩识不属于当前用户的进程(例如在开启是就运行的程序)。

11last命令

last——显示过去多少个用户或终端登陆到本机器。

last[-数目][-f文件][-ttty][-h节点名][-iIP地址][-l][-y][用户名]

例如:显示过去3次用户root登陆的状况。

last -3 root

root 0 Wed Aug 25 14:07 stilll ogged in

root 0 Wed Aug 25 14:02 -14:0300:00

root :0 WedAug 25 14:01-14:0100:00

wtmP begins Tue Aug1717:27:411999

$

12who命令

who——查看其余登陆的用户。

输入的命令及执行结果如图3-5所示。

3-5who命令及执行结果

13man命令

man——显示具备必定格式的在线手册。

man命令对于新手和老手来讲都是有用的工具。编程人员能够用此命令参看c函数。

下面是经常使用的红旗Linux手册的分类:

1)用户命令。

2)系统调用。

3)库函数。

4)设备和设备驱动程序。

5)文件格式。

6)游戏。

7)有用的杂类,如宏命令包等。

8)系统维护和管理命令。

14m系列命令

m系列——在Linux系统下访问DOS磁盘的命令。

mcd——进入DOS子目录。

mcopy——拷贝DOS文件。

mdel——删除DOS文件。

mdeltree——删除DOS目录。

mdir——参看DOS目录内容。

mformat——格式化DOS磁盘。

mlabel——给DOS磁盘加卷标。

mmd——建立DOS目录。

mmove——移动DOS下的文件。

mtype——显示DOS下的文件。

mren——将DOS下的文件更名。

15mkdirrmdir命令

mkdir命令是建立一个目录,rmdir是删除一个空目录。

语法:

mkdir directory_name

rmdir direcotry_name

rmdir经常用rm-rf命令替代,由于此命令能删除未空的目录。当心使用此命令。

16reboot命令

reboot——从新启动系统。

17su命令

su——使普通用户以root账号登陆。

键入su命令,shell要求root密码。键入密码并击回车键:现进入root账号。键入exit(或按【Ctrl+D】)回到之前的普通用户。

18tar命令

tar命令——建立和编辑UNIX归档文件。

例如:将rep/目录(和其子目录)下文件归档

$tar –c rep />rep.tar

得到的存档能压缩(使用gzipbzip2),例如:键入:

$gzip rep.tar

要展开一个存档文件,键入:

$tar –xvf archive.tar

要解开例子中归档文件,应键入;

tar –xvf rep.tar

tar –xvfz rep.tar.gz(若是存档使用gzip压缩)

要发现全部的tar命令参数,键入:

man tar

19history命令

histoty——显示历史命令记录。

在屏幕显示历史命令记录,而且每条历史命令都有一个记录号。要执行一个命令,键入:

!command_number

会从新执行这条指令。

命令!!,将从新执行上次命令。

20kill命令

kill——停止一个进程。

kill[-s信号|p][-a]进程号

kill-l[信号]

kill向指定的进程发出特定的信号,若是没有指定信号则送出TERM信号,TERM信号将杀死没有捕捉到这个信号的进程。对于某些可能要使用KILL9)信号强制杀死。

例如:

$ps

PIDTTYTIMECMD

520pts/000:00:00bash

523pts/000:00:00ps

$

21which命令

which——显示命令的全路径。

22csh命令

csh——启动CShell

习题

1.为了实现“在二天后上午8点执行文件workfile中的做业”这项任务,须要():

A.超级用户执行at$at –f workfile 8am+2days

B.通常用户执行at$at –fworkfile 8am+2days

C.超级用户执行at$at –fworkfile 2+8amdays

D.通常用户执行at$at-fworkfile 2+8amdays

2.到达我的目录的命令是():

Acd..

Bcd~

Ccd/

Dcd.

3.在文件中搜索匹配的行并输出的命令是():

Agrep

Begrep

Cless

Dfgrep

4ls命令——列出当前目录下的文件,显示隐文件的参数是():

Al

Ba

Ccolor

Dx

4Shell简介

本章内容提要

红要求了解Shell的概念,学会操做进程,掌握基本的旗BourneShellscript语句。红旗Linux系统的Shell做为操做系统的外壳,为用户提L供使用操做系统的接口。它是命令语言、命令解释程序及程i序设计语言的统称。Shell是用户和Linux内核之间的接口程n序,若是把Linux内核想像成一个球体的中心,Shell就是围绕内核的外层。当从Shell或其余程序向Linux传递命令时,内核会作出相应的反应。

本章重点内容

Shell的基本概念

☆进程及其操做

☆输入输出重定向

BourneShellscript编程基础

4.1Shell的基本概念

Shell是一个命令语言解释器,它拥有本身内建的Shell命令集,Shell也能被系统中其余应用程序调用。用户在提示符下输入的命令都由Shell解释后传给Linux核心。

有一些命令,好比改变工做目录命令cd,是包含在Shell内部的。还有一些命令,例如拷贝命令cp和移动命令rm,是存在于文件系统中某个目录下的单独的程序。对用户而言,没必要关心一个命令是创建在Shell内部仍是一个单独的程序。

Shell首先检查命令是不是内部命令,若不是再检查是不是一个应用程序(这里的应用程序能够是Linux自己的实用程序,如lsrm,也能够是购买的商业程序,如xv,或者是自由软件,如emacs)。而后Shell在搜索路径里寻找这些应用程序(搜索路径就是一个能找到可执行程序的目录列表)。若是键入的命令不是一个内部命令而且在路径里没有找到这个可执行文件,将会显示一条错误信息。若是可以成功找到命令,该内部命令或应用程序将被分解为系统调用并传给Linux内核。

Shell的另外一个重要特性是它自身就是一个解释型的程序设计语言,Shell程序设计语言支持绝大多数在高级语言中能见到的程序元素,如函数、变量、数组和程序控制结构。Shell

编程语言简单易学,任何在提示符中能键入的命令都能放到一个可执行的Shell程序中。

当普通用户成功登陆后,系统将执行一个称为Shell的程序。正是Shell进程提供了命令行提示符。做为默认值,对普通用户用“$”做提示符,对超级用户(root)用“#”做提示符。

一旦出现了Shell提示符,就能够键入命令名称及命令所须要的参数。Shell将执行这些命令。若是一条命令花费了很长的时间来运行,或者在屏幕上产生了大量的输出,能够在键盘上按【Ctrl+c】发出中断信号来中断它(在正常结束以前,停止它的执行)。

当用户准备结束登陆对话进程时,能够键入logout命令、exit命令或文件结束符(EOF)(按【Ctrl+d】实现),结束登陆。

下面能够来看一下Shell是如何工做的。

注意:cal是系统中一个命令的名字,用于显示日历。12001cal的两个参数。该命令的含义是显示20011月的日历。在接收到这个命令后,shell便执行它。执行完以后又返回到命令接收状态。

在例子中,#为系统提示符,该提示符表示用户于超级用户的身份登录的。

make是一个常常被用来编译大程序的程序,它以参数做为目标来进行编译。在“makework”中,make编译的目标是work。由于make找不到以work为名字的目标,它便给出错误信息表示运行失败,用户又回到系统提示符下。

另外,用户键入有关命令行后,若是Shell找不到以其中的命令名为名字的程序,就会给出错误信息。例如,若是用户键入:

$myprog

bash:myprog:command not found

$

此时能够看到,用户获得了一个没有找到该命令的错误信息。,这样的错误信息通常出如今用户输入错误命令时。

Shell的种类

Linux中的Shell有多种类型,其中最经常使用的几种是BourneShellsh)、CShellcsh)和KornShellksh)。三种Shell各有优缺点。BourneShellUNIX最初使用的Shell,而且在每种UNIX上均可以使用。BourneShellShell编程方面至关优秀,但在处理与用户的交互方面作得不如其余几种Shell。红旗Linux操做系统默认的ShellBourneAgainShell,它是BourneShell的扩展,简称Bash,与BourneShell彻底向后兼容,而且在BourneShell的基础上增长、加强了不少特性。Bash放在/bin/bash中,它有许多特点,能够提供如命令补全、令编辑和命令历史表等功能,它还包含了不少CShellKornShell中的优势,有灵活和强大的编程接口,同时又有很友好的用户界面。

CShell是一种比BourneShell更适于编程的Shell,它的语法与C语言很类似。Linux为喜欢使用CShell的人提供了TcshTcshCShell的一个扩展版本。Tcsh包括命令行编辑、可编程单词补全、拼写校订、历史命令替换、做业控制和相似C语言的语法,它不只和BashShell是提示符兼容,并且还提供比BashShell更多的提示符参数。

KornShell集合了CShellBourneShell的优势而且和BourneShell彻底兼容。Linux系统提供了pdkshksh的扩展),它支持任务控制,能够在命令行上挂起、后台执行、唤醒或终止程序。

Linux中还包括了一些流行的Shellashzsh等。每一个Shell都有它的用途,有些Shell是有专利的,有些能从Internet网上或其余来源得到。要决定使用哪一个Shell,只需读一下各类Shell的联机帮助,并试用一下。

用户在登陆到Linux时由/etc/passwd文件来决定要使用哪一个Shell。例如:

#fgrep lisa/etc/passwd

lisa:x:500:500:User:/home/lisa:/bin/bash

Shell被列在每行的末尾(/bin/bash)。

4.2进程

一般从进程的角度来理解UNIXLinux系统的多任务的概念。进程或任务,是运行之中的程序的一个实例(instance),亦即程序的一次运行过程,是一个动态的概念。

用户注册的Shell就是一个进程。在提示符$下运行一条命令时,执行中的命令也是一个进程。

4.2.1分时

CPU机器,在同一时刻只能有一个进程在运行。多CPU机器,同一时刻一个CPU也只能运行一个进程。

多进程的同时运行是经过优先级管理机制,给每个进程分配不一样的时间片,分时运行,使每个程序的执行者都感受系统是在为本身服务。

4.2.2前台进程和后台进程

用户在Shell下运行命令时,在该进程结束前不能执行其余命令的进程执行方式,是前台进程。而进程未结束前就能够经过Shell运行别的命令的进程是后台进程Shell提供操做符&,使用户就能够在后台运行命令。在命令行尾附加&便可。

$cat/etc/passwd&

用户一般能够重定向命令的输入和输出。从而使程序的输出不会干扰本身的对话期。

$cat/etc/passwd>file.copy&

用户也能够重定向标准错误输出,以屏蔽错误信息。

$cat/etc/passwd>file.copy2>error.out&

用户在对话期间建立的后台进程,在用户签退后即被撤消,由于它们与用户的注册标识相联。UNIX提供了命令nohap来使后台进程在用户签退后仍然能够运行。将nohap放在命令行以前便可。

$nohapcat/etc/passwd&

在管道线使用nohap时,必须对每个管道元素使用nohap

4.2.3父进程和子进程

一个进程启动另外一个进程后,被启动进程是子进程,原进程是启动进程的父进程。一个父进程能够有多个子进程,而一个子进程只有一个父进程。父进程消亡时子进程通常也消亡,用户能够使子进程继续存在,该子进程的父进程就变成了原父进程的父进程。每个进程都有父进程。进程号是1的为最原始进程。

4.2.4进程状态命令ps

用户能够经过命令psprocessstatus,进程状态)检查机器中当前存活的进程。不加参数时,显示发出该命令用户的登陆对话期内全部正在运行的进程。其中参数以下所示。

-f:显示进程的所有信息。

-a:显示所有用户当前活动的进程。

-e:显示当前系统正在运行的所有进程。

-t终端名:显示对应终端的进程。

-u用户名:显示某用户的进程。

一般-ef-af-t使用较多。

显示信息以下:

UID:用户名;PID进程号。

PPID:父进程号;C进程最近所耗的CPU资源。

STIME:进程开始时间TTY启动进程的终端设备。

TIME:进程总共占用CPU的时间。

COMMAND:进程名。

4.2.5杀死进程

命令kill终止本身所拥有进程的执行,下面的几个例子及其说明阐述了此命令的做用。

$kill 435

向进程号是435的进程发送信号15,使其终止,有可能不起做用;

$kill -9 362

强制终止362号进程;

$kill0

向一个进程组的所有进程发出终止信号;

ps-df

4.3输入输出重定向

4.3.1标准输入与输出

执行一个Shell命令行时一般会自动打开三个标准文件,即标准输入文件(stdin),一般对应终端的键盘;标准输出文件(stdout)和标准错误输出文件(stderr),这两个文件都对应终端的屏幕。进程将从标准输入文件中获得输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中。

下面以cat命令为例,cat命令的功能是从命令行给出的文件中读取数据,并将这些数据直接送到标准输出。若使用以下命令:

$catconfig

将会把文件config的内容依次显示到屏幕上。可是,若是cat的命令行中没有参数,它就会从标准输入中读取数据,并将其送到标准输出。例如:

$cat

Hello world

Hello world

Bye

Bye

$

用户输入的每一行都马上被cat命令输出到屏幕上。

另外一个例子,命令sort按行读入文件正文(当命令行中没有给出文件名时,表示从标准输入读入),将其排序,并将结果送到标准输出。下面的例子是从标准输入读入一个采购单,并将其排序,假设文件为temp

$sorttemp

输出:apples

apples

bananas

bananas

carrots

carrots

这时用户可在屏幕上获得了已排序的采购单。

直接使用标准输入/输出文件存在如下问题:

1)输入数据从终端输入时,用户输入的数据只能用一次。下次再想用这些数据时就须要从新输入。并且在终端上输入时,若输入有误修改起来不是很方便。

2)输出到终端屏幕上的信息只能看不能动。用户没法对此输出做更多处理,如将输出做为另外一命令的输入进行进一步的处理等。

为了解决上述问题,Linux系统为输入、输出的传送引入了另外两种机制,即输入/输出重定向和管道。

4.3.2输入重定向

输入重定向是指把命令(或可执行程序)的标准输入重定向到指定的文件中。也就是说,输入能够不来自键盘,而来自一个指定的文件。因此说,输入重定向主要用于改变一个命令的输入源,特别是改变那些须要大量输入的输入源。

例如,命令wc统计指定文件包含的行数、单词数和字符数。若是仅在命令行上键入:

$wc

wc将等待用户告诉它统计什么,这时Shell就好像死了同样,从键盘键入的全部文本都出如今屏幕上,但并无什么结果,直至按下【Ctrl+d】,wc才将命令结果写在屏幕上。

若是给出一个文件名做为wc命令的参数,以下例所示,wc将返回该文件所包含的行数、单词数和字符数。

$wc/etc/passwd

20 23 726/etc/passwd

$

另外一种把/etc/passwd文件内容传给wc命令的方法是重定向wc的输入。输入重定向的通常形式为:命令<文件名。能够用下面的命令把wc命令的输入重定向为/etc/passwd文件:

$wc</etc/passwd

20 23 726

$

另外一种输入重定向称为here文档,它告诉Shell当前命令的标准输入来自命令行。here文档的重定向操做符使用<<。它将一对分隔符(本例中用delim表示)之间的正文重定向输入给命令。下例将一对分隔符之间的正文做为wc命令的输入,统计出正文的行数、单词数和字符数。

$wc<<this text forms the content

>of the here document,which

>continues until the end of

>text delimter

>delim

4 17 98

在“<<”操做符后面,任何字符均可以做为正文开始前的分隔符,本例中使用delim做为分隔符。here文档的正文一直延续到碰见另外一个分隔符为止。第二个分隔符应出如今新行的开头。这时here文档的正文(不包括开始和结束的分隔符)将从新定向送给命令wc做为它的标准输入。

因为大多数命令都以参数的形式在命令行上指定输入文件的文件名,因此输入重定向并不常用。尽管如此,当要使用一个不接受文件名做为输入参数的命令,而须要的输入内容又存在一个文件里时,就能用输入重定向解决问题。

4.3.3输出重定向

输出重定向是指把命令(或可执行程序)的标准输出或标准错误输出从新定向到指定文件中。这样,该命令的输出就不显示在屏幕上,而是写入到指定文件中。

输出重定向比输入重定向更经常使用,不少状况下均可以使用这种功能。例如,若是某个命令的输出不少,在屏幕上不能彻底显示,那么将输出重定向到一个文件中,而后再用文本编辑器打开这个文件,就能够查看输出信息;若是想保存一个命令的输出,也能够使用这种方法。还有,输出重定向能够用于把一个命令的输出看成另外一个命令的输入(还有一种更简单的方法,就是使用管道,将在下面介绍)。

输出重定向的通常形式为:命令>文件名。例如:

$ls>directory.out

$cat directory.out

ch1.doc ch2.doc ch3.doc chim config mail/test/

$

ls命令的输出保存为一个名为directory.out的文件。

注意:若是“>”符号后边的文件已存在,那么这个文件将被覆盖。

为避免输出重定向中指定文件只能存放当前命令的输出重定向的内容,Shell提供了输出重定向的一种追加手段。输出追加剧定向与输出重定向的功能很是类似,区别仅在于输出追加剧定向的功能是把命令(或可执行程序)的输出结果追加到指定文件的最后,而该文件原有内容不被破坏。

若是要将一条命令的输出结果追加到指定文件的后面,能够使用追加剧定向操做符“>>”。形式为:命令>>文件名。例如:

$ls*.doc>>directory.out

$cat directory.out

ch1.doc ch2.doc ch3.doc chimp config mail/test/

ch1.docch2.docch3.doc

$

和程序的标准输出重定向同样,程序的错误输出也能够从新定向。使用符号2>(或追加符号2>>)表示对错误输出设备重定向。例以下面的命令:

$ls/usr/tmp2>err.file

可在屏幕上看到程序的正常输出结果,但又将程序的任何错误信息送到文件err.file中,以备未来检查用。还能够使用另外一个输出重定向操做符(&)将标准输出和错误输出同时送到同一文件中。例如:

$ls/usr/tmp&>output.file

利用重定向将命令组合在一块儿,可实现系统单个命令不能提供的新功能。例如使用下面的命令序列,即统计了/usr/bin目录下的文件个数。

$ls/usr/bin>/tmp/dir

$wcw</tmp/dir

459

4.3.4管道

将一个程序或命令的输出做为另外一个程序或命令的输入,有两种方法,一种是经过一个临时文件将两个命令或程序结合在一块儿,例如上个例子中的/tmp/dir文件将lswc命令联在一块儿;另外一种是Linux所提供的管道功能。这种方法比前一种方法更方便。

管道能够把一系列命令链接起来,这意味着第一个命令的输出会做为第二个命令的输入经过管道传给第二个命令,第二个命令的输出又会做为第三个命令的输入,以此类推。

显示在屏幕上的是管道行中最后一个命令的输出(若是命令行中未使用输出重定向)。经过使用管道符“|”来创建一个管道行。用管道重写上面的例子:

$ls/usr/bin|wc-w

1789

再如:

$cat sample.txt|grep"High"|wc-l

管道将cat命令(列出一个文件的内容)的输出送给grep命令。grep命令在输入里查找单词Highgrep命令的输出则是全部包含单词High的行,这个输出又被送给wc命令,wc命令统计出输入中的行数。假设sample.txt文件的内容以下:

Things to do today:

Low: Go grocery shopping

High:Return movie

High:Clear level3 in Alienvs.Predator

Medium:Pick up clothes from dry cleaner

那么该管道行的结果是2

4.3.5命令替换

命令替换和重定向有些类似,但区别在于命令替换是将一个命令的输出做为另一个命令的参数。经常使用命令格式为:

command1`command2`

其中,command2的输出将做为command1的参数。须要注意的是这里的`符号,被它括起来的内容将做为命令执行,执行后的结果做为command1的参数。例如:

$cd`pwd`

该命令将pwd命令列出的目录做为cd命令的参数,结果仍然是停留在当前目录下。

4.4Bourne Shell script编程基础

不少操做系统都有很多语言及一些script功能,但不多有像UNIX/LinuxShell这样灵活强大的script脚本语言能力。

对于系统管理员或程序员来讲,熟练地使用Shellscript将对平常工做(系统维护及管理)很是有用,若是您想做一个合格的系统管理员,强烈建议您进一步深刻的了解和使用Shell。这部份内容将在《红旗Linux系统管理教程》一书中详细讲述。

4.4.1分支语句

1if语句

格式

if[variable1=value1]

then

command

command

elif[variable1=value2]

then

command

command

elif[variable1=value3]

then

command

command

fi

例:

echo –n "Do you want to continue:Y or N"

read ANSWER

if[$ANSWER=N-o$ANSWER=n]

then

exit

fi

上例中当用户的回答为Nn时程序将结束。

read语句格式以下:

readvar1var2...varn

read将不做变量替换,但会删除多余的空格,直到遇到第一个换行符(回车),并将输入值依次赋值给相应的变量。

2case结构

格式:

casevaluein

pattern1)

command

command;;

pattern2)

command

command;;

...

patternn)

command;

esac

case语句只执行第一个匹配模式

例:使用case语句创建一个菜单选择Shellscript

#Displayamenu

echo_

echo"1Restore"

echo"2Backup"

echo"3Unload"

echo

#Read and excute the user's selection

echo –n "Enter Choice:"

read CHOICE

case "$CHOICE" in

1)echo "Restore";;

2)echo "Backup";;

3)echo "Unload";;

*)echo "Sorry $CHOICE is not avalid choice

exit1

esac

说明:

1.在上例中,*指默认匹配动做。

2#开头的语句为注释语句。

此外,case模式中也能够使用逻辑操做,以下所示:

pattern1|pattern2)command

command;;

这样能够将上面示例程序中容许用户输入数字或每个大写字母。

case"$CHOICE"in

1|R)echo"Restore";;

2|B)echo"Backup";;

3|U)echo"Unload";;

*)echo "Sorry $CHOICE is not avalid choice

exit1

esac

4.4.2循环控制

1while循环

格式:

whilecommand

do

command

command

command

...

done

例:计算15的平方。

#!/bin/sh

#

#Filename:square.sh

int=1

while[$int-le5]

do

sq=`expr$int\*$int`

echo$sq

int=`expr$int+1`

done

echo"Jobcompleted"

$shsquare.sh

1

4

9

16

25

Jobcompleted

2until循环结构

格式:

untilcommand

do

command

command

....

command

done

示例:

使用until结构计算1-5的平方。

#!/bin/sh

int=1

until[$int-gt5]

do

sq=`expr $int\*$int`

echo$sq

int=`expr $int+1

done

echo"Job completed"

说明:

1expr $int\*$int`计算变量的平方。

2int=`expr $int+1为赋值语句注意左边的变量没有$符号。

3for循环

格式:

for varin arg1 arg2...argn

do

command

....

command

done

1

$for letter in a b c d e; do echo $letter;done

a

b

c

d

e

2:对当前目录下的全部文件操做:

$for i in *

do

if[-f$i]

then

echo"$i is a file"

elif[-d $i]

echo "$i is a directory"

fi

done

说明:

*表示当前目录下的全部文件。

3:求命令行上全部整数之和:

#!/bin/sh

sum=0

for INT in $*

do

sum=`expr $sum + $INT`

done

echo $sum

说明:

$*表示全部的录入参数。

4.4.3从循环中退出

从循环中退出可采用breakcontinue命令。

break:当即退出循环。

continue:忽略本循环中的其余命令,继续下一个循环。

Shell编程中有时要用到进行无限循环的技巧,也就是说这种循环一直执行碰到breakcontinue命令。这种无限循环一般是使用truefalse命令开始的。UNIX系统中的true老是返回0值,而false则返回非零值。以下例所示,一直执行到程序执行了break或用户强行中断时才结束循环。

while true

do

command

....

command

done

上面所示的循环也能够使用until false,以下所示。

until false

do

command

....

command

done

在以下的Shellscript中同时使用了continuebreak以及case语句中的正规表达式用法:

#!/bin/sh

#Interactive program to restore,backup,or unload

#a directory

echo "Welcome to the menu driven Archive program"

while true

do

#Display a Menu

echo

echo"Make a Choice from the Menu below"

echo_

echo "1Restore Archive"

echo "2Backup directory"

echo "3Unload directory"

echo "4Quit"

echo

#Read the user's selection

echo –n "Enter Choice:"

read CHOICE

case $CHOICE in

[1-3])echo

#Read and validate the name of the directory

echo –n "What directory do you want?"

read WORKDIR

if [!-d "$WORK DIR"]

then

echo "Sorry, $WORK DIR is not a directory"

continue

fi

#Make the directory the current working directory

cd $WORK DIR;;

#Following is other operation

*)echo "Sorry, $CHOICE is not a valid choice"

continue

esac

case"$CHOICE"in

1)echo"Restoring..."

cpio -i</dev/rmt/0h;;

2)echo "Archiving..."

ls|cpio -o>/dev/rmt/0h;;

3)echo "Unloading..."

ls|cpio -o>/dev/rmt/0h;;

4)echo "Quitting"

break;;

esac

#Check for cpio errors

if [$? -ne 0]

then

echo "A problem has occurred during the process"

if [$CHOICE=3]

then

echo"The directory will not be erased"

fi

echo "Please check the device and try again"

continue

else

if[$CHOICE=3]

then

rm*

fi

fi

done

4.4.4处理不定长的参数

在以上的示例中老是假设命令行参数唯一或其个数固定,或者使用“$*”将整个命令行参数传递给Shellscript进行处理。当参数个数不固定而且但愿对每一个命令参数进行单独处理时则须要shift命令。使用shift能够将命令行位置参数依次移动位置,即$2->$1,$6->$2.在移位以前的第一个位置参数$1在移位后将不在存在。

示例以下:

#!/bin/sh

#

#Filename:shifter

until[$#-eq0]

do

echo"Argument is $1 and `expr$# -1 `argument(s) remain"

shift

done

$shifter 1 2 3 4

Argument is 1 and 3 argument(s) remain

Argument is 2 and 2 argument(s) remain

Argument is 3 and 1 argument(s) remain

Argument is 4 and 0 argument(s) remain

$

使用shift时,每进行一次移位,$#1,使用这一特性能够用until循环对每一个参数进行处理,以下示例中是一个求整数和的Shellscript

#!/bin/sh

#sumints –a program to suma series of integers

#

if[$# -eq 0]

then

echo "Usage:sumints integer list"

exit1

fi

sum=0

until[$#-eq0]

do

sum=`expr$sum+$1`

shift

done

echo$sum

$sh sumints 324 34 34 12 34

438

$

使用shift的另外一个缘由是BourneShell的位置参数变量为$1~$9,所以经过位置变量只能访问前9个参数。但这并不等于在命令行上最多只能输入9个参数。此时若是想访问前9个参数以后的参数,就必须使用shift

另外,shift后可加整数进行一次多个移位,如:

shift3

4.4.5结构化编程:定义函数

同其余高级语言同样,Shell也提供了函数功能。函数一般也称之为子过程(subroutine),

其定义格式以下:

funcname()

{

command

...

command;#分号

}

定义函数以后,能够在Shell中对此函数进行调用,使用函数定义能够将一个复杂的程序分为多个可管理的程序段,以下所示:

#startprogram

setup()

{commandlist;}

do_data()

{commandlist;}

cleanup()

{commandlist;}

errors()

{commandlist;}

setup

do_data

cleanup

#endprogram

技巧:在对函数命名时最好能使用有含义的名字,即函数名可以比较准确的描述函数所完成的任务。为了程序的维护方便,请尽量使用注释。

使用函数的另外一个好处就是能够在一个程序中的不一样地方执行相同的命令序列(函数),以下所示:

iscontinue()

{

while true

do

echo-n"Continue?(Y/N)"

read ANSWER

case $ANSWER in

[Yy])return0;;

[Nn])return1;;

*)echo"Answer Y or N";;

esac

done

}

这样能够在Shell编程中调用iscontinue,肯定是否继续执行。

if iscontinue

then

continue

else

break

fi

Shell函数与Shell程序很是类似,但二者有一个很是重要的差异:Shell程序是由子Shell

执行的,而Shell函数则是做为当前Shell的一部分被执行的,所以在当前Shell中能够改变

函数的定义。此外在任意Shell(包括交互式的Shell)中都可定义函数,如:

$dir

dir: not found

$dir(){ls-l;}

$dir

total 5875

-rw-r--r--1 hbwork 100 Nov 1023:16doc

-rw-r--r--1 hbwork 2973806 Nov 1023:47 ns40docs.zip

-rw-r--r--1 hbwork 1715011 Nov 1023:30 ns840usr.pdf

-rw-r--r--1 hbwork 1273409 Sep 231998 radsol21b6.tar.Z

-rw-r--r--1 hbwork 7526 Nov 1023:47 wget-log

-rw-r--r --1 hbwork 1748 Nov 1321:51 wget-log.1

$unset dir

$dir(){

>echo"Permission Link Owner Group File_SZ LastAccess FileName"

>echo"-----------------------------------------------------------"

>ls-l$*;

>}

$dir

Permission Link Owne GroupFile_SZ LastAccess FileName

-----------------------------------------------------------

total5875

-rw-r--r--1 hbwork100Nov1023:16doc

-rw-r--r--1 hbwork 100 Nov 1023:16doc

-rw-r--r--1 hbwork 2973806 Nov 1023:47 ns40docs.zip

-rw-r--r--1 hbwork 1715011 Nov 1023:30 ns840usr.pdf

-rw-r--r--1 hbwork 1273409 Sep 231998 radsol21b6.tar.Z

-rw-r--r--1 hbwork 7526 Nov 1023:47 wget-log

-rw-r--r --1 hbwork 1748 Nov 1321:51 wget-log.1

一般状况下,Shellscript是在子Shell中执行的,所以在此子Shell中对变量所做的修改对父Shell不起做用。点(.)命令使用Shell在不建立子Shell而由当前Shell读取并执行一个Shellscript,能够经过这种方式来定义函数及变量。此外点(.)命令最经常使用的功能就是经过读取.profile来从新配置初始化login变量。以下所示:

$..profile

csh相对于命令的是source命令)。

4.4.6使用And/Or结构进行有条件的命令执行

1And

仅当第一个命令成功时才执行后一个命令,如同在逻辑与表达式中若是前面的结果为真

时才有必要继续运算,不然结果确定为假。格式:

command1 && command2

例:rm $TEMPDIR/* && echo "File successfully removed"

上例命令等价于如下语句所得效果。

if rm $TEMPDIR/*

then

echo"File successfully removed"

fi

2Or

And相反,只有前一个命令执行出错时才执行后一条命令

例:rm$TEMPDIR/*||echo"File not removed"

等价于:

ifrm$TEMPDIR/*

then

command

else

echo"File not removed"

fi

3.混合命令条件执行

command1 && command2 && command3

command1,command2成功时才执行command3

command1 && command2 || comamnd3

仅当command1成功,command2失败时才执行command3

固然能够根据本身的须要进行多种条件命令的组合,在此很少讲述。

4.4.7使用getopts命令读取Linux格式选项

Linux格式选项指以下格式的命令行参数:

command -options parameters

getopts使用格式:

getopts option_string variable

具体使用方法请参考getopts的在线文档(mangetopts)。

示例以下:

#newdate

if [$#-lt1]

then

date

else

while getopts mdyDHMSTjJwahr OPTION

do

case$OPTION

in

m)date'+%m';;#MonthofYear

d)date'+%d';;#DayofMonth

y)date'+%y';;#Year

D)date'+%D';;#MM/DD/YY

H)date'+%H';;#Hour

M)date'+%M';;#Minute

S)date'+%S';;#Second

T)date'+%T';;#HH:MM:SS

j)date'+%j';;#dayofyear

J)date'+%y%j';;#5digit Juliandate

w)date'+%w';;#Day of the Week

a)date'+%a';;#Day abbreviation

h)date'+%h';;#Month abbreviation

r)date'+%r';;#AM-PMtime

\?)echo"Invalid option $OPTION";;

esac

done

fi

$newdate -J

94031

$newdate -a -h -d

Mon

Jan

31

$newdate -ahd

Mon

Jan

31

$

示例程序:复制程序

#Syntax: duplicate [-cinteger][-v] filename

#where integer is the number of duplicate copies

#and -v is the verbose option

COPIES=1

VERBOSE=N

while getopts vc:OPTION

do

case $OPTION

in

c)COPIES=$OPTARG;;

v)VERBOSE=Y;;

\?)echo"IllegalOption"

exit1;;

esac

done

if [ $OPTIND -gt $#]

then

echo "No filename specified"

exit2

fi

shift `expr $OPTIND-1`

FILE=$1

COPY=0

while [$COPIES -gt $COPY]

do

COPY=`expr $COPY+1`

cp $FILE ${FILE}${COPY}

if [VERBOSE=Y]

then

echo ${FILE}${COPY}

fi

done

$duplicate -v fileA

fileA1

$duplicate -c 3 -vfileB

fileB1

fileB2

fileB3

习题

1.关于Linuxshell说法错误的是:()

A.一个命令语言解释器

B.编译型的程序设计语言

C.能执行内部命令

D.能执行外部命令

71红旗Linux用户基础教程

2.超级用户(root)用_____做默认的提示符。()

A$B#C?D!

3.操做符______使用户就能够在后台运行命令。()

A!B&C%D@

4Linux的最原始进程是____。()

A.进程1B.进程0C.进程2D.进程3

5here文档的重定向操做符使用______()

A>>B<C<<D>

6.对错误输出设备重定向能够用操做符_______()

A2>B>C>D<

7.管道符是:()

A||B|C<<D//

8.仅当前一个命令执行出错时才执行后一条命令,须要采起的操做是:()

Acommand1 && command2

Bcommand1 XOR command2

Ccommand1 || command2

Dcommand1 << command2

9command1 && command2 || comamnd3的含义是:()

A.当command1成功,command2失败时才执行command3

B.当command1,command2成功时才执行command3

C.当command1,command2失败时才执行command3

D.当command1失败,command2成功时才执行command3

5章使用vi

本章内容提要

viUNIX/Linux中最为流行的编辑器,几乎能够说每一个UNIX/Linux系统都提供了vivivisual的缩写,是一种全屏幕文本编辑器。在虚拟控制台(console)里是最好的文本编辑器之一。

本章重点内容

vi的编辑模式切换和指令模式及其切换

vi基本编辑方法

vi中移动光标

vi中进行删除、复制、放置、修改

vi中的文件指令

☆要求能熟练使用vi

5.1vi的两种模式

在使用vi以前,应该先了解一下vi的基本概念。vi有两种工做模式:编辑模式和指令模式。编辑模式用来输入和编辑文字资料;而指令模式则用来下达一些编排文件、存盘以及退出vi等操做指令。运行vi后,会先进入指令模式,此时输入的任何字符都被视为指令。

vi的指令分为两种:长指令和短指令。长指令以冒号开头,键入冒号后,屏幕最末尾一行会出现一个冒号提示符,等待用户键入后续的指令,输入完后回车,vi就会执行该指令。短指令很像是快捷键,键入短指令时,vi不会给出任何提示,一个指令键入完毕后,vi将当即执行该指令。本章中,全部的长指令前都标有冒号,以和短指令相区分。要从编辑模式切换到指令模式能够使用【Esc】键,若是不能判定目前处于什么模式,能够多按几回【Esc】键,这时系统会发出很难听的哔哔声(除非你的机器没有扬声器)以肯定已经进入指令模式。

5.2启动和退出vi

启动vi的方法很简单,只需在vi后面加上要编辑的文件名便可。若是该文件存在,vi将打开该文件,反之vi将创建新文件。若是vi后不跟文件名,则打开一个缓存区,可让用户写,可是写完以后因为没有文件名,这个文件始终存不了,意义也就不大。

进入vi后屏幕最左列会出现波浪符号,行首有该符号的行就是空行。进入vi时,系统处于指令模式。要退出vi能够在指令模式下键入指令“:q”,指令“:wq”将当前文件磁盘并退出,这两个指令都是长指令。

5.3编辑模式

有好几个指令能够进入编辑模式,这些指令都是短指令,用户只需键入相应的字符便可。

1.新增(append

a从光标所在位置后面开始添加文本,光标后的文本随新增文本向后移动。

A从光标所在行最后面的地方开始添加文本。

2.插入(insert

I从光标所在位置前面开始插入文本,光标后的文本随新增文本向后移动。这项功能和【Insert】键功能相同。

I从光标所在行的第一个非空白字符前面开始插入文本。

3.开始(open

o在光标所在行下方新增一行并进入输入模式。

O在光标所在行上方新增一行并进入输入模式。

vi是一个全屏幕编辑器,用户只要实际操做一下就能够了解这些操做方式。

进入编辑模式后,就能够使用四个方向键、【Ins】、【Del】和【Backspace】等按键进行文本编辑了。

5.4vi基本编辑方法

终端和键盘有许多种不一样的类型。与用户使用的PC不一样,有些终端没有特定的功能键,如方向键等。在PC上使用vi是很简单的,用户能够利用PC键盘上的各类功能键进行光标的移动、删除文本等操做。而在某些比较简陋的终端中,因为缺乏一些功能键,要实现这些操做就必须使用vi提供的各类编辑指令。

虽然多数用户使用的都是PC,但笔者仍然打算简要地介绍一下这些指令。这样作并非徒劳的,由于读者从此可能会使用不一样的终端,更重要的是,telnet程序通常模拟终端VT100,而该终端就没有方向键。

如下列出了vi的一些基本编辑指令。

X删除光标所在字符。

Dd删除光标所在的行。

R修改光标所在字符,r后接着要修正的字符。

R进入取代状态,新增文本会覆盖原先文本,直到按【Esc】键回到指令模式为止。

S删除光标所在字符,并进入编辑模式。

在指令模式下移动光标的基本指令是hjkl,它们天然能够用PC上的方向键来代替,并且不管在编辑模式和指令模式中均可以。

固然PC键盘也有不足之处。有个很好用的指令u能够恢复被删除的文本,而U指令则能够恢复光标所在行的全部改变。这与某些电脑上的【Undo】按键功能相同。

5.5vi高级应用

如今,读者已经了解并进行了必定的实践,vi的基本用法已有必定的掌握,应该能够顺利地利用vi编辑文本了。本节介绍其余一些能够进一步简化操做的指令。

5.5.1移动光标

vi提供了许多移动光标的指令,如下总结了这些指令。

1.基本移动指令

0移动到光标所在列的最前面,对应的功能键是【Home】。

$移动到光标所在列的最后面,对应的功能键是【End】。

Ctrl-d向下半页。

Ctrl-f向下一页,对应的功能键是【PageDown】。

Ctrlu向上半页。

Ctrlb向上一页,对应的功能键是【PageUp】。

2.行间快速移动

H移动到屏幕的第一行。

M移动到屏幕的中间行。

L移动到屏幕的最后一行。

n-减号移动到上一行的第一个非空白字符,前面加上数字能够指定移动到以上n行。

n+加号移动到下一行的第一个非空白字符,前面加上数字能够指定移动到如下n行。

nG直接用数字n加上大写G移动到第n行。

3.行内快速移动

b移动到下个词的第一个字母。

w移动到上个词的第一个字母。

e移动到下个词的最后一个字母。

^移动到光标所在行的第一个非空字符。

fx往右移动到x字符上。

Fx往左移动到x字符上。

tx往右移动到x字符前。

Tx往左移动到x字符前。

;配合ft使用,重复一次。

,配合ft使用,反方向重复一次。

4.全文搜索

/string向后移动到有string的地方,string能够是正则表达式。

?string往前移动到有string的地方。

n配合/?使用,重复一次。

N配合/?使用,反方向重复一次。

5.句间移动

n(左括号移动到句子的最前面,前面加上数字能够指定往前移动n个句子。句子以“!”、“.”、“?”三种符号来界定。

n)右括号移动到下个句子的最前面,前面加上数字能够指定日后移动n个句子。

6.段间移动

n{左括弧移动到段落的最前面,前面加上数字能够指定往前移动n个段落。段落以段落间的空白行界定。

n}右括弧移动到下个段落的最前面,前面加上数字能够指定日后移动n个段落。

只要多实践几回,读者就能掌握这些指令,而且会发现它们能够较大幅度地提升工做效率。vi的这些指令是其余编辑器所不具有的,从这个意义上讲,vi比其余不少编辑器要优秀。其实,使用vi的基于文本的操做指令比使用基于图形界面的操做指令来得方便、快捷,由于填写对话框是很费时费力的工做。

5.5.2高级编辑指令

vi提供了一些很是灵活的编辑指令,这些指令基本上由指令与范围构成。例如dw由删除指令d与范围w组成,表明删除一个词dDeletewWord)。

指令列表以下:

d删除(delete

y复制(yank

p放置(put

c修改(change

范围能够是下列几个:

e光标所在位置到该词的最后一个字母。

w光标所在位置到下个词的第一个字母。

b光标所在位置到上个词的第一个字母。

$光标所在位置到该行的最后一个字母。

0光标所在位置到该行的第一个字母。

)光标所在位置到下个句子的第一个字母。

(光标所在位置到该句子的第一个字母。

}光标所在位置到该段落的最后一个字母。

{光标所在位置到该段落的第一个字母。

这些指令提供了更加灵活的文本编辑能力。值得注意的一点是,删除与复制都会将指定范围的内容放到内存中,而后能够用指令p将它们贴到其余地方去,这是vi实现块复制与块移动的办法。

这些指令其实只是指定范围的方式有点杂,而指令却只有四个。

指令v很是好用,只要按下v键,光标所在的位置就会反白,而后能够移动光标来设定范围,接着再直接下达编辑指令便可。

对于整行操做,vi另外提供了更方便的编辑指令。前面提到的删除整行文本的指令dd就是其中之一;cc指令能够修改整行文字;yy指令能够复制整行文字;指令D则能够删除光标到该行末尾的全部文字。

5.5.3文件指令

文件指令可能是以冒号开头的长指令,与编辑指令有所不一样。

下面简要介绍一下文件指令:

1:q

结束编辑(quit),若是要放弃对文件所作的修改,应该使用“:q!”指令强行退出。

2:w

存盘(write),其后可加所存盘的文件名。能够将多个文件指令合在一块儿使用,例如“:wq”的做用是保存文件并退出。

3ZZ(大写)

功能与“:wq”相同。

另外值得一提的是vi的部分存盘功能。能够用“:n,mwfilename”指令将第n行到第m行的文本存放到指定的文件filename中。

有关vi的使用方法只讲这些,内容还有不少。读者没必要刻意地去背诵这些指令,只要在使用vi的过程当中可以有意地去查一下帮助和使用一下,就必定能很快地掌握这些指令的使用方法。

习题

1.从编辑模式切换到指令模式能够使用______键。(    )

AF2

BSHIFT

CTAB

DESC

2vi中,命令_________从光标所在行的第一个非空白字符前面开始插入文本。(    )

Ai BI Ca DS

3.删除整行文本的指令是_______(    )

Ad Byy Cdd Dq

4.存盘并退出vi的指令是:(    )

Aq! Bq Cw Dwq

6章使用外部设备

本章内容提要

在红旗Linux下,您能够使用各类驱动器、文件系统和网络设备。其中包括Linux分区、DOSMSWindows分区(硬盘驱动器或软盘上的)、ZIPJazz驱动器以及CDROM文件系统。红旗Linux还支持许多并不常见的文件系统。这意味着你能够在Linux下用Netscape下载Windows软件,把下载的软件保存到Windows硬盘分区。

本章重点内容

☆如何使用CDROM

☆使用软盘

☆使用Zip驱动器

☆挂装文件系统

☆使用打印机

☆重点掌握CDROM,软盘Zip,打印机的使用,学会挂装,掌握mount命令红旗Linux用户基础教程

6.1使用CDROM

使用mount命令能够把CD中的全部目录和文件加入到Linux目录树中。挂装CDROM的命令以下,该命令须要以root身份执行。

#mountCDROM:

#mounttauto/dev/cdrom/mnt/cdrom

若是命令生效,光盘中的内容将出如今目录/mnt/cdrom下。下面介绍该命令的工做原理。

它通知操做系统自动探测(选项“-tauto”)文件系统并安装它。被安装的设备为/dev/cdrom,安装点(安装到的目录)为/mnt/cdrom。这一目录必须已经存在并为空。若是它不存在,那么就须要使用以下命令进行建立:

$mkdir /mnt/cdrom

若是安装命令失败,则要确认/dev/cdrom设备存在。若是使用的是IDECDROM,对应的设备文件名多是/dev/hdb/dev/hdc或者/dev/hdd。若是使用的是SCSICDROM,对应设备文件名可能为/dev/sda1/dev/sda2hda是第一IDE主驱动器,hdb是第一IDE从驱动器,hdc是第二IDE主驱动器,等等),hdd是第二IDE从驱动器;sda是第一SCSI接口,后面所接数字是SCSI驱动器id号。

假设/dev/cdrom不存在,而CDROM设备文件名为/dev/hdb。用户能够使用以下命令创

建一个到文件/dev/cdrom的符号连接。

$ln -s /dev/hdb/dev/cdrom

若是系统提示“设备已经安装(mounted)或目录忙”,多是因为用户的当前目录是在安装点目录/dev/cdrom或者子目录中而形成的。此时必须切换到其余目录才能进行。

umount(卸载)一个已经安装上的CD,须要退出/mnt/cdrom目录,并以root身份输入以下命令:

#umount/dev/cdrom

若是CDROM没有可以成功卸载(umounted),光盘就没法被取出。

6.2使用软盘

安装软盘的命令以下:

$mount -t auto /dev/fd0/mnt/floppy

在安装时,首先要确认/mnt/floppy目录存在并为空,而且/mnt/floppy不能是系统中何用户的当前目录。

成功安装后,软盘的文件出如今/mnt/floppy目录下,这些文件对全部用户可读,但只有root才能够修改、删除这些文件。

卸载软盘的命令以下:

$umount/mnt/floppy

注意:在卸载软盘时,当前工做目录不能是/mnt/floppy或其子目录。

6.3使用Zip驱动器

安装SCSI仿真并口扩展Zip驱动器的命令以下:

$mounttvfat/dev/sda4/mnt/zipdrive

使用“-tvfat”选项是由于Zip驱动器事先已经格式化为vfat文件系统,这一文件系统属于Windows文件系统,支持长文件名。卸载Zip驱动器的命令为umount。若是不卸载,盘片将没法弹出。Linux系统支持除USB以外的全部Zip驱动器(内置SCSIIDE,外置SCSI和并口)。

6.4让系统识别并行端口Zip驱动器

若是Zip驱动器安装不成功。则在安装结束后,应该使用如下命令把并行端口zip驱动器模块加载到内核中:

$/sbin/insmod parport

$/sbin/insmod ppa

为了让上面的指令在每次系统启动时自动执行,应该将其加在文件/etc/rc.d/rc.local结尾。该文件相似DOS下的autoexec.bat文件。若是系统仍然不能识别,应该编辑文件/etc/modules.conf,例以下面是文件/etc/modules.conf的示例行。

alias parport_lowlevel parport_pc

6.5自动安装(mount)功能

用户也能够使用自动安装功能。自动安装(automount)将在用户访问一个文件系统时自动安装它,并在中止访问时卸载它。

首先要以root身份运行setup命令,选择netsysv,确认自动安装服务。

接下来须要编辑automount的配置文件/etc/auto.master/etc/auto.misc,例如:

$pico/etc/auto.master

/misc/etc/auto.misc --timeout 1

该文件指明自动安装设备将被安装到/misc目录,此目录必须存在并为空。timeout字段指定了自动安装设备将在中止使用后一秒内自动卸载,该时间值能够任意设置。配置文件是/etc/auto.misc。该文件示例以下:

kernel -rosoftintrftp.kernel.org:/pub/linux

cdrom -fstype=autoro:/dev/cdrom

floppy -fstype=autorw:/dev/fd0

zipdrive -fstype=vfatrw:/dev/sda4

dosdrive -fstype=vfatro:/dev/hda1

hacker_cdrom-fstype=nfsrohacker:/mnt/cdrom

hacker_floppy-fstype=nfsrwhacker:/mnt/floppy

hacker_usr-fstype=nfsrohacker:/usr

6.6设置32I/O硬件驱动器

打开32I/ODMA只能由root执行。为了减少出错重启时对文件系统的损害,最好以单用户模式进行。

例如,要在第一IDE硬盘hda上激活32I/O,能够用下面的命令首先检查硬件驱动器的I/O状况。

$hdparm -t /dev/hda

若是要显示当前I/ODMA配置,命令分别以下:

$hdparm -c /dev/hda

$hdparm -d /dev/hda

开启32I/ODMA的命令以下:

$hdparm -c 1 /dev/hda

$hdparm -d 1 /dev/hda

让配置生效的命令以下:

$hdparm -k 1 /dev/hda

若是要使新的设置在每次从新启动系统时生效,应该在文件/etc/rc.d/rc.local结尾加入下面的命令:

hdparm -c 1 -d 1 -k 1/dev/hda

在执行上述操做之后,硬盘的性能就能够有大幅度提升。

6.7使用打印机

Linux是一个多用户系统,于是它的打印比较复杂。本节主要讲述Linux下打印机的安装\工做的原理、打印命令和KDE中提供的关于打印工做的管理和配置工具。

6.7.1安装远程打印机

若是要安装一个远程打印机,应该确认本身的主机有权使用远程打印机。权限设置定义在/etc/host.lpd(较安全)或/etc/hosts.equiv(较不安全)中。这些文件简单地列出了主机名称,每一行定义一个主机。例如:

hacker

mars

要快速查看主机中的打印信息,能够查看文件/etc/printcap

$cd/etc/

$cat printcap

下面是文件/etc/printcap的示例。

#LOCAL

djet500lp:\

:sd=/var/spool/lpd/dj:\

:mx # 0:

:lp = /dev/lp0:\

:sh:

其中,“:”为字段分隔符,“\”表示行尾,继续接下一行。djet500lp为打印机名称。sd参数行指定的路径/var/spool/lpd/djspool目录。mx#0为打印做业最大长度,以块为单位,“0”表明无限制。sh说明进行头部压缩。打印头部是打印工做前带有用户名字及信息的打印页。lp=/dev/lp0为本机设备名。/dev/lp0是红旗Linux2.0第一并行端口的设备文件。if=/var/spool/lpd/lp/filter为输入过滤程序名称,打印做业在送往打印机前先过滤。

6.7.2Linux下的打印工做

DOS下,用户经常使用直接向打印机输出的方法来打印。也就是用户直接控制打印程序,完成打印操做,这种方法实现起来比较简单。可是因为DOS仅仅是单用户的操做系统,运行状况比较简单,处理问题才会如此容易。而Linux被设计成一个多用户的操做系统,必须考虑多个用户同时进行打印时,对打印机资源进行竞争的状况,于是比较复杂。在Linux中打印工做有一套较为复杂的机制,下面将对其进行介绍。

1.假脱机

Linux采用了假脱机(spooling)的打印方法。即当用户打印一个文件时,打印文件的输出并不直接输送到打印机上,而是先送到一个“spool”目录下,而后由一个负责打印的后台进程把这些数据再送入打印机。这样作避免了多个用户的打印做业之间的互相干扰,能够说是Linux系统对打印做业进行统一的管理和调度。

2.打印缓冲区目录

spool”目录称为缓冲区目录。Linux中有许多有缓冲区的进程,负责打印的进程lpd在“spool”目录下有本身的缓冲区。红旗Linux在安装时设置的打印缓冲区目录是/var/spool/lpd”,要打印的数据在被打印以前先送到这里。一般每一台打印机在缓冲区目录下都有一个与这台打印机同名的打印机目录,该目录中专门存放关于该打印机的文件。例如,系统以“/var/spool/ipd”做为系统的打印缓冲区目录,一台叫“hp”的hp4L激光打印机所拥有的打印机目录即是“/var/spool/lpd/hp”。

3.打印机守护进程

Linux中负责后台打印文件操做的是一个名为lpd的打印机守护进程,它在系统启动后便被激活,常常扫描打印缓冲区以查看有无须要打印的新文件。若是存在新文件,就按先进先出的顺序打印缓冲区中的文件。

4.网络打印

Linux系统中使用的打印机能够是本地打印机,也能够是网络打印机,还能够是UNIX主机上的打印机上或连在Windows服务器(只要提供Samba/LAManager服务)上的打印机。只要给出正确的服务器节点名称和打印机的名称,并进行了正确的网络通信协议的配置,就能够将网络上的打印机像本地打印机同样对待。

5.打印配置文件

Linux系统中将对打印机的配置放在了“/etc/printcap”文件中,这是一个文本文件,若是用户以“root”身份登陆系统的话,能够直接编辑这个文本,在这里能够设定打印机的名称、使用的设备(并口)、所用的打印缓冲区目录等。对于网络打印机,还要指定打印机所属的计算机名称。

6.7.3命令行方式下的打印操做

Linux系统提供了一组有关打印的命令。通常状况下,打印命令使用默认打印机。默认打印机是由PRINTER环境设定的。用户也能够在命令行上指定要使用的打印机。

1lpd命令

lpd命令是假脱机打印命令。该命令将打印做业放到打印缓冲队列中,并向lpd守护进程发送消息,提出打印请求。Lpd扫描“/etc/printcap”文件,查询打印对应的缓冲区目录,而后由lpd控制打印,将须要打印的数据从缓冲区送到打印机上进行打印。

lpd命令的格式为:

lpd[-P printer][#num][数据格式选项][其余选项][name]

命令中各选项的含义以下:

-p:指定打印机。若是不用此选项,则使用默认打印机或环境变量PRINTER指定的打印机。

-m:打印完毕后发送e-mail

数据格式选项:对于要打印的文件,指定文件数据的格式,便于lpd进行处理和转换。默认状况下,认为是标准的文本文件。详细状况请参见lpd的帮助。

-#num:打印文件的份数。

name:打印文件名。

2lpq命令

lpq是缓冲队列检查命令,它经过lpq在缓冲区中检查打印文件,报告指定做业的状态或指定用户的做业。Linux中将每个打印任务称为一个做业,为它分配一个做业标识号(做业ID),标识一个特定的做业。

Lpq命令的格式为:

Lpq[-l][-p printer][jod#][user…]

命令中各选项的含义以下:

-p:指定一个打印机,不然使用默认打印机。

l:打印做业队列中的全部文件的信息。

Jod:须要查询的打印做业号。

User:指定用户名,查询他的打印做业。

上述参数和选项能够组合使用,以明确查询所要换的打印做业。

对提交的每个做业,lpq报告用户名、在队列中的级别、组成做业的文件、标识号以及总的打印数据的多少等信息。不带任何参数的lpq命令显示如今队列中的全部做业。

3lprm命令

lprm命令用于从缓冲队列中删除打印做业。用户能够使用该命令从缓冲队列中删除属于本身的一个或多个打印做业。

Lprm命令的格式为:

lprm[-p printer][-][jod#][user…]

命令中各选项的含义以下:

-p:指定一个打印机,不然使用默认的打印机。

-:删除用户全部的打印做业。

User:删除队列中属于用户“user”的做业(只有超级用户能够这样作)。

jod#jod是做业号,经过指定做业号“#”删除某个打印做业。

例:若是刚刚提交了若干个文档去打印,突然发现其中有一个文档须要修改,必须取消对该文档的打印,如何操做呢?

1)执行“lpql”命令,若是使用用户名和打印机名做进一步的限制更好。以后从该命令的输出结果中能够查询到所要找的文件,记住它的做业号。假设该文件做业名为“job”。

2)而后,执行“lprmjob”,其中“job”是该做业的做业号,即可以从打印队列中删除对该文件的打印。

6.7.4KDE中打印机的操做和管理

在红旗LinuxKDE环境下,提供了两个图形化的配置和管理工具:printCfgKlpq,使用它们能够完成通常的打印任务。

1.打印机配置(printCfg

printCfg是红旗Linux控制中心的组件之一,它能够完成如下的管理和配置的任务。

增长打印机

增长系统中能够使用的打印机,有3种类型可供选择:Local(本地打印机),Remote(远端UNIX),SMBsamba/LANManager打印机)。此外,还能够为本地打印机指定厂商和类型等参数,从而使用在系统中安装过的驱动程序。

删除打印机

将不可修改打印机的配置从系统中去掉。

修改打印机配置

能够修改打印机的配置参数,包括打印机的队列名、缓冲区目录、打印机参数、网络参数等。

2.显示打印队列(Klpq

启动Klpq的菜单命令能够在主程序菜单下找到。Klpq是集成了lpqlpqrm和其余管理打印任务的命令所具备的功能,为系统管理员提供了一个集中管理打印做业的工具。经过它能够显示出当前系统中正在执行的打印做业,能够将不想要的打印做业删除,还能够改变打印做业在打印队列中的前后次序。

6.8配置和使用声卡

用命令sndconfig会弹出配置声卡的对话框,根据提示便可完成配置。若是sndconfig不能正确配置您的声卡,能够启动alsaconf来配置。要了解更多的信息,请参见附录配置和使用声卡的进一步讨论。

6.9使用外设的若干常见问题

1.如何让内核检验到两块网卡?

当有两块网卡时,在lilo.conf里加上:append="ether=0,0,eth1"

当有三块网卡时,则为:append="ether=0,0,eth1eth0,0,eth2"

固然这是不知道网卡ioirq的状况下这么设的,若是知道,通常采用ether=#irq,#io;

2.为何不能看到Windows CDROM的长文件名?

若是您有一片CDROM,上面有Windows可看到,但Linux看不到长文件名,那么这片光盘可能使用Microsoft专属的Joliet文件系统格式。Microsoft制定了一种叫JolietISO CDROM文件系统延伸格式。它容许使用16-bitUNICODE编码的长文件名。从2.0.34版核心起,Linux核心已支持MicrosoftJoliet文件系统格式。必须在核心中启用它。若是要用使用的语言(nativelanguage)正确地显示在JolietCDROM上的文件名,也须要在核心中支持相应的NLSISO8859字元集。

3.在CD上有隐藏文件,没办法读有些CD的一些文件设定为隐藏。这些文件正常状态是看不到的。不过若是您挂装时使用了“unhide”选项,那么就能够读取了。

4.装好Linux后,CDROM不能用了最多见的症状是先用Linux安装时,Linux认可您的CDROM。但装完后,从软盘或硬盘开机却又不能用它了。

最大的可能就是多数Linux套件中,装在硬盘的核心不必定和安装片用的同样。您选了支持您设备的安装片,在硬盘上安装的倒是不支持CD-ROM的“通用版”核心。

解决方法是重编译核心,肯定您须要的CD-ROM驱动程序及其余须要的部分(如SCSI卡,ISO-9660文件系统)都编进去了。

若是安装时用了命令列参数(如“hdc=cdrom”),要把它加进开机载入程序的设定文件中(一般是/etc/lilo.conf)。

5.关机时,为何光驱托盘自动退出来?

sbpcd驱动程序支持在卸下盘片时自动退片的功能。在旧版核心中这也是预设值。若是您下了关机指令,那么挂上的CD就会被卸下,而后就会退片。

这样在换片时就会很方便。若是在托盘打开状态下挂上或读取CD,那么它也会自动进片。

有时这项功能会形成问题(如cdplayworkbone)。在1.1.60版核心中您能够用软件决定要不要用这功能。有一个例程序包含在sbpcd的文件里。(或者用[52]eject程序)。能够经过修改核心源代码sbpcd.h文件,改变预设的行为。

6.没有root身份的人,如何挂上及卸下光驱

多数mount命令支持user选项。假设在/etc/fstab里加入了这样一行:

/dev/sbpcd  /mnt/cdrom iso9660 user,noauto,ro

那么普通使用者就能够像下面这样挂上或卸下这台机器的资料:

%mount /mnt/cdrom

%umount /mnt/cdrom

挂上程序将会加上一些额外选项以确保系统安全,例如:程序不许执行,盘片上的设备文件将失效(不予理会);若是这些限制过严了,您能够加入额外的选项(如“exec”选项可让上面的程序可执行)。

另外一个办法就是使用usermount软件。它容许非root的使用者挂上或卸下可移除设备,如软盘及CDROM等,但限制对其余设备的动做(如硬盘分区)。

ftp.cdrom.com里有mount.c的源代码,容许通常使用者挂上或卸下CDROM

setuid是指将执行文件执行时的权限变成和文件全部人相同。普通执行文件执行时,权限是执行者的权限,这样的话不少程序都不能跑。如:用户不能修改/etc/passwd,因此不能变动密码。而若是setuid,该文件又是root全部,这种执行文件就有root权限了。像passwd程序就是靠这个改密码的。不过setuid反过来也多是系统安全的主要漏洞。

习题

1.上述命令执行以后,Linux报告出错信息,则可能的缘由是:()

A/mnt/cdrom不存在

B/mnt/cdrom为空

C/dev/cdrom设备不存在

D.当前目录是安装点/dev/cdrom

2$mounttauto/dev/fd0/mnt/floppy命令执行成功后:()

A.软盘的文件出如今/mnt/floppy目录下

B/mnt/floppy目录下的文件对全部用户可读

C/mnt/floppy目录下的文件对全部用户可写

D/mnt/floppy目录下的文件对全部用户可执行

7章多用户管理及用户安全

本章内容提要

要求掌握添加用户和用户组,删除用户和用户组,配置用户和用户组权限,掌握限制用户对主机使用的方法,了解PAM

当一台计算机为多人所用时,一般须要区分用户,例如,使我的文件保持我的化。即便计算机只为一人所用,这一点也很重要。所以,每一个用户拥有一个单独的用户名,这个名字用于登陆。

本章重点内容

☆用户管理

☆用户组管理

☆用户安全

7.1用户类别

标准用户:

也能够称之为普通用户。对普通用户来讲,他在硬盘上能够进行写操做的地方可能只有本身的主目录。它位于“/home/用户名”下。其中/home目录保存全部用户文件,包括用户设置程序、配置文件、文档数据,netscape的缓存文件以及用户邮件等等。普通用户仅仅能够在本身的主目录下建立新的子目录来组织本身的文件,而且在没有赋予其余用户普通用户权限的状况下,其余用户是无权读写您主目录下的内容的。除了本身的主目录外,普通用户能够查找﹑读﹑执行系统内其余目录中的文件,可是通常状况下他们不能修改或移动这些文件。

标准用户组:

标准用户组是由不少标准用户组成的一个组。在系统中能够有不少个标准用户组。在同一个标准用户组内的用户能够具备小组的存取许可权限,能够使用组内的共享文件。

私有用户组:

该用户不属于任何一个现有的标准用户组,或者有的用户可能时常须要独自为一个小组;有的用户可能有一个SGID程序,须要独自为一个小组。这些用户能够称之为私有用户。由他们所构成的组称为私有用户组。

7.2用户管理

7.2.1添加用户

这里介绍三种方法:

1.用useradd命令,

注意执行完毕也须要执行passwd username

例:

useradd lxh

passwd lxh

下面输入lxh的密码并确认。

2vi/etc/passwd

加入下面一行:

用户名:密码:UID:GID:用户全名:用户HOME目录:用户的Shell

好比:

test::500:500:TestUser:/home/test:/bin/bash

注意:

1)密码必定什么也不填。

2)用户的HOME目录必定要存在,否则用户没法登录。

3UID不要和其余用户的相同。

4)若是密码是通过shadow的,须要执行一下pwconv,以便把新加的密码转换成正确的合适。并更新/etc/shadow,而后须要执行passwdUSERNAME,以设定用户密码。

3.用红旗Linux linuxconfuserconf

思考:如何建立无密码用户呢?

能够使用passwd -d USERNAME命令完成之。USERNAME用实际的用户名代替或者

编辑/etc/passwd文件,把该用户对应行的第一个冒号和第二个冒号之间的部分删除。若是有

/etc/shadow文件存在,也须要作与对/etc/passwd文件相同的操做。

7.2.2权限设置

1.用户权限需求分析

红旗Linux采用了将管理员和普通用户分开的策略。这种策略保证了系统的健壮性,同时也使红旗Linux下的病毒难以编写(用户编写的程序仅对本身的目录有写权限,而与操做系统的其余部分是隔离开的)。

首先必须对用户设置访问与加入的口令,其中包括普通用户口令、组口令。若是以超级用户注册的话,还有超级用户的口令。口令是用一个单向加密算法加密的,而且将加密结果保存在文件/etc/passwd中。而原始口令并不保存。

对于普通用户的权限,只能在本身的主目录下建立新的子目录来组织本身的文件,若是在别的普通用户没有授予他用户权限的状况下,他无权读写其余用户主目录下的内容。不过能够查找﹑读﹑执行系统内其余目录中的文件,只是不能修改或移动这些文件。

同时对于标准用户组以及私人用户组内的安全,以及组内用户的读写、以及程序的运行权限都须要进行设置。此外,还应该有超级用户的权限的操做命令。

2.权限设置方式

创建用户

首先来介绍普通用户的创建。超级用户root能够建立新的用户帐号,例以下面的命令将创建一个名为joe的新用户:

#adduserjoe

#passwdjoe(键入joe的口令)

设置及修改口令

系统管理员能够经过配置程序来设定口令的安全策略,例如您能够以root身份启动linuxconf实用程序:#linuxconf。在菜单【useraccount】→【policies】→【password & account

policies】下配置口令。root能够在不知道用户当前口令的前提下,修改任何一个用户的口令。注册时键入的口令被一个单向加密算法计算,并将结果与保存在/etc/passwd中的值进行比较。正确的话,用户就能够登陆系统。

用户在第一次注册时,可修改本身的口令命令,以下所示:

$passwd

(current)Unix Password[键入老的口令字]

New Unix Password[键入新的口令字]

Retype New UNIX password[再一次键入新的口令字]

出于安全考虑您键入的口令是不会回显在屏幕上的。

若是普通用户忘记了本身的口令,可让root修改该用户的口令。例如要修改用户susan的口令,命令以下:

#passwd susan

该命令将提示输入用户susan的新的口令,它不须要输入旧的口令来确认。

此外,若是在/etc/passwd中有的口令项前有*号,这意味着此帐号暂时不可用。当您想恢复这一帐号时,只要删除这个星号,这个帐号就能够用原来的口令注册了。

3.文件的访问权限的设置

能够用“lsl”命令显示任何文件全部者和全部者组。(“-l”选项表示以长格式显示)。

例如执行以下命令:

$ls -l junk

-rwx----- -1 yogin inca 27 Apr 24 14:12 junk

将显示文件junk的全部者为yogin,全部者所在组为inca。通常说来只有文件的全部者和root才能删除该文件(其余用户只有被授予了相应权限后才能够删除)。

文件的全部者能够经过命令chown改变全部者和chgrp改变所处的组。不过这些命令一般是root使用的,例如执行如下两条命令权限:

#chown peter junk

#chgrp peter junk

显示改变为

$ls -l junk

-rwx----- -1 peter peter 27 Apr 25 20:27 junk

将文件junk的全部者由yogin变为peter,全部者所在的组由inca变为peter

能够使用命令chmod修改您全部的文件的权限,用如下命令:

$chmod a+r junk

a”表示全部的用户,此外还能够用“u”“g”或“o”,其中“u”表示文件全部者,“g”表示同组用户;“o”表示其余用户。

+”表明增长,此外还能够用“-”(表示禁止)、“=”(设置某个权限)。“r”表示可读,此外还能够设置“w”(可写)和“x”(可运行)权限。除了使用字母“r”“w”和“x”设置权限,您也能够使用数字代替。其中读(read)的权限值为4;写(write)的权限值为2;执行(execute)的权限值为1。因此4表明“只读”,5表明“读和执行”,6表明“读和写”,7表明“读写和执行”。例如命令:

$chmod 666 junk:将会给全部用户读和写的权限;

$chmod 411 junk:赋予文件全部者读权限,对同组用户和其余用户赋予执行权限。

修改新建文件的默认文件权限,命令以下:

$umask u=rwx g= o=

它会在建立新文件时,给文件全部者以所有权限,而同组用户及其余用户没有任何权限。在umask中的数字设置方式与chmod命令相反,它表明的是要禁用的权限。所以umask 000会给所有用户赋予新建立文件的所有权限,而命令umask 077会给文件全部者所有权限而其余人什么权限也没有。

7.2.3删除和查封用户

删除一个用户必须:

1)删除/etc/passwd文件中此用户的记录。

2)删除/etc/group文件中说起的此用户。

3)删除用户的主目录。

4)删除此用户建立或属于此用户的文件。

userdel命令删除用户及其主目录。

例:删除用户lxh及其主目录

userdel -r lxh

此用户相关的文件如邮箱和crontab文件,必须手工删除。下面的命令:find/-user username -ls,能够迅速找到与某用户相关的文件。

注意:使用该命令的时候,/etc/passwd文件中必须有username的记录。若是已经删除了用户username,则换成以下的格式:find/-uidnumls.num是已经删除了用户的UID

临时查封一个用户有两种方法:

1)把用户的记录从/etc/passwd中去掉,保留主目录和其余文件不变。

2)在/etc/passwd(或/etc/shadow)文件中在该用户的passwd域的第一个字符前面加上一个“*”。

例:临时查封用户lxhlxh:*gERo4lxhBzleUc:10084:0:180:7:::

7.2.4超级用户

1.超级用户的权限

超级用户属于系统指定的特殊用户,一般也称为root用户。一些系统管理命令只能由超级用户运行。超级用户拥有其余用户所没有的特权。对于root用户,权限上没有任何限制,它不只能够读、写或者删除系统中的任何文件并且能够修改文件的权限以及全部者。

此外root用户还能够运行一些特殊的程序,如给磁盘分区,创建文件系统等。系统管理员一般使用命令:/bin/su或以root进入系统从而成为超级用户。

2.超级用户的管理

系统管理员以root帐户登陆到系统中,能够完成普通用户不能完成的任务。因为root可以做任何事情,于是在这个帐户下,很容易因为操做失误而形成灾难性的后果。做为通常的用户,若是不当心使用了删除etc目录中全部文件的命令,系统将不容许您这样作。可是对于以root帐户登陆的用户,系统将对其操做不加任何限制,所以使用root帐户时,稍有不慎就容易致使系统的崩溃,于是为了不事故,须要对超级用户的使用进行有效的管理,较好的方法是:

在多用户系统下不让普通用户经过root帐户登陆,只容许系统管理员以root登陆。能够经过口令设置来实行。

root帐户提供一个不一样于普通用户帐户的提示符。这时须要修改root帐户下的.bashrc.login文件,把Shell提示符设置成不一样于普通帐户的提示符。

只有在彻底必要的状况下才使用root帐户登陆。一旦做为root用户完成所需工做,就及时推出。使用的root帐户越少,对系统形成损害的可能性就越小。

不要习惯使用root帐户。由于习惯在root帐户中操做,就有可能将root中的权限和普通用户的权限混淆,从而致使没必要要的损害。如,在某个用户名下,用户自觉得是普通用户时,可能其实是以root用户登陆。

3.使用su命令改变身份

用户在使用过程当中能够随时使用susetuser的缩写)命令来改变身份。例如,root帐号通常用于系统管理,使用root帐号时必须特别当心以防损坏系统。所以,管理员在平时工做时能够用普通帐号登陆,而在进行系统维护时用su命令得到root权限,维护完毕后再用su切回原帐号。更为重要的是,考虑到系统安全问题,红旗Linux系统默认不容许以root身份进行远程登陆(telnet),若是管理员要从客户机上进行远程管理,就必须先以普通用户登陆,而后再用su得到root权限。

su的用法以下:

#su [username]

username是要切换到的用户名,若是省略usernamesu默认将用户身份切换至root,固然须要给出正确的密码。只有root用户使用su时才不须要密码。

4.找回root口令

root口令丢了,彻底不必重装。解决办法:用红旗Linux启动盘启动,进入到安装状态,而后把文件系统mount到一个目录里,如/mnt里,随后修改/etc/passwd便可。或者干脆在lilo出现的时候,输入linuxsingle(或者是singlelinux)登录进去之后,改/etc/passwd中的root密码就能够。

7.3用户组管理

Linux系统中,每一个用户帐号都至少属于一个用户组,每一个用户组能够包括好多个帐号。属于同一用户组的用户享有该组共有的权限(主要是文件使用权限)。例如,管理员能够建立game用户组,使该组中的用户都具备运行系统中游戏程序的权利。

7.3.1用户组的实例

在用户较多的大型系统中,使用用户组能够方便管理。有关用户组的信息存放在/etc/group文件中,下面给出一个group文件的内容:

root::0:root

bin::1:root,bin,daemon

daemon::2:root,bin,daemon

sys::3:root,bin,adm

adm::4:root,adm,daemon

tty::5:

disk::6:root,adm

lp::7:lp

wheel::10:root

floppy::11:

rootmail::12:

mailnews::13:

newsuucp::14:

uucpman::15:man

users::100:games

nogroup::-1:

group文件的内容和passwd文件的格式很像,group的每一行记录了一个群组的资料。

每一个群组的资料包括四个栏位,以“:”隔开。它们分别是:

群组名称

该群组名称,如rootbin

群组密码

设置加入群组的密码,大部分的状况下是不使用群组密码,因此这个栏位一般没有做用。

GID

群组号码,就像用户同样,群组也有本身的号码供系统识别,且每个群组的号码必定不会相同。

群组成员

这一栏记录了属于该群组成员,在大部分用户的我的群组这一栏是空的,您能够按照需求将用户加入某群组成为该群组的成员。

7.3.2将用户添加至用户组

要将一个用户帐号添加到某一工做组中,只须要修改group文件,将其用户名添加到该组的users列表中便可。

7.3.3添加用户组

使用groupadd命令添加用户组:

#groupadd[option]group

如命令sgrgupaddkpk便是在系统内新增名为kpk的群组。

7.3.4删除用户组

将群组由系统内删除。

语法:

groupdel group

例:使用groupdel命令删除用户组:

#groupdel

7.3.5设置群组密码

gpasswd可用来设置群组密码的指令。但通常状况下,使用群组密码的状况并很少,而这个命令用来管理组内的用户倒很方便,gpasswd能够把用户加入群组,能够从群组内删除。

这个指令只有root或是群组的管理员有权使用。

语法:gpasswd[option][user][group]

参数说明以下所示。

-a:将用户user加入group群组。

-d:将用户usergroup群组里删除。

-r:取消群组密码。

例:将用户kpk加入到kapak群组内。

$gpasswd -a kpk kapak

7.3.6修改群组记录

groupmod指令修改在/etc/group文件中的资料。

语法:groupmod[options]group

选项的说明以下所示。

-gGID:更改群组号码。

-nname:更改群组名称。

-o:强制接受更改的群组号码为重复的号码。

例:将群组kapak改名为kpk

$groupmod -n kpk kapak

7.3.7在用户组间切换

一个用户能够分属于不一样的用户组,用户能够使用groups命令来查看本身属于哪些用户组:

#groups[username]

username是要查看的用户名,若是省略则查看本身所属的用户组。下面的命令查看root帐号所属的工做组:

#groupsroot

root : root bin daemon sYs adm disk wheel

Linux系统规定,任何用户在任意时刻只能属于一个用户组,也就是说,在同一时刻只能享有一个用户组的权利。当用户登陆时,他所属的工做组由passwd文件中的GID字段指定。

使用newgrp命令在所属的用户组中切换,使用方法以下:

#newgrg [group]

group参数给出欲切换到的目标用户组,若是没有给出该参数,则切回登陆时所在的工做组。

7.3.8用户组权限需求分析

出于安全的要求。用户组必须保证组内的用户能够访问到组内的共享文件,而非组内的成员没有通过容许不能访问组内的信息。所以必须设置一个组的访问口令。

文件存取的权限

设置组内的用户或者是组外的用户对于文件的存取权限。

用户组的安全权限的设置

能够设置一个组的口令。

组内用户的权限设置

首先采用如下命令,能够查看文件的读写信息。

$ls -l文件名

可能会显示如下的信息:

-rwxrwxrwx

跳过第一个“-”(若是为“d”,则表明其为一目录),其中前三个字母表明文件全部者的权限,第二组三个字母表明与全部者同组人的权限,第三组为其余用户的权限。若是没授予相应权限则以“-”替代权限。上述信息代表该文件对全部用户(全部者;同组;其余人)都具有全部的权限(读、写、执行)。

利用命令“$chmod 411文件名”能够赋予用户对文件的读写以及执行的权限。例如:

$chmod 411 junk

上述命令赋予文件全部者读权限,对同组用户和其余用户赋予执行权限。

此外,文件的全部者能够经过命令chown来改变全部者和chgrp改变所处的组。可是这些命令一般是root(超级用户)使用的。

7.4用户安全

Linux是多用户的操做系统,若是一我的想运行并操做Linux的话,就必须在系统中拥有一个合法的用户帐号。如今读者应该至少已经拥有了两个帐号,一个是root,另外一个则是在安装时设定的。为了使其余人也可以使用本身的Linux,应当为他们创建帐号。

注意:只有root超级用户才能管理用户帐号,所以请读者在管理帐号前以root身份登陆。

为了管理多用户的权限,维护系统的安全,首先应该以root身份登陆。最简单的管理用户的工具是红旗usercfg/x、红旗usercfg,还有另一些命令行的管理用户工具:useradduserdelusermodusersgroupaddgroupdelgroupmodgroups。您必定想知道系统的密码系统是怎样操做的吧,如今能够来研究一个文件——/etc/passwd

7.4.1多用户访问权限控制

Linux是一个多用户的操做系统,因此它的安全和保密性是十分重要的。Linux把系统的使用者分为两种:超级用户和普通用户。超级用户用“root”名注册进入系统,他对文件的操做不受限制。普通用户对文件的操做则受到文件存取权限的限制。

文件权限是由一个十位的二进制数组成。这十位数分为四段,第一段是第一位,之后的每三位是一段。其中第一段标志该文件的类型。文件类型与其标志的关系如表7-1所示:

7-1文件类型与标志

文件类型 标志

普通文件 -

块设备文件 b

字符设备文件 c

链接文件 l

目录文件 d

套接字 s

命名管道 p

第二段是文件的全部者对该文件的存取权限。Linux给文件三种类型的存取权限:“r”,“w”,“x”,即“读”,“写”,和“执行”权限。对于文件来讲是:读文件的内容(r)、写数据到文件(w)、做为命令执行该文件(x)。对目录文件的读,写,执行权限,又与普通文件的有些不同。对目录文件的读权限表示容许查看目录内容;对目录文件的写权限表示容许在目录中创建新文件和子目录;对目录文件的执行权限表示容许用户使用cd命令转到指定目录。

第三段是该文件全部者同组的用户对文件的权限。同组用户是指与该文件全部者有关系的用户,如:同一个开发小组的用户。

第四段是其余用户对该文件的权限。其余用户通常指与文件全部者无关的用户。

文件权限如图7-1所示:

标志位 全部者 同组用户 其余用户

-bcldsp rwx rwx rwx

7-1文件权限

对每一个文件或目录都有4类不一样的用户。每类用户各有一组读、写和执行(搜索)文件的访问权限,这4类用户分别是:“超级用户”,“文件全部者”,“同组用户”,和“其余用户”。“超级用户”自动拥有了全部文件和目录的全面的读、写和搜索的权限,因此没有必要明确指定他们的权限。后三种类型的用户权限的大小是逐渐下降的,“全部者”权限最大,并由他决定“同组用户”和“其余用户”的权限。对应这三种用户,文件权限对应位置上出现的字母表示该用户拥有的权限,没有哪种权限,就在该位置上用“-”符号代替。

如:某个文件的权限为:“-rwxr-xr--”表示该文件是普通文件,文件的全部者对文件有“读”,“写”,“执行”权限;全部者的同组用户对该文件有“读”和“执行”权限;其余用户对该文件只有“读”权限,不能写,也不能执行。

在一个新文件被建立后,就有一个默认的权限,通常为“-rw-r--r”就是说文件全部者能够读写该文件,同组用户和其余用户只能读文件。同时,还能够使用下面的命令检查新建文件的默认存取权限:

umask -s

7.4.2口令安全

在任何一个Linux系统中,都有一个passwd文件,它存放在/etc目录下。这个文件存

放着全部用户帐号的信息,包括用户名和密码,所以,它对系统来讲是相当重要的。读者

能够使用以下命令查看该文件:

#cat/etc/passwd

下面是一个passwd文件的内容:

root:sWMrPGa52GO1Y:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:

daemon:x:2:2:daemon:/sbin:

adm:x:3:4:adm:/var/adm:

lp:x:4:7:lp:/var/spool/lpd:

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

mail:x:8:12:mail:/var/spool/mail:

news:x:9:13:news:/var/spool/news:

uucp:x:10:14:uucp:/var/spool/uucp:

operator:x:11:0:operator:/root:

games:x:12:100:games:/usr/games:

gopher:x:13:30:gopher:/usr/lib/gopher-data:

ftp:x:14:50:FTPUser:/home/ftp:

nobody:x:99:99:Nobody:/:

arp:GFcoDv58s4YYg:500:500:user:/home/somebody:/bin/bash

读者能够看到rootarp等帐号。

Passwd文件由许多条记录组成,每条记录占一行,记录了一个用户帐号的全部信息。

每条记录由7个字段组成,字段间用冒号“:”隔开,其格式以下:

username:password:UserID:GroupID:comment:homedirectory:Shell

各字段的涵义是:

1username:用户名,它唯一地标识了一个用户帐号,用户在登陆时使用的就是它。

2password:该帐号的口令,passwd文件中存放的密码是通过加密处理的。Linux的加密算法很严密,其中的口令几乎是不可能被破解的。盗用帐号的人通常都借助专门的黑客程序,构造出无数个密码,而后使用一样的加密算法将其加密,再和本字段进行比较,若是相同的话,就表明构造出的口令是正确的。正由于如此,笔者才建议读者不要使用生日、经常使用单词等做为口令,它们在黑客程序面前几乎是不堪一击的。特别是对那些直接连入较大网络的系统来讲,系统安全性显得尤其重要。

3UserID:用户识别码,简称UIDLinux系统内部使用UID来标识用户,而不是用户名。UID是一个整数,用户的UID互不相同。

4GroupID:用户组识别码,简称GID。不一样的用户能够属于同一个用户组,享有该用户组共有的权限。与UID相似,GID唯一地标识了一个用户组。

5comment:这是管理员给用户帐号作的注解,它通常是用户真实姓名、电话号码、住址等,固然也能够是空的。

6home directory:家目录,这个目录属于该帐号,当用户登陆后,它就会被置于此目录中,就像回到家同样。通常来讲,root帐号的家目录是/root,其余帐号的家目录都在/home目录下,而且和用户名同名。固然这个目录也能够改到别的地方。

7login command:用户登陆后执行的命令,通常来讲,这个命令将启动一个Shell程序。使用过BBS的用户都知道,用BBS帐号登陆后,会直接进入BBS系统,这是由于BBS帐号的login command指向的是BBS程序,等系统登陆到BBS时就自动运行这些命令。

1.系统默认帐号

系统中还有一些默认的帐号,如admdaemonbinsys等,读者能够在前面的passwd

文件中找到它们。这些帐号有着特殊的用途,通常用于进行系统管理,例如:

bin帐号拥有可执行文件。

sys帐号拥有可执行文件。

adm帐号拥有帐号文件(如passwd)和日志(log)文件。

在比较大型的工做站中,超级用户可能但愿将繁重的维护任务分派给其余维护人员,但又不但愿赋予他们root权限,这时这些帐号就派上用场了。这些帐号的口令大部分用星号表示,表明它们不能在登陆时使用。

2.安全密码

为了加强系统的安全性,Linux系统还能够为用户提供MD5Shadow安全密码服务。若是在安装红旗Linux服务器版的时候在相关配置的选项上选中了MD5Shadow服务,那么将看到的/etc/passwd文件和上边的例子文件稍有差异,差异就是在/etc/passwd里的passwd项上不管是什么用户,都是一个“*”,这就表示这些用户都登陆不了;系统实际上是把真正的密码数据放在了/etc/shadow文件里,用户只能以root身份来浏览这个文件。为何要这样作呢,缘由其实很简单,在系统设计的时候,/etc/passwd文件是任何人均可以读的,那么那些心有所图的人就能够利用这个文件,使用各类各样的工具按照Linux密码加密的方法把用户甚至root的密码试出来,这样整个系统就会被他所控制,严重危害系统的安全和用户数据的保密性。

/etc/passwd中存放的加密的口令用于用户登陆时输入的口令经计算后相比较,符合则容许登陆,不然拒绝用户登陆。用户可用passwd命令修改本身的口令,不能直接修改/etc/passwd中的口令部分。

一个好的口令应当至少有6个字符长,不要取用我的信息(如生日,名字,反向拼写的登陆名,房间中可见的东西),普通的英语单词也很差(由于可用字典攻击法),口令中最好有一些非字母(如数字,标点符号,控制字符等),还要好记一些,不能写在纸上或计算机中的文件中,选择口令的一个好方法是将两个不相关的词用一个数字或控制字符相连,并截断为8个字符。固然,若是能记住8位乱码天然更好。

不该使用同一个口令在不一样机器中使用,特别是在不一样级别的用户上使用同一口令,会引发全盘崩溃。用户应按期改变口令,至少6个月要改变一次,系统管理员能够强制用户按期作口令修改。为防止眼明手快的人窃取口令,在输入口令时应确认无人在身边。

7.4.3关于PAM

Linux的解决方案相似于第二个方案,叫作shadow password。在/etc/passwd文件中的密码串被替换成了’x’,组密码也同样处理。系统在使用密码文件时,发现标记会寻找shadow文件,完成相应的操做。而shadow文件只有root用户可存取。

这个办法真是既简单又可靠。可是,问题尚未完,许多程序在运行时都须要用户认证,必须修改全部这些程序,再次编译,以便支持这项技术。还有新的、更安全可靠和经济的认证技术不断出现,若是想使用这些技术,仍然须要修改许多程序。

为了达到更经济合理的目的,PAMPluggableAuthenticationModules)可插拔认证模块就应运而生了。它在须要认证的程序和实际认证机制之间引入中间件层。一旦程序是基于PAM发行的,那么,任何PAM支持的认证方法均可以用于程序。这样就没有从新编译全部程序的麻烦了,只要PAM发展了新技术,如数字签名,基于PAM的程序能够立刻使用它。这种强大的灵活性能是企业级应用不可或缺的。更进一步,普通认证手段难以完善的管理用户、会话数据等工做还能够交给PAM来作。好比,您能够很是容易地禁止某些用户在特定的时间段登陆,或要求他们登陆时使用特别的认证方式。甚至还能够把Linux工做站绑定到基于MicrosoftNT的网络中,在NT域下使用本身的Linux工做站,完成认证工做。却并不须要买额外的软件。Linux的发行版若是不是基于PAM方式发行的,那你作的工做会多一些,好比安装PAM套件,编译相应程序。

7.4.4限制用户对主机的使用

有时,不得不在主机上创建用户帐号,开放交互登陆。若是对用户使用主机不加限制,用户作的很多事情会给您形成麻烦。好比:Linux默认没有磁盘限额控制,任何一个用户都有可能把您的磁盘空间用光!再如,运行高计算强度的软件,把主机CPU处理时间统统耗光。诸如此类的事情绝对不能发生。

1.内存及CPU使用的限制

如今几乎全部的Linux都绑定了PAM,这套组件能够用来限制用户使用的内存数量。

在红旗Linux系统下的/etc/security/limits.conf文件,能够用来作此类控制。(若是没有的话,只能经过安装盘,把组件安装上去)。

此配置文件的格式是:

用户名、组名(以@开头)或“*”表示全部用户。

soft”或“hard”,soft表示限制不严格,须要时能够超过此值,但会有警告,hard

表示严格限制,不能超过此值。

cpu->占用的处理时间片单位、maxlogins->容许此用户同时登陆的个数、nproc→最大进程数等等。

对应的数字值

举例以下:

*soft core 0

*hard rss 10000

@student hard nproc20

@faculty soft nproc20

@faculty hard nproc50

ftp hard nproc0

@student -maxlogins 4

2.磁盘使用的限制

Quota是用来限制用户使用磁盘数量的。绝大多数Linux发行版本都捆绑了它,可是默认状态是关闭的。

若是不肯定核心对Quota的支持,就从新编译内核,在相应选项里面选择Quota的支持。而后

1)修改启动脚本/etc/rc.d/rc.sysinit文件,在最后面加入下面的脚本:

#Check quota and then turn quota on.

if [-x /usr/sbin/quotacheck]

then

echo "Checking quotas.This may take some time."

/usr/sbin/quota check -a vug

echo"Done."

fi

if [-x /usr/sbin/quotaon]

then

echo"Turning on quota."

/usr/sbin/quotaon -avug

fi

注意:必须在/etc/fstab里面的文件系统装载后再打开Quota,不然Quota不起做用。

2)修改/etc/fstab文件

通常没有加入Quota时像这样:

/dev/hda5/ext2 defaults 1 1

/dev/hda7/usr ext2 defaults 1 1

在包含"defaults"这个字的第四个栏位加上"usrquota"

/dev/hda5/ext2 defaults 1 1

/dev/hda7/usrext2 defaults,usr quota 1 1

若是须要在一文件系统中开启群组quota支持,将"usrquota"改成:

"grpquota"

/dev/hda5/ext2 defaults 1 1

/dev/hda7/usr ext2 defaults,grp quota 1 1

若是要同时支持使用者quota与群组quota的话

/dev/hda5/ext2 defaults 1 1

/dev/hda7/usr ext2 defaults,usr quota,grp quota 1 1

3)创建相应配置文件

在加入了Quota的分区根目录下使用下列命令建立文件。这些文件只能容许root用户

读写,其余用户没有任何权限。

touch/partition/quota.user

touch/partition/quota.group

chmod600/partition/quota.user

chmod600/partition/quota.group

4)从新启动并编辑用户限额

使用edquota命令。

edquota -u xxxxxx指用户名称)或edquota -g xxxxxx指组名称)会带你进入VI编辑器,编辑相应内容便可。“man edquota”能够查看细节内容。

3.文件许可权

文件属性决定了文件的被访问权限,即谁能存取或执行该文件。用ls -l能够列出详细的文件信息,如:

-rwxrwxrwx 1 pat cs440 70 Jul 28 21:12 zombin包括了文件许可,文件连接数,文件全部者名,文件相关组名,文件长度,上次存取日期和文件名。

其中文件许可分为四部分:

-:表示文件类型。

第一个rwx:表示文件属主的访问权限。

第二个rwx::示文件同组用户的访问权限。

第三个rwx:表示其余用户的访问权限。

若某种许可被限制则相应的字母换为-

在许可权限的执行许可位置上,多是其余字母:sStTsS可出如今全部者和同组用户许可模式位置上,与特殊的许可有关,后面将要讨论,tT可出如今其余用户的许可模式位置上,与“粘贴位”有关而与安全无关。小写字母(xst)表示执行许可为容许,负号或大写字母(-ST)表示执行许可为不容许。

改变许可方式可以使用chmod命令,并以新许可方式和该文件名为参数。新许可方式以38进制数给出,r4w2x1。如rwxr-xr--754

chmod也有其余方式的参数可直接对某组参数修改,在此再也不多说,详见UNIX系统的联机手册。

文件许可权可用于防止偶然性地重写或删除一个重要文件(即便是属主本身)!

改变文件的属主和组名可用chownchgrp,但修改后原属主和组员就没法修改回来了。

4.目录许可

UNIX系统中,目录也是一个文件,用ls-l列出时,目录文件的属性前面带一个d

目录许可也相似于文件许可,用ls列目录要有读许可,在目录中增删文件要有写许可,进入目录或将该目录做路径份量时要有执行许可,故要使用任一个文件,必须有该文件及找到该文件的路径上全部目录份量的相应许可。仅当要打开一个文件时,文件的许可才开始起做用,而rmmv只要有目录的搜索和写许可,不需文件的许可,这一点应注意。

5umask命令

umask设置用户文件和目录的文件建立默认屏蔽值,若将此命令放入.profile文件,就可控制该用户后续所建文件的存取许可。umask命令与chmod命令的做用正好相反,它告诉系统在建立文件时不给予什么存取许可。

6.设置用户ID和同组用户ID许可

用户ID许可(SUID)设置和同组用户ID许可(SGID)可给予可执行的目标文件(只有可执行文件才有意义)当一个进程执行时就被赋于4个编号,以标识该进程隶属于谁,分别为实际和有效的UID,实际和有效的GID。有效的UIDGID通常和实际的UIDGID相同,有效的UIDGID用于系统肯定该进程对于文件的存取许可。而设置可执行文件的SUID许可将改变上述状况,当设置了SUID时,进程的有效UID为该可执行文件的全部者的有效UID,而不是执行该程序的用户的有效UID,所以,由该程序建立的都有与该程序全部者相同的存取许可。这样,程序的全部者将可经过程序的控制在有限的范围内向用户发表不容许被公众访问的信息。

一样,SGID是设置有效GID。用chmod u+s文件名和chmod u-s文件名来设置和取消SUID设置。用chmod g+s文件名和chmod g-s文件名来设置和取消SGID设置。当文件设置了SUIDSGID后,chownchgrp命令将所有取消这些许可。

7cpmvlncpio命令

cp拷贝文件时,若目的文件不存在则将同时拷贝源文件的存取许可,包括SUIDSGID许可。新拷贝的文件属拷贝的用户全部,故拷贝别人的文件时应当心,不要被其余用户的SUID程序破坏本身的文件安全。

mv移文件时,新移的文件存取许可与原文件相同,mv仅改变文件名。只要用户有目录的写和搜索许可,就可移走该目录中某人的SUID程序且不改变其存取许可。若目录许可设置不正确,则用户的SUID程序可被移到一个他不能修改和删除的目录中,将出现安全漏洞。

ln为现有文件创建一个链,即创建一个引用同一文件的新名字。如目的文件已经存在,则该文件被删除而代之以新的链,或存在的目的文件不容许用户写它,则请求用户确认是否删除该文件,只容许在同一文件系统内建链。若要删除一个SUID文件,就要确认文件的连接数,只有一个链才能确保该文件被删除。若SUID文件已有多个链,一种方法是改变其存取许可方式,将同时修改全部链的存取许可,也能够chmod000文件名,不只取消了文件的SUIDSGID许可,并且也取消了文件的所有链.要想找到谁与本身的SUID程序创建了链,不要马上删除该程序,系统管理员可用ncheck命令找到该程序的其余链。

cpio命令用于将目录结构拷贝到一个普通文件中,然后可再用cpio命令将该普通文件转成目录结构。用-i选项时,cpio从标准输入设备读文件和目录名表,并将其内容按档案格式拷贝到标准输出设备,使用-o选项时,cpio从标准输入设备读取先已建好的档案,重建目录结构。cpio命令经常使用如下命令作一完整的目录系统档案:

find fromdir -print|cpio-o>archive

根据档案文件重建一个目录结构命令为:

cpio -id<archive

cpio的安全约定以下:

档案文件存放每一个文件的信息,包括文件全部者,小组用户,最后修改时间,最后存取时间,文件存取许可方式。

1)根据档案创建的文件存放于档案中的存取许可方式。

2)从档案中提取的每一个文件的全部者和小组用户设置给运行cpio -i命令的用户,而不是设置给档案中指出的全部者和小组用户。

3)当运行cpio -i命令的用户是root时,被创建的文件的全部者和小组用户是档案文件所指出的。

4)档案中的SUID/SGID文件被重建时,保持SUIDSGID许可,若是重建文件的用户不是rootSUID/SGID许但是档案文件指出的用户/小组的许可。

现存文件与cpio档案中的文件同名时,若现存文件比档案中的文件更新,这些文件将不被重写。

若是用修改选项U,则同名的现存的文件将被重写。可能会发生一件很奇怪的事:如被重写的文件原与另外一个文件建了链,文件被重写后链并不断开,换言之,该文件的链将保持。所以,该文件的全部链实际指向从档案中提取出来的文件,运行cpio无条件地重写现存文件以及改变链的指向。cpio档案中可含的全路径名或父目录名给出的文件。

8sunewgrp命令

1su命令:可没必要注销户头而将另外一用户又登陆进入系统,做为另外一用户工做。它将启动一个新的Shell并将有效和实际的UIDGID设置给另外一用户。所以必须严格将root口令保密。

2newgrp命令:与su类似,用于修改当前所处的组名。

9.文件加密

crypt命令可提供给用户以加密文件,使用一个关键词将标准输入的信息编码为不可读的杂乱字符串,送到标准输出设备。再次使用此命令,用同一关键词做用于加密后的文件,可恢复文件内容。

通常来讲,在文件加密后,应删除原始文件,只留下加密后的版本,且不能忘记加密关键词。在vi中通常都有加密功能,用vi-x命令可编辑加密后的文件。关于加密关键词的选取规则与口令的选取规则相同。因为crypt程序可能被作成特洛依木马,故不宜用口令作为关键词。最好在加密前用packcompress命令对文件进行压缩后再加密。

7.4.5其余安全问题

用户的.profile文件

因为用户的HOME目录下的.profile文件在用户登陆时就被执行。若该文件对其余人是可写的则系统的任何用户都能修改此文件,使其按本身的要求工做。这样可能使得其余用户具备该用户相同的权限。

ls -a

此命令用于列出当前目录中的所有文件,包括文件名以“。”开头的文件,查看全部文件的存取许可方式和文件全部者,任何不属于本身但存在于本身的目录中的文件都应怀疑和追究。

.exrc文件

为编辑程序的初始化文件,使用编辑文件后,首先查找$HOME/.exrc文件和./.exrc文件,若该文件是在$HOME目录中找到,则可像.profile同样控制它的存取方式,若在一个本身不能控制的目录中,运行编辑程序,则可能运行其余人的.exrc文件,或许该.exrc文件存在那里正是为了损害他人的文件安全。为了保证所编辑文件的安全,最好不要在不属于本身或其余人可写的目录中运行任何编辑程序。

暂存文件和目录

UNIX系统中暂存目录为/tmp/usr/tmp,对于程序员和许多系统命令都使用它们。若是用这些目录存放暂存文件,别的用户可能会破坏这些文件。使用暂存文件最好将文件屏蔽值定义为007,但最保险的方法是创建本身的暂存文件和目录:$HOME/tmp,不要将重要文件存放于公共的暂存目录。

UUCP和其余网络

UUCP命令用于将文件从一个UNIX系统传送到另外一个UNIX系统,经过UUCP传送的文件一般存于/usr/spool/uucppublic/login目录,login是用户的登陆名,该目录存取许可为777,经过网络传输并存放于此目录的文件属于UUCP全部,文件存取许可为666777,用户应当将经过UUCP传送的文件加密,并尽快移到本身的目录中。其余网络将文件传送到用户HOME目录下的rjc目录中。该目录应对其余人是可写可搜索的,但没必要是可读的,于是用户的rjc目录的存取许可方式应为733,容许程序在其中创建文件。一样,传送的文件也应加密并尽快移到本身的目录中。

特洛依木马

UNIX系统安全中,用特洛依木马来表明一种程序,这种程序在完成某种具备明显意图的功能时,还破坏用户的安全。若是PATH设置为先搜索系统目录,则受特洛依木马的攻击会大大减小。如模似的crypt程序。

诱骗

相似于特洛依木马,模拟一些东西使用户泄漏一些信息。不一样的是,它由某人执行,等待无警觉的用户来上当。如模拟的login

计算机病毒

计算机病毒经过把其余程序变成病毒从而传染系统,能够迅速地扩散。特别是系统管理员的粗枝大叶,做为root运行一个被感染的程序时。实验代表,一个病毒可在一个小时内(平均少于30分钟)取得root权限。

离开本身已登陆的终端

要离开本身已登陆的终端,除非能对终端上锁,不然必定要注销户头。

智能终端

因为智能终端有sendenter换码序列,告诉终端送当前行给系统,就像是用户敲入的同样。这是一种危险的能力,其余人可用write命令发送信息给本用户终端,信息中如含有如下的换码序列:移光标到新行(换行),在屏幕上显示"rm -r *"

将该行送给系统,后果你们能够想像。禁止其余用户发送信息的方法是使用mesg命令。

mesgn不容许其余用户发信息,mesgy容许其余用户发信息。即便如此还是有换码序列的问题存在,任何一个用户用mail命令发送一样一组换码序列,不一样的要用!rm -r *替换rm -r *.mail将以!开头的行解释为一条Shell命令,启动Shell,由Shell解释该行的其余部分,这被称为Shell换码。为避免mail命令发送换码序列到本身的终端,可创建一个过滤程序,在读mail文件以前先运行过滤程序,对mail文件进行处理:

myname="$LOGNAME";

tr -d [\001-\007][-\016-\037]>$HOME/mailbox;

>/usr/mail/$myname;

mail -f $HOME/mailbox

其中tr将标准输入的字符转换手写到标准输出中。这只是一个简单的思路,从原则上来讲,此程序应为一C程序,以免破坏正发送到的文件,可用锁文件方式实现。

断开与系统的链接

用户应在看到系统确认用户登陆注销后再离开,以避免在用户未注销时由他人潜入。

cu命令

该命令使用户能从一个UNIX系统登陆到另外一个UNIX系统,此时,在远地系统中注销用户后还必须输入"~"后回车,以断开cu和远地系统的链接。cu还有两个安全问题:

1)如本机安全性弱于远地机,不提倡用cu去登陆远地机,以避免因为本地机的不安全而影响较安全的远地机。

2)因为cu的老版本处理"~"的方法不完善,从安全性强的系统调用安全性弱的系统时,会使弱系统的用户使用强系统用户的cu传送强系统的/etc/passwd文件,除非确信正在使用的cu是正确版本,不然不要调用弱系统。

保持用户安全的要点

1)保持口令的安全。

◆不要将口令写下来。

◆不要将口令存于终端功能键或MODEM的字符串存储器中。

◆不要选取显而易见的信息做口令。

◆不要让别人知道。

◆不要交替使用两个口令。

◆不要在不一样系统上使用同一口令。

◆不要让人看见本身在输入口令。

2)不要让本身的文件或目录可被他人写。

◆若是不信任本组用户,umask设置为022

◆确保本身的.profile除本身外对他人都不可读写。

◆暂存目录最好不用于存放重要文件。

◆确保HOME目录对任何人不可写。

uucp传输的文件应加密,并尽快私人化。

3)若不想要其余用户读本身的文件或目录,就要使本身的文件和目录不容许任何人读。

umask设置为006/007

◆若不容许同组用户存取本身的文件和目录,umask设置为077

◆暂存文件按当前umask设置,存放重要数据到暂存文件的程序,就被写成能确保暂存文件对其余用户不可读。

◆确保HOME目录对每一个用户不可读。

4)不要写SUID/SGID程序。

5)当心地拷贝和移动文件。

cp拷贝文件时,记住目的文件的许可方式将和文件相同,包括SUID/SGID许可在内,如目的文件已存在,则目的文件的存取许可和全部者均不变。

mv移动文件时,记住目的文件的许可方式将和文件相同,包括SUID/SGID许可在内,若在同一文件系统内移文件,目的文件的全部者和小组都不变,不然,目的文件的全部者和小组将设置成本用户的有效UIDGID

◆当心使用cpio命令,它能覆盖不在本用户当前目录结构中的文件,可用t选项首先列出要被拷贝的文件。

6)删除一个SUID/SGID程序时,先检查该程序的连接数,若有多个链,则将存取许可方式改成000,而后再删除该程序,或先写空该程序再删除,也可将该程序的i节点号给系统管理员去查找其余链。

7)用crypt加密不肯让任何用户(包括超级用户)看的文件。

◆不要将关键词做为命令变量。

◆用ed -xvi -x编辑加密文件。

8)除了信任的用户外,不要运行其余用户的程序。

9)在本身的PATH中,将系统目录放在前面。

10)不要离开本身登陆的终端。

11)如有智能终端,小心来自其余用户,包括write命令,mail命令和其余用户文件

的信息中有换码序列。

12)用【Ctrl+D】或【exit】退出后,在断开与系统的链接前等待看到login:提示。

13)注意cu版本。

◆不要用cu调用安全性更强的系统。

◆除非确信cu不会被诱骗去发送文件,不然不要用cu调用安全性较弱的系统。

习题

1.删除一个用户必须:()

A.删除/etc/passwd文件中此用户的记录

B.删除/etc/group文件中说起的此用户

C.删除用户的主目录

D.删除此用户建立或属于此用户的文件

2.对全部用户增长对文件test的读权限,能够用命令:( )

A$chmod ar+test

B$chmod a+rtest

C$chmod +artest

D$chmod r+test

3.临时查封用户,在该用户的passwd域的第一个字符前面加上一个____( )

A&B!C||D*

8章备份数据和资料

本章内容提要

☆备份计划

☆简单备份

☆多级备份

☆压缩备份

☆要求理解备份的重要性,掌握备份计划,简单备份,多级备份,压缩备份实施方法

8.1备份计划

8.1.1备份的重要

每一个人的数据对于他本身来讲都是最有意义的,最有价值的。假如不当心丢失数据,那么就要花费不少的时间和精力来恢复,虽然有时候是不能恢复的。因此,必须重视数据的保护,并采起正确的保护措施。

丢失数据通常有如下几个缘由:硬件出错、软件存在问题、人的操做的失误,天然灾害等。虽然现代硬件已经愈来愈可靠,但损坏仍是不可避免的。存储数据最重要的硬件是硬盘,它依赖微小的磁区在充满电噪声的世界上保存数据。当今的软件的可靠性仍然没有获得保证,一个真正彻底可靠的程序几乎是不可能出现的。而人为因素更是数据丢失的一大缘由,由于人的操做可能会出现失误,并且人为故意破坏数据的可能性也不能排除。此外天然灾害形成数据丢失或毁坏更是不可避免的。总之,想要数据一点错误都不出,全部工做均可以完美的进行,这几乎是不可能的。

备份是进行数据保护的一个十分不错的方法。拥有多个备份,就不怕其中的某个被损坏,假如数据真的被损坏了,只需从备份数据中恢复数据就能够了。正确的备份是很重要的。正确的备份要保证它是有效的,可用的。

8.1.2备分内容

许多人都有可能有这样的想法,就是尽量的多备份。可是实际上,有些数据是没必要要备份的,以避免花费没必要要的时间、精力和金钱。其中包括那些很容易从新安装的软件,但即便是这些软件,也会有一些重要的配置文件须要备份;另外还包括/proc文件系统,由于它只含有内核且老是自动产生的数据,因此没有必要备份。尤为没有必要备份/proc/kcore文件,由于它只是当前物理内存的一个映像,并且很是大。此外可备份也可不备份的部分包括newsspoollog文件、以及/var中的许多数据。

通常来讲,须要备份的是用户文件(/home)和系统配置文件(主要在/etc)。基本上,用户应该检查包含任何下列文件的目录:非标准Linux安装文件或比将要新安装的Linux还新的文件并分开那些将要继续保留的文件。

建议对下列每一项都作了一个.tgz的文件并存储在备份媒体上:

/usr/lib/rn

/usr/lib/smail

/usr/lib/trn/usr/lib的其余部分须要从新安装)

/usr/local/src

/usr/local/bin

/usr/local/lib

/usr/local/lpfont

/usr/local/man

/usr/local/sbin

/usr/local/thot

/usr/openwin

/usr/X11R6/lib/X11/app -defaults

/usr/X11R6/lib/X11/initrc(其余Xfree86的部分要从新安装)

/var/named

/var/openwin

/var/texfonts

8.1.3选择备份介质

要想获得有效的、可用的备份,最重要的是选择好备份介质。选择备份介质须要考虑到成本、可靠性、速度、可取得、可用性。

成本是很重要的,由于可能须要有某些数据的多个存储、多个备份。所以经常须要便宜的介质。

可靠性是最重要的,由于坏的备份会叫人更难办。备份介质必须能保存数据不少年而不会出现数据损坏。如何使用备份介质会影响到它的可靠性。硬盘通常来讲是至关可靠的,可是若是用它做为备份介质,并且与它要备份的数据放在同一台机器上,那么它的可靠性就得不到保证了。

若是备份不是交互进行,那么速度一般不是过重要。可是若是备份只能在机器空闲时进行,那么速度就是个问题了。

可取得性很明显是必要的,由于用户不可能使用一种不存在的介质。可是还要注意的是这种介质在未来是否还能获得,而且它是否能在其余计算机上使用。

可用性是决定是否须要常常作备份的一个主要因素。备份越容易使用越好。一种备份介质千万不能太难以使用。

备份介质的典型选择是软盘和磁带。软盘很便宜,可靠性还能够,速度不很快,并且很容易获得,可是不太适合备份大量的数据。磁带有的便宜有的贵,通常来讲价格仍是能够接受的,可靠性还能够,速度也不错,很容易获得,并且磁带的容量也比较合适。此外也还有一些其余选择。可是这些备份介质通常很差取得,但若是这不是问题,那么这些介质也不错。例如,磁光盘同时具备软盘(随机访问,使得恢复单个文件速度很快)和磁带(能备份大量数据)的优势。

如今使用硬盘的愈来愈多了。由于几十GB的大硬盘实在是便宜,速度又是一流。另外,CDR/CDRW也是不错的选择,可是多了刻盘的时间,速度不及硬盘,却是毕竟便宜。另外经常使用的介质就是磁带了。流式读写,不能随机存取。但便宜稳定是其优势。

8.2实施备份

8.2.1简单备份

简单的备份是一次备份全部东西,而后再备份从上次备份之后修改过的全部东西。第一个备份叫彻底备份(fullbackup),接下来所作的备份叫增量备份(incrementalbackups)。

彻底备份比增量备份要花费更多的时间和劳动,由于有不少的东西须要一次写到磁带上,有时候彻底备份还有可能一盘磁带都不够(更别说软盘了)。从增量备份中进行恢复要比从彻底备份进行恢复须要更多的时间和更多的劳动。备份能够进行优化,作法是自上次全备份之后,总用增量备份保存全部修改过的文件。这样,备份可能须要多花上一点工做量,但用户只需恢复一个全备份和一个增量备份,而不须要作更多的工做了。下面几种方法能够实现简单备份。

1tar

tar能够为文件和目录建立档案。利用tar,用户能够为某一特定文件建立档案(备份文件),也能够在档案中改变文件,或者向档案中加入新的文件。tar最初被用来在磁带上建立档案,如今,用户能够在任何设备上建立档案。利用tar命令,能够把一大堆的文件和目录所有打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是很是有用的。Linux上的tarGNU版本的。

语法:

tar[主选项+辅选项]文件或者目录

使用该命令时,主选项是必需要有的,它告诉tar要作什么事情,辅选项是辅助使用的,能够选用。

主选项:

c:建立新的档案文件。若是用户想备份一个目录或是一些文件,就要选择这个选项。

r:把要存档的文件追加到档案文件的末尾。例如用户已经做好备份文件,又发现还有

一个目录或是一些文件忘记备份了,这时能够使用该选项,将忘记的目录或文件追加到备份文件中。

t:列出档案文件的内容,查看已经备份了哪些文件。

u:更新文件。就是说,用新增的文件取代原备份文件,若是在备份文件中找不到要更新的文件,则把它追加到备份文件的最后。

x:从档案文件中释放文件。

辅助选项:

b:该选项是为磁带机设定的。其后跟一数字,用来讲明区块的大小,系统预设值为2020*512bytes)。

f:使用档案文件或设备,这个选项一般是必选的。

k:保存已经存在的文件。例如用户把某个文件还原,在还原的过程当中,遇到相同的文件,不会进行覆盖。

m:在还原文件时,把全部文件的修改时间设定为如今。

M:建立多卷的档案文件,以便在几个磁盘中存放。

v:详细报告tar处理的文件信息。如无此选项,tar不报告文件信息。

w:每一步都要求确认。

z:用gzip来压缩/解压缩文件,加上该选项后能够将档案文件进行压缩,但还原时也必定要使用该选项进行解压缩。

1:把/home目录下包括它的子目录所有作备份文件,备份文件名为usr.tar

$tar cvf usr.tar/home

2:把/home目录下包括它的子目录所有作备份文件,并进行压缩,备份文件名为usr.tar.gz

$tar czvf usr.tar.gz/home

3:把usr.tar.gz这个备份文件还原并解压缩。

$tar xzvf usr.tar.gz

4:查看usr.tar备份文件的内容,并以分屏方式显示在显示器上。

$tar tvf usr.tar|more

要将文件备份到一个特定的设备,只需把设备名做为备份文件名。

5:用户在/dev/fd0设备的软盘中建立一个备份文件,并将/home目录中全部的文件都拷贝到备份文件中。

$tar cf/dev/fd0/home

要恢复设备磁盘中的文件,则可以使用xf选项:

$tarxf/dev/fd0

若是用户备份的文件大小超过设备可用的存贮空间,能够建立一个多卷的tar备份文件。

M选项指示tar命令提示您使用一个新的存贮设备,当使用M选项向一个软驱进行存档时,tar命令在一张软盘已满的时候会提醒您再放入一张新的软盘。这样就能够把tar档案存入几张磁盘中。

$tar cMf/dev/fd0/home

要恢复几张盘中的档案,只要将第一张放入软驱,而后输入有xM选项的tar命令。在必要时会被提醒放入另一张软盘。

$tar xMf/dev/fd0

2gzip命令

减小文件大小有两个明显的好处,一是能够减小存储空间,二是经过网络传输文件时,能够减小传输的时间。gzip是在Linux系统中常用的一个对文件进行压缩和解压缩的命令,既方便又好用。

语法:gzip[选项]压缩(解压缩)的文件名

各选项的含义:

-c:将输出写到标准输出上,并保留原有文件。

-d:将压缩文件解压。

-l对每一个压缩文件,显示压缩文件的大小、未压缩文件的大小、压缩比和未压缩文件的名字。

-r:递归式地查找指定目录并压缩其中的全部文件或者是解压缩。

-t:测试,检查压缩文件是否完整。

-v:对每个压缩和解压的文件,显示文件名和压缩比。

-num:用指定的数字num调整压缩的速度,-1--fast表示最快压缩方法(低压缩比),-9--best表示最慢压缩方法(高压缩比)。系统默认值为6

假设一个目录/home下有文件mm.txtsort.txtxx.com

1:把/home目录下的每一个文件压缩成.gz文件。

$cd/home

$gzip*

$ls

m.txt.gzsort.txt.gzxx.com.gz

2:把例1中每一个压缩的文件解压,并列出详细的信息。

$gzip-dv*

mm.txt.gz43.1%-----replaced with mm.txt

sort.txt.gz43.1%-----replaced with sort.txt

xx.com.gz43.1%-----replaced with xx.com

$ls

mm.txt sort.tx txx.com

3:详细显示例1中每一个压缩的文件的信息,并不解压。

$gzip-l*

compressed uncompr.ratio uncompressed_name

277 445 43.1%mm.txt

278 445 43.1%sort.txt

277 445 43.1%xx.com

$ls

mm.txt.gz sort.txt.gz xx.com.gz

4:压缩一个tar备份文件,如usr.tar,此时压缩文件的扩展名为.tar.gz

$gzipusr.tar

$ls

usr.tar.gz

3unzip命令

Windows下的压缩软件WinZip压缩的文件如何在Linux系统下展开呢?能够用unzip命令,该命令用于解扩展名为.zip的压缩文件。

语法:unzip[选项]压缩文件名.zip

各选项的含义:

-x:文件列表解压缩文件,但不包括指定的file文件。

-v:查看压缩文件目录,但不解压。

-t:测试文件有无损坏,但不解压。

-d:把压缩文件解到指定目录下。

-z:只显示压缩文件的注解。

-n:不覆盖已经存在的文件。

-o:覆盖已存在的文件且不要求用户确认。

-j:不重建文档的目录结构,把全部文件解压到同一目录下。

1:将压缩文件text.zip在当前目录下解压缩。

$unziptext.zip

2:将压缩文件text.zip在指定目录/tmp下解压缩,若是已有相同的文件存在,要求unzip命令不覆盖原先的文件。

$unzip -n text.zip -d/tmp

3:查看压缩文件目录,但不解压。

$unzip -v text.zip

4zgrep命令

这个命令的功能是在压缩文件中寻找匹配的正则表达式,用法和grep命令同样,只不过操做的对象是压缩文件。若是用户想看看在某个压缩文件中有没有某一句话,即可用zgrep命令。

5rsync

一个富有特点的工具。能够跨越网络使用。rsync是镜像文件最有效的工具之一。它同时能够保持文件原有的状态,如权限、连接等等。它还支持所谓的“anonymous”匿名模式,既能够从服务器也能够从远程客户机容许程序。使用客户机运行时没必要使用root用户,能够匿名工做。须要使用注册用户时,自动加密认证信息(128位!)。安全有保证。功能十分强大,使用起来驾轻就熟。

从下面网址能够获得rsync:http://rsync.samba.org/

该工具被安装后会在/etc/目录下生成rsyncd.conf文件,能够按照本身的需求配置。以下所示:

motd file = /etc/rsync.motd # specifies a file to be displayed,legal disclaimer,etc.

max connections = 5 # maximum number of connections so you don't get flooded

[pub-ftp]

comment = public ftp area # simple comment

path = /home/ftp/pub # path to the directory being exported

read only = yes # make it readonly, great for exported directories

chroot = yes # chroot to /home/ftp/pub

uid = nobody # explicitly set the UID

gid = nobody # explicitly set the GID

[secret-stuff]

comment = my secret stuff

path=/home/user/secret#path to my stuff

list = no # hide this module when asked for a list

secrets file = /etc/rsync.users # password file

auth users = me,bob,santa # list of users It rust to see my secret stuff

hosts allow = 1.1.1.1,2.2.2.2 # list of hosts to allow

使用manrsyncd.conf能够查看详细资料。

和防火墙合用时,须要修改ipchainsrsyncd使用TCP,873端口。

ipchains -A input -p tcp -j ACCEPT -s 10.0.0.0/8 -d 0.0.0.0/0 873

ipchains -A input -p tcp -j ACCEPT -s some.trusted.host -d 0.0.0.0/0873

ipchains -A input -p tcp -j DENY -s 0.0.0.0/0-d0.0.0.0/0 873

6.其余商业软件

另外还有一些其余商业软件也可用来备份,下面列出几种,从其后的网址中可获得相应的软件。

BRU(Backup and Restore Utility)

http://www.estinc.com/features.html

Quickstart

http://www.estinc.com/qsdr.html

BackupProfessional

http://www.unitrends.com/bp.html

CTAR

http://www.unitrends.com/ctar.html

CTAR:NET

http://www.unitrends.com/ctarnet.html

PCPara Chute

http://www.unitrends.com/pcpara.html

8.2.2多级备份

简单备份的方法,适合于我的使用或小的站点使用。对于多数很重要的使用,使用多级备份更好。

简单备份有两个备份级:彻底备份和增量备份。这能够通用化到任何数量的级别。彻底备份是0级,增量备份可分为123级等等,每一个增量备份级备份本级或上一级别的上次备份后全部修改过的东西。

这样能够拥有更便宜的更长的备份记录历史(backup history)。更长的备份记录历史是很是有用的,由于删除或损坏的文件可能长期得不到注意。这样即便得不到一个文件的最新版本,但也比没有好。

备份级可以使文件系统在最少的时间内恢复。若是您有许多只是单调增加级别数的增量备份,要恢复整个文件系统,只须要恢复全部备份。而若是级别数不是单调增加,能够减小备份和恢复的数目。

为了减小用于恢复操做时的已备份磁带数量,能够用小的级别作每一个增量磁带。然而,这样作会作每一个增量备份的时间会增长(每一个备份拷贝了上次全备份后改变的全部东西)

8.2.3 压缩备份 

备份占用了大量的介质空间,并且要花费大量金钱。为了节省存储空间,经常将备份文件进行压缩。有几种方法。  

其中一种办法是使用tar中的-z选项,进行压缩备份。可是压缩备份可能致使问题。因为压缩工做的原理,若是一个bit错误,可能致使全部其余压缩数据不可用。虽然有些备份程序内置纠错功能,但没有什么办法能够处理大量的错误。因此这个压缩方法不是很好。  

还有一个方法是单独压缩每一个文件,这样一个文件的丢失,不会影响到其余文件。afio程序(cpio的一个变种)能够用来作这样的工做。  

压缩须要时间,这可能使得备份程序不能尽量快地将数据写到磁带驱动器中,这能够靠输出缓冲来避免(若是备份程序足够智能,能够内置,不然能够用其余程序来作),但即便这样,运行工做也并不必定足够好。 

8.2.4  使用举例 

1tar至文件 

% cd /u/jypai  

% tar cf backup.tar doc         <-- /dev/rst1改成backup.tar,进行tar  

% ls -l backup.tar  

-rw-r--r--  1 jypai       20480 Oct  2 17:34 backup.tar  

% cd /tmp                       <-- 换至/tmp下解tar,以避免覆盖掉原来的doc  

% tar xf /u/jypai/backup.tar    <-- tar  

% ls doc  

doc:  

Amanda.is.charming      TANet.lst address-book  

-documents.tar       address-book 

 % 

 通常来讲,用户都会顺便将.tar文件用compress压缩成.Z文件,节省储存空间;要还

原时,要先uncompress,再解tar

 % compress backup.tar                                      <-- 压缩  

% ls -l backup* 

 -rw-r--r--  1 jypai        3085 Oct  2 17:34 backup.tar.Z  <-- 只剩.Z文件 

 % uncompress backup.tar.Z                                  <-- 解压缩 

 % tar xf backup.tar                                        <-- tar  

%               

同理,也能够用gzip/gunzip来代替compress/uncompress,不过要注意未来要解压缩的电脑中有没有gunzip可用。  

2tar的线上压缩/解压缩 

 tarproject所发展的tar版本,它增长了许多功能,例如线上压缩(在tar的同时进行压缩;若用UNIX标准tar,只能在执行完后,另外再进行压缩,因此不适用于磁带)、remote tar(经由网络,每部电脑均可以利用server上的磁带机进行tar)...等等。本小节将介绍最经常使用到的线上压缩。 

tar不是标准UNIX软件,您必须先肯定本身的电脑上有安装。红旗LINUX上已安装方法是执行"tar --help",如果 tar,则会显示以下的消息: 

% tar --help                                    <-- 肯定您执行到的是 tar  

This is  tar, the tape archiving program. 

 choose one of the following: 

 -A, --catenate,  

    --concatenate       append tar files to an archive 

 ....()  

%  

%  

使用 tar线上压缩功能,只要增长“z”选项便可,下面是一个简单的示范:

  % cd /u/jypai  

% tar zcf /tmp/backup.tar.gz doc     <-- 增长'z'(线上压缩)功能 

% cd /tmp  

% tar ztf backup.tar.gz              <-- 增长'z'(线上解压)功能  

doc/Amanda.is.charming  

doc/-documents.tar  

doc/TANet.lst 

 doc/address-book 

 % tar zxf backup.tar.gz              <--增长'z'(线上解压)功能 

其中,“z”功能选项的做用是将文件内容交由gzip来作压缩处理,tar另外还提供'Z'选项,将压缩处理交由compress来作,例如:

 % tar Zcf backup.tar.Z doc  

 

习题 

1.丢失数据通常有如下几个缘由,它们是?(   )

 A.硬件出错     B.软件存在问题     C.人的操做的失误     D.天然灾害

 2.通常来讲,须要备份的是:(   )

 A.用户文件(/home ) 

B/var

 C.系统配置文件(主要在/etc )。  

D/proc 文件系统 

3.压缩备份能够使用哪一种方法?(   ) 

A.使用tar中的-z选项 

B.用afio 程序单独压缩每一个文件 

C.用rsync 

D.使用tar中的-v选项 

 

9章文件系统

本章内容提要 

 

文件是一组相关信息集合,在Linux中文件是不包括其余结构的字符流。文件中的任何两个字节之间没有任何相互关系。文件中各字节的意义是靠相应的软件去解释的。Linux用文件来组织信息。文件的内容可为文本、程序信息、命令脚本或者实际中其余类型的信息。 在红旗Linux系统中,文件包括普通文件、目录文件、设备文件、连接文件。其中普通文件又分为文本文件、数据x文件、命令文件和可执行文件。  

本章重点内容  

☆ 创建文件系统 

☆ 安装文件系统 

☆ 拆卸文件系统 

☆ 网络文件系统 

☆ 交换空间

☆ 磁盘空间配额管理 

☆ 碎片清理和文件系统维护 

☆ 要求掌握文件系统的创建,安装,拆卸和维护。

9.1  文 件 系 统 

文件系统是操做系统用于明确磁盘或分区上的文件的方法和数据结构;即在磁盘上组织文件的方法。也指用于存储文件的磁盘或分区或文件系统种类。所以,能够说“我有2个文件系统”意思是有2个分区,一个存文件,或者用“扩展文件系统”,意思是文件系统的种类。 

磁盘或分区和它所包括的文件系统的不一样是很重要的。少数程序(包括最有理由的产生文件系统的程序)直接对磁盘或分区的原始扇区进行操做;这可能破坏一个存在的文件系统。大部分程序基于文件系统进行操做,在不一样种文件系统上不能工做。  

一个分区或磁盘能做为文件系统使用前,须要初始化,并将记录数据结构写到磁盘上。

这个过程就叫创建文件系统。  

大部分linux文件系统种类具备相似的通用结构,即便细节有些变化。其中心概念是超级块superblocki节点inode,数据块data block,目录块directory block,和间接块indirection block。超级块包括文件系统的整体信息,好比大小(其准确信息依赖文件系统)。i节点包括除了名字外的一个文件的全部信息,名字与i节点数目一块儿存在目录中,目录条目包括文件名和文件的i节点数目。i节点包括几个数据块的数目,用于存储文件的数据。i节点中只有少许数据块数的空间,若是须要更多,会动态分配指向数据块的指针空间。这些动态分配的块是间接块;为了找到数据块,这名字指出它必须先找到间接块的号码。  

linux文件系统一般容许在文件中产生孔(hole),意思是文件系统伪装文件中有一个特殊的位置只有0字节,但没有为这文件的这个位置保留实际的磁盘空间(这意味着这个文件将少用一些磁盘空间)。这在小的二进制文件中常常发生,Linux共享库、一些数据库和其余一些特殊状况。(孔由存储在间接块或i节点中的做为数据块地址的一个特殊值实现,这个特殊地址说明没有为文件的这个部分分配数据块,即,文件中有一个孔)。 

Linux的最重要特征之一就是支持多种文件系统。这样它更加灵活并能够和许多其余种操做系统共存。其中下面几种是最经常使用的: 

 Minix:最古老的,但一直被认为是最可靠的文件系统。它的功能和容量都十分有限。文件名最长只能到30个字符,每一个文件系统最多支持64MB。 

 Xiaminix文件系统的一个修正版本,提高了文件名和文件系统大小的限制,除此之外并无增长新的功能。该文件系统一直都不太流行,但运行状况不错。 

 Ext2:当前最通用的Linux文件系统。它被设计成易于向上兼容,因此新的文件系统代码无需重作已有的文件系统。 

 Extext2的老版,它不支持向上兼容。很难用新版安装程序安装,如今几乎没人再用它。

  Msdos:与MSDOSOS/2等的FAT文件系统兼容。

  UmsdosLinux下的扩展msdos文件系统,支持长文件系统、文件全部者、文件权限、连接以及折本文件。 

 ISO9660:标准的CD-ROM文件系统。

  NFS:网络文件系统,使得多太计算机之间更易于共享文件。

  HPFSOS/2文件系统。 

 SYSVUNIX System V 文件系统。

 Raiserfsext3均是linux环境下对基于低版本内核的ext2文件系统的一个大的修改,从名字中能够看出ext3是直接对ext2的升级,并且在2.4的测试版本中已经能够看到ext3的影子,可是因为raiserfs文件系统还有一些bug没有解决,因此虽然raiserfs文件系统具备不少做为高级服务器文件系统的优势,出于稳定性的考虑并无放进2.4的测试内核中。不过从文件系统的角度来看,raiserfs文件系统对比ext2来讲,是有至关大的进步的。好比说,对小文件的存储处理,对文件系统故障的修复等等。如今暂且只能在Intel结构体系上使用,

如今Internet上已经有不少将ext2文件系统直接转为raiserfs文件系统的工具。不过也能够将其编译进kernel或做成一个安装模块。 

用户能够从http://www.devlinux.com/namesys下载raiserfs的补丁程序,而且要注意下载的补丁版本和kernel的版本是一致的。 

下载后用root身份登陆进入系统,切换至/usr/src/linux目录,执行命令:  

    #cd [文件下载的目录

# gunzip linux-2.2.16-reiserfs-3.5.24-patch.gz  

    # patch -p1 -i linux-2.2.16-reiserfs-3.5.24-patch  

    假设读者使用的是2.2.16的内核,这也是红旗linux server2的默认设置。这样就能够使用其余编译内核的工具来完成加载或编译进内核的任务了。 

Reiserfs的相关应用程序在 /usr/src/linux/fs/reiserfs/utils 目录下,好比说咱们mkreiserfs命令从新格式化一个已经存在的分区成raiserfs文件系统类型,在作完这一步后,能够修改/ets/fstab文件,指定加载这个raiserfs分区,或使用如“mount -t reiserfs /dev/hda2 /raiserfs”,加载这个raiserfs分区到目录/raiserfs下,这样就能够同使用其余类型分区同样使用这个新的分区了。 

固然这个工做也能够经过经常使用命令fdisk来完成。 

Linux并不使用设备号或驱动器名称来访问独立文件系统,而是经过文件系统层次树结构来访问它。Linux每安装一个文件系统时都会将其加入到文件系统层次树中。无论文件系统属于什么类型,都被链接到一个目录上且此文件系统上的文件将取代此目录中已存在的文件。这个目录被称为安装点或者安装目录。当卸载此文件系统时这个安装目录中原有的文件将再次出现。  

9.1.1  创建、安装及拆卸文件系统 

1.创建文件系统 

Linux文件系统的创建是经过mkfs命令来完成的。用mkfs命令能够在任何指定的块设备上创建不一样类型的文件系统。对于每一个不一样种类的文件系统使用的都是不一样的。单独的程序。Mkfs只是对于不一样文件系统肯定运行何种程序的一个外壳而已。 

通常最经常使用的mkfs语法以下: 

mkfs [-v] [-t fs-type] [fs-options] device [size] 

其中各参数的意义以下: 

-v:强迫产生长格式输出;

 

-t fs-type:选择文件类型。 fs-options:将要创建的文件系统选项,它能够是下面的选项。

 -c:搜索坏块并初始化相应的坏块表。 

-l filename:从文件filename中读初始的坏块表。 

-v:让实际建造的文件系统程序产生长格式输出。 

device:文件系统所在设备号。

 size:文件系统大小。 

例:在软盘上创建一个ext2文件系统:  

#mkfs t ext2 /dev/fd0  

命令运行后,软盘上已创建好ext2文件系统,能够对其进行加载或读写操做,并在必要时写入/etc/fstab文件中,以便在引导时安装。  

2.安装文件系统 

一个文件系统,若是其存在但却未被合并到可存取文件系统结构中,则称为卸下的文件系统。若是它已经被并入到可存取的文件系统结构中,则称其为已安装的文件系统。一个文件系统在使用以前,必须执行文件系统的安装;只有安装后的文件系统,用户才能对其进行通常的文件操做。文件系统的安装,能够在系统引导过程当中自动安装,也能够使用mount命令手工安装。 

多数状况下,用户须要使用的文件系统是比较固定的,不会常常变化。若是每次使用时都须要从新安装这是很麻烦的,所以,能够方便地定义一个系统在引导时自动安装文件系统的方法。经过修改/etc/fstab文件中的表项来选择启动时须要安装的文件系统。在内核引导过程时,它首先从LILO指定的设备上安装根文件系统,随后将加载/etc/fstab文件中列出的文件系统。/etc/fstab指定了该系统中的文件系统的类型、安装位置及可选参数。fstab是一个文本文件,能够用任何编辑软件进行修改,但请在修改前做好备份,由于破坏或删除其中的任何一行将致使下次系统引导时该文件系统不能被加载。该文件被称为文件系统安装表,其中每一行表明一个须要安装的文件系统,其格式以下: 

device  mnt  type  options  dump  passno 

其中: 

device:指定须要安装的文件系统。

 mnt:指定文件系统的安装点。对交换文件使用none。 

type:指定安装文件系统的类型,目前支持这几种类型: 

    minix,ext,ext2,xiafs,msdos,hpfs,iso9660,nfs,swap,umsdos,sysv

 options:使用逗号隔开的安装选项列表,至少须要指出文件系统的安装类型。 

dump:指定两次备份之间的时间。

 passno:指定系统引导时检查文件系统的顺序,根系统值为1,其他值为2,若是此值没有指定,则引导时文件系统不被检查。

 下面是一个实际的/etc/fstab文件: 

$ Sample /etc/fstab file 

/dev/hda3   /             ext2    defaults  1  1 

/dev/hda5   /dos          vft     defaults  0  0 

/dev/fdo    /mnt/floppy    ext2    noauto  0  0 

/dev/cdrom  /mnt/cdrom   iso9660  noauto  0  0 

其中,/dev/hda3 是根文件系统,使用ext2文件系统类型,安装选项是默认值;/dev/hda5 Windows 95/98 的 vfat 文件系统,/dev/fdo /dev/cdrom 分别是软驱和光驱。

 还要说明的一点是所谓的默认值defaults表明如下选项:设定为可读/写文件系统;容许执行二进制文件;能够使用mount a 命令安装该系统;不容许普通用户安装该系统;全部I/O操做均采用异步执行的方式。 

除了在系统引导时自动安装文件系统之外,用户也能够使用mount命令实现对文件系统的手工安装。Mount命令用于告诉Linux系统内核将一个文件系统合并到可访问的文件系统结构中。 

Mount命令的语法以下: 

Mount [-t type] device  dir 

其中,device:表明设备名;dir:表明安装点。 

例如: 

$ mount t ext2 /dev/fdo /mnt/floppy 

该命令把设备/dev/fdo上类型为ext2的文件系统安装到/mnt/floppy下。 

Mount命令还带有许多参数,以下: 

-f: 完成每步操做,但不真正安装文件系统。 

-v: 长格式模式。 

-w: 安装有读/写权限的文件系统。 

-r: 安装只读文件系统。 

-n: 不把条目写入/etc/mtab 的文件。 

-a: 安装/etc/fstab 中全部文件系统。 

注意:在安装文件系统以前,设备上必须已经创建了文件系统,而且安装时指明的文件系统类型应与创建的文件系统类型一致。 

3.卸下文件系统 

文件系统的拆卸与安装是相反的过程。当再也不使用一个文件系统时,能够将其卸下。

除了根文件系统外,其余文件系统都是能够拆卸的。经常使用的是对于软盘和光盘上的文件系统,每更换一次盘就必须安装/拆卸一次。 

拆卸文件系统可以使用umount 命令,其格式以下: 

umount  设备名安装点

 该命令使用设备名或者安装点做为参数,用于拆卸设备名或者安装点所对应的文件系统。

 Umount命令拆卸文件时容易犯的错误是拆卸正在使用的文件系统。在这种状况下,应该退出安装目录并通知在此目录下工做的其余用户也一块儿退出,而后在执行umount命令。

 只有超级用户才能使用mount 和 umount命令。 

注意:若是文件系统已在/etc/fstab中出现,则加载时只需指出安装位置或设备名称,如:#mount /home与此相对应,卸载一个文件系统的命令为umount,将文件系统/home卸载:#umount /home  

9.2  网络文件系统  

9.2.1  网络文件系统的概念 

NFSNetwork File System),也即网络文件系统,是UNIX系统间实现磁盘文件共享的一种方法,它由Sun Microsystems公司发展起来,逐渐成为主机间共享资源的一个标准。

它能够把远程主机上的一个文件系统安装在本机的某一目录下,使对远程主机上文件的访问变成了对本地文件的访问,使得运行不一样操做系统的不一样体系结构的计算机之间经过网络实现资源共享,节省了磁盘空间。NFS能够在不一样的操做系统中实现。在每一个操做系统上,NFS模型都被映射为本地文件系统,让用户感受就像在本机工做同样。NFS还容许多个计算机使用同一文件。

 NFS系统要正常工做必须知足三个必要条件:客户机服务器之间能够经过TCP/IP协议进行通讯;服务器必须使文件系统是能够被安装的;客户机必须将此文件系统安装为NFS文件系统。其中服务器是指用于放置被其余计算机安装的文件系统的计算机。客户机指用于安装该文件系统的计算机。 

9.2.2  网络文件系统的安装 

NFS使用远程过程调用(RPC)方法,由后台的驻留服务和配置文件控制。要启动NFS进程,须要以root身份登陆并执行:# /etc/rc.d/init.d/nfs start  

NFS的主要配置文件为/etc/exports/etc/fstab。首先要把准备共享的文件目录(注意:这里是文件目录,而非文件系统)和有关选项填入/etc/exports,格式为:  

Dir_to_export host1(permission) host2(permission)  

其中hostn为容许共享该目录的其余主机,permission是它们使用该目录时的权限,分为rw(读写)、ro(只读)和no_root_squash(认可客户机的root用户权限)。  

配置好/etc/exports后,利用exportfs命令向后台驻留服务发出信号,要NFS相关进程从新读此文件并作更新。如:  

# exportfs -a  

此时,便可在客户端安装该目录,若是主机名为server1, 共享目录为/home/exports, 则在客户机上使用mount命令安装此输出文件系统:  

# mount server1:/home/exports /home/share  

说明:mount还有其余多个参数,下面是其格式: 

mount [-t nfs] [-o specific-options] 文件系统 安装点

 其中参数的意义以下: 

-t:指定安装的文件系统类型。

 文件系统:要安装的文件系统名。

 

安装点:该文件系统

的安装目录。 -o:指定安装选项。 specific-options:安装选项,其中最经常使用的选项以下: 

ro:只读。 

rw:可读写。 

soft:软安装。 

hard:硬安装。 

Rsize:指定NFS客户读请求使用的数据报的大小,默认值为1024

 Wsize:指定NFS客户写请求使用的数据报的大小,默认值为1024。 Tim:置NFS客户等待请求完成的时间,默认值为0.7秒。 

若是须要客户机在引导时即加载该输出文件系统,则在/etc/fstab中加入此目录名。不一样的是,在设备名一列使用server1:/home/exports, 并将其类型设为nfs。 

9.3  磁盘空间配额管理  

当用户总把一些很大的文件下载到主机,或在服务器上安装占用大量磁盘空间的应用软件时,硬盘很快就撑得满满当当。其实,在红旗Linux下,能够经过对用户的磁盘空间进行配额管理,用户占用的空间不会超过所规定的上限。下面就一个示例说明配额管理的方法。下面举一个例子具体说明。 

假设有一名用户Fred,规定其在文件系统/home上最大的磁盘占有量为1000 blocks。  

1)首先,创建相应的系统使用文件quota.userquota.group,前者是用户磁盘配额文件,后者则是针对组用户的。  

# touch /quota.user  

# touch /quota.group  

# chmod 600 /quota.user  

2)对该系统的/etc/fstab文件中的文件系统/home所在行进行修改,在参数列上加入usrquota,代表该文件系统将实施配额管理。  

/dev/hda5ext2/homedefaults, usrquota12  

3)从新加载该文件系统,使上述改动生效。  # mount o remountdefaults, usrquota /home  

4)下面,能够肯定该用户配额的具体上限。用命令edquota Fred打开配额文件,其内容为:  

/dev/hda5:  

blocks in use: 0, limits(soft = 1200, hard = 1000)  

inodes in use: 0, limits(soft = 0, hard = 0)  

在这里,只需改动limits后面的数值。hard项表明该用户在此文件系统拥有的磁盘最大使用量,Soft项表示用户能够临时超过其配额,达到该容量,但期限一过,用户只能按其配额数量使用磁盘。通常只改变blocks的使用限制,而对inodes不作限制(使其limits项均为0),由系统自动分配inode数量。改变完毕,可存盘退出。  

5)最后,打开该用户磁盘配额控制。  

# quotaon uv Fred  

此时,用户Fred在文件系统/home中仅拥有1000 blocks的空间,一旦该上限被突破,便会获得警告信息,没法继续增长磁盘使用量。用户可经过quota命令查看本身的磁盘配额,而root用户能够用repquota检查全部用户的配额状况。  

9.4  碎片清理和文件系统维护 

文件写到磁盘时,不必定在连续的块中。没在连续块中的文件叫碎片。读碎片文件时磁盘的读写头须要更多地移动,因此将花费较长的时间。所以最好仍是避免碎片。Ext2文件系统试图使碎片最少,即便不能将一个文件的全部块存在连续扇区中,也尽可能靠近。Ext2一般有效地安排了文件其余块最近的空闲块,所以不多须要关心碎片问题。

 Linux的文件系统至关复杂,很容易发生错误,所以Linux提供了一个命令fsck专门检查文件系统的运行是否正确。Fsck命令的格式以下:

 Fsck  [选项1] [-s] [文件类型] [选项2] 文件系统名称

 其中选项1及其意义以下: 

-A:检查全部/etc/fstab中列出的文件系统。 

-V:长格式模式。 

-R:使用A参数时不检查根文件系统。

 -T:不显示开头的标题栏。 

-N:显示每一步的执行,但不进行检查。 

-P:使用A参数时,检查根文件系统。 

选项2及其意义以下: 

-a:直接修改检查发现的问题,而不征求用户意见。 

-l:列出文件系统中全部的文件名。 -r:修改检查发现的问题以前,征求用户赞成。 

此外: 

-s:检查文件系统前列出管理块信息。 

9.5  交 换 空 间 

9.5.1  建立交换空间 

交换(swap)空间是系统从硬盘中划分的一部分硬盘空间,它与计算机的物理RAM 一块儿构成整个系统的虚拟内存空间。这样用户用到的内存空间能够大于实际的物理内存空间。当没有空闲的物理内存空间时,操做系统内核会把当前没有使用的内存块的内容写到硬盘以便腾出存储空间,须要时内核又会把这些内存块从硬盘中读回到内存中。

 红旗Linux运行时所需的总存储空间与系统的运行方式有关,若是只使用命令行方式那么至少须要32MB总存储空间;若是要运行X Window系统,那么,至少须要64MB总存储空间;并且SWAP空间大小至少要为物理内存大小的1.5倍。

 Linux能够用文件系统中的普通文件或者用一个专门的分区做为交换空间。使用交换分区速度快,使用交换文件能够灵活地改变大小。若是偶尔须要用到较大的交换空间,用户能够临时创建一个交换文件,使用完后再将其删除,而没必要固定保留一个大的交换空间,以免硬盘空间的浪费。

 交换文件是一个普通文件,对操做系统内核而言,交换文件除了无空洞外,并没有特别之处。所谓空洞,即占用一片连续的硬盘物理空间。系统中最多能够有个交换文件每个最大为16MB。 

创建交换文件的步骤以下: 

1)建立一个具备指望交换大小的文件。 

$dd if=/dev/zero of=/swapfile  bs=1024 count=8192 

该命令物理地建立一个交换文件swapfile,每个交换块大小为1024字节,共有8192

块。 

注意:由于交换文件是连续的,因此不能用cp来建立交换文件。

 (2)建立交换文件 

$mkswap /swapfile 8192 

3)强迫将交换区内容写入磁盘 

$sync 

4)激活该交换文件 

$swapon  /swapfile 

5)使用完交换文件以后,关闭或删除它 

$swapoff  /swapfile 

$rm /swapfile  

红旗Linux容许有多个SWAP分区,每个最大可达124MB,这些SWAP分区能够根据须要随时建立并激活。交换分区也无特别之处,用户能够像建立其余分区同样地建立交换分区,稍有不一样的是,交换分区是一个原始分区,它不包含任何文件系统。交换分区的创建及激活步骤以下: 

1)先用fdisk 建立一个分区。 

2)创建一个交换分区使用命令:mkswap  实际分区名。 

例:$mkswap c /dev/hda4 

138  9章  文件系统 

hda4表明实际的分区名,这里没有指明分区大小,所以系统会自动检测。 

3)激活此交换分区:swapon  实际分区名。 

例:$swapon /dev/hda4 

若是设置系统启动时也激活此交换区,请修改/etc/fstab,在其中加入适当的条目。

 例如:/dev/hda4 swap default 0 0 

4)关闭交换分区:swapoff  实际分区名

 例:$swapoff /dev/hda4 

 

习题 

1.文件标志b表示:(   )

 A.字符设备文件

 B.目录文件 

C.块设备文件 

D.套接字 

2Linux支持哪些文件系统:(   ) 

AMinix   BExt2   CMsdos   DNFS   EISO9660 

3.在软盘上创建一个ext2文件系统:(   ) 

A#mkfs t ext2 /dev/fd0 

Bformat a: 

Cfdisk  a: 

D#mkfs  ext2 /dev/fd0 

4.交换文件:(   )  

A.是连续的     B.是普通文件 

C.无空洞       D.能够有个交换文件每个最大为16M 

 

  

10章  目 录 系 统

本章内容提要 

 

Linux的几个重要目录: / 目录、/usr目录、/var目录、/proc目录、/dev目录、/etc目录。 

了解目录、/usr目录、/var目录、/proc目录、/dev 目录、/etc目录的内容。

 Linux文件系统采用层次的多级树形目录结构,整个文n件系统有一个根目录,在根目录下包含若干子目录。每一级目录下均可以包含普通文件和次一级的目录。 

10.1  文件名和路径名 

10.1.1  文件名 

Linux系统与其余操做系统同样,必须使用一个名称来标志一个特定的文件。Linux文件的命名是至关宽松的,没有什么太多的特殊规定。 

Linux文件名中不能含有空格,此外,文件名中必定不能含有“/”由于“/”在Linux的目录树中表示根目录或是路径中的分隔符(如同DOS中的“\”)。文件名长度仍是有规定的,最大能够为256个字符,为了与UNIX兼容,建议使用14个如下字符长度的文件名。

文件名一般是由字母数字“.”(点号)“_”(下划线)和“-”(减号)组成的另外还有一些字母是合法的可是并不推荐使用它们例如“*”(星号)“?”(问号)“ ”(空格)“$”(美圆符号)“&”和任何括号。在Linux中,文件名是区分大小写的。因此,Linux的全部命令都用小写字母表示。 

Linux在查找或者指定文件名时,能够使用通配符。经常使用的通配符有:

 *:匹配零个或多个字符;如“a”匹配以字母a开头的全部文件名。

 ?: 匹配任何一个字符,如“a?”匹配以字母a开头的全部两个字符的文件名。 

[abc1]:匹配任何一个在枚举集合中的字符在该例中该集合是a b c 1。 

[a-z]:匹配任何一个小写字符。 

[A-F]:匹配任何一个从AF的大写字符。 

[0-9]:匹配任何一个单个数字。

 [a-z A-Z 0-9]:匹配任何字符(小写或大小)或任何数字。 

10.1.2  路径名 

系统查找一个文件所通过的路径称为路径名。若是使用当前目录下的文件,能够直接引用文件名。若是要使用其余目录下的文件,就必须指定该文件是在哪一个目录之中。 

查找文件只能从两个起点开始:即从根目录开始或者从当前目录开始,因而出现了两种路径名:绝对路径名和相对路径名。从根目录开始的路径名为绝对路径名;从用户当前所在目录开始的路径名为相对路径名。 

DOS同样,在每一个目录下面都有名为“.”和“..”的两个文件。前者表明当前目录,后者表明当前目录的父目录。相对路径名是从“..”开始的。

  

注意:在树型目录结构中到某一肯定文件的绝对路径和相对路径均只有一条。绝对路径是肯定不变的,而相对路径则随着用户工做目录的变化而不断变化。 

用户能够使用pwd命令来查看当前所在目录的目录名。 

10.2  目 录 结 构 

10.2.1  目录树 

Linux的目录树如图10-1所示: 

/           home       ftp 

                      happy 

          bin 

          proc 

          boot 

          usr            bin 

                        lib 

                        tmp 

                        man 

 

          dev 

10-1  目录树 

Linux目录结构主要由根(/)文件系统,/usr文件系统,/var文件系统,以及/home

件系统等组成。

 10.2.2  根(/)文件系统 

根文件系统中的文件不须要常常改动,并且数目比较少,所以根文件系统通常占的空间并不大。它是比较特殊的文件系统。它包含系统引导以及其余文件系统安装所须要的一些关键文件。根文件系统通常除了标准的系统引导映像之外,不包含任何其余文件。全部其余文件都存放在根文件系统的子目录中。 

 /bin存放系统中的可执行文件。这些可执行文件大都是Linux系统里最经常使用的命令,通常用户和超级用户都常用该目录下的命令。  

 /sbin存放那些不打算提供给普通用户使用的命令。  

 /etc存放大部分系统配置文件,对系统的配置主要就是对该目录下的文件修改。  

 /root超级用户的目录。  

 /lib根文件系统上的程序所需的共享库。这些库文件仅在执行/bin /sbin目录下的命令时才会用到。  

 /lib/modules核心可加载模块,特别是那些恢复损坏系统时引导所需的(例如网络和文件系统驱动)。  

 /dev设备文件。用户经过这些文件访问外部设备。  

 /tmp临时文件。引导启动后运行的程序应该使用/var/tmp,而不是/tmp,由于前者可能在一个拥有更多空间的磁盘上。  

 /boot用于放置引导系统时使用的各类文件,如LILO。内核映像也常常在这里,而不是在根目录。若是有许多内核映像,这个目录可能变得很大,这时可能使用单独的文件系统更好。最重要的是要确保核心映像必须在IDE硬盘的前1024柱面内。  

 /mnt系统管理员临时mount的安装点。  

 /proc/usr/var/home其余文件系统的安装点。

 10.2 3  /usr文件系统 

/usr文件系统常常很大,用于存放可被系统中全部用户共享的文件。本地安装的程序和其余东西在/usr/local下。这样在升级时无须从新安装所有程序。/usr的有些子目录在下面列出(一些不过重要的目录省略了)。  

 /usr/X11R6 X Window系统的全部文件。为简化X的开发和安装,X的文件没有集成到系统中。  

 usr/bin存放了几乎全部用户命令。其余的一些命令在/bin/usr/local/bin中。  

 /usr/sbin许多系统管理命令,例如多数服务程序。  

 /usr/man/usr/info/usr/doc存放手册页、GNU信息文档和各类其余文档文件。  

 /usr/include C编程语言的头文件。从一致性上考虑这实际上应该在/usr/lib下,但传统上支持这个名字。  

 /usr/lib存放库函数文件。  

 /usr/local本地安装的软件和其余文件放在这里。 

10.2.4  /var文件系统 

/var包括系统正常运行时要改变的数据。每一个系统是本机所特有的,即不经过网络与其余计算机共享。  

 /var/catman格式化好的man页的cacheman页的源文件通常存在/usr/man/man*中;

 有些man页可能有预格式化的版本,存在/usr/man/cat*中。而其余的man页在第一次查看须要格式化,格式化完的版本存在/var/man中,这样下一我的再看相同的页时就无须等待格式化了。  

 /var/lib存放系统正常运行时要改变的文件。  

 /var/local存放/usr/local 中安装的程序的可变数据(即系统管理员安装的程序)。  

 /var/lock锁定文件。许多程序遵循在/var/lock中产生一个锁定文件的约定,以指出他们正在使用某个特定的设备或文件。其余程序注意到这个锁定文件,将不试图使用这个设备或文件。  

 /var/log存放各类程序的Log文件。  

 /var/run存放与系统有关的信息文件。  

 /var/spool存放邮件,消息,打印队列等等。  

 /var/tmp/tmp容许的大或须要存在较长时间的临时文件。 

10.2.5  /proc 文件系统 

/proc文件系统是一个虚构的文件系统。此目录中的文件实际上不存在磁盘上。而是由内核在内存中产生。用于提供关于系统的信息。下面说明一些最重要的文件和目录。  

 /proc/1关于进程1的信息目录。每一个进程在/proc下有一个名为其进程号的目录。  

 /proc/cpuinfo计算机CPU的检测报告。  

 /proc/devices当前使用的系统设备的报告。  

 /proc/dma显示当前使用的DMA通道。  

 /proc/filesystems存放本内核所配置的文件系统。  

 /proc/interrupts显示使用的中断和中断次数。  

 /proc/ioports当前使用的I/O端口。  

 /proc/kcore系统物理内存映像。与物理内存大小彻底同样,但不实际占用这么多内存。  

 /proc/kmsg内核输出的消息。  

 /proc/ksyms内核符号表。  

 /proc/loadavg记录系统"平均负载"。  

 /proc/meminfo内存使用信息。  

 /proc/modules当前加载了哪些核心模块。  

 /proc/net网络协议状态信息。  

 /proc/self到查看/proc的程序的进程目录的符号链接。当两个进程查看/proc 时,是不一样的链接。这主要为了方便程序获得它本身的进程目录。  

 /proc/stat系统的统计信息。 

 /proc/uptime系统启动的时间长度。  

 /proc/version内核版本。  

10.2.6  /dev文件系统 

/dev目录包含了全部的设备文件,这些设备是系统设置的、通常都和系统硬件有必定相互对应关系的特殊文件,不是特别须要请不要随便更改和删除。下面列出了/dev目录中一些经常使用的设备文件。 

 /dev/console 系统控制台,由显示器和键盘组成。 

 /dev/fd 软盘驱动器。第一软盘驱动器的设备文件是/dev/fd0,第二软盘驱动器的设备文件是/dev/fd1。 

 /dev/hd  IDE硬盘设备。/dev/hda指整个第一主盘,/dev/hda1指第一主盘上的第一分区。 

 /dev/sd  CSI磁盘设备。

  /dev/md Multiple Devices。将不一样硬盘上的分区集合在一块儿构成一个大的设备,很像磁盘阵列(RAID),但主要由系统核心来完成,而不是磁盘阵列控制器。 

 /dev/tty 虚拟控制台。 

 /dev/pty 用于远程登陆进程的伪终端。如用户经过telnet远程使用系统,则他的终端设备就是/dev/pty

  /dev/ttyS 串口设备。

  /dev/null 空设备,全部写入/dev/null的数据都将永远丢失。能够使用它来屏蔽一个程序的输出结果,也能够用它来创建特殊的长度为0的文件。 

10.2.7  /etc目录文件 

 /etc/hosts 

文件格式:IPaddress hostname aliases 

文件功能:提供主机名到IP地址的对应关系,建议将本身常用的主机加入此文件中,也可将没有DNS记录的机器加入到此文件中,这样会方便网络应用。 

127.0.0.1       localhost       localhost.localdomain 

202.118.66.81   helius.dlut.edu.cn      helius 

 /etc/resolv.conf 

文件功能:DNS客户机配置文件,设置DNS服务器的IP地址及DNS域名。 

相关文件:/etc/host.conf

 文件格式:

         domainname 域名 

        search  域名 

        nameserver Primary_DNS_Server_IP_address 

        nameserver Second_DNS_Server_IP_address 

        其中domainnamesearch可同时存在,也可只有一个;nameserver可指定多个示例文件内容: 

search dlut.edu.cn 

nameserver 202.118.66.6 

 /etc/host.conf 

文件功能:指定主机名查找方法,一般指先查找文件/etc/hosts,找不到时再向DNS服务器请求。对于大多数用户不用改动此文件内容。 

相关文件:Linux: /etc/host.conf 

文件内容:order hosts, bind 

          multi on 

   Soalris: /etc/nsswitch.conf 中的hosts

                 hosts files, dns 

 /etc/HOSTNAME 

    功能:设置主机名,不一样Linux之间可能有所差异,请使用 

        egrep hostname /etc/rc.d/init.d/* 

        或

         egrep hostname /etc/init.d/* 

        查找相应版本上的主机名设置文件及方法。

  /etc/inetd.conf 

Internet超级服务器,相关程序:/usr/sbin/inetd 

相应服务:

              telnet 

             ftp 

             pop3 

             r*      rsh rcp rlogin(建议最好关闭r服务) 

示例文件内容: 

# inetd.conf    This file describes the services that will be available 

#               through the INETD TCP/IP super server.  To re-configure 

#               the running INETD process, edit this file, then send the 

#               INETD process a SIGHUP signal. 

# Version:      @(#)/etc/inetd.conf     3.10    05/27/93 

# Authors:      Original taken from BSD UNIX 4.3/TAHOE.

 #               Fred N. van Kempen,  

# Modified for Debian Linux by Ian A. Murdock  

# Modified for RHS Linux by Marc Ewing  

#        

# Echo, discard, daytime, and chargen are used primarily for testing.

 # 

# To re-read this file after changes, just do a 'killall -HUP inetd'

 # 

#echo   stream  tcp     nowait  root    internal 

#echo   dgram   udp     wait    root    internal

 #discard        stream  tcp     nowait  root    internal

 #discard        dgram   udp     wait    root    internal 

#daytime        stream  tcp     nowait  root    internal 

#daytime        dgram   udp     wait    root    internal 

#chargen        stream  tcp     nowait  root    internal 

#chargen        dgram   udp     wait    root    internal 

# These are standard services. 

ftp     stream  tcp     nowait  root    /usr/sbin/tcpd  in.ftpd -l -a 

telnet  stream  tcp     nowait  root    /usr/sbin/tcpd  in.telnetd 

gopher  stream  tcp     nowait  root    /usr/sbin/tcpd  gn 

# do not uncomment smtp unless you *really* know what you are doing.

 # smtp is handled by the sendmail daemon now, not smtpd.  It does NOT 

# run from here, it is started at boot time from /etc/rc.d/rc#.d.

 #smtp   stream  tcp     nowait  root    /usr/bin/smtpd  smtpd 

#nntp   stream  tcp     nowait  root    /usr/sbin/tcpd  in.nntpd 

# Shell, login, exec and talk are BSD protocols.

 # 

Shell   stream  tcp     nowait  root    /usr/sbin/tcpd  in.rshd 

login   stream  tcp     nowait  root    /usr/sbin/tcpd  in.rlogind 

#exec   stream  tcp     nowait  root    /usr/sbin/tcpd  in.rexecd 

talk    dgram   udp     wait    root    /usr/sbin/tcpd  in.talkd 

ntalk   dgram   udp     wait    root    /usr/sbin/tcpd  in.ntalkd 

#dtalk  stream  tcp     waut    nobody  /usr/sbin/tcpd  in.dtalkd 

# Pop and imap mail services et al

 # 

pop-2   stream  tcp     nowait  root    /usr/sbin/tcpd  ipop2d 

pop-3   stream  tcp     nowait  root    /usr/sbin/tcpd  ipop3d 

imap    stream  tcp     nowait  root    /usr/sbin/tcpd  imapd 

# The Internet UUCP service. 

#uucp   stream  tcp     nowait  uucp    /usr/sbin/tcpd  /usr/lib/uucp/uucico    -l

 # 

# Tftp service is provided primarily for booting.  Most sites 

# run this only on machines acting as "boot servers." Do not uncomment 

# this unless you *need* it.   

#tftp   dgram   udp     wait    root    /usr/sbin/tcpd  in.tftpd 

#bootps dgram   udp     wait    root    /usr/sbin/tcpd  bootpd 

# Finger, systat and netstat give out user information which may be 

# valuable to potential "system crackers."  Many sites choose to disable  

# some or all of these services to improve security. 

# cfinger is for GNU finger, which is currently not in use in RHS Linux 

finger  stream  tcp     nowait  root    /usr/sbin/tcpd  in.fingerd 

#cfinger stream tcp     nowait  root    /usr/sbin/tcpd  in.cfingerd 

#systat stream  tcp     nowait  guest   /usr/sbin/tcpd  /bin/ps -auwwx 

#netstat        stream  tcp     nowait  guest   /usr/sbin/tcpd  /bin/netstat    -f inet

 # 

# Time service is used for clock syncronization. 

time    stream  tcp     nowait  nobody  /usr/sbin/tcpd  in.timed 

time    dgram   udp     wait    nobody  /usr/sbin/tcpd  in.timed 

# Authentication 

auth   stream  tcp     nowait    nobody    /usr/sbin/in.identd in.identd -l -e -o 

# End of inetd.conf 

 

linuxconf stream tcp wait root /bin/linuxconf linuxconf --http 

 

 inetd.conf 

相关文件:/etc/servicesSYSV/BSD/Linux相同) 

基本不用编辑,linux自带的已包含大部分服务,Solaris可能须要增长(POP3),参考相应的服务器安装说明,在此文件中列出了全部可用的网络服务。

 示例文件内容: 

# services      This file describes the various services that are 

#               available from the TCP/IP subsystem.  It should be 

#               consulted instead of using the numbers in the ARPA 

#               include files, or, worse, just guessing them. 

# Version:      @(#)/etc/services       2.00    04/30/93 

# Author:       Fred N. van Kempen,  

 文件格式:    服务名称      端口号/协议         服务别名 

tcpmux          1/tcp                           # rfc-1078 

echo            7/tcp 

echo            7/udp 

discard         9/tcp           sink null

 discard         9/udp           sink null 

systat          11/tcp          users 

daytime         13/tcp 

daytime         13/udp 

netstat         15/tcp 

qotd            17/tcp          quote 

chargen         19/tcp          ttytst source 

chargen         19/udp          ttytst source 

ftp-data        20/tcp 

ftp             21/tcp 

telnet          23/tcp 

smtp            25/tcp          mail

 time            37/tcp          timserver 

time            37/udp          timserver 

rlp             39/udp          resource        # resource location 

name            42/udp          nameserver

 whois           43/tcp          nicname         # usually to sri-nic 

domain          53/tcp 

domain          53/udp 

mtp             57/tcp                          # deprecated 

bootps          67/udp                          # bootp server 

bootpc          68/udp                          # bootp client 

tftp            69/udp 

gopher          70/tcp                          # gopher server 

rje             77/tcp 

finger          79/tcp 

http            80/tcp                          # www is used by some broken  

www             80/tcp                          # progs, http is more correct 

link            87/tcp          ttylink 

kerberos        88/udp          kdc             # Kerberos authentication--udp 

kerberos        88/tcp          kdc             # Kerberos authentication--tcp 

supdup          95/tcp                          # BSD supdupd(8) 

hostnames       101/tcp         hostname        # usually to sri-nic 

iso-tsap        102/tcp 

x400            103/tcp                         # ISO Mail 

x400-snd        104/tcp 

csnet-ns        105/tcp 

pop-2           109/tcp                         # PostOffice V.2 

pop-3           110/tcp                         # PostOffice V.3 

pop             110/tcp                         # PostOffice V.3 

sunrpc          111/tcp 

sunrpc          111/tcp         portmapper      # RPC 4.0 portmapper UDP 

sunrpc          111/udp 

sunrpc          111/udp         portmapper      # RPC 4.0 portmapper TCP 

auth            113/tcp         ident           # User Verification 

sftp            115/tcp 

uucp-path       117/tcp 

nntp            119/tcp         usenet          # Network News Transfer 

ntp             123/tcp                         # Network Time Protocol

 ntp             123/udp                         # Network Time Protocol 

netbios-ns      137/tcp         nbns 

netbios-ns      137/udp         nbns 

netbios-dgm     138/tcp         nbdgm 

netbios-dgm     138/udp         nbdgm 

netbios-ssn     139/tcp         nbssn 

imap            143/tcp                         # imap network mail protocol 

NeWS            144/tcp         news            # Window System 

snmp            161/udp 

snmp-trap       162/udp 

exec            512/tcp                         # BSD rexecd(8) 

biff            512/udp         comsat 

login           513/tcp                         # BSD rlogind(8) 

who             513/udp         whod            # BSD rwhod(8) 

 Shell           514/tcp         cmd             # BSD rshd(8) 

syslog          514/udp                         # BSD syslogd(8) 

printer         515/tcp         spooler         # BSD lpd(8) 

talk            517/udp                         # BSD talkd(8) 

ntalk           518/udp                         # SunOS talkd(8)

 efs             520/tcp                         # for LucasFilm 

route           520/udp         router routed   # 521/udp too 

timed           525/udp         timeserver 

tempo           526/tcp         newdate 

courier         530/tcp         rpc             # experimental 

conference      531/tcp         chat

 netnews         532/tcp         readnews 

netwall         533/udp                         # -for emergency broadcasts 

uucp            540/tcp         uucpd           # BSD uucpd(8) UUCP service 

klogin          543/tcp                         # Kerberos authenticated rlogin 

kShell          544/tcp         cmd             # and remote Shell 

new-rwho        550/udp         new-who         # experimental 

remotefs        556/tcp         rfs_server rfs  # Brunhoff remote filesystem 

rmonitor        560/udp         rmonitord       # experimental 

monitor         561/udp                         # xperimental 

pcserver        600/tcp                         # ECD Integrated PC board srvr 

mount           635/udp                         # NFS Mount Service 

pcnfs           640/udp                         # PC-NFS DOS Authentication 

bwnfs           650/udp                         # BW-NFS DOS Authentication 

kerberos-adm    749/tcp                         # Kerberos 5 admin/changepw 

kerberos-adm    749/udp                         # Kerberos 5 admin/changepw 

kerberos-sec    750/udp                         # Kerberos authentication--udp 

kerberos-sec    750/tcp                         # Kerberos authentication--tcp 

kerberos_master 751/udp                         # Kerberos authentication 

kerberos_master 751/tcp                         # Kerberos authenticati

ingreslock      1524/tcp 

tnet            1600/tcp                        # transputer net daemon 

cfinger         2003/tcp                        # GNU finger 

nfs             2049/udp                        # NFS File Service 

eklogin         2105/tcp                        # Kerberos encrypted rlogin 

krb524          4444/tcp                        # Kerberos 5 to 4 ticket xlator

 irc             6667/tcp                        # Internet Relay Chat 

dos             7000/tcp        msdos 

 

# End of services.

 linuxconf       98/tcp          # added by linuxconf RPM 

 

/etc/hosts.allow /etc/hosts.deny (Linux,或使用了tcpd, 参考inetd.conf) 

 

/etc/hosts.allow 设置容许使用inetd服务的机器,如:All:202.118即容许全部来自202. 118.x.x的请求 

/etc/hosts.deny 设置不容许使用inetd的机器 

这两个文件的设定顺序请参考在线文档:

 man tcpd 

man hosts.allow 

man hosts.deny 

Internet 网络服务访问控制文件,对于安全性要求较高的服务器建议采用xinetd替代inetdxinetd debian自带,其余的能够用源代码进行编译安装。 

 /etc/networks  /etc/netmasks 

文件功能:

 列出路由所须要的网络地址,相关命令/usr/sbin/route,固然也能够不使用这两个文件,在维护路由表时可直接使用IP地址及网络屏蔽位。 

Example: 

    /etc/networks 

    dlrin   202.199.128.0 

    /etc/netmasks 

    202.199.128.0 255.255.240.0 

 /etc/passwd 

用户口令文件: 

 /etc/shadow(若是有此文件,系统支持shadow机制) 

$ls -l /etc/shadow 

-rwx------   root   ....    /etc/shadow 

/etc/fstab 

 File System Table 

#设备名    MountPoint   Filesystem Type  加载选项 ... fsck标志 

/dev/hda1       /       ext2    defaults        1       1 

/dev/hda6       /home   ext2    defaults        1       2 

/dev/hda3       /usr    ext2    defaults        1       2 

/dev/hda5       /var    ext2    defaults        1       2 

/dev/hda2       swap    swap    defaults        0       0 

/dev/fd0        /mnt/floppy     auto    sync,user,noauto,nosuid,nodev,unhide   0 

    0 

/dev/cdrom      /mnt/cdrom      auto    user,noauto,nosuid,nodev,ro     0      0 

 none    /proc   proc    defaults        0       0     

   Solairs下对应文件:  /etc/vfstab 

 /etc/exports 

文件功能:NFSNetwork File SystemServer输出文件系统表,最好不使用NFS。 

nfs相关进程:  

     Solaris: mountd , nfsiod 

              /etc/init.d/nfs.server 

     Linux:  内核支持nfs, /proc/filesystem, 也能够经过加载modules实现,

  /etc/defaultrouter (Solaris 2.x) 

   内容为Default Routerip地址

   在linux

        Redhat 5.x: /etc/sysconfig/network 

                GATEWAY=202.118.66.1 

                GATEWAYDEV=eth0   

        Debian: /etc/init.d/network 

                #! /bin/sh 

                ifconfig lo 127.0.0.1 

                route add -net 127.0.0.0 

                IPADDR=202.118.66.88 

                NETMASK=255.255.255.0 

                NETWORK=202.118.66.0 

                BROADCAST=202.118.66.255 

                GATEWAY=202.118.66.1 

                ifconfig eth0 ${IPADDR} netmask ${NETMASK} broadcast

 ${BROADCAST} 

                route add -net ${NETWORK} 

                [ "${GATEWAY}" ] && route add default gw ${GATEWAY} metric 1  

 /etc/bashrc /etc/csh.cshrc /etc/profile 

    /etc/bashrc  BASH(Bourne Again Shell) RunTime Command  

                Shell Script用的最多 

        系统用户默认的环境设置,PATHumaskTERM Type 

    /etc/csh.cshrc CSH Runtime COmmand  

 /etc/ftpaccess   

    FTP访问控制文件文件位置可变 经过 

    #egrep ftp /etc/inetd.conf 

    ftp     stream  tcp     nowait  root    /usr/sbin/tcpd  in.ftpd -l -a  

ftp服务器守护进程文件名

     #which in.ftpd 

    /usr/sbin/in.ftpd 

    #strings  /usr/sbin/in.ftpd |egrep ftpaccess 

     /etc/ftpaccess  

    相关配置在ftp服务器配置中讲述。 

 /etc/ftpusers 

    不容许ftp的用户列表,通常包括root, uucp, bin等 

 /etc/ftpconvions /etc/ftpgroups   

     FTP服务器配置文件 

 /etc/group   

用户组文件

  /etc/sendmail.cf (Linux)    

SendmailEMAIL服务器)配置文件

     /etc/sendmail.cw           本地主机名 

                主机名: gingko.dlut.edu.cn 

                但愿接收: user@gingko.dlut.edu.cn 

                          user@mail.dlut.edu.cn 

                           user@dlut.edu.cn 

    /etdc/aliases       邮件别名文件 

/etc/aliases.db     邮件别名二进制数据文件newaliases创建 

/etc/sendmail.hf    sendmail 帮助文件,  

     $telnet mailserver 25 

     Trying 202.118.66.8...

      Connected to gingko.

      Escape character is '^]'.

      220 gingko.dlut.edu.cn ESMTP Sendmail 8.9.1/8.9.1; Tue, 2 Feb 1999 10:41:20 +080 

     0 (CST)         

     HELP 

     214-This is Sendmail version 8.9.1 

     214-Topics: 

     214-    HELO    EHLO    MAIL    RCPT    DATA 

     214-    RSET    NOOP    QUIT    HELP    VRFY 

     214-    EXPN    VERB    ETRN    DSN 

     214-For more info use "HELP ". 

     214-To report bugs in the implementation send email to 

     214-    sendmail-bugs@sendmail.org. 

     214-For local information send email to Postmaster at your site.

      214 End of HELP info   

以上目录结构是Linux的目录结构, Solaris 2.x目录结构是:

     /etc/mail/sendmail.cf 

    /etc/mail/sendmail.cw 

    /etc/mail/sendmail.hf 

    /etc/mail/aliases 

    /etc/mail/aliases.db  

 /etc/issue.net

 telnet时显示信息( strings in.telnetd |egrep issue) 

    /etc/motd    用户进入系统后的提示信息

  /etc/named.boot 

     DNS(BIND 4.9.x) 启动文件

      示例文件:(Caching Only Server) 

     directory /etc/namedb 

     primary 0.0.127.in-addr.arpa  named.local 

     cache . root.cache 

     其中root.cache 文件可经过dig获得

     dig @ns.internic.net . ns > /etc/namedb/root.cache 

     named.local文件内容以下:

       @  IN      SOA localhost. root.localhost. ( 

                1999020301 

                10800 

                3600 

                86400 

                86400 ) 

         IN    NS       localhost.

      1  IN      PTR     localhost. 

     /etc/named.conf 

     DNS(BIND 8.1.x) 启动文件

      (Redhat 5.2下可用/usr/doc/bind-8.1.2/named-bootconf.plbind 4.9.x 

     的named.boot文件转换为bind8named.conf文件格式执行过程以下

     /usr/doc/bind-8.1.2/named-bootconf.pl /etc/named.boot > /etc/named.conf) 

       /etc/host.equiv 

    $HOME/.rhosts 

    R*(rlogin, rsh , rcp, rexec)服务信任主机 

    格式:

         主机名(FQDN)    用户列表 

   /etc/ld.so.conf (Linux) 

    动态连接库文件目录列表相应命令ldconfig 

     $LD_LIBRARY_PATH Solaris 下相应的环境变量 

     用ldd 列出相应文件所使用的动态连接库 

     /etc/default[119]ldd /usr/ucb/ls 

       libc.so.1 =>     /usr/lib/libc.so.1 

       libdl.so.1 =>    /usr/lib/libdl.so.1  

     *修改过此文件以后请使用命令ldconfig从新生成目录列表及链接库文件列表。

  /etc/pam.d/login ( Linux Redhat) 

        auth       required     /lib/security/pam_securetty.so  

    /etc/securetty (Linux Redhat, Debian) 

         root可登陆的终端设备列表, tty[1-8] 为主控台上的设备

        ttyp* (Linux)远程登陆终端(TELNET)设备 

    /etc/default/login (Solaris) 

        # If CONSOLE is set, root can only login on that device. 

        # Comment this line out to allow remote login by root. 

        # 

        CONSOLE=/dev/console   

    注释掉相应的记录便可容许超级用户root从远程主机telnet登陆

     /etc/login.defs Linux Debian 登陆控制文件 

 Linux Loader /etc/lilo.conf 

    多重启动文件,  

    **** 修改完此文件后必定须要执行lilo,  

    **** 从新编译安装新的linux kernel修改此文件并执行lilo 

 /etc/syslog.conf  

    syslogd configuration file,  

 /etc/smb.conf 

    SAMBA  服务器配置文件,linux的文件系统与Windows 9x/NT共享 

 /etc/nologin 

系统在要关机时不但愿用户登陆进来,就产生此文件,此文件内容为显示给用户的有关拒绝链接的信息,用户此时就不能进入系统。当系统从新启动时若是有此文件,则机器启动后任何用户不能使用系统,此时可考虑从软盘或光盘引导删除此文件,而后再从新启动系统。 

 /etc/security 

设定那些终端可让root登陆,通常状况下设定为只有console上的用户可能用root

 注意:使用了PAM机制后,相应的文件为/etc/securetty。 

 /etc/X11/* 

XFree86配置文件。 

 /etc/Shells 

用户能够使用的Shell列表,若是强行修改/etc/passwd文件,也能够使用不在列表中的Shell程序,但对于Shell不在此列表中的用户将没法使用FTP链接本系统。 

 /etc/mtab 

系统在启动时建立的信息文件,内容为已经mount的文件系统,此文件内容是动态更新的,参考/proc/mounts。 

10.3  目 录 管 理 

1.创建目录 

建立目录的命令为:mkdir。 

其格式为:mkdir   目录名 

mkdir命令能够同时建立多个子目录,如“mkdir dir1 dir2”,此时建立的子目录dir1dir2是当前目录的同级子目录。若是要同时建立子目录和它之下的子目录,则使用mkdir命令的“-p”选项,如“mkdir p dir1/dir2”,则dir2dir1的子目录。 

2.删除目录 

删除目录的命令为:rmdir

 其格式为:rmdir   目录名 

rmdir命令只能删除空目录。若是但愿删除指定目录以及该目录下的全部文件和子目录,则使用rmdir命令的“-r”选项,如“rmdir r dir1”,则删除目录dir1,以及它之下的全部文件和它的子目录。 

3.显示目录内容 

显示目录内容使用的命令为:ls。 

其格式为:ls [选项] [目录名(文件名)

ls命令的具体状况在经常使用命令介绍一章中做了详细介绍,这里不在重复。 

4.移动目录及更名 

移动目录使用的命令为:mv

 其格式为:mv  源目录名 目标目录名 

若是目的目录名不存在,则把源目录名改成目标目录名,若是目标目录名已经存在,则把源目录移动到目标目录之下,做为它的子目录。 

5.复制目录 

复制目录使用的命令为:cp

 其格式为:cp r 源目录  目标目录 

注意:复制目录完成后,源目录和目标目录都存在,而移动目录完成后,源目录将不存在。

 6.肯定当前目录 

肯定当前目录使用的命令为:pwd 。它不带任何参数,显示用户当前所在的目录。 

7.改变工做目录 

改变工做目录使用的命令为:cd。 

其格式为:cd [路径名

其中路径名能够是绝对路径,也能够是相对路径。若是省略路径名,则转到用户的注册目录中。能够用“cd..”命令移回到父目录。此外,若路径名用“-”代替则转到上一次cd操做所在的目录。

 习题 

1Linux文件名中不能含有:(   )

 A.空格     B.“”      C.“*”     D.“?”      E.“$” 

2.系统正常运行时要改变的数据存放在:(   ) 

A. /        B. /proc    C. /dev     D/var 

3Linux_____表示当前目录。(   ) 

A*         B.        C..          D?  

 

 

11章  文件和目录操做

本章内容提要 

 

本章目的是使用户会列出文件,能删除和复制文件,会改变文件属性,能压缩和解压文件;能实现LinuxWindow9X资源共享。 

前面两章分别介绍了Linux文件系统及文件系统中的文件和目录。本章将详细介绍针对文件和目录的操做。

 

本章重点内容 

 

☆ ls列出文件 

☆ 文件的删除和复制

☆ 文件属性操做 

☆ 压缩和解压 

☆ 用fsck检查文件系统完整性 

☆ 用badblocks检查磁盘错误

☆ 文件碎片

☆ linux和 Window9X资源共享

☆ 文件系统疑难解决  

  

 

11.1  文件基本操做 

11.1.1  列文件 

列文件和目录的命令为:ls,其格式为: 

ls [option] [-color] [-help] [version] [filename] 

其中,option选项及其意义以下: 

-a:列出全部文件,包括那些以:“.”开头的文件。 

-b:强制显示非图形字符,并以八进制表示。 

-c:排序时不按字母顺序排列,而是按文件的最后时间排列。 

-d:若是后面接的是一个目录,那么使用该参数使得只输出该目录的名称。 

-f:不对目录中的文件排序,而是直接按照文件在磁盘中的存放顺序显示。 

-I:显示每一个文件的索引节点。

 -k:以千字节为单位显示文件条目。

 -l:使用长模式显示文件条目,包括链接数目、全部者、大小、最后修改时间、权限等。

 -m:水平排列文件名,每行能放置多少文件名就放置多少。 

-n:列出每一个文件的全部者的用户ID和组ID。 

-p:在文件名前面加上一个字母说明文件类型。

 -q:将文件名中的非图形字符显示为?。 

-r:按字母顺序反向显示文件条目。 

-s:以千字节为单位显示文件大小。 

-t:按文件修改时间进行排序,而不是使用文件名排序。 

-u:使用文件的最后访问时间进行排序。 

-x:强制多列输出,每一行进行排序。 

-A:功能与-a相同,可是不列出“.”,“..”目录。 

-B:不列出以“-”结尾的文件,除非是在命令行中特别指出。

 -C:强制多列输出,每一列进行排序。 

-F:在文件名末尾使用一个符号来表示文件类型。 

-G:当使用长格式显示时,不显示相关组信息。 

-N:不显示文件名。 

-R:递归列出全部目录及其子目录内容。

 -S:按文件大小排序,大的文件排在前面。 

164  11章  文件和目录操做

 -X:按文件扩展名排序,没有扩展名的文件排在前面。 

-l:按一行一个文件的形式显示文件。 

-color:切换到彩色显示模式。 

-help:显示ls的简单帮助。

 -version:打印版本信息后退出。 

11.1.2  复制文件 

复制文件使用的命令为:cp

 其格式以下:cp [选项源文件或目录 目标文件或目录 

该命令的功能是将选定的文件或目录拷贝到指定地点,它的功能很是强大。 

该命令的选项及其意义以下: 

-a:该选项一般在拷贝目录时使用,它尽量保持原有的文件属性和目录结构。 

-d:复制时保留连接。 

-f:强制删除复制目标的全部文件而不给出提示。 

-I:和f选项相反,在覆盖一个文件以前将给出提示。 

-p:此时cp除复制源文件的内容外,还保留原文件的全部属性,如权限、全部者、组等等。

 -r:若给出的源文件是一目录文件,此时cp将递归复制全部的文件。 

-l:不做拷贝,只是连接文件。

 11.1.3  删除文件 

Linux中建立文件很容易,当文件变得没有用处时,用户能够用rm命令将其删除。

注意,当要删除一个文件时,首先用户必须拥有对该文件的读/写权限,或者用户就是该文件的全部者。rm命令格式以下: 

rm [option] 文件名; 

rm -r [option] 文件名;  

前一种格式用于删除文件,后一种格式用于删除目录,及其下的全部文件和子目录中的全部文件。对于连接文件,只是删除了连接,原有文件均保持不变。 

该命令中的选项及其意义以下:

 -f:当指定文件不存在时,不给出提示。 

-r:将参数中列出的目录和子目录,以及其下全部文件删除。

 -I:进行交互式删除。

 -v:显示被删除的文件的信息。 

使用rm命令要特别当心。一旦一个文件被删除,它是不能被恢复的。因此建议用户使用rm命令中的i选项来确认要删除的每一个文件。若是用户输入y,文件将被删除。不然文件将被保留。 

11.1.4  移动和重命名文件 

用户能够使用mv命令来移动文件到另外一个目录中,或者为文件从新命名。mv命令的格式以下: 

mv [option] 源文件 目标文件或目录 

若是第二个参数是一个已存在目录,则该命令把源文件移入该目录中,若是第二个参数是目标文件,则mv命令完成文件重命名。 

11.2  文件属性操做 

11.2.1  改变访问权限 

Linux使用chmod命令来改变文件访问权限,可是只有用户对某文件拥有“写”(w)权限时,才能够改变该文件的权限。超级用户能够改变全部文件的权限。用户能够利用Linux系统提供的chmod命令来改变文件或目录的访问权限。该命令有两种用法: 

1.文字设定法 

采用这种方法时,chmod命令格式以下:

 chmod [用户选项] [操做符] [模式文件名文件名2  

其中,用户选项能够是下面几种选择: 

u:文件或目录的全部者。

g:全部者同组的用户。 

o:其余用户。 

a:全部用户。

 操做符能够是下面几种选择: 

+:添加某个权限到原来的权限上。 

-:从原权限中取消某个权限。 

=:用给定权限替代其余全部权限。 

模式能够有下面几种选择: 

r:读权限。

w:写权限。

x:可执行权限。

 2.数字设定法 

除了使用字母“r”“w”和“x”设置权限外,也能够使用数字代替。用数字表示的属性的含义:0表示没有权限,1——可执行权限,2——可写权限,4——可读权限,而后将其相加。因此数字属性的格式应为3个从07的八进制数,其顺序是:全部者、同组用户、其余用户。例如,若是想让某个文件的全部者有“读//执行”三种权限,须要把4(可读)+2(可写)+1(可执行)=7(读//执行)。使用数字设定法,chmod命令的格式为:

 chmod [模式文件名 

其中,模式也可为:r,w,x。其含义与文字设定法中的相同。例如: 

$ chmod 644 aa.txt 

则文件aa的全部者有读/写权限,全部者同组用户有读权限,其余用户也有读权限。 

11.2.2  改变组属 

改变文件或目录所属的组使用chgrp命令,其格式为:

  chgrp [选项新组 文件名文件名2   

其中,选项的意义是: 

- R:递归式地改变指定目录及其下的全部子目录和文件的属组。 

该命令改变指定文件所属的用户组。其中新组能够是用户组的ID,也能够是用户组的组名。文件名支持通配符,若是用户不是该文件的全部者或超级用户,则不能改变该文件的组。要把某个用户设置为某文件的全部者,应该使用chown命令,该命令的格式为: 

  chown [选项用户/组 文件名文件名2  

其中,选项的意义是: 

- R:递归式地改变指定目录及其下的全部子目录和文件的拥有者。 

Chown:将指定文件的拥有者改成指定的用户或组。 

11.2.3  查看文件内容 

用户须要查看一个文件的内容时,能够选择如下的命令。 

1cat命令 

cat命令将一个文件的所有文本一次所有送往显示设备,因此cat命令适合与查看小文件。它的格式以下: 

cat [ option ] 文件 

其中选项及其意义以下: 

-v:用一种特殊形式显示控制字符,除去LFOTAB。 

-T:将TAB显示为“^I。该选项须要与- v选项一块儿使用。 

-E:在每行的末尾显示一个$符。该选项也须要与- v选项一块儿使用。

 -u:输出不通过缓冲区。 

-n:显示输出行的编号。 

-b:显示非空输出行的编号。  

-e:至关于- vE。  

-A:至关于- vET。 

-t:至关于- vT。  

2more命令 

当文件内容过多时,通常可用more等命令分屏显示,以避免因屏幕滚动太快而没法看清。它一次只显示一屏的文本,显示满以后,停下来,按f键或【Space】可进入下一屏。more命令使用范围很广,功能强大。其格式为: 

more [ option ] 文件 

其中选项及其意义以下: 

more命令中各个选项的含义为: 

-p:显示下一屏以前先清屏。 

-c:做用同- p基本同样。

 -d:在每屏的底部显示更友好的提示信息:  

- - More- - XX%[Press space to contiune , q to quit . ]  

并且若是用户输入的命令不对,则会显示出错信息。

 -l:忽略< Ctrl+l >(换页符)。若是没有给出这个选项,那么在显示了一个包含有< Ctrl+l >字符的行后将会暂停显示,并等待接收命令。 

-s:把文件中连续的空白行压缩成一个空白行显示。 

此外,more命令在显示完一屏内容以后,将停下来等待用户输入某个命令。more命令在执行中用到的一些经常使用命令如,其中i表明的是行数。 

i空格:显示下面的i行,若不指定i值,则显示下一整屏。 

i回车:显示下面的i行;i的默认值为1。 

按【CtrlD】:显示下面的i行;i的默认值为11

id 同上 。 

iz 同“i空格”相似,不过i将成为如下每屏的默认行数。

Is:跳过下面的i行再显示一屏。i的默认值为1。 

if:跳过下面的i屏再显示一屏。i的默认值为1。 

按【CtrlB】:往回跳过i屏,再显示一屏。i的默认值为1。 

qQ:退出more。 

=:显示当前行号。 

h:显示各命令的帮助信息。 

·重复上次键入的命令。 

11.2.4  压缩和解压 

减小文件大小有两个明显的好处,一方面能够减小存储空间,另外一方面能够减小网络传输的时间。在Linux系统中常用gzip命令对文件进行压缩和解压缩。gzip命令格式为: 

gzip [选项文件名 

其中,选项及其意义为: 

-c:将输出写到标准输出上,并保留原有文件。 

-d:将压缩文件解压。 

-l:对每一个压缩文件,显示下列信息: 

压缩文件的大小 

未压缩文件的大小 

压缩比 

未压缩文件的名字 

-r:查找指定目录并压缩其中的全部文件或者把它们解压。 

-t:检查压缩文件是否完整。 

-v:对每个压缩和解压的文件,显示文件名和压缩比。

-num 用指定的数字num调整压缩的速度,-1表示最快压缩方法,-9表示最慢压缩方法。系统默认值为-6。 

例如: 

$ gzip aa.txt 

aa.txt压缩成aa.txt.gz; 

$ gzip -d aa.txt 

aa.txt.gz 还原成aa.txt。 

11.2.5  fsck检查文件系统完整性 

文件系统很复杂,所以易于发生错误。能够用fsck命令检查文件系统是否正确和有效。它能够根据指令修复找到的小错误,并将未修复错误报告用户。幸运的是,文件系统的代码很是有效,因此极少出现问题,而且问题一般缘由是电源失败、硬件失败或操做错误,例如没有正常关闭系统。  

大多数系统设置为启动时自动运行fsck ,所以任何错误将在系统使用前被检测到(并根据但愿修正)。使用有错误的文件系统可能使问题变得更坏:若是数据结构有问题,使用这个文件系统可能使之更糟,致使更多的数据丢失。固然,在大的文件系统上运行fsck 会花必定的时间,若是系统正常关闭,几乎从不发生错误,所以有一些方法能够不进行检查。若是文件/etc/fastboot存在,就不检查。另外,若是ext2文件系统在超级块中有一个特定的标记告知该文件系统在上次mount后没有正常unmountezfsck检查系统;若是标记指出unmount正常完成(假设正常unmount指出没问题),e2fsckfsck ext2文件系统版)就不检查系统。/etc/fastboot 是否影响系统取决于您的启动方式,但ext2标记则在您使用e2fsck 时发生做用——基于一个e2fsck选项(参阅e2fsck手册页)。 

自动检查只对启动时自动mount的文件系统发生做用。使用fsck手工检查其余文件系统,好比软盘。若是fsck发现修复的问题,则须要深刻了解文件系统的通常工做原理和有问题的文件系统的细节或好的备份。最后一个办法容易(虽然冗长)安排,若是本身不知道,有时能够经过朋友、Linux新闻组、电子邮件列表或其余支持源安排。  

fsck只能运行于未mount的文件系统,不要用于已mount的文件系统(除了启动时的只读根文件系统)。这是由于它存取原始磁盘,在操做系统不知道的状况下修改文件系统。

There will be trouble, if the operating system is confused.。 

11.2.6  badblocks检查磁盘错误 

应该周期性地用badblocks 命令检查坏块,它输出找到的全部坏块的编号的列表。列表将fsck 记录在文件系统数据结构中,使操做系统存储数据时不使用这些坏块。举例:  

$ badblocks /dev/fd0H1440 1440 > bad-blocks  

$ fsck -t ext2 -l bad-blocks /dev/fd0H1440  

Parallelizing fsck version 0.5a (5-Apr-94)  

e2fsck 0.5a, 5-Apr-94 for EXT2 FS 0.5, 94/03/10  

Pass 1: Checking inodes, blocks, and sizes  

Pass 2: Checking directory structure  

Pass 3: Checking directory connectivity  

Pass 4: Check reference counts.  

Pass 5: Checking group summary information.  

/dev/fd0H1440: ***** FILE SYSTEM WAS MODIFIED *****  

 /dev/fd0H1440: 11/360 files, 63/1440 blocks  

$  

若是badblocks报告一个块已经使用,e2fsck将试着将此块移到其余地方。若是该块真的坏了,而不是在坏块边缘,文件内容可能丢失。  

11.2.7  文件碎片 

文件写到磁盘时,不必定在连续的块中。没在连续块中的文件叫碎片。由于磁盘的读写头会更多地移动,因此读碎片文件会花较长的时间。虽然有好的读前缓冲系统将保证不会有什么问题,但最好仍是避免碎片。  

Ext2文件系统试图使碎片最少,即便不能将一个文件的全部块存在连续扇区中,也尽可能靠近。Ext2一般有效地安排里文件其余块最近的空闲块,所以不多须要关心碎片问题。

Ext2文件系统有一个消除碎片程序。  

有许多MS-DOS消碎片程序在文件系统中移动块以消除碎片。其余一些文件系统,消碎片必须经过备份——重产生——回存文件系统来完成。对于全部文件系统,消碎片应该备份文件系统,由于不少缘由可能在消碎片过程当中致使错误。  

11.2.8  ext2文件系统的其余工具 

除了产生文件系统的mke2fs 和检查文件系统的e2fsck直接或经过与文件系统类型无关的前端存取外,Ext2文件系统还有几个有用的工具。tune2fs将调整文件系统参数,一些有用的参数有:  

 最大mount数。当文件系统被mount过多少次之后,即便标志是干净的,e2fsck强制检查。对用于开发或测试的系统,应该下降这个限制数。  

 最大检查间隔。到达这个间隔时间,即便标志是干净的,e2fsck强制检查。若是文件系统不是常常mount,能够不使用这个功能。  

 保留给root的块数。Ext2root保留一些块,这样若是文件系统满了,还可能无须删除任何东西作系统管理。保留量默认是5%,这在大多数磁盘上不会形成浪费。固然,软盘没有理由保留块。  

11.3  LinuxWindows 9X资源共享 

11.3.1  Linux下共享Windows 9X的资源  

Linux下面读写Windows 9X/Windows 3.X/DOS的逻辑盘是至关容易的,无需安装任何其余软件,Linux自身就带有mount命令。读写前只要Mount上相应的分区就能够了。假设在Linux下要使用上述系统中Windows 98的某个文件,则只要以root身份运行如下命令:  

#mount /dev/hda1 /mnt  

位于Linux根目录下面的/mnt默认应该是空的,固然也能够创建其余的空目录,如用DOS_D来方便挂接其余设备。红旗linux内核均已经支持FAT32分区和Windows下的长文件名。mount后进入/mnt目录,就能够读写DOSC盘中的任何内容了。不过读者会发现,这样作没有长文件名。若是想在Linuxmount Windows分区后看到长文件名,还须要额外指定一下分区或文件系统类型,即运行以root运行mount -t vfat /dev/hda1 /mnt命令(若是已经mount了,请先运行umount将其卸载再mount。实际上,mount时应该指定分区类型的,不过如今的Linux也愈来愈智能化了。),这样就能够看到长文件名了。mount后,就能够开始安装在Windows下面下载的Linux软件,也能够用Linux下面的GTK see来看看Windows盘中的图形图像……,因为是可读可写的,所以几乎能够“随心所欲”。假设Linux分区中剩余空间少,而Windows中剩余空间还有一大堆,则能够将须要下载的大文件下载到Windows的分区中,而后再安装/使用。  

若是在Linux下面用vi编辑一个DOS/Windows下的文本文件,如CONFIG.SYS,能够发如今文件的每一行的最后面都有一个^M。这也是在Linux下面按【Enter】和DOS/Windows下按【Enter】的不一样之处。DOS下的【Enter/Return】不但换行,并且回车(Carriage Return,即光标回到最前面),而Linux下面的Enter只是换行。熟悉vi的读者应该很容易就解决这个问题,只要作一下全程的替换就好了。除此之外,还有fromdos之类的命令能够处理这个问题。  

若是您的Windows/DOS所在的硬盘采用的是FAT16格式,则仍然能够用-t msdos方式进行mount,不过会丧失诸如长文件名等一些功能。要改进也很容易,只要本身编译一个高版本的内核便可。对熟手来讲,编译内核至关简单,在这里就很少讲了。顺便讲一下,Linux下面要检验除显示方面之外的硬件的稳定程度,最好的办法就是编译内核。若是您的系统连续编译内核20次毫无问题,能够认为是稳如磐石的。)  

假如常常要在Linux下面使用DOS分区的内容,最好让Linux启动后自动将相应的分区mount上,只要修改/etc/fstab便可达到这个效果,下面是Linux/Windows系统中Linux/etc/fstab文件的内容,启动后,系统将自动mount Windows 9XD盘和E盘。  

# cat /etc/fstab 

/dev/hda3   /            ext2   defaults   1 1 

/dev/hda2   swap         swap   defaults   0 0 

/dev/fd0    /mnt/floppy  ext2   noauto     0 0 

none        /proc        proc   defaults   0 0 

 /dev/hda5   /dos_d       vfat   defauts    1 1 

/dev/hda6   /dos_e       vfat   defauts    1 1 

Linux下面,不但能够读写DOS/Windows 3.X/Windows 9X分区,还能够读Windows NTNTFS分区。不过目前对NTFS分区还只能读,不能写。 

11.3.2  Windows系统中使用Linux分区的资源  

目前在Windows 9X系统中使用Linuxext2分区的内容还限于只读,且须要安装额外的软件。能够安装的是fsdext2,它是基于GPL版权的,能够从http://www.globalxs.nl/home /p/pvs下载最新版本,做者的Email地址是pvs@globalxs.nl。国内许多有Linux资源的ftp服务器上都有这个软件,通常在LetWindowsReadLinuxWorkWithOtherOS之类的目录里面。这个软件至关小,安装使用也极其方便。  

1.安装  

从网上下载的应该是一个zip文件,用Unzip/PkunzipWinZip将其解压到一个目录内(如c:\mntlinux目录。用命令行的解压命令时,不要忘记加上“-d”参数以便恢复目录结构),而后进入此目录,运行里面的intall.bat便可完成安装。打开install.bat能够发现,install过程只是简单拷贝vext2d.vxd 到 Windows 9Xsystem目录,拷贝tsdext2.vxd Windows 9Xsystem\iosusbsys 目录。为使用方便,最好在autoexec.bat中将c:\mntlinux加入搜索路径中。而后只要将系统再从新启动一次就能够使用了。  

2.使用  

假设要在Windows 98中使用Linux分区下的内容,则只要在运行如下命令便可:mount /dev/hda6 h:  

此时打开My Computer(个人电脑),或者按一下【F5】对此进行刷新,能够看到F盘后面多了一个盘符H,这就是 Linux分区的内容。用Explorer打开看看,全部的文件都历历在目,甚至包括平时只有root 才能读写的/etc/shadow文件。不过要记住,目前fsdext2Linux分区还只是只读的,不能改写Linux分区中文件的内容,也不能往Linux分区中加入其余文件。运行mount命令时,也能够不指定盘符,此时系统会自动找第一个空余的盘符。  

若是想要卸载(umount),也很容易,若是Windowslinux分配的是G盘,只要在命

令行上运行mount /u g:mount g /u就能够将G盘卸载掉。若是提示出错,则看看是否打开了G盘中的文件,或者当前某个DOS窗口在还G盘的某个目录内,总而言之,此时须要卸载的盘不能处于“忙”的状态。检查一下,修正错误后能够当即再umount。  

11.4  文件系统疑难解决 

1.如何压缩可执行文件?  

Linux下有一个相似dos里的pklitelzexe 的命令——gzexe。并且压缩率通常均可以超过50%,在空间紧张时颇有用。好比:/dosc/temp# ls -al 

total 148 

-rwxr-xr-x 1 root root 149564 Dec 8 15:33 gawk 

/dosc/temp# gzexe gawk 

gawk: 54.5% 

/dosc/temp# ls -al 

total 216 

-rwxr-xr-x 1 root root 68710 Dec 8 15:36 gawk 

-rwxr-xr-x 1 root root 149564 Dec 8 15:33 gawk~ 

/dosc/temp# 

2.如何查看Linux启动时的信息? 

Linux启动时屏幕显示的信息来不及看清就一闪而过,若是对这些信息感兴趣的话,能够在启动完后用命令dmesg查看。 

3.如何处理文件名内含有特殊字符的文件? 

若是想删除一个名叫 file的文件,键入rm -file会显示invalid option,原来因为文件名的第一个字符为-Linux把文件名看成选项了,能够用双引号把整个文件名括起来,这样就不会把-file当成命令参数了。

 4.如何一次处理一整个目录?  

Linux/UNIX 的不少经常使用命令如rmcp等都有一个参数-r,是递归的意思。命令里加了参数-r就能够对目标目录及其下全部子目录进行操做,如:rm -rf /testfforce意为强行),该命令彻底删除根目录下的子目录test,做用相似于dos下的deltree,固然使用这个命令时要特别当心。再如:cp -r /test /test1有相似dosxcopy /s的做用。 

5.有哪些有用的别名?  

几个能方便操做和减小误操做的别名,建议把它们放到启动文件里,如/etc/bashrc。 

alias rm='rm -i'

alias cp='cp -i'

alias mv='mv -i'

前三个别名的做用是在删除、覆盖文件以前先提示确认,红旗已经自动加上了,强烈建议Slackware的用户也加上,由于Linux/UNIX下文件一旦删除就再也没法恢复了。

alias l='ls -l' 

alias cd..='cd ..' 

alias utar='tar xvfz' #解 *.tar.gz 文件 

alias inforpm='rpm -qpi' #显示rpm包的信息 

alias instrpm='rpm -Uhv' #安装rpm

 alias listrpm='rpm -qpl' #rpm包内的文件 

alias uistrpm='rpm -e' #反安装rpm包 

6.如何使用命令补齐? 

所谓命令补齐(Command-Line Completion)是指当键入的字符足以肯定目录下一个唯一的文件时只须按【Tab】键就能够自动补齐该文件名的剩下部分。例如要把目录/freesoft下的文件gcc-2.8.1.tar.gz 解包,当键入到tar xvfz /freesoft/g时若是该文件是该目录下唯一以起头的文件的话就能够按下【Tab】键,这时命令会被自动补齐为:tar xvfz /freesoft/ gcc-2.8.1.tar.gz,很是方便。 

7.如何拷贝与粘贴?

 字符界面:无论是Slackware 仍是红旗,安装后每次启动时都会自动运行一个叫gpm的程序,该程序运行后就能够用鼠标来拷贝与粘贴了。具体作法是按住鼠标左键拖动使要拷贝的地方反白,这时反白的区域已经被拷贝,再按鼠标右键拷贝的内容就会被粘贴在光标所在位置了。X Window下:拷贝的操做与字符界面下同样,三键鼠标的话,按中键粘贴,两键鼠标的话同时按左右键粘贴(须在配置XF86时在鼠标的设置里选择Emulate 3 Button)。

 8.如何快速进入某些目录?  

键入cd ~ 可进入用户的home目录。键入cd - 可进入上一个进入的目录。 

9.如何显示文件的类型?  

用命令file能够知道某个文件到底是ELF格式的可执行文件仍是Shell Script文件或是其余格式,例如:#file startx。 

10.如何命令文件的路径? 

当您键入一些命令如findshutdownmountstartx时是否想过要知道这些文件究竟放在哪一个目录里,用命令whereis能够实现。如 #whereis startx。 

11.如何查找文件?  

find命令要加一些参数才能查到文件,如:#find /usr -name XF86Setup -print /usr里查找文件XF86Setup。若是想知道一个文件到底在哪一个路径,能够用whereis filename。 

12.如何删除无用的core文件?  

程序运行出后有时候会产生一个名为core的文件,这个文件通常很大并且没什么用,能够删除掉以释放空间。

 13.如何一次解开.tar.gz文件?  

解开.tar.gz文件通常要先用gunzip解压再用tar解包,在Linux下能够一次完成,如:#tar zxpvf sample.tar.gz

 14.如何显示Windows 95分区里的长文件名?  

若是发现Windows 95分区里的长文件命不能显示,能够从新用vfat方式来mount。对于启动时就mount的分区能够修改文件/etc/fstab,将里面的msdos字样改成vfat。若是没法用vfat mount,则要从新编译一下核心,加入对vfat的支持。 

15.如何计算文件数和目录数  

下面的语句能够帮用户计算有多少个文件和多少个目录: 

# ls -l * |grep "^-"|wc -l ---- to count files  

# ls -l * |grep "^d"|wc -l ----- to count dir  

还能够将以上的语句变成Script

 16.如何只查看文件的某几行?  

若是只想看文件的前5行,能够使用head命令,如:  

head -5 /etc/passwd  

若是想查看文件的后10行,能够使用tail命令,如:  

tail -10 /etc/passwd  

查看文件中间一段能够使用sed命令,如:

 sed -n '5,10p' /etc/passwd  

这样就能够只查看文件的第5行到第10行。  

 17.某个分区mount出来是只读,如何解决?  

mount -v能够看到那个分区是可读写的,但是就是无法写进去,总是说这是一个read-only filesystem

 可按以下方法解决: 

A: mount -n -o remount,rw <安装点>  

习题 

1ls中的参数-a表示(   )。 

A.强制显示非图形字符,并以八进制表示 

B.排序时不按字母顺序排列,而是按文件的最后时间排列; 

C.若是后面接的是一个目录,那么使用该参数使得只输出该目录的名称; 

D. 列出全部文件,包括那些以:“.”开头的文件; 

2.检查文件系统完整性的命令是(   )。 

Afsck 

Bmv 

Cmount 

Dcp 

 

 

12章  核心升级和应用软件安装

章内容提要 

 

如今,有愈来愈多的人开始接触Linux、安装Linux、使用Linux,网络上,愈来愈多的企业使用Linux来架构本身的系统,同时也有愈来愈多的人讨论着与Linux相关的话题。

显然,Linux已经渐渐步入咱们的生活了。 

如今人们接触因特网的机会愈来愈多,使用者能够方便地使uxFTP来得到新的软件。所以,经过各类渠道得到软件并本身动手将取得的软件安装到本身的Linux系统中,便显得越用来越重要。

 

本章重点内容 

 

☆ 软件升级和安装的通常步骤 础☆ 如何升级核心 

☆ 常见应用软件如Oraclee-office的安装 

☆ 重点掌握应用软件的安装和核心升级,掌握命令targzipmake等命令的使用

12.1  升级和安装概述 

12.1.1  取得Linux软件 

首先,从因特网中FTP服务器上下载的文件,其格式大可能是下列几种中的一种: 

1*.tar -- 直接用tar将全部文件打包。  

2*.gz*.z -- 使用Gzipcompress压缩的文件。  

3*.tar.-- 先使用 tar 将文件打包后,再用 Gzip compress 将该文件压缩后的文件。  

为了节省储存空间以及提升传输效率,绝大部分软件都是通过压缩处理,才放在服务器上供人们下载的。所以,在得到这些软件后要作的第一件事,就是对该软件进行解压。

如今以一些常见的储存格式为例,来讲明解包的方法。 

12.1.2  解包工具 

1tar:其功能是将多个文件打包成一个合并的文件。软件做者可将全部文件打包成一个文件。使用者也要用tar来将这些文件解包。 

2GzipGNU Zip是一个在UNIX系统中经常使用的压缩、解压缩命令。Gzip压缩过的文件大都会在文件名后面加上.gz.z。 

3compressUNIX系统中传统的压缩命令,它能够压缩文件以减少文件的大小,compress压缩过的文件名后会加上.Zcompress文件保留原文件的权限和一些时间属性。 

4zcatzcat命令的功能是解压缩由compressGzip命令产生的压缩文件,并把结果送标准输出设备,且保留原压缩文件。 

5zless:与zcat相似,能够直接查看一个由Gzip压缩的文件内容。

 这些是经常使用的文件打包、压缩工具,下面来看一些实际的例子。 

myfile.tar.gz为例,这种类型的文件是由tar打包后再由Gzip压缩的产物。对于这个文件的解包方法是,先使用Gzip将该文件解压缩为原始的tar文件,而后执行tar将这些被打包在一块儿的文件一一还原。  

1.用Gzip解压缩  

Gzip -d myfile.tar.gz  

Gzip d 文件名”是解压缩的使用方法,在执行过解压缩的处理后,原来的压缩文件将不存在,而仅仅保留解压缩后的文件,不会额外占用磁盘空间。因此在执行完此命令后,将看不到原先的myfile.tar.gz而只有 myfile.tar。 

2.执行tar将文件解开  

用“tar xvf 文件名”的方式将一个tar文件解开。tar对文件名没有特别规定,所以,在使用tar时,要给予完整的文件名,不然tar会找不到要处理的文件。  

tar xvf myfile.tar 

3.查看压缩文件的内容  

因为tar可将多个指定目录的文件打包产生成一个文件,在这个文件中不只含有原文件的内容,也包括了文件目录以及文件属性,所以用户在解开一个tar格式的文件以前,最好也了解一下这个tar文件内的目录结构,以避免解开后,文件产生到其余目录中。  

下面的命令可让用户知道myfile.tar中究竟包含了哪些文件。  

tar tvf myfile.tar  

一样,Gzip也提供此类的功能,用户能够使用Gzip -l来查看压缩文件中的内容。  

Gzip -l myfile.tar.gz  

注意:在使用“tar xvf文件名”解开文件时, tar 会根据所记录的每一个原始文件所在目录来解开这些文件, tar 在执行时,会先在当前目录里找这个目录,若是找不到就创建该目录,而后逐一创建文件。  

举个例子来讲,现有一个tar文件要解开,能够先使用“tar tvf 文件名”的方式查看该内容,发现列出来的文件名开头都是usr/local/。在这个状况下,若是在$HOME目录下进行解包,那么tar将在该目录下分别创建usr/local/ 等目录。因而可知,此时用root身份在根目录解包比较恰当。因此在处理一个不知内容的tar文件前,先看一下文件内的目录结构是必要的。  

4.综合应用  

通过上面的说明,读者应该已经会正确地解开一个软件包了,不过上面的方法是最规矩的方式,或称之为分解动做,下面要讲的是其综合应用。  

例如,要查看/SOURCE中的myfile.tgz的内容:  

zcat /SOURCE/myfile.tgz | tar tvf -  

其中, 

1zcat将一个Gzip压缩文件解开并输出到标准输出设备;  

2)经过管道功能,将zcat的结果转向tar来处理;  

3tar tvf来查看文件内容;  

4)使用“-”是告诉 tar 要处理的文件资料是由标准输入设备而来的。 

要解开文件时使用:  

zcat /SOURCE/myfile.tgz | tar xvf -  

执行结果和原先分步执行结果不一样的是:压缩文件仍然存在。这些均可以达到解开文件的目的,能够随我的喜爱来选择不一样的方法。  

12.1.3  安装和升级的限制 

下面开始安装软件。新软件的原始文件解开后,接下来就是查阅做者附在里面的一些文件,如README.xxxRELEASESETUPTODOdocINSTALLChangeLog等文件。由于,在这些文件里每每会有些主要功能的说明,因为编译时系统环境的限制,如OS版本、GNU C版本、内存以及软件环境参数设置的方式和软件安装的步骤各不相同。因此,必需要阅读这些资料以避免形成遗憾,同时应注意如下几个方面。 

1Linux系统版本的限制 

Linux版本更新速度至关快,因此若是该软件使用到较新版本的特有功能时,则该软件没法在旧版本的Linux系统中执行。 

2GNU CC Runtime  Library版本的限制  

在直接安装软件的可执行文件时,若是Runtime Library的版本与做者编译该软件时的版本差别过大,就会产生错误致使没法执行。若是要从新编译该软件而且该软件用到一些新版才提供的函数时就会发生编译错误。所以,若是有此限制时,只有放弃该软件或升级系统两种选择。  

3.内存、硬盘的限制  

有一些软件在编译或执行时有特定的要求,如系统的内存或硬盘空间。若是没有注意到这一点,就有可能花了不少功夫结果获得的是一个错误讯息。   

4.其余相关软件  

有一些软件会使用到其余软件,所以,若是系统没有此相关软件,那也无法安装该软件。 

5.软件安装步骤说明  

对于较为复杂的软件,做者为了利于使用者正确安装,通常说来都会附上一份简要的安装说明。因此若是有这类文件最好看一下。

6.其余方面  

有些软件有多个更新版本,可能会附有文件来讲明每一个版本更新的主要内容以及错误修正的状况,像这类文件也能够参考。  

若是该软件是以可执行文件的方式安装,一切安装工做也就到此为止。若是是以源代码方式提供的话,那么就要编译软件,这是一件至关繁重的工做。究竟该怎么编译软件呢?说简单一点就是直接在软件的原代码所在目录敲入make就能够完成编译工做。一般做者在原代码目录中创建该软件编译所要的Makefile让使用者直接用make来完成编译工做。  

12.2  核 心 升 级 

核心是操做系统中最重要的部分。就DOS而言,它是指IO.sysMSDOS.sys;就Linux而言,它是指位于根目录(/)里的vmlinuz文件。  

它能够控制整台PC的运做,包括周边设备、软驱、硬盘、CDROM、声卡等。  

升级核心通常有几个缘由: 

1)找到支援新硬件的驱动程序; 

2)更稳定的环境; 

3)更好的效能; 

4)了解Linux核心是如何创建的。 

12.2.1  核心升级步骤 

1.了解目前的版本 

要升级核心,首先要了解目前核心是几版,最新的又是多少版,以避免本身的核心已经是最新版了还在作升级操做。 

2.下载核心 

要升级核心,固然必须下载新的核心来用。用户可经过如下站点来下载。 

ftp://ftp.hk.kernel.org/pub/linux/kernel/  

http://www.kernel.org/  

也可到匿名ftp站得到更高级的内核,例如从ftp.funet.fi的 /pub/Linux/PEOPLE/Linus或是其余镜像(MIRROR)站中得到。文档名称通常标记成linux-x.y.z.tar.gz,其中的x.y.z 是版本编号。较新的版本以及修补版本通常是放在相似“v1.1”以及“v1.2”这样的子目录下。数字最大的是最新的版本,并且一般是“测试版”。若是您认为betaalpha版不安全的话,

则应该注重于主要的发行版本。 

不过最好找一些mirrorftp节点,而不要直接到ftp.funet.fi上下载内核。如下是一些mirrors以及其余节点的简要列表: 

USA:   sunsite.unc.edu:/pub/Linux/kernel 

USA:   tsx-12.mit.edu:/pub/linux/sources/system 

UK:      sunsite.doc.ic.ac.uk:/pub/UNIX/Linux/sunsite.unc-mirror/kernel 

Austria:  ftp.univie.ac.at:/systems/linux/sunsite/kernel 

Germany:   ftp.Germany.EU.net:/pub/os/Linux/Local.EUnet/Kernel/Linus 

Germany:  sunsite.informatik.rwth-aachen.de:/pub/Linux/PEOPLE/Linus 

France:  ftp.ibp.fr:/pub/linux/sources/system/patches 

Australia:  sunsite.anu.edu.au:/pub/linux/kernel 

3.了解硬件环境 

目前的核心已经能够辨识大部分的硬件,但并非所有,使用者在升级核心前最好了解本身的硬件环境,应该知道哪项硬件使用的系统资源(IRQDMA)是什么,尤为是了解非PnP(即插即用)显示卡(display card)所使用IRQDMA是什么。建议内存至少有8 MB,这样才能较为顺利地编译核心。  

4.解开原始核心源代码的包装  

以“root”的身份登陆,而后进入到/usr/src下。若是安装Linux时已经安装了核心原始程式码,则在这个目录下,应该已经存在一个“Linux”的子目录。这是旧版的Linux原始程式码。将该子目录更名或者清除掉,确保在解开所有的原始程式码以前,/usr/src目录下没有“Linux”这个子目录。  

/usr/src目录下,用`tar zxpvf linux-x.y.z.tar.gz' 解开原始程式码的包装(若是您拿到的是.tar 的文件类型,则不用.gz,命令为:`tar xpvf linux-x.y.z.tar')。完成后,在/usr/src将会出现一个新的“Linux”子目录。进入到Linux目录下,查看README文件,看是否有一段标题为“INSTALLING the kernel”或相似的文字。若是正确,依照说明里的指示,创建符号连接,删除过期的.o文件等。 

5.编译核心  

为了方便使用者编译核心,核心的编译与设定依据使用者下达的指令而有许多不一样的进行方式。使用者能够使用的指令以下 :  

 make config:在文字模式下设定编译核心的选项。  

 make oldconfig:以旧版 /usr/src/linux-2.2.5/.config 文件记录的选项做为编译核心的选项。  

 make menuconfig:在文字模式的选单下设定编译核心的选顶。  

 make xconfig:在 X Window system 下设定编译核心的选项。  

 make clean:将一些没必要要的文件删除。  

 make dep:将原始程序和硬件作链接的工做。  

 make zImage:编译核心,但不作其余的事。  

 make bzImage:若是 make zImage 创建的核心太大,使用者能够使用 make bzImage 编译核心。  

 make zdisk:编译核心,而且创建启动盘。  

 make zlilo:编译核心,而且创建有 LILO 的启动盘。  

使用者不论使用 make configmake menuconfig 或 make xconfig 指令设定编译核心的选项,只有操做界面的不一样,设定的项目并无改变。 

下面是重建内核选项时的一些参考。 

1processor family (386486/cx486586/k5/5x86/6x86pentinum/k6/tscppro/6x86)  

选择CPU的种类,BIOS能够自检获得,注意系统的启动信息。须要注意的是不能选择比本身的CPU类型还高级的CPU,不然可能不能正常工做。  

2math emulation  

模拟数学协处理器,若是您的机器没有数学协处理器,就能够选中它以提升性能,但“486”之后数学协处理器就集成到CPU内部了,应该是用不上的,因此通常的选择是N。固然选上也不会有什么问题,除了内核稍稍变大外。  

3mttrmemory type range registersupport  

这个选项是用来启动pentinum propentinum II 的特殊功能,若是您用的不是这类CPU就选N,不然也仅仅是使内核变大而已。  

4symmetric multi-processing support  

同步处理器支持,若是您有多个CPU就选上。  

5enable loadable module support  

这会启动动态载入额外模块的功能,因此必定选上。  

6set version information on all symbols for modules  

这个选项能够使为某个版本的内核而编译的模块在另外一个版本的内核下使用,但通常用不上。  

7kernel module loader  

若是启用这个选项,用户能够经过kerneld程序的帮助,在须要的时候自动载入或卸载那些可载入式的模块。建议选择此项。  

8networking support  

若是您用到任何网络就应该选上。 

9pci bios support  

这个选项通常是应该选上的,除非使用没有任何PCI设备的机器。PCI BIOS是用来侦测并启用PCI设备的。  

10pci bridge optimizationv1.3) 

当这个选项被启动时,操做系统会对从CPU和系统内存在PCI总线来往的数据作最佳化,这个功能已经完成实验阶段,使用起来应该很安全,并且还可增进系统的效率。  

11system v ipc  

起用这个选项能够使内核支持System V 的进程间通讯的功能(IPC),有些从System V转移过来的程序会须要这个功能,建议启用该功能。  

12sysctl support  

除非内存少的可怜,不然您应该启动这个功能,启用该选项后内核会大8KB,但能让您直接改变内核的参数而没必要从新开机。  

13kernel support for elf binaries  

该选项让用户的系统得以执行用ELF格式存储的可执行文件,而ELF是现代Linux的可执行文件、目标文件和系统函数库的标准格式。当操做系统要和编译器以及链接器合做时会须要这些标准,因此应该回答Y。  

14compile kernel as elf  

这选项让您的内核自己以ELF的格式编译,若是系统上的过程gcc默认产生ELF格式的可执行文件,那么就应该启动这个选项,但应查看一下本身的编译器的版本再决定。  

15parallel port support  

若是用户有任何并行口的设备而且想让Linux使用,那么就能够启用这个选项。Linux不只能够使用并口打印机,还能够支持PLIP(一种为并行口而设计的网络通信协定),ZIP磁盘驱动器、扫描仪等。在大多状况下,须要额外的驱动程序才能使用外接的并口设备。  

16plug and play support  

支持PnP设备并不是Microsoft的专利,若是要让Linux也支持PnP设备,只要启用该选项就能够,但有些状况下会和其余设备产生冲突(I/ODMAIRQ等)。这个选项对PCI设备没有影响,由于它们本生就是PnP设备。  

17normal floppy disk support  

除非不想在Linux下使用软盘,不然就应该回答Y。但对于一些不须要支持软盘驱动器的系统而言,这个选项能够节省一些内存。  

18enhanced ide/mfm/dll disk support  

除非不须要MFM/DLL/IDE硬盘的的支持,不然就应该回答Y,但若是只有SCSI的硬盘,关掉这个选项会比较安全。  

19enhanced ide/mfm/dll cdrom support  

和上面的相似,只不过是对CDROM的支持而已。  

20enhanced ide/mfm/dll tape support  

通常没有多少人在用磁带机,因此回答N是比较好的答案。  

21enhanced ide/mfm/dll floppy support  

这个设备通常没有人用,因此也能够回答N。  

22xt harddisk support  

若是用户有这种石器时代的XT硬盘,那么就能够回答Y。  

23parallel port ide device support  

Linux是支持这种很新的并口的IDE设备的,若是有的话就选Y。  

24networking options  

若是在前面选了支持网络的话,在这里会回答不少问题。除非有特别的需求,不然使用默认的选项应该就足够了。  

25scsi support  

若是有任何一种SCSI控制卡,这个选项就应该回答Y。事先搞清楚本身的硬件类型,由于这些问题都是针对特定的SCSI控制芯片和控制卡的,若是不肯定本身使用的是哪种,查看一下硬件的说明文件或者LinuxHOWTO文档。此处一样也会让用户回答不少SCSI设备的支持(硬盘、CDROMTapefloppy等),依据实际状况选择。若是没有SCSI设备的话,建议不要支持,由于这会节约不少内核空间。  

26network device support  

这里面有不少关于网络控制卡的问题,若是没法肯定如何正确选择,查看硬件文档或LinuxHOWTO文档。  

27amateur radio support  

这个选项能够用来启动无线网络的基本支持。目前的无线网络能够经过公众频率传输数据,若是用户有此类设备就能够启用,具体请参考AX25HAM HOWTO 文档。  

28isdn subsystem  

若是有ISDN硬件就应该启用该选项并安装合适的硬件驱动程序,用户应该还会须要启用Support synchronous PPP选项(参考PPP over ISDN)。  

29old cd-rom drivers  

这是针对一些特殊光盘驱动器程序的问题,若是用户有IDESCSICDROM控制卡,那么就不用启用该选项了。  

30character devices  

Linux支持不少特殊的字符设备,例如并口、串口控制卡、QIC02磁带驱动器以及特定界面的鼠标,此外对于游戏杆和影像摄取和麦克等也在这里面,依据本身的状况选择。  

31filesystems  

这是一系列内核所支持的各文件系统的问题,对ext2 /proc文件系统是必定应该支持的,有光驱还应该支持ISO9660(或模块支持),有WindowsDOS分区而且想在Linux下访问他们也能够进行支持。  

32console drivers  

至少应该支持VGA text console,不然没法从控制台使用Linux。  

33sound card support  

在这里回答Y会出现不少关于声卡的问题,用户应该根据本身的状况来配置。  

34kernel profiling supportv1.3) 

这个选项能够开启内核作效率统计的功能,而且会提供其余在为系统侦错时有用的信息。这些功能会须要付出一些代价并形成系统执行得较为缓慢,除非用户正在研究内核的某个问题,不然应该回答N。  

35kernel hacking  

若是用户正打算深刻研究本身系统上运行的Linux如何运做,这里有不少选项,但若是没有必要的话能够所有关掉。  

12.3  应用软件安装 

12.3.1  Oracle安装 

Oracle在推出Oracle 8.0.5 for Linux以后,又快马加鞭地将其最新旗舰产品Oracle 8i8.1.5Internet)移植到Linux上。Oracle 8i比其之前的产品更适应目前的Internet发展,对Internet的支持领先于其对手。Orcale 8i 比其早先版本有很大改变,特别是安装程序。Oracle 8i启用了新的安装程序OUIOracle Universal Installer),OUI是用Java写的,所以它可在任何JVM上运行,完全改变了原有的基于字符方式的Orainst,这一点颇让广大Oracle用户感到不适。  

该版本(指在网上可供免费下载的)在发布时存在太多的bug,因此Oracle根据用户的反馈意见随即发布了一个补丁程序,基本解决了问题,因此在安装完毕后必须打补丁。 

根据Oracle关于Oracle 8i for Linux的发布公告,该版本是一个完整的软件发行版本。 

1.系统需求 

按照Oracle的发布公告(usr:clyancl passed iamclyan)中所要求的,Oracle 8i for Intel-Linux硬件和操做系统的要求是: 

内存:最小128MB,运行Java VM则需256MB或更多。  

 交换空间:建议三倍于内存,如内存超过1GB,则可减小为二倍于内存或更少。  

 内核版本:Linux kernel 2.2。  

 窗口管理器:任何窗口管理器,如fvwm。该版本再也不支持基于字符的安装。  

 系统库:glibc 2.1redhat 6.0)。

  安装空间:最小约693MB,典型约765MB。  

 交换空间:建议三倍于内存,如内存超过1GB,则可减小为二倍于内存或更少。  

 JDK1.1.6V5

  其余需求:egcs-1.1.2tcl 7.5等。  

关于所需内存,不必定要128MB以上,实际上64MB内存也能够,只是运行速度较慢而已。为了能充分利用Oracle 8i提供的众多基于图形方式的实用程序和知足大数据库的查询处理,建议最好有128MB或更多的内存。 

2.准备工做 

1)下载Oracle 8i for Linux。用户可到OracleFTP站点上下载Oracle 8i企业版(815ship.tgz 245M)。 

2)下载Oracle 8i的补丁程序。用户可到OracleFTP站点下载Oracle 8i企业版的补丁程序。(linux_81501patch_ee.tgz 6.1M)。 

3)下载JDK 1.1.6v5。用户可到Blackdown.org查询下载的站点,也可下载JDK 1.1.6v5JRE 1.1.6v5,实际上安装只要jre便可。 

3.安装前

 首先检查是否有足够的硬盘剩余空间,建议用一个单独的分区安装Oracle 8i和数据库。若是用户使用Gnome/enlightenment窗口环境,必须检查一下enlightenment的版本: 

rpm -q enlightenment 

若是是enlightenment-0.15.5-32,则必须升级到0.15.5-37版本,可按上面介绍的方法升级。RedFlag同时提供GnomeKDE,在“/usr/X11R6/lib/X11/xinit”目录下有一个Xclients文件,修改它可选择运行Gnome仍是KDE。本文使用KDE。 

本书假定:

 ORACLE_HOME=/u1/oracle/product/8.1.5 

ORACLE_SID=ORCL  安装JRE 1.1.6v5 

jre_1.1.6-v5-glibc-x86.tar.gz拷贝到/usr/local目录下,解压缩: 

tar zxvf jre_1.1.6-v5-glibc-x86.tar.gz 

ln -s jre116_v5 jre 

 建立oracle用户和组

 groupadd dba 

groupadd oper(该组是可选的,其ID多是501) 

useradd oracle -g dba 

passwd oracle(修改口令) 

建立oracle的安装目录,本文将安装目录设为“/u1/oracle/product/8.1.5”。只需建立“/u1”便可,设置“/u1”的全部者: 

chown oracle.dba /u1 

再建立一个目录用于暂放Oracle 8i软件包815ship.tgz

 mkdir /ora_package 

chown oracle.dba /ora_package 

建立好oracle用户和相关组后,退出rootlogout),从新用oracle用户登陆... 

cd /home/oracle (或 cd ~)进入oracle用户的主目录,建立该用户的自动执行文本

".bash_profile"。 

vi .bash_profile 

在该文件中加入下列内容: 

# Setup ORACLE environment

 ORACLE_HOME=/u1/oracle/product/8.1.5 

export ORACLE_HOME 

ORACLE_SID=ORCL 

export ORACLE_SID 

ORACLE_TERM=xterm 

export ORACLE_TERM 

ORACLE_OWNER=oracle 

export ORACLE_OWNER 

TNS_ADMIN=/home/oracle/config/8.1.5 

export TNS_ADMIN 

CLASSPATH=$ORACLE_HOME/jdbc/lib/classes112.zip 

export CLASSPATH 

# Set up the search paths: 

PATH=/usr/local/jre/bin:/usr/local/jdk/bin:/bin:/sbin 

PATH=$PATH:/usr/bin:/usr/sbin:/usr/local/bin:$ORACLE_HOME/bin 

PATH=$PATH:/usr/local/sbin:/usr/bin/X11:/usr/X11R6/bin:.

export PATH 

保存该文件,而后logout

 4.安装 

oracle用户登陆,将下载的oracle 8i软件包815ship.tgz拷贝到已建立好的“/ora_package”目录下,解压缩:

 cp 815ship.tgz /ora_package 

cd /ora_package 

tar zxvf 815ship.tgz 

用户能够用ls看到oracle 8i的安装文件runInstaller。 

1)启动X Window,运行runInstaller 

startx 

启动X Window后,启用一个终端(kvt),在该终端中运行runInstaller: 

sh runInstaller

 这时能够看到用jre运行的全新的图形化的OUI的欢迎画面,按照提示继续安装进程:  

 File locations,确认正确后,点击【Next】按钮,OUI装载产品信息。  

 UNIX Group Name,默认为dba,若是不填,则只有root能够有oralce的系统管理员权限。  

 NextOUI出错,提示要以root权限运行“/tmp/orainstall/orainstRoot.sh”,打开另外一个终端,键入下列命令:su(输入root口令),sh/tmp/orainstall/orainstRoot.sh,提示建立"/etc/oraInst.loc并将OraInventory文件的组名改成dba,返回OUI按【Retry】。  

 Available Products Oracle 8i Enterprise Edtion 8.1.5.0.0,按【Next】。  

 Installation Types(这里有一个小bug-典型安装所需的空间比最小安装“大”)选typical,按【Next】,出现安装Oracle Intelligent Agent,按【Next】,在右上角有一个进度标尺提示。  

 Database IdentificationGlobal Database Name:First.yanzi(任意)。SID保留ORCL,按【Next】。  

 Database File Location,任意目录,无特别要求,不妨设为“/u1/oracle/dbs”,按【Next】。出现Summary,对用户想要安装的产品做一个总结。  

按【Install】,出现Install画面,用户能够看到窗口底部提示的安装等log文件目录,可供之后查询。  

接着会弹出一个提示:执行“/u1/oracle/product/8.1.5/root.sh,在另外一个终端窗口中(刚才su的那个便可)以root权限执行该文件,将默认的/usr/bin改成/usr/local/bin,执行完毕后,返回OUI,按【OK】。  

安装Configuration Tool,安装dbassist时出错,按【OK】忽略,按【Next】。  

 End of Installation,按Exit退出OUI,完成安装。  

修改/etc/ld.so.conf,加入以下内容: 

/u1/oracle/product/8.1.5/lib 

/u1/oracle/product/8.1.5/jdbc/lib 

保存该文件,执行ldconfig  -v。  

2)打补丁 

将下载的Oracle 8i企业版补丁程序linux_81501patch_ee.tgz拷贝到/ora_package/ora_ patch目录下,进入此目录,解压缩:  

mkdir /ora_package/ora_patch    

cp linux_81501patch_ee.tgz /ora_package/ora_patch  

cd /ora_package/ora_patch  

tar zxvf linux_81501patch_ee.tgz  

sh linux_81501patch_ee.sh  

补丁程序只能运行一次。 

3)建立数据库

 在Oracle 8i中提供一个图形界面的数据库助理dbassist,它也是基于Java的,利用它能够建立、修改和删除数据库。 

在一个终端窗口中运行dbassist:  

dbassist &,出错时按【OK】忽略,  

选择Create a database,按【Next】,  

选择Typical,按【Next】,  

选择Create new database files,按【Next】,  

选择Online Transaction PrecessingOLTP),按【Next】,  

并发用户15,按【Next】,  

数据库配置选项所有选中,按【Next】,  

输入Global Database Name: oracle1SID保留ORCL,按【Next】,  

如今能够直接建立数据库,也可保存为一个Shell脚本文件在字符方式下执行,该脚本保存在$ORACLE_HOME/install目录下,名字为sqlORCL.shsh $ORACLE_HOME/install/sqlORCL.

 sh)。  

建立好数据后,关闭数据库服务器。 

svrmgrl 

connect internal

 shutdown 

quit 

4)测试数据库

 数据库的测试可参照Oracle 8.0.5安装指南提供的方法进行。 

注意:system的默认口令是manager,而sys的默认口令是chang_on_install。 

关于Oracle 8i的网络配置,可以使用新的图形界面的netasst,经常使用的网络协议用TCP/IPTCP端口1521,这些可在netasst中经过配置侦听器(listener)来实现,而后用lsnrctl start命令启动侦听程序。 

12.3.2  安装Sybase客户端  

首先从Microsoft SQL ServerSybase SQL Server的关系提及。两公司曾共同开发OS/2上的数据库SQL Server for OS/2,此后两公司又独立开发升级系统,Sybase的客户端能够访问Microsoft SQL Server。  

和其余数据库公司相比,能够说Sybase公司对Linux是最兼容的,它虽不提供Linux下的SQLServer,但提供了免费的CTLIB的客户端,这也多是许多IT管理人员在为公司数据库选型时再也不考虑OracleInformix的理由之一。 

Sybase公司发布的OpenClientforLinuxa.out格式的,在互联网上有人将其转化为ELF和动态连接的ELF格式,可从下列地址上下载:http://www.mbay.net/mpeppler。最好同时下载两个版本,正常使用时采用动态连接的版本,但有的程序在编译时可能须要一个库(libblk.a),只在ELF里面包含。  

下载之后,键入以下命令展开(假设当前目录是/usr/tmp),下载软件包为

Linux-df-dynamic.tar.gz。 

tar zxvf linux-df-dynamic.tar.gz 

而后将其移至/usr/local目录:  

mvsybase/usr/local  

编译和使用Sybase客户端须要进行以下的设置:  

 Interface文件举例以下:  

MSSQL  

querytcpethermysql1433  

其中: MSSQL是客户端使用的服务器名,之后引用MSSQL便可; mysql是服务器

的地址或名字,若是是名字,则系统可以查到其IP地址; 1433SQLServer的端口号,MicrosoftSQLServer的默认值是1433Sybase5000。  

 SYBASE环境变量,内容是Sybase客户端所在的目录:  

Export SYBASE=/usr/local/sybase  

若是编译Sybase客户端中的例子,则还要设置环境变量SYBPLATFORM:  

export SYBPLATFORM=Linux  

而且修改其头文件中关于服务器名称及用户名和口令的描述。  

使用SQSH界面访问SQLServer  

Sybase客户端提供了xisql工具,但更多的人使用的是SQSHSQSHSQShell的缩写,是改进了的isql,可从下列地址下载:http://www.voicenet.com/gray/。当前的最新版本是1.6.0。假设下载后的文件放在/usr/tmp目录下,下载软件包为sqsh-1.6.0.tar.gz

 Torr zxvf sqsh 1.6.0.tar.gz。 

cdsqsh1.6.0  

./configure  

make;makeinstall  

而后,将生成的可执行文件sqsh安装到/usr/local/bin/目录下。  

Sqsh的使用以下:  

sqsh--Uusername--Ppassword--Sservername  

其中usernamepassword是用户名和口令,servername是在interface文件中定义的服务器名(如例子中的MSSQL)。  

Sqsh是交互式的命令行界面,命令用输入go来执行,命令若是较长,可分红几行书写,按【Enter】键换行便可。  

如下是一个例子:  

1>usepubs  

2>go  

1>selectfromauthors  

2>go采用CTLIB编写应用程序  

因为SybaseLinux客户端不提供DBLibrary,因此应采用CTLibrary来编写应用程序,采用CTLibrary编写应用程序可参考上例,详细的编程说明能够参考Sybase的说明。  

 利用Sybperl编写应用程序  

SybperlSybasePerl扩展,可利用Perl语言来访问SQLServer,或者编写CGI程序。

Sybperl可从下列地址取得http://www.mbay.net/mpeppler。当前的最新版本是2.9.5。取得Sybperl的源代码展开之后,应该修改一下CONFIG文件。 

下一个要修改的文件是PWD,这是用来进行测试的,将其中的服务器名、用户名、用户口令设置成本身的配置便可。而后进行编译:  

perlMakefile.PL  

make;maketest;makeinstall  

194  12章  核心升级和应用软件安装 

安装成功之后,便可使用Sybperl进行编程。下面是一个简单的例子。  

!/usr/bin/perl  

useSybase::CTlib;  

dbh=newSybase::CTlib'sa','','MSSQL';  

dbh>ct_execute("selectau_id,au_lname, au_fnamefrompubs.dbo.authors");  

while(dbh>ct_results(restype)==CS_SUCCEED){  

nextunlessdbh>ct_fetchable(restype);  

while((au_id,au_lname,au_fname)=dbh>ct_fetch){  

print"au_id-$au_lnameau_fname\n";  

 }  

}  

能够看出,短短几行语句,就能够完成对数据库的操做。  

以上从几个方面对在Linux下访问MSSQLServer数据库进行了说明,介绍了基本的API编程、SQSH命令行访问、Perl访问。其实,在Linux下还可采用其余方式进行访问,如采用第四级的JDBC进行访问,这时除了JavaJDBC外,并不须要其余软件(具体信息可访问http://www.connectsw.com)。  

12.3.3  ApacheMySqlPHP安装 

1.安装 Apache 

如今该安装Apache了。假设用户下载的源文件在/tmp目录,应该确保以root帐号登录,如下是安装步骤: 

1)解包 

$ tar -zvxf apache_1.12.6.tar.gz 

$ cd apache_1.12.6 

$ ./configure --sysconfdir=/etc/httpd \ 

              --datadir=/home/httpd \ 

              --logfiledir=/var/log/httpd \ 

              --enable-module=most \ 

              --enable-shared=max \ 

              --disable-rule=WANTHSREGEX 

这告诉Apache把配置文件保存在/etc/httpd目录。其余文件(例如HTML手册文档,CGI-BIN目录)都保存在/home/httpd目录下。这也告诉Apache用户将使用最经常使用的模块,并把这些模块做为DSO模块编译,DSO就是Dynamic Shared Object的缩写。经过DSO支持的模式编译Apache,用户可以随时从Apache里面增长和移除模块,而不须要从新编译它,这但是很是方便的。若是对此有兴趣的话,您能够仔细参阅Apache DSO文档(在http://www.apache.org/docs/dso.htm中能够找到)。接着运行make进行编译。 

2)编译 

$ make 

这将耗费一段时间,通常如今使用的机器(大都是PII级别)均可以在很短期内完成编译。完成后,必须把身份更改为root,以得到权限把编译后的文件复制到最终的目录下:

 $ su 

# make install 

一切正常的话,用户能够看到一连串的信息反映出您Apache是如何被安装的。从/usr/local/apache/bin/apachectl/etc/rc.d/init.d/httpd 创建一个符号链接:

 # ln -s /usr/local/apache/bin/apachectl /etc/rc.d/init.d/httpd 

而后在此文件中添加如下几行(大概在文件顶部,约第二行的地方): 

# chkconfig: 2345 10 90 

# description: Activates/Deactivates Apache Web Server 

最后,运行chkconfigApache添加到系统的启动服务组里面:

 # /sbin/chkconfig --del httpd 

# /sbin/chkconfig --add httpd 

3)配置Apache 

Apache 1.12.4开始,3个配置文件:srm.conf, httpd.confaccess.conf的指令都已经集中在httpd.conf一个文件中。所以用文本编辑器打开httpd.conf而且更改如下指令为: 

Port 80 

DirectoryIndex index.html index.shtml index.cgi index.phtml index.php3 

AddType application/x-httpd-php3 .php3 .phtml 

AddType application/x-httpd-php6-source .phps 

搜索整个文件,更改那些您认为须要更改的指令。详细的指令介绍,请访问Apache官方站点并查阅相关文档。

 (4)测试Apache 

请运行: 

# /etc/rc.d/init.d/httpd start 

不然能够运行: 

# /usr/local/bin/apachectl start 

若是顺利,就能够从其余机器上的浏览器上链接到您的机器并将看到Apache的欢迎页面。并检查如下进程是否运行着: 

# ps ax | grep httpd 

运行该命令后能够看到 

14362 ? S 0:00 /usr/local/apache/bin/httpd 

14364 ? S 0:00 /usr/local/apache/bin/httpd 

14365 ? S 0:00 /usr/local/apache/bin/httpd 

14366 ? S 0:00 /usr/local/apache/bin/httpd 

14367 ? S 0:00 /usr/local/apache/bin/httpd 

14368 ? S 0:00 /usr/local/apache/bin/httpd 

2.安装MySQL 

如今能够开始正式的安装了。假设用户把全部必须的代源码或者包都放在了/tmp下,若是您下载的是RPM包的话,那比较简单;若是下载的是二进制包(没有rpm程序或者想自定义的话),那么会稍微麻烦一点。 

 RPM包安装 

您必须成为root用户才能使用rpm安装程序,如下是安装过程: 

$ cd /tmp 

$ su 

# rpm -Uvh MySQL*(安装和MySQL相关的全部包) 

这将安装您下载的全部3MySQL包。建议使用RPM安装方式,由于全部的工做都由rpm程序帮您搞好了。 

 源码安装 

相对于用RPM安装来说,用二进制源码安装是稍微麻烦了点。可是用户能够在安装脚本中自定义安装的相关参数,而不用像rpm方式只能使用默认安装方式。 

 安装二进制源代码 

若是您下载的是二进制源代码,它的名字相似于:

mysql-12.22.21-pc-linux-gnu-i686.tar.gz。您必须成为root用户,而后解压到/usr/local目录,方法以下: 

$ cd /usr/local 

$ su 

# tar -zxvf /tmp/mysql-12.22.21-pc-linux-gnu-i686.tar.gz 

在全部文件解压完后,一个名字叫mysql-12.22.21-pc-linux-gnu-i686的目录将被建立出来。用户能够为这个目录作个符号连接,并给它一个更友好的名字mysql(省得叫mysql-12.22.21-pc-linux-gnu-i686这么长): 

# ln -s mysql-12.22.21-pc-linux-gnu-i686 mysql 

若是之后有新版本的MySQL的话,您能够只将源代码解压到新的路径,而后再作个符号连接就能够了。这样很是方便,数据也更加安全。 

 创建一个MySQL 用户

 如今用户就能够来创建一个能运行MySQL守护程序的用户帐号,而且全部MySQL文件都归此帐户拥有。使用Linuxconf或者useradd命令去添加一个叫mysql的帐号,在添加以前,确保没有人注册了这个帐户,还要暂时禁止login功能(不过通常都是在没有其余人登录的状况下调试机器,所以这个步骤可免)。 

 为MySQL作准备 

首先将MySQL目录和文件的属主改为 mysql 用户和root组:

 # cd /usr/local 

# chown -R mysql:root mysql-12.22.21-pc-linux-gnu-i686 mysql 

而后运行一个小脚本程序,以创建初始化的MySQL数据库。请以一个mysql 用户的身份完成这个任务,这也是可以直接使用这个帐户的唯一机会。 

# su mysql 

$ cd mysql 

$ scripts/mysql_install_db 

$ exit 

若是没有任何出错信息显示的话,那就能够了。 

 自动运行MySQL 

MySQL二进制包里面,有一个名为myslq.server的启动脚本程序。把它复制到/etc/rc.d/init.d目录里面: 

# cd /etc/rc.d/init.d 

# cp /usr/local/mysql/support-files/mysql.server mysql 

接着把它的属性改成xexecutable,可执行)。 

# chmod +x mysql 

最后,运行chkconfigMySQL添加到系统的启动服务组里面去。 

# /sbin/chkconfig --del mysql 

# /sbin/chkconfig --add mysql 

 测试MySQL 

MySQL里面有一个简单的数据库例子test ,并且它的内部数据库一直保持对权限和帐户的监视,于是先运行mysql看看是否能够工做。 

首先启动MySQL: 

# /etc/rc.d/init.d/mysql start 

若是一切正常,能够看到如下的信息出现: 

198  12章  核心升级和应用软件安装 

Starting mysqld daemon with databases from /var/lib/mysql 

若是安装的是RPM包,那么程序大都安装在/usr/local/mysql/bin。在此目录下运行客户端程序: 

# mysql

 而后就能够看到屏幕显示出如下信息: 

Welcome to the MySQL monitor. Commands end with ; or \g. 

Your MySQL connection id is 2 to server version: 12.22.21 

Type 'help' for help. 

mysql> 

接着,用show databases命令能够将安装的数据库列出来: 

mysql> show databases; 

能够看到:

 +----------+ 

| Database |

 

+----------

+ | mysql | | test | 

+----------+ 

2 rows in set0.00 sec

 若是一切正常的话,那说明MySQL能够彻底工做了!恭喜你!若是要退出程序,输入:

exit 

mysql> exit;

 Bye 

 更改管理员密码 

在一切正常后,要作的第一件事情是更改管理员的密码。用户能够运行mysqladmin(请注意,此命令所在的目录不必定列在系统的PATH中,因此最好是切换到此命令的目录中直接执行): 

# mysqladmin -u root password newpassword 

此命令把root用户的口令变成newpassword。这里用newPassword表明root用户的新密码。

 3.安装PHP 

Apache安装和调试完成后,如今把精力集中到PHP上。假设下载的源文件在/tmp目录下(暂时还不须要用root帐户):

 安装 

$ cd /tmp 

$ tar -zxvf php-12.0.7.tar.gz 

$ cd php-12.0.7 

$ ./configure --with-apxs=/usr/local/apache/bin/apxs \ 

              --with-config-file-path=/etc/httpd \

               --with-mysql \ 

              --with-gd \ 

              --with-zlib \ 

              --with-system-regex 

这个配置将把PHP编译成ApacheDSO模块。配置文件将保存在/etc/httpd(和Apache配置文件一块儿)。若是按照本指南去作的话,一切应该很顺利。 

若是把apxs安装到了其余路径中,能够更改--with-apxs=/usr/local/apache/bin/apxs 以指向apxs脚本程序所在的路径。若是是使用RPM包安装Apache的话,apxs应该在/usr/sbin/ apxs中。 

若是是以二进制包安装MySQL的话,应该把--with-mysql 改为--with-mysql=/usr/ local/mysql  

若是系统中不存在GD库,那么请取消--with-gd这一行。 

运行完配置脚本后,就能够用make编译PHP了: 

$ make 

若是没有任何错误发生的话,就必须更换成root用户以安装PHP

 $ su 

# make install 

那好了,PHP已经魔术般地被安装进了Apache。等Apache从新启动后就能够生效。 

 配置PHP 

PHP配置文件复制到/etc/httpd目录中:

 # cp php12.ini-dist /etc/httpd/php12.ini 

此默认配置文件已经能够很好地工做,不过若是想看到详细的调试信息,能够把error_reporting指令的默认值从7改到15: 

error_reporting = 15 

而后就能够经过如下任一个方式从新启动Apache了: 

# /etc/rc.d/init.d/httpd start 

# /usr/local/apache/bin/apachectl start

若是没有出错信息出现的话,那意味着PHP生效了。能够用一个最简单的包含PHP程序的页面测试一下以确认PHP确实能够工做。

  测试PHP 

新建一个叫test.php3的文件,内容以下: 

<html> 

<head> 

<title>My First PHP Page</title> 

</head> 

<body bgcolor=#ffffff> 

<? echo "Hello World"; ?> 

</body> 

</html> 

保存这个页面,并放置在Apachehtdocs或者/home/httpd/html目录下(若是用RPM包安装的话),而后从浏览器中浏览它,例如: 

# lynx http://localhost/test.php3 

将看到一个显示Hello World的页面。这说明一切正常! 

12.3.4  红旗网络商务通eoffice的安装 

eoffice为中科红旗软件技术有限公司推出的Linux应用方案“红旗网络商务通”的一部分,“红旗网络商务通”包括:eofficeeshopWebmailez2min。若要使用其余功能,请购买并安装“红旗网络商务通”。/eoofice/gb为简体中文版,/eoffice/big5为繁体中文版。

 1.安装eOffice 

将红旗服务器版2.0的安装盘放进CDROM,运行下面的命令: 

monut/dev/cdrom   mnt/cdrom 

cd/mnt/cdrom/eoffice/gb(简体中文) 

cd/mnt/cdrom/eoffice/gb(简体中文) 

cd/mnt/cdrom/eoffice/big5(繁体中文)

 ./install 

依照提示便可完成安装过程。 

2.卸载eoffice 

要删除本软件请执行下列的命令: 

rpm e eoffice-1.0 

 201 红旗Linux用户基础教程 

su postgres 

destroydb eo_gb 

exit 

mysqladmin drop eform 

若要从新安装eoffice,请卸载之前安装的eoffice。 

3.使用eoffice 

安装完毕,请用浏览器访问http://xxx.xxx.xxx.xxx/eoffice.html(其中xxx.xxx.xxx.xxx为您的主机名或IP地址)。第一次使用时,以guest用户名和guest密码登陆,拥有所有权限,帐号能够被删除,装完后,删除该帐号,及时更改密码。Admin用户名和123密码是系统管理员帐号,拥有系统管理的权限,该帐号不可删除,装完毕后,及时更改密码。 如有问题,请到公司的技术论坛查看:http://redflag.ntechlinux.comhttp://sz.ntechlinux.com或与中科红旗软件技术有限公司技术支持部联系。

 习题 

1.从因特网上FTP服务器取到的Linux软件,其格式大可能是:(    )

 A*.tar

 

B*.gz

 C*.z D*.tar.gz 

E*.tar. 

2.对*.tar.应该:(   ) 

A.直接用 tar 将全部文件打包

 B.先使用 tar 将文件打包后,再用 Gzip compress 将该文件压缩后的文件

 C.使用 Gzip 压缩的文件

 D.使用 compress 压缩的文件 

3zcat命令的功能是:(   ) 

A.解压缩由 compress 命令产生的压缩文件 

B.解压缩由  Gzip 命令产生的压缩文件 

C.把结果送标准输出设备 

D.删除原压缩文件 

4.命令Gzip -d myfile.tar.gz (   ) 

解压缩的使用方法 

在执行过解压缩的处理后,保留压缩文件 

不会额外占用磁盘空间

 因此在执行完此命令后有myfile文件 

5.要知道 myfile.tar 中究竟包含了哪些文件,能够用命令:(   ) 

Atar xvf myfile.tar 

BGzip -l myfile.tar  

Ctar tvf myfile.tar  

DGzip -d myfile.tar.gz    

6.下面哪个命令能够要查看 /SOURCE 中的 myfile.tgz 的内容:(   ) 

Azcat /SOURCE/myfile.tgz | tar tvf   

Bzcat /SOURCE/myfile.tgz | tar tvf -

 Czcat /SOURCE/myfile.tgz  

Dzcat /SOURCE/myfile.tgz | tar xvf 

7.安装和升级的限制包括:(   ) 

ALinux系统版本的限制  

BGNU CC Runtime Library版本的限制 

C.内存、硬盘的限制  

D.其余相关软件 

8.解开原始核心源代码的包装的时候应该:(   ) 

A.以“root”的身份登陆 

B/usr/src 目录下,用 `tar zxpvf linux-x.y.z.tar.gz' 解开原始程式码的包装

 C.创建符号链结 

D.删除过期的 .o 文件

 9make config命令表示:(   ) 

A.在文字模式的选单下设定编译核心的选顶 

B.在文字模式下设定编译核心的选项

 C.编译核心,但不作其余的事 

D.编译核心,而且创建启动盘

13章  配置网络和网络服务

本章内容提要 

本章要求能经过桌面环境对网络及网络服务进行配置 红旗Linux对网络功能的支持很是强大。在这一章里咱们简单介绍网络及其常见网络服务的配置。在这里主要经过图形界面方式完成配置任务的,更高级的话题能够参考《红旗Linux网络管理教程》一书中相应的内容。

 

本章重点内容 

 

☆ 网络配置

☆ 配置PPP链接

☆ 配置WWW服务器

☆ 网域名称服务器(DNS) 

☆ 配置匿名FTP 

☆ 配置Sendmail ☆ 配置网络远程管理

☆ 网络文件系统(NFS) 

☆ 虚拟主机 程☆ 经过局域网中另外一台机器的调制解调器使用Internet 

☆ 配置Samba服务器 

☆ r-系列命令远程访问计算机 

  

13.1  配 置 网 络 

1TCP/IP协议组简介 

TCP/IP是用于计算机通讯的一组协议,一般称它为TCP/IP协议组。它是70年代中期美国国防部为其ARPANET广域网开发的网络体系结构和协议标准,以它为基础组建的Internet是目前国际上规模最大的计算机网络,正由于Internet的普遍使用,使得TCP/IP成了事实上的标准。 

2.经常使用协议 

之因此说TCP/IP是一个协议组,是由于TCP/IP协议包括TCPIPUDPICMPRIPTELNETFTPSMTPARPTFTP等许多协议,这些协议一块儿称为TCP/IP协议。下面就对协议组中一些经常使用协议英文名称和用途做一下介绍: 

TCPTransport Control Protocol)传输控制协议 

IPInternetworking Protocol)网间网协议

 UDPUser Datagram Protocol)用户数据报协议 

ICMPInternet Control Message Protocol)互联网控制信息协议 

SMTPSimple Mail Transfer Protocol)简单邮件传输协议

 SNMPSimple Network manage Protocol)简单网络管理协议

 FTPFile Transfer Protocol)文件传输协议 

ARPAddress Resolation Protocol)地址解析协议 

3.分层模型 

从协议分层模型方面来说,TCP/IP4个层次组成:网络接口层、网间网层、传输层、应用层。其中:

  网络接口层

 这是TCP/IP软件的最低层,负责接收IP数据报并经过网络发送,或者从网络上接收物理帧,抽出IP数据报,交给IP层。 

 网间网层  

负责相邻计算机之间的通讯。其功能包括三方面。 

1)处理来自传输层的分组发送请求,收到请求后,将分组装入IP数据报,填充报头,选择去往信宿机的路径,而后将数据报发往适当的网络接口。 

2)处理输入数据报:首先检查其合法性,而后进行寻径——假如该数据报已到达信宿机,则去掉报头,将剩下部分交给适当的传输协议;假如该数据报还没有到达信宿机,则转发该数据报。  

 传输层提供应用程序间的通讯。其功能包括: 

1)格式化信息流; 

2)提供可靠传输。传输层协议规定接收端必须发回确认,而且假如分组丢失,必须从新发送。 

 应用层 

向用户提供一组经常使用的应用程序,好比电子邮件、文件传输访问、远程登陆等。远程登陆TELNET使用TELNET协议提供在网络其余主机上注册的接口。TELNET会话提供了基于字符的虚拟终端。文件传输访问FTP使用FTP协议来提供网络内机器间的文件拷贝功能。

 4.配置网络 

若是用户是从红旗Linux 1.1版本升级到红旗Linux 2.0版本,那么系统将保留原来的网络配置信息。若是直接安装了红旗Linux 2.0版本,并且安装程序没有能识别网卡的状况下,须要在安装之后手工配置网络。 

网络配置能够在字符模式或者X Window环境中进行。通常的配置方法是使用/bin/netconf命令。图13-1所示为/bin/netconf的图形界面。选择“客户端任务”选项页。其中列出了多个选项按钮。

 “主机基本信息”选项用于配置主机名称以及网络适配器信息。 

“主机名”为主机的彻底合格域名。 

若是主机中安装了网络适配器,选择“适配器”页面(1234分别指代主机中安装的多个网络适配器)。界面如图13-1所示。 

 

13-1  网络适配器配置 

其中“容许”选项的含义是启用网卡,使网卡处于有效状态,用户必须选定此选项,不然在运行Linuxconf的过程当中会出现问题。“配置模式”为主机分配IP地址的模式,系统支持的IP地址分配方式包括手工分配、DHCP分配和BOOTP分配。

 “主机名+网域”为主机名称与所在域名组合而成的彻底合格域名。“别名”字段为可选项,用户能够在此输入一个容易记忆的主机别名。“IP地址”和“网络掩码”分别对应主机IP地址和所在网络掩码,若是用户选择的是手工配置方式,才有必要输入这些信息。“Net设备”、“核心模块”、“I/O port”和“Irq”字段分别定义了网络适配器的设备名称、网卡类型对应的核心模块、I/O端口地址和中断号。例如,对于配置的第一块NE2000 Compatiable Ethernet网卡,能够把“Net设备”配置为“eth0”,“核心模块”配置为“ne”。 

“域名服务器详述”选项用于配置主机所在域的域名及域名服务器地址。配置解析界面如图13-2所示。 

 

13-2  配置解析 

“路由及网关”选项用于配置所在网络到其余网络的链接方法。通常状况下,使用默认配置便可。 

“主机搜索路径”选项用于配置在进行主机名称到IP地址的解析时使用域名服务的顺序,其中hosts指使用/etc/hosts文件进行主机名称解析,dns为使用DNS名字服务器进行解析,若是网络中启用了NIS服务,也能够使用NIS映像进行解析。 

“网络信息系统”选项用于配置主机所在的NIS域,以及域中的主NIS服务器。 

IPX界面配置”选项用于配置IPX客户机。 

Remote mail servers”选项,用于配置如何使用fetchmail从远程服务器中获取邮件。 “PPP / SLIP / PLIP”选项,适用于没有网卡的用户经过拨号方式链接到网络时,选择何种网络协议。

13.2  配置PPP链接 

要在红旗Linux系统中拨号上网,首先应该使用KDE中的kppp实用程序配置PPP拨号工具。启动kppp的方法是选择【网络应用程序】→【Kppp】。 

配置PPP的主要步骤以下。 

1)首先要配置调制解调器。因为通常的内置调制解调器都是winmodem,建议用户选择外置调制解调器。配置调制解调器的方法是选择“设备”选项页,如图13-3所示。默认的调制解调器设备为/dev/modem,通常状况下,用户须要选择为其余串行设备文件,例如/dev/tty0S/dev/tty1S等等。链接速度能够设置为115200。 

 

13-3  配置调制解调器 

2)下面要检查调制解调器链接状况。选择【调制解调器】选项,单击【查询调制解调器】按钮,系统将自动检测调制解调器是否能够正常响应。若是没有响应,可能须要选择其余兼容调制解调器或者重复“配置调制解调器”的步骤。 

3)接下来,须要配置PPP帐号。方法是选择“帐号”选项页,如图13-4所示,单击【新的】按钮,出现“新建帐号”对话框。在这个对话框中,须要配置如下参数。 选择“拨号”选项中,在“链接名字”中输入该链接的名称(任意),“电话号码”字段输入要拨的号码。单击【参数】按钮,添加“noauth”和“-detach”两个参数。如图13-5所示。 选择DNS选项,在“域名”字段中输入主机PPP拨号之后所在域的域名。在“DNS地址列表”中添加域名服务器的IP地址。如图13-6所示。 

13-4  建立PPP帐号 

 

13-5  拨号参数配置 

 

13-6  DNS参数配置 

如今,就能够使用PPP拨号链接服务了。 

若是在创建PPP时有问题,能够试一下minicomminicom像是Linux上的PROCOMM。方法是启动minicom,拨号到ISP注册,并在用户的ISP启动PPP以后,用【Alt+q】退出minicom,而后启动pppd进程。 

$ pppd -d -detach /dev/modem 115200 & 

这时,就能够ping一下ISP或者另外一个已知的IP地址,验证是否一切正常。 用户能够使用netconf工具设置ppp接口,并使用下面的命令打开或关闭接口。 

$ ifup ppp0 

$ ifdown ppp0 

13.3  配置WWW服务器 

红旗Linux系统提供了WWW服务器的安装软件ApacheApachehttpd默认的根目录是/home/httpd,用户能够经过http://localhost浏览本机的主页。httpd相关的几个主要目录以下:

 /home/httpd/html  保存系统主页的目录 

/home/httpd/icons  保存图标的目录 

/home/httpd/cgi-bin  通用网关接口程序目录

 配置WWW服务器的方法是在netconf中选择“Apache Web服务器”。 

1)单击【预设配置】按钮,出现图13-7所示界面。 

 

13-7  WWW服务器预设配置 

 “管理员Email地址”用于在WWW服务器出错时,用该地址向系统管理员发送出错消息。 “域IP地址”用于虚拟域共享的IP地址。 “服务器名称”是Web服务器的名称,若是使用/etc/hosts或者DNS进行域名解析,就不须要设置该参数。 

“文件根目录”是WWW服务器主文档目录的位置,在默认状况下,把该目录位置设置为/home/httpd/html便可。 

假设用户的WWW服务器的主机名称为www.redflag-Linux.com,当URL设置为http:// www.redflag-Linux.com/index.html,将返回WWW服务器中的文件/home/httpd/html/index.html

 “出错日志”是记录出错消息的日志文件,通常状况下,该文件为/var/log/httpd/error_log。 

“传送日志”文件中记录了全部对WWW服务器的访问信息。通常状况下,该文件为/var/log/httpd/access_log

 “代理日志”文件中记录了全部访问该Web服务器的浏览器名称。

 “Referer日志”:若是用户是经过某个主页中的连接跳转到本机WWW服务器上,则该主页被记录到referer日志中。 

“脚本别名”中列出了CGI程序的位置。 

CGI SetUID用户”和“CGI SetUID组”。 

指定了WWW服务器CGI程序运行时,进程的UIDGID,就是说,WWW服务器仅有权读写该UIDGID有权读写的文件。 

“监听端口”指的是WWW服务器监听客户请求的端口,端口默认值为80。这样在访问WWW服务器www.redflag-Linux.com时,URL应该设置为http://www.redflag-Linux.com或者http://www.redflag-Linux.com:80。另外一个经常使用的端口值为8080,这时URL应该设置为http://www.redflag-Linux.com:8080。 

Pid文件”中保存了WWW服务器主进程的PID。该参数值通常不用修改。 

“超时限定”字段设置了客户机链接到WWW服务器之后,到发出WWW请求的时间间隔。若是超过该时间间隔,客户机仍然没有发出请求,链接就会断开。该参数以秒为单位。 “主机名查找”设置了WWW服务器是否查找客户机的主机名称。若是禁用该选项,WWW服务器仅记录客户机的IP地址。

 (2)单击【虚拟】域按钮能够设置WWW服务器的虚拟域名。在一台WWW服务器上能够定义多个虚拟域。只有在设置了“虚拟主机”的前提下,才能够配置虚拟域。 

3)单击【子目录规格】按钮或者【文件规格】按钮,能够设置WWW服务器中子目录和文件的规则。 

4)单击【模块】按钮,配置WWW服务器启动过程当中须要加载的模块。 

5)单击【性能】按钮,能够调整Apache服务器的性能。界面如图13-8所示。 

 

13-8  调整WWW服务器性能 

“启动服务器”设置了服务器启动过程当中,建立的子进程数目。 

“每一个服务器可带的客户数”设置了能够同时访问WWW服务器的客户的数目。 

“每一个子服务进程可处理的最大请求数”设置了子进程在提供多少次访问之后将退出。

 “最小闲置服务进程数”设置了处于闲置状态的子进程的最小数目。若是闲置的子进程低于该参数值,服务器将启动新的子进程。

 “最大闲置服务进程数”设置了处于闲置状态的子进程的最大数目。

 “保持有效”选项设置了是否容许服务器创建永久链接。 

“保持有效时间”设置了永久链接中等待下一个活动请求的秒数。 

“活动请求的最大值”设置了永久链接中容许的最大请求的数目。 

“超时限定”设置了客户机链接到WWW服务器之后,到发出WWW请求的时间间隔。若是超过该时间间隔,客户机仍然没有发出请求,链接就会断开。该参数以秒为单位。

 (6)“mod_ssl”配置WWW服务器的安全套接层选项。 

13.4  域名服务器(DNS 

TCP/IP网络上,各个设备必须被分配一个唯一的地址。地址的语法由IP协议指定,称为IP地址。IP地址是40255范围内的数字,由点号分开,例如127.0.0.1Internet或企业Intranet中的计算机使用这些数字地址与其余计算机通讯。 

人们在使用网络资源的时候,倾向使用有表明意义的名称。这正是域名系统(DNS)出现的缘由。DNS是一个分布式数据库系统,提供了主机名称与IP资源之间的映射。 

DNS按逆向树的方式工做,很相似于文件系统中的目录结构。为了便于管理,DNS被划分为域。从顶层DNS结构如下的第一层独立的实体是七个顶层域,它们按照不一样类别划分。商业组织使用.com域;教育组织使用.edu域;政府部门使用.gov域等等。这些域能够被进一步划分为表明域中独立企业和分支的子域。 

DNS的名字服务部分是基于客户/服务器机制的,客户查询名字服务器(即DNS服务器)查找主机地址信息。各个DNS区域中都设置了一台主名字服务器,它维护了区域中全部主机信息的权威性数据库。除了本地主机信息,名字服务器还维护了如何与其余名字服务器通讯的信息。若是名字服务器中没有保存特定域的信息,它在接收到关于该域的请求时,将继续沿着域层次把请求向上或向下传递,直到查找到一个权威答案。

 最经常使用的DNS名字服务器包括主名称服务器和二级名称服务器。 

1.主名称服务器 

主名称服务器时从本地硬盘文件中检索DNS登记项的服务器。对于特定区域,主名称服务器是具备权威性的,由于它不须要从其余区域的名字服务器中再次查询DNS信息。每一个区域中都只有一个主名字服务器。

 一台服务器能够用作某个区域的主服务器,同时做为另外一个或多个区域的二级服务器。

 2.二级名字服务器 

二级名字服务器中保存了主名字服务器DNS数据库的只读副本。当二级名字服务器启动时,它与主名称服务器联系并请求一个完整的主DNS数据库的副本。在最初的复制以后,二级名称服务器定时与主名称服务器联系,并下载最新的DNS信息。这个下载过程被称为“区域传输”,它保证了主名称服务器上修改的DNS信息跨越系统被复制。区域传输一般每24小时进行一次。二级名字服务器能够从多台主名字服务器中接收DNS更新信息。

换句话说,一台主机能够做为多个区域的二级DNS服务器。当本区域不能解析某个DNS请求时,服务器能够将请求转发给网络中的其余DNS服务器进行解析。主DNS服务器和二级DNS服务器均可以实现这种转发的功能。 

要配置DNS服务器、二级DNS服务器,须要在netconf中选择“Domain Name ServerDNS)”菜单项。 

下面,介绍其中的选项: 

domain”定义了DNS管理的域名。 

reverse mapping”创建了一个伪域,把IP地址转换伪主机名称。 

secondaries”用于建立二级服务器。

 “forwarders”和“forward zones”用于设置DNS服务器的转发功能。 

13.5  配置匿名FTP 

配置匿名FTP的步骤以下:

 (1)在Account Manager中建立一个用户名为ftp的用户,假设把该用户的主目录设置为/ftpserver/ftp,不要为用户ftp设置口令。 

2)建立ftp主目录,该目录通常为/home/ftp或者是/ftp。 

3)执行以下脚本程序,其中假设ftp主目录为/home/ftp。 

cd /home/ftp  

chmod 755 .; chown ftp .; chgrp group .  

mkdir bin dev etc lib pub usr usr/lib  

chown root bin etc dev lib usr usr/lib 

chmod 555 bin etc dev lib usr usr/lib 

chown ftp pub  

chmod 755 pub  

cd bin  

cp /bin/ls .  

chmod 111 ls  

cd ../etc  

cp /etc/passwd .  

cp /etc/group .  

chmod 444 passwd group  

cd ../lib  

cp /lib/libprot.so.1 .  

chmod 555 lib*  

chown bin lib*  

chgrp bin lib* 

cd ../pub 

mkdir incoming 

chmod 333 incoming 

cd ../usr/lib  

cp /usr/lib/libc.so.1 .  

cp /usr/lib/libsocket.so.1 .  

chmod 555 lib*   

chown bin lib*  

chgrp bin lib* 

cd ../..  

find /dev/socksys -print | cpio -dumpv /home/ftp  

find /dev/zero -print | cpio -dumpv /home/ftp 

若是本地用户想把文件放在匿名访问区,应该把文件放置在目录~ftp/pub子目录中。 在配置匿名ftp功能时,还须要考虑如下两个问题。 

1)因为在~ftp/etc/passwd文件中的口令字段不能保存加密口令,因此在复制文件/etc/passwd之后,可能须要手工删除其中的口令字段。 

2)一些特权用户不能使用ftp功能,以避免出现安全问题。ftp服务器在创建每一个链接时都要检查/etc/ftpusers文件,该文件中记录了无权使用ftp功能的用户名称。若是被请求的用户名在这个文件中,则ftp服务请求将被拒绝。 

文件/etc/ftpusers中至少应该包含如下两个用户名: 

root 

uucp 

没有标准Shell的帐号也应该列在这个文件中。没有口令的帐号没必要列在文件中,由于ftp服务器不为这些用户提供服务。 

13.6  配置Sendmail

 配置Sendmail的方法是在netconf中选择Mail delivery systemSendmail)。对于通常的email系统,用户只须要配置“basic information”参数。

 配置Sendmail界面如图13-9所示。 

下面介绍“basic information”界面中的选项: 

 Present your system as:当网络中的不一样主机发送邮件时,这些邮件看起来都是从一个相同的主机地址发出的。这个参数通常为网络域名。 

 Accept email for domain-name:若是配置的是企业的主服务器,须要选择该选项。 

 mail server:邮件服务器名称。

  mail gateway:用于转发邮件的邮件服务器。 

 mail gateway protocol:为邮件网关协议名称。 

在该界面中还能够配置Sendmail特性、主机别名等信息。 

用户也能够直接配置文件/usr/lib/Sendmail.cf。 

13-9  配置Sendmail 

13.7  配置网络远程管理 

红旗Linux提供的Linuxconf配置工具,容许系统管理员经过网络对远程主机进行管理。可是为了安全起见,用户必须肯定容许经过哪一个网络或主机来调用Linuxconf配置该主机。配置Linuxconf网络访问权限的方法是在X Window环境中启动/bin/netconf,单击“杂项”选项,选择“Linuxconf网络访问权限”,出现如图13-10所示界面。 

 

13-10  Linuxconf网络访问权限配置界面 

netconf配置工具实际是Linuxconf配置工具的一个子集,因此配置Linuxconf网络访问权限与配置netconf网络访问权限是等效的。 

Linuxconf支持从WWW浏览器的远程管理,用户能够从WindowsLinux或者任何一台运行WWW浏览器的主机中使用Linuxconf配置网络中另外一台主机的信息。要实现从WWW浏览器的远程管理,你必须选定“容许从浏览器中运行Linuxconf”选项。

 为了监视对Linuxconf的使用,用户能够启用日志跟踪功能。方法是选定“在/var/log/htmlaccess.log”选项,这样任何主机在经过WWW浏览器使用Linuxconf配置工具时,都会在日志文件中记录一行访问信息。 

“网络或主机”与“网络掩码”字段是组合使用的。能够在这两个字段中指定能够访问本机Linuxconf的主机。假设容许IP地址为192.9.200.1的网段,主机掩码为255.255.255.128的全部主机访问本机,就能够在“网络或主机”字段输入“192.9.200.1”,在“主机掩码”字段输入“255.255.255.128”。

 如今就能够从其余主机上经过WWW浏览器访问本机Linuxconf配置工具了。方法是在URL中输入本机IP地址和Linuxconf应用程序端口号(98)。假设本机地址为192.9.200.41,在其余主机的URL中输入http://192.9.200.41:98/。出现Linuxconf说明信息,单击屏幕底部的【Start】按钮能够注册到主机中,系统将提示用户输入注册到192.9.200.41的用户和口令名称。屏幕如图13-11所示。 

 

13-11  远程注册Linuxconf 

在此,注册用户必须为root。注册成功之后,就能够管理IP地址为192.9.200.41的主机信息了。从远程主机中配置Linuxconf的界面如图13-12所示。 

在红旗Linux 2.0版本中,增强了网络服务器功能。下面,就介绍一下系统内置网络配置工具的使用方法。 

 

13-12  远程配置Linuxconf 

13.8  网络文件系统(NFS 

NFS是事实上的LinuxLinux的文件共享协议。为了将服务器中的文件系统对客户共享,首先要在服务器上将文件系统导出。导出文件系统的方法是在netconf中“服务器端任务”页面中选择“网络文件系统(NFS)”。 

单击【Add】按钮,出现如图13-13所示界面,用户能够在这个界面中添加要导出的文件系统。被导出文件系统中的内容能够直接在客户端访问。 

 

13-13  输出文件系统 

对于每个导出的文件系统路径,均可以指定一组能够访问该路径的主机以及主机对导出文件系统的访问权限。 

“输出路径”为要导出的文件系统的路径,用户能够指定一组能够访问该文件系统的客户,客户名称为客户主机名称。 

“可写入”选项设置了客户是否有权对文件系统执行写操做。 

Root特权”设置了客户是否具备对导出文件系统的root访问权限。 

“翻译符号连接”是指客户机将绝对符号连接路径转换为相对于root的符号连接路径。若是客户机没有把服务器导出的文件系统安装在“”上,就应该选择该选项。 

“访问请求来自安全端口”设置是否仅容许服务器接受来自客户机安全端口的NFS请求。

 在图13-13所示界面中,将目录/home/My_export导出给主机whose_hosthis_host

 13.9  虚 拟 主 机 

一个网络设备能够被分配多个IP地址,只有在配置虚拟主机之后,才能够实现虚拟域等功能。 

netconf中选择“虚拟主机的IP地址”。单击一个网络设备名称,例如,“eth0”,出现IP别名的界面,如图13-14所示,配置IP别名的界面。 

 

13-14  设备IP别名 

用户能够成对输入IP别名以及网络掩码,别名能够是某一个固定的IP地址,也能够是一个IP地址范围。 

在系统启动时,默认设定了一个网络设备能够支持的别名数(256个)。若要修改这个值,能够建立文件/proc/sys/net/core/net_alias_max,在文件中输入所指望的最大IP别名数目。

 这样,用户能够使用网卡自己的IP地址或者IP别名访问主机。

 使用ifconfig命令能够看到新配置的IP别名,假设IP别名地址为192.9.200.99。如今,就能够使用IP地址192.9.200.11192.9.200.99访问这台主机了。 

$ ifconfig 

eth0 Link encap:Ethernet  Hwaddr 00:00:E8:31:51:A0 

  inet addr:192.9.200.11 Bcast:192.9.200.127 \ Mask:192.9.200.128 

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 

RX packets:589 errors:0 dropped:0 overruns:0 \ frame:0 

TX packets:12 errors:0 dropped:0 overruns:0 \ carrier:0 

collisions:0 txqueuelen:100 

Interrupt:5 Base address:0x300 

 

eth0:0  Link encap:Ethernet  Hwaddr 00:00:E8:31:51:A0 

  inet addr:192.9.200.99 Bcast:192.9.200.127 \ Mask:192.9.200.128 

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 

Interrupt:5 Base address:0x300 

 

lo  Link encap:Local Loopback 

  inet addr:127.0.0.1  Mask:255.0.0.0 

UP LOOPBACK RUNNING  MTU:3924 Metric:1 

RX packets:48 errors:0 dropped:0 overruns:0 \ frame:0 

TX packets:48 errors:0 dropped:0 overruns:0 \ carrier:0 

collisions:0 txqueuelen:0 

13.10  经过局域网中另外一台机器的调制解调器使用Internet 

若是用户的机器没有调制解调器,可是所在的局域网中有一台运行Linux的主机配有调制解调器(或其余Internet链接方式),那么,就能够经过这台主机上网。这样对于一个小型的应用环境是十分有益的。 

要经过这种方式访问Internet,就必须对这台配有调制解调器的Linux主机进行配置:首先要设置IP假装。这样,网络中的全部主机对于ISP的请求看起来都来自于同一台主机,而ISP将容许它们经过。简单假装的命令以下: 

$ /sbin/ipfwadm -F -p m  

该命令将把默认转发策略设置为假装。这种方法并安全,一种比较安全的方法以下。 

$ ipfwadm  -F -p deny  

$ ipfwadm  -F -a m -S 192.168.1.1/32 -D 0.0.0.0/0  

$ ipfwadm  -F -a m -S 192.168.1.3/32 -D 0.0.0.0/0  

$ ipfwadm  -F -a m -S 192.168.2.0/24 -D 0.0.0.0/0 

以上设置将默认策略设置为拒绝转发,并指明假装IP地址为192.168.1.1192.168.1.3的两台主机。同时假装192.168.2.0网的任一台主机IP地址。数字/32表明点到点的网,而/24指定C类网。-D 0.0.0.0/0指明IP假装上网的主机使用的默认路由。

 13.11  Linux做为Windows服务器 

红旗Linux中提供了一个名为Sambasmb)的工具套件,能够把Linux主机假装成Windows NT服务器,从而容许用户的Windows 3.1/95/98主机连入网络。Samba不只代替Windows NT,并且比Windows NT强大的多。

 能够把一台Windows 95/98主机做为客户机,另外一台Linux主机做为Samba服务器。这样,Windows 95/98主机可以访问网络打印机,共享Linux目录,并能经过Linux上的调制解调器进行远程注册,浏览Internet等等。一样用户能够从Linux主机访问运行Windows 95/98的机器。 

1.配置Samba服务器 

使用Samba做为Windows服务器,先要在Linux主机上进行配置,其步骤以下: 

1)以root