第1章
Linux安装与使用
Linux是LAMP平台最重要的组成部分,是LAMP的基础平台。所有的应用和组件都是运行在Linux操作系统平台之上,因此本章重点介绍Linux使用。通过本章学习,你可以理解Linux的文件结构、文件系统、常用命令、用户和组的管理、软件包管理、shell环境、网络配置,以及常用工具的使用,如vi等。
第1节 Linux安装
1.选择使用哪个Linux版本
由于Linux内核代码的开放性,其发行版有300多个,本节主要介绍目前比较流行的几款发行版。
1)Debian
Debian是由Ian Murdock在1993年8月16号发布的,可以算是迄今为止,最遵循GNU规范的Linux系统。Debian系统分为三个版本分支(branch):stable、testing和unstable。其强大的包管理系统使得它越来越受到人们的青睐。更多信息可以访问官方网页:http://www.debian.org查询。
2)Ubuntu
Ubuntu是Debian的家族产品,除了继承了Debian稳定性的优点外,还包括了安装更加方便,桌面的人性化操作更强。并且每六个月更新一次,弥补了Debian更新缓慢的不足。Ubuntu也是目前众多Linux发行版中的最优秀的成员之一,受到了越来越多用户的欢迎。更多信息可以访问官方网页:http://www.ubuntulinux.org查询。
3)SUSE
Novell SUSE前身是德国最著名的Linux发行版,在全世界范围中也享有较高的声誉。SUSE自主开发的软件包管理系统YaST也大受好评。SUSE于2003年年末被Novell收购。更多信息可以访问官方网页:http://www.suse.com/查询。
4)Mandriva
Mandriva原名Mandrake,最早由Gael Duval创建并在1998年7月发布。Mandrake最早是基于Redhat进行开发的,Mandrake的开发完全透明化,包括“cooker”。当系统有了新的测试版本后,便可以在cooker上找到。更多信息可以访问官方网页:http://www.mandrivalinux.com/查询。
5)RedHat
RedHat是全世界的Linux用户所最熟悉的版本。RedHat最早由Bob Young和Marc Ewing在1995年创建。现在RedHat公司已经把主要技术支持转向了RedHat Enterprise Linux(RHEL, RedHat的企业版),正统的RedHat版本早已停止技术支持,最后一版是RedHat 9.0。于是,目前RedHat分为两个系列:由RedHat公司提供收费技术支持和更新的RedHat Enterprise Linux,以及由社区开发的免费的Fedora Core。Fedora Core第一个版本发布于2003年年末,而FC的定位便是桌面用户。FC提供了最新的软件包,同时,它的版本更新周期也非常短,仅六个月。更多信息可以访问官方网页:http://www.redhat.com/查询。
6)国内Linux发行版
中标普华Linux前身是中软Linux,是国内最大的Linux软件提供商之一。秉承人性化、实用化、效率化的设计理念,在基本操作、菜单布局、功能模块设置等方面最大限度地保持了与Windows的一致性,充分满足用户在使用习惯方面的需要。更多信息可以访问官方网页:http://www.cs2c.com.cn查询。
中科红旗Linux是众多Linux发行套件之一。中科红旗是较早涉足Linux产业的国内公司,也是国内最早推出Linux发行版本的公司之一。中科红旗有2种发行套件,一种是面向企业用户的,一种是面向桌面用户的,面向桌面用户的可以免费下载。
此外国内还有Turbo Linux、新华Linux、共创Linux、MagicLinux等发行版。
本书采用Fedora Core 5作为本教材的示范系统。
2.了解硬件需求
安装Fedora Core 5之前,如果用户系统仅仅安装纯文本界面,系统配置最低要求:
◆200MHz Pentium处理器
◆2GB硬盘空间
◆64MB内存
支持图形界面最低配置:
◆400MHz Pentium Ⅱ处理器
◆3GB硬盘空间
◆192MB内存
3.获得Fedora Core 5
目前,除官方之外,各大社区都有高速镜像下载,读者可以根据自己情况选择最快的下载站点,本书推荐地址:http://fedoraproject.org/wiki/Distribution/Download(官方)
以及速度非常快的LUPA社区Fedora镜像站:http://mirror.lupaworld.com
将链接里的5个ISO文件都下载下来。
4.安装Fedora Core 5
Linux安装分为光盘安装、硬盘安装和网络安装,本书介绍光盘安装和硬盘安装。
1)光盘安装
光盘安装很简单,在电脑启动时进入BIOS设置,将启动项里的CD-ROM设置为第一启动,重启电脑即可以用光盘安装。具体步骤看后面的配图说明。
2)硬盘安装
对于硬盘安装,需要我们进行下列操作:(假设你已经装了Windows系统)
◆提取vmlinuz和initrd.img两个文件,它们在第一张ISO文件的isolinux目录下面,将其拷贝出来放在C:\盘下。
◆接下来,在grub命令下执行,如果系统启动引导是grub,则按C键进入控制。如果没有装grub,可以去http://tech.lupaworld.com/lamp/下载grub for dos并安装。
◆重启电脑,进入DOS,在此界面下启动grub.exe程序,在grub环境下依次输入:
◆启动之后会要求用户选择安装方法,我们选择hard drivce即可,后面的安装方法和光盘安装一样。
3)图示安装过程
●启动界面。这个界面只有用光盘安装的时候才会出现,直接回车跳过。当用户要对系统进行修复的时候,可以使用光盘,进入此界面,在boot后面输入linux rescue进入修复模式。如图1-1。
图1-1
●校验安装介质的完整性。如果确定自己的安装盘或者ISO文件完整,那么选择Skip跳过。如图1-2。
图1-2
●开始安装,点击下一步。如图1-3。
图1-3
●选择安装语言。Linux支持多个国家语言,这里我们选择简体中文。如图1-4。
图1-4
●如果是初学者,建议选择creat custom layout自动创建Linux分区。对于经验丰富的用户,选择另外一个:手动分区。如图1-5。
图1-5
●下面开始分区,对初学者来说最好创建一个swap分区,一般来说容量为内存的2倍或更高,再建立一个/根目录,建议分配5G以上空间。如图1-6。
图1-6
●安装引导程序grub。Linux引导分为grub和lilo,目前用得最多的是grub,它支持交互性菜单编辑和网络引导,选择第一项,点击下一步。如图1-7。
图1-7
●配置网络,ADSL拨号或其他系统装好后再设置。这里我们都采用默认。如图1-8。
图1-8
●选择时区,我们是亚洲/上海。如图1-9。
图1-9
●设置root用户口令,也就是超级用户口令。这个口令对于用户非常重要,建议设置时不要过于简单,并牢记。如图1-10。
图1-10
●选择要安装的包。Linux的安装定制性更强,它可以根据自己的需要选择安装包,默认选项里已经为我们提供了三种类型的安装,我们选择“定制”。如图1-11。
图1-11
●这一步你可以选择更详细的软件包。其中桌面环境有GNOME和KDE两种,选择其一。在服务器选项不安装任何软件包。如图1-12。
图1-12
●包选择完成后,检验包的依赖关系。图1-13。
图1-13
●点击下一步,开始正式安装。如图1-14。
图1-14
●开始安装文件。如果是光盘安装,系统会提示更换光盘;如果是硬盘安装,我们不需要守候安装过程。如图1-15。
图1-15
●根据硬件配置情况,安装时间大概需要30~60分钟,也可能会更长。安装完成后,重启系统。如图1-16。
图1-16
●安装基本完成,接下来对系统进一步设置。如图1-17。
图1-17
●用户协议,同意并进入下一步。Fedora是基于GPL v2许可证发布的,你必须接收GPL许可协议,才能使用这个系统。而对于用户来说,你接收了这个协议后,就意味着你可以自由获得其源代码,自由修改、传播这个系统。如图1-18。
图1-18
●防火墙设置,根据你对系统安全的需要,选择是否开启这个功能。建议开启这个功能,这样系统会更加安全。如图1-19。
图1-19
●SELinux设置。SElinux在Linux内核级别上提供了一个灵活的强制访问控制系统(MAC),这个强制访问控制系统是建立在自由访问控制系统(DAC)之上的。SElinux对于用户来说完全透明,普通用户根本感觉不到Selinux的存在,只有系统管理员才需要对这些用户环境及策略进行考虑。如图1-20。
图1-20
●设定时间日期。如图1-21。
图1-21
●显示设置。一般情况下Fedora内置了显示驱动。如图1-22。
图1-22
●设置声卡。如图1-23。
图1-23
●安装全部完成,登录系统。如图1-24。
图1-24。
第2节 Linux的使用
1.Linux常用基本命令
命令几乎成了Linux的第二种语言,虽然现在多数Linux发行版采用了图形化配置系统,但是命令的使用是每个Linux用户必须掌握的。下面向读者介绍几种常用的命令:
●pwd
使用格式:pwd
功能说明:显示当前目录的绝对路径。
范例:显示当前的工作目录
●who
使用格式:who
功能说明:显示登陆当前系统的用户信息。
范例:下面显示的是三个用户登陆系统的情况,我们隐去了IP地址
●cd
使用格式:cd[目录]
功能说明:变换工作目录到目标指定目录。其中目标指定目录可为绝对路径或相对路径。若目录名称省略,则变换至使用者的主目录下,“~”也表示为主目录的意思,“.”则是表示当前所在的目录,“..”则表示当前目录位置的上一层目录。
范例1:跳到/usr/bin/
范例2:跳到自己的主目录(home目录)
范例3:跳到当前目录的上一层
范例4:跳到当前目录的上上两层
●ls
使用格式:ls[选项][文件/目录]
功能说明:显示当前工作目录下的信息。不指定目录时,显示当前目录下的文件和子目录信息。
选项说明:
范例1:将/bin目录以下所有目录及文件详细资料列出
范例2:列出当前工作目录下所有文件及目录
●cat
使用格式:cat[选项][文件]
功能说明:cat是Linux下常用的命令,它有两种功能:
●功能1:是用来显示文件,它依次读取所指文件的内容并将其输出。
范例1:将文件test中的内容输出
●功能2:连接2个或多个文件(屏幕或加>fileName到另一个文件)
选项说明:
范例2:把test1的文件内容加上行号后输入test2这个文件里
范例3:把test1和test2的文件内容加上行号(空白行不加)之后将内容附加到test3
●chmod
使用格式:chmod[选项][文件名]
功能说明:Linux/UNIX的文件存取权限分为三级:文件拥有者、群组、其他。利用chmod可以修改文件权限。
选项说明(分三部分):
范例1:将文件file1.txt设为所有人皆可读取
范例2:将文件file1.txt设为同组用户可读可写
范例3:将文件file1.txt设为其他用户不可写入、不可执行
●find
使用格式:find[路径][选项]
功能说明:一个非常有效的工具,可以遍历当前目录甚至于整个文件系统来查找某些文件或目录。
选项说明:
范例1:查找/etc目录中的文件名含字符cpu*的文件
范例2:查找/etc目录下大于1000k的文件
●less
使用格式:less[文件]
功能说明:less用来浏览文字文件的内容,不同的是less允许使用者往回卷动,以浏览已经看过的部分,同时因为less并未在一开始就读入整个文件,因此在遇上大型文件的开启时,会比一般的文本编辑器(如vi)来得快速。
范例:显示文件test的内容
●ln
使用格式:ln[选项]原文件生成的连接文件
功能说明:Linux/UNIX文件系统中,连结可分为两种:硬连结与软连结,硬连结的意思是一个文件可以有多个名称;而软连结的方式则是产生一个特殊的文件,该文件的内容是指向另一个文件的位置,相当于Windows下的快捷方式。
选项说明:
范例1:将文件test1产生一个软连结test2
范例2:将文件test1产生一个硬连接test2
●locate
使用格式:locate[选项][文件]
功能说明:可以让使用者快速地搜寻文件系统内是否有指定的文件。其方法是先建立一个包括系统内所有文件名称及路径的资料库,之后当寻找时只需查询这个资料库,而不必实际深入文件系统之中,这也是有别于find命令的地方。
选项说明:
范例1:寻找所有叫test的文件
范例2:寻找所有叫test.out的文件,但最多只显示100个
范例3:建立资料库
2.Shell环境
1)shell的基本概念
shell是一个命令语言解释器(command-language interpreter)。拥有自己内建的shell命令集。此外,shell也能被系统中其他有效的Linux实用程序和应用程序(utilities and application programs)所调用。
不论何时,你键入一个命令,它都被Linux shell所解释。一些命令,比如打印当前工作目录命令(pwd),是包含在Linux BASH内部的(就像DOS的内部命令)。其他命令,比如拷贝命令(cp)和移动命令(rm),是存在于文件系统中某个目录下的单独的程序。而对用户来说,你不知道(或者可能不关心)一个命令是建立在shell内部还是一个单独的程序。
shell的另一个重要特性是它自身就是一个解释型的程序设计语言,shell程序设计语言支持在高级语言里所能见到的绝大多数程序控制结构,比如循环、函数、变量和数组。shell编程语言很易学,并且一旦掌握后它将成为你的得力工具。任何在提示符下能键入的命令也能放到一个可执行的shell程序里,这意味着用shell语言能简单地重复执行某一任务。
2)shell的三种重要分支
在大部分的UNIX系统,三种著名且广被支持的shell是Bourne shell(AT&T shell,在Linux下是BASH)、C shell(Berkeley shell,在Linux下是TCSH)和Korn shell(Bourne shell的超集)。这三种shell在交谈(interactive)模式下的表现相当类似,但作为命令文件语言时,在语法和执行效率上就有些不同了。
●Bourne shell
是标准的UNIX shell,以前常被用来作为管理系统之用。大部分的系统管理命令文件,例如rc start、stop与shutdown都是Bourne shell的命令档,且在单一使用者模式(single user mode)下以root签入时它常被系统管理者使用。Bourne shell是由AT&T发展的,以简洁、快速著名。Bourne shell提示符号的默认值是$。
●C shell
是柏克莱大学(Berkeley)所开发的,且加入了一些新特性,如命令列历程(history)、别名(alias)、内建算术、档名完成(filename completion)和工作控制(job control)。对于常在交谈模式下执行shell的使用者而言,他们较喜爱使用C shell;但对于系统管理者而言,则较偏好以Bourne shell来做命令档,因为Bourne shell命令档比C shell命令档来的简单及快速。C shell提示符号的默认值是%。
●Korn shell
是Bourne shell的超集(superset),由AT&T的David Korn所开发。它增加了一些特色,比C shell更为先进。Korn shell的特色包括了可编辑的历程、别名、函数、正规表达式万用字符(regular expression wildcard)、内建计算、工作控制(job control)、共同处理(coprocessing)、和特殊的除错功能。Bourne shell几乎和Korn shell完全向上兼容(upward compatible),所以在Bourne shell下开发的程序仍能在Korn shell上执行。Korn shell提示符号的默认值也是$。在Linux系统使用的Korn shell叫做pdksh,它是指Public Domain Korn Shell。
Fedora Core 5使用的是Bourne shell系列也就是bash shell。
3)bash shell常用命令
在bash环境中,命令是用户和计算机打交道的语言,因此,掌握shell命令有助于你更加熟练地使用Linux系统。
alias:设置bash别名。
bg:使一个被挂起的进程在后台继续执行。
cd:改变当前工作目录。
exit:终止shell。
export:使变量的值对当前shell的所有子进程都可见。
fc:用来编辑历史命令列表里的命令。
fg:使一个被挂起的进程在前台继续执行。
help:显示bash内部命令的帮助信息。
kill:终止某个进程。
pwd:显示当前工作目录。
unalias:删除已定义的别名。
bash还有许多命令,但这些是最常用的,想了解更详细的情况,请参考bash手册或者在提示符下键入:
4)shell编程
在Linux系统里,有各种各样的图形化接口工具,但是shell仍然是一个非常灵活的工具,它不仅是一个命令收集器,而且是一门功能强大的编程语言。下面就简单介绍一下shell编程。
●建立一个脚本
用你最喜欢的一款编辑器打开编辑窗口。在打开的编辑窗口必须写入的一段语句是:
注意:符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。
假设将其保存为文件名lupa。
执行:
●输出hello world
写入下列代码:
保存为hello文件,并执行:
打印出结果:
以上仅仅介绍了shell编程的基本方法,目的是为了让读者有shell编程的概念,感兴趣的读者可以购买shell编程的书自行学习。
5)常用shell命令
●date
使用格式:date[MMDDhhmm[YYYY]]
功能说明:查看或修改系统时间。
范例1:查看系统时间
范例2:修改系统时间为8月25日10点23分
●cal
使用格式:cal[YYYY]
功能说明:显示日期。
范例:
●history
使用格式:history[数字]
功能说明:查看shell中使用过的历史命令。
范例:查看最近使用过的3个shell命令
●more
使用格式:more[文件]
功能说明;显示文本文件内容。
范例:查看文件test文件的内容
●shutdown
使用格式:shutdown[选项][时间]
功能说明:对电脑关机与重启进行控制。
选项说明:
范例1:20分钟后关机
范例2:20分钟后重启
范例3:12点关机
范例4:12点重启
补充说明:Linux还提供了两个最简单的关机重启命令halt和reboot,例:
3.使用vi
1)vi入门
●进入vi
在系统提示字符(如$、#)下敲入vi<文件名称>,vi可以自动帮你载入所要编辑的文件或是开启一个新文件(如果该文件不存在或缺少文件名)。进入vi后屏幕左方会出现波浪符号,凡是列首有该符号就代表此列目前是空的。
●两种模式
如上所述,vi存在两种模式:指令模式和输入模式。在指令模式下输入的按键将作为指令来处理:如输入a,vi即认为是在当前位置插入字符。而在输入模式下,vi则把输入的按键当作插入的字符来处理。指令模式切换到输入模式只需键入相应的输入命令即可(如a,A),而要从输入模式切换到指令模式,则需在输入模式下键入ESC键,如果不知道现在是处于什么模式,可以多按几次[ESC],系统如发出嘀嘀声就表示已处于指令模式下了。
新增(append)
a:从光标所在位置后面开始新增资料,光标后的资料随新增资料向后移动。
A:从光标所在列最后面的地方开始新增资料。
插入(insert)
i:从光标所在位置前面开始插入资料,光标后的资料随新增资料向后移动。
I:从光标所在列的第一个非空白字元前面开始插入资料。
开始(open)
o:在光标所在列下新增一列并进入输入模式。
O:在光标所在列上方新增一列并进入输入模式。
●退出vi
在指令模式下键入“:q”、“:q!”、“:wq”或“:x”(注意:号不可少),就会退出vi。其中“:wq”和“:x”是存盘退出,而“:q”是直接退出,如果文件已有新的变化,vi会提示你保存文件而“:q”命令也会失效,这时你可以用“:w”命令保存文件后再用“:q”退出,或用“:wq”或“:x”命令退出,如果你不想保存改变后的文件,你就需要用“:q!”命令,这个命令将不保存文件而直接退出vi。
●基本编辑
配合一般键盘上的功能键,如方向键、[Insert]、[Delete]等等。vi还提供其他许许多多功能让文字的处理更为方便。这里先介绍vi如何删除与修改。vi有两个状态,一个是输入状态,一个是删除状态,正是因为这样,才使得vi更加人性化和安全化。
2)vi详细指令表
●基本编辑指令:
新增(append)
a:从光标所在位置后面开始新增资料,光标后的资料随新增资料向后移动。
A:从光标所在列最后面的地方开始新增资料。
插入(insert)
i:从光标所在位置前面开始插入资料,光标后的资料随新增资料向后移动。
I:从光标所在列的第一个非空白字元前面开始插入资料。
开始(open)
o:在光标所在列下新增一列并进入输入模式。
O:在光标所在列上方新增一列并进入输入模式。
x:删除光标所在字符。
dd:删除光标所在的列。
r:修改光标所在字元,r后接著要修正的字符。
R:进入取替换状态,新增文字会覆盖原先文字,直到按[ESC]回到指令模式下为止。
s:删除光标所在字元,并进入输入模式。
S:删除光标所在的列,并进入输入模式。
●光标移动指令:
由于许多编辑工作是由光标来定位,所以vi提供了很多移动光标的方式,具体命令如下:
0 移动到光标所在列的最前面 对应的功能键盘[Home]。
$ 移动到光标所在列的最后面 对应的功能键盘[End]。
[CTRL][d] 向下半页 对应的功能键盘[PageDown]。
[CTRL][f] 向下一页。
[CTRL][u] 向上半页。
[CTRL][b] 向上一页 对应的功能键盘[PageUp]。
H 移动到视窗的第一列。
M 移动到视窗的中间列。
L 移动到视窗的最后列。
b 移动到下个字的第一个字母。
w 移动到上个字的第一个字母。
e 移动到下个字的最后一个字母。
^ 移动到光标所在列的第一个非空白字元。
n- 减号移动到上一列的第一个非空白字元前面加上数字可以指定移动到以上n列。
n+ 加号移动到下一列的第一个非空白字元前面加上数字可以指定移动到以下n列。
nG 直接用数字n加上大写G移动到第n列。
fx 往右移动到x字元上。
Fx 往左移动到x字元上。
tx 往右移动到x字元前。
Tx 往左移动到x字元前。
; 配合f和t使用,重复一次。
, 配合f和t使用,反方向重复一次。
/string 往右移动到有string的地方。
? string 往左移动到有string的地方。
编辑指令非常有弹性,基本上可以说是由指令与范围所构成。例如dw是由删除指令d与范围w所组成,代表删除一个字d(elete) w(ord)。
vi环境里,删除与复制都会将指定范围的内容放到暂存区里,然后就可以用指令p贴到其他地方去,这是vi用来处理区段拷贝与搬移的办法。
●文件操作指令
文件操作指令多以:开头,这跟编辑指令有点区别。
:q 结束编辑(quit)。
:q! 不存档而要放弃编辑过的文件。
:w 保存文件(write)其后可加所要存档的档名。
:wq 即存档后离开。
:zz 功能与:wq相同。
:x 与:wq相同。
4.文件系统与文件管理
我们知道,Windows采用的是FAT32或NTFS文件系统格式,然而Linux采用的是ext2或ext3文件系统格式,交换分区采用的则是swap文件系统格式。
ext文件系统系列是专门为Linux设计的,它继承了UNIX文件系统的主要特色,采用三级索引结构和目录树型结构,并将设备作为特别文件处理。从1993年ext2的诞生,现在已经推出了ext3增强版本,由RedHat公司随Linux7.0版本推出。目前越来越多的Linux发行版本都转向ext3格式,我们采用的Fedora Core 5使用的也是ext3格式。ext3文件具有以下特点:
●高实用性
系统如果发生异常断电,重新启动时不需要检查文件系统,只需读取文件系统日志,提高了恢复ext3的速度。
●数据完整性
ext3能保持数据与文件系统状态的高度一致性,避免了关机以外对文件系统造成的破坏。
●速度更快
ext3文件系统的日志功能对磁盘的驱动器读写进行优化,读写文件速度更快。
●方便的数据转换
不用进行备份、格式化分区,可以轻松地将ext2转换为ext3;ext3文件系统也可以直接挂载成为ext2文件系统。
理解Linux文件结构的设计
Linux系统中,所有一切都从“根”开始,用“/”代表,并且延伸到子目录。我们知道在DOS、Windows中有不同的分区,同时目录都存于分区上。Linux则通过“加载”的方式把所有分区都放置在“根”下制定的目录里。Windows下最接近于“根”的是C盘。因此对Linux目录结构的了解是必要的:
/:根目录,包含整个Linux的所有文件目录
/bin:操作系统所需的各种命令程序
/boot:系统启动必须读取的文件
/dev:外围设备代号文件
/ect:系统设置管理相关文件
/ect/rc.d:系统启动、关机时所需的执行脚本文件
/etc/X11:X-Windows配置文件目录
/home:用户专属目录
/lib:共享函数库
/lib/modules:系统核心模块
/lost+found:出错文件的存放之处
/mics:空目录,公共杂物
/mnt:挂载目录
/proc:核心与执行程序之间的信息
/root:系统管理员专用目录
/sbin:系统启动所需要执行的程序
/tmp:用户暂时放置文件的位置
/usr:系统命令及程序等信息
/usr/bin:用户可以执行的命令程序
/usr/include:供C语言加载的头文件目录
/usr/local:用户放置个人安装文件
/usr/sbin:管理员使用的程序
/usr/share/man:多种链接帮助文件
/usr/src:Linux源代码存放处
/usr/X11R6:X-Windows文件目录,除/etc/X11目录当中的配置文件
/var:临时记录数据,临时文件目录
●mv
使用格式:mv[选项][文件][文件或路径]
功能说明:将文件移至另一个目录或者修改文件名。
选项说明:
范例1:将文件test1改名为test2
范例2:将文件test1移动到/home/lupa目录下,使用强制覆盖:
●cp
使用格式:cp[选项][文件][文件或路径]
功能说明:将文件拷贝至另一目录,或将文件改名。与mv不同的是原文件保留。
选项说明:
范例1:将文件test1复制到/home/lupa目录下并命名为test2
范例2:将文件test1复制到/home/lupa目录下并命强行覆盖
●tar
使用格式:tar[选项][归档或压缩文件][文件或目录]
功能说明:将文件或目录归档为tar文件,使用相关选项还可以对文件进行解压归档。
选项说明:
范例1:将test文件归档为test.tar文件
范例2:将归档文件text.tar.gz解压
范例3:将归档文件text.tar.bz2解压
●rm
使用格式:rm[选项][归档或压缩文件][文件或目录]
功能说明:删除文件。
选项说明:
范例:删除所有test下的文件
●mount
使用格式:mount[选项][设备名][目录]
功能说明:将磁盘设备挂载到指定目录。
选项说明:
范例1:查看已经挂载的文件系统
范例2:挂载软盘
范例3:挂载U盘
5.用户和用户组管理
用户(User)和用户组(Group)管理是每个Linux系统用户,特别是LAMP工程师这样的使用者必须掌握的一项基本技能。
1)用户管理
Linux用户管理可以通过用户管理工具以及修改用户配置文件来实现,但是用户管理工具最终也是通过修改用户配置文件来完成的。因此,我们直接学习修改用户配置文件。
●passwd文件
用户配置文件是/etc/passwd,它是系统识别用户的文件,它包含了系统所有用户的记录。例如,我们用lupa这个账号登录系统,通过UID来确认用户和身份,如果存在则读取/etc/shadow影子文件所对应的lupa密码,核实无误后登陆系统,读取用户的配置文件。
用命令查看和编辑passwd文件:
可以看到下列内容(部分):
我们看到,每一行信息都包含有七个字段,各个字段有不同的含义。
第一字段:用户名;在上面的例子中,我们看到登陆名为lupa(倒数第二行)。
第二字段:口令;在例子中我们看到的是一个x,密码已被映射到/etc/shadow文件中。
第三字段:UID;UID是用户的ID值,在系统中每个用户的UID的值是唯一的。
第四字段:GID;GID和UID类似,是一个正整数或0,GID从0开始,GID为0的组让系统赋予给root用户组。
第五字段:用户名全称,这是可选的,可以不设置,在本例中全名也是lupa。
第六字段:用户的家目录所在位置。
第七字段:用户所用shell的类型,lupa用的是bash;所以设置为/bin/bash。
●关于UID
UID是用户的ID值,在系统中每个用户的UID的值是唯一的,更确切地说每个用户都要对应一个唯一的UID,系统管理员应该确保这一规则。系统用户的UID的值从0开始,是一个正整数,至于最大值可以在/etc/login.defs查到,一般Linux发行版约定为60000。在Linux中,root的UID是0,拥有系统最高权限。在Fedora系统会把前499个UID和GID预留出来,我们添加新用户时的UID从500开始的,GID也是从500开始。至于其他系统,有的系统可能会把前999个UID和GID预留出来,以各个系统中/etc/login.defs中的UID_MIN的最小值为准。Fedora系统login.defs的UID_MIN是500,而UID_MAX值为60000,也就是说我们通过adduser默认添加的用户的UID的值是500到60000之间,而Slackware通过adduser不指定UID来添加用户,默认UID是从1000开始。
●关于GID
GID和UID类似,是一个正整数或0,GID从0开始,GID为0的组让系统赋予给root用户组。系统会预留一些较靠前的GID给系统虚拟用户(也被称为伪装用户)之用。每个系统预留的GID都有所不同,比如Fedora预留了500个,我们添加新用户组时,用户组是从500开始的,而Slackware是把前100个GID预留,新添加的用户组是从100开始。查看系统添加用户组默认的GID范围应该查看/etc/login.defs中的GID_MIN和GID_MAX值。
2)用户组管理
具有某种共同特征的用户集合起来就是用户组(Group)。用户组(Group)配置文件主要有/etc/group和/etc/gshadow,其中/etc/gshadow是/etc/group的加密信息文件。
/etc/group文件是用户组的配置文件,内容包括用户和用户组,并且能显示出用户是归属哪个用户组或哪几个用户组。因为一个用户可以归属一个或多个不同的用户组。同一用户组的用户之间具有相似的特征。比如我们把某一用户加入到root用户组,那么这个用户就可以浏览root用户主目录的文件,如果root用户把某个文件的读写执行权限开放,root用户组的所有用户都可以修改此文件。如果是可执行的文件(比如脚本),root用户组的用户也是可以执行的。
用户组的特性在系统管理中为系统管理员提供了极大的方便,但安全性也是值得关注的,如某个用户下有对系统管理最重要的内容,最好让用户拥有独立的用户组,或者是把用户下的文件的权限设置为完全私有;另外root用户组一般不要轻易把普通用户加入进去。
用命令查看和编辑passwd文件。
可以看到下列内容(部分):
与passwd文件一样,group文件每一行信息所包含的段也有自己的含义。
第一字段:用户组。
第二字段:用户组密码,这个段可以是空的或!,如果是空的或有!,表示没有密码。
第三字段:用户组管理者,字段可为空,如果有多个用户组管理者,用“,”号分割。
第四字段:组成员,如果有多个成员,用“,”号分割。
3)管理用户的shell命令
●useradd
使用格式:useradd[选项]用户名
功能说明:建立新的用户账号。限超级用户使用。
选项说明:
范例1:新建一个默认的lupa2账号
范例2:新建一个lupa3账号,组群为WORKGROUPD
●passwd
使用格式:passwd[选项][用户]
功能说明:管理用户口令。
选项说明:
范例1:修改lupa账号口令
范例2:删除口令
●userdel
使用格式:userdel[选项][用户]
功能说明:删除指定的账号。
选项说明:
范例:
●id
使用格式:id[用户]
功能说明:查看用户和UID、GID所属群信息。
范例:
4)管理组群的shell命令
●groupadd
使用格式:groupadd[选项][组群名]
功能说明:新建组群。
选项说明:
范例:建立一个名为lamp的组群
●groupdel
使用格式:groupdel[组群名]
功能说明:删除组群。
范例:删除名为lamp的组群
6.进程管理与系统监视
1)进程状态
进程是Linux系统资源分配和调度的基本单位,Linux系统在创建新进程时,都会为其指定一个唯一的号码,即进程号(PID),并以此区别不同的进程。
进程分以下三个基本状态:
●就绪状态 进程已获得除CPU以外运行所需的全部资源
●运行状态 进程占用CPU正在运行
●等待状态 进程等待某一资源
我们可以在桌面环境下依次点击“桌面——管理——系统监视器”,打开“系统监视器”选中“进程”,可以查看当前进程情况。我们也可以在shell终端用ps命令查看详细的进程信息,具体使用下一部分将作详细介绍。
2)进程管理
在使用Linux系统的过程中,我们可能会对当前运行的一些程序进行管理,比如禁止或启动,那么这就需要对进程进行一定的管理,对系统管理最行之有效的方法是shell命令控制,下面我们将向读者介绍shell控制台下,进程的管理命令。
●ps
使用格式:ps[选项]
功能说明:显示进程状态。
选项说明:
范例:显示当前进程的信息
主要输出说明:
●kill
使用格式:kill进程号
功能说明:终止进程。
范例:
如果不能终止进程,可以加选项执行:
●nice
功能格式:nice[优先级参数][命令]
功能说明:为将要启动的进程设置优先级。
范例:启动samba服务,设置优先级为4
●renice
功能格式:renice[优先级][参数]
功能说明:修改运行进程的优先级。
选项说明:
范例:将lupa用户的进程调高到-3
3)系统监视
我们除了知道进程情况之外,还要对linux系统进行监视或查看系统硬件调度情况。我们可以在桌面环境下依次点击“桌面——管理——系统监视器”,打开“系统监视器”选中“资源”,可以看到相关的硬件调度,还可以通过shell控制台查看更详细的情况。
●top
使用格式:top[-d][秒数]
功能说明:动态显示CPU、内存等调度情况。
范例:监视系统性能,每5秒刷新一次
我们可以看到,系统已经运行了一天21小时23分,有4个用户在使用系统,当前系统使用了0.3%的资源,有99.7%是空闲的,下面是相关的CPU和内存信息。
●free
使用格式:free[选项]
功能说明:显示内存和交换分区的相关信息。
选项说明:
范例:
可以看出,共有242MB内存大小,使用了204MB内存,空闲38MB。交换分区共511MB大小,使用了47MB,空闲464MB。
●df
使用格式:df[选项]
功能说明:显示系统硬盘相关信息。
选项说明:默认的显示大小为kb,加参数h之后就以MB显示。
范例:查看系统硬盘使用情况
4)日志管理
系统的日志可以让我们更详细地了解到系统的运行状态,并在系统运行出现情况之后,有助于我们能更快地排除故障。Linux日志文件保存于/var/log目录中。log目录包括以下日志文件:
7.yum包管理系统
1)建立yum运行环境
如果您使用过debian系列操作系统,对apt-get命令一定不会陌生,同样地,Fedora系列为我们提供了与apt-get类似的包管理命令yum,它可以从一个软件库里调出用户指定的软件,然后进行安装,并且也具备卸载功能。本节向大家介绍如何添加软件库,在下一节里我们将对yum的使用进行说明。
首先我们访问http://tech.lupaworld.com/lamp。
下载freshrpms-release-1.1-1.fc.noarch.rpm包。假设将其下载到/home/lupa目录下,我们进行安装:
安装好之后即可以使用yum命令了。
2)轻松使用yum命令
如果你是第一次使用yum命令,请不要担心,下面我们将向您介绍yum最常用的使用方法,相信你很快就能熟练掌握。
●搜索应用程序
yum可以搜索所有的启动仓库,告诉用户从哪里得到需要的软件包。
●了解包安装信息
●安装应用程序
●列出rpm清单
●删除rpm包
●系统升级
●查看是否有升级
●列出最近升级的rpm包
●本地安装
除此之外,yum还有很多用法,上面仅仅列举了几条常用参数,更多使用方法可以用man命令查看:
3)环境优化
对于习惯了Windows的你来说,可能Linux系统,特别是字体在你眼里非常难看,那我们就用yum命令对Linux系统进行一些简单的优化,让你改变对Linux的看法。
●安装桌面美化程序
应用程序-附件-gDesklets
●安装附加字体
●安装基本编译器
●安装集成开发环境
●安装NTFS支持
●升级firfox浏览器
8.配置基本网络
除了利用图形化配置网络外,我们也必须掌握命令配置方法,因为Linux的世界里,用命令说话才是最重要的。
1)设置主机名和域名
修改主机名,可以通过修改配置文件/etc/hosts来完成。/etc/hosts的内容一般有如下类似内容:
一般情况下hosts的内容是主机名的定义,每一行为一个主机名,每行主机名由三个部分组成,分别为网络IP地址、主机名.域名(主机名和域名之间有个点)、主机名的别名。在这里说明一下,主机名是主机的名字,而域名是用来解析IP的。
查看主机名:
修改主机名:
2)设置IP地址
和Windows一样,在使用Linux的过程中,常常需要手动修改IP地址,在这里,我们介绍两种修改方法。
●临时配置
说明:eth0后面跟的是IP地址;netmask后面跟的是子网掩码;broadcast后面跟的是广播地址。比如我们要把IP修改为192.168.2.100,子网掩码为255.255.255.0,广播地址为192.168.2.1则这样修改:
●修改配置文件
如果你的网卡安装正常,就可以发现如下文件:
可能会看到如下信息:
根据自己的需要来更改对应的选项。
3)拨号上网
在Linux的各大发行版本中,基本上都采用RP-PPPOE拨号软件。如果您的系统预安装了RP-PPPOE,则执行命令:
如果没有预安装RP-PPPOE,则可以执行
如果是源码安装,我们要自己来编译。
登陆站点http://tech.lupaworld.com/lamp下载rp-pppoe-3.8.tar.gz软件。
9.备份数据和资料
数据对于每个用户来说都是重要的,假设数据丢失,我们过去在电脑上所做的一切都将前功尽弃。虽然有些数据可以再找回来,但是会浪费很多精力,更何况有部分数据是无法找回的,所造成的损失不可估量。因此我们必须掌握如何安全高效地做好数据备份。
和其他操作系统一样,对于Linux系统,不是所有东西都需要备份的,因此我们要了解哪些文件进行备份。
一般来说,除了备份用户文件(/home)和系统配置文件(在/etc下)外,还有/usr和/var目录下的某些文件,包括:
/usr/lib/rn
/usr/lib/smail
/usr/lib/trn
/usr/local/src
/usr/local/bin
/usr/local/lpfont
/usr/local/sbin
/usr/local/man
/usr/local/thot
/usr/openwin
/usr/X11R6/lib/X11/app-defaults
/usr/X11R6/lib/X11/initrc
/var/named
/var/openwin
/var/texfonts
/etc/printcap
/etc/fstab /etc/inittab
/etc/SF86Config
将这些需要备份的目录做一个.tgz文件储存在备份媒体上即可。
在Linux下,提供了很多优秀的备份工具,如tar、cpio、dump和restore。
1)tar工具介绍
tar是一个已移植到Linux中的经典Unix命令。tar是tape archive(磁带归档)的缩写,最初设计用于将文件打包到磁带上,现在我们大都使用它来实现备份某个分区或者某些重要的文件目录。我们使用tar可以打包整个目录树,这使得它特别适合用于备份。归档文件可以全部还原,或从中展开单独的文件和目录。备份可以保存到基于文件的设备或磁带设备上。文件可以在还原时重定向,以便将它们重新放到一个与最初保存它们的目录(或系统)不同的目录(或系统)。tar是与文件系统无关的,因而它的适用范围很广,它可以使用在ext2、ext3、jfs、Reiser和其他文件系统上。
使用tar非常类似于使用诸如Windows环境下的Winzip、WinRAR这样的文件实用工具。只需将它指向一个目的(可以是文件或设备),然后指定想要打包的文件,就可以通过标准的压缩类型来动态压缩归档文件,或指定一个自己选择的外部压缩程序。要通过bzip2压缩或解压缩文件,可使用tar-z命令。
下面是一个简单的使用该工具进行数据备份的例子:
(将/home/user目录下的所有程序文件打包备份到/mp/user.tgz)
(将备份的目录文件恢复到指定目录)
2)cpio工具介绍
cpio命令可以从tar或者cpio文件文件中拷入或者拷出文件。cpio命令和tar命令兼容,但是这个命令具备一些tar命令没有的功能:
●支持cpio和tar两种文件文件格式。
●支持许多老式磁带数据格式。
●能够通过一个管道(pipe-line)读取文件的文件名。
目前看来,只有很少的Linux软件包是以cpio格式发行的。用户如果对cpio命令的详细情况感兴趣,可以通过“man cpio”命令阅读它的使用手册。
3)dump和restore介绍
dump可以执行类似tar的功能。然而,dump倾向于考虑文件系统而不是个别的文件。dump检查ext2文件系统上的文件,并确定哪些文件需要备份。这些文件将出于安全保护而被复制到给定的磁盘、磁带或其他存储媒体上。在大多数媒体上,容量是通过一直写入直至返回一个end-of-media标记来确定的。
配合dump的程序是restore,它用于从转储映像还原文件。restore命令执行转储的逆向功能。可以首先还原文件系统的完全备份,而后续的增量备份可以在已还原的完全备份之上覆盖。可以从完全或部分备份中还原单独的文件或者目录树。
dump和restore都能在网络上运行,因此用户可以通过远程设备进行备份或还原。dump和restore使用磁带驱动器和提供广泛选项的文件设备。然而,两者都仅限用于ext2和ext3文件系统。如果使用的是JFS、Reiser或者其他文件系统,将需要其他的实用工具,比如tar。
例如:
另外,现在市场上还有诸如Tivoli Storage Manager之类的商业化存储备份工具,这些都是可视化的工具,用户可以方便地通过用户界面来实现备份与恢复。值得注意的是,这是一款商业软件,因而并不是免费的,对于很多用户来说,它所提供的功能与我们上述的Linux自带的备份与恢复工具比较相似,只是更加人性化和友好,使用户从枯燥的命令行方式下摆脱出来,从而方便用户使用。
第3节 安 全
安全始于观念,对Fedora Core 5进行安全设置之前,有必要了解安全的基本概念。
◆确保硬盘位于BIOS启动顺序第一位
◆防止闯入者使用Linux Live CD损坏、浏览、共享整个硬盘
◆防止闯入者安装其他操作系统
◆确保设置BIOS密码
◆确保计算机位于安全地点
◆创建8位以上复杂密码
◆创建带有字母、数字、大小写混合的密码
◆确保禁用控制台下历史命令列表
◆确保在控制台下设置了文件/文件夹删除、复制、移动命令的交互选项
◆日常应用,用以普通用户登陆
◆安装防火墙
◆进行弱点检查
1.禁用GRUB菜单的交互编辑
在刚启动电脑的时候,我们会看到一个选择系统的菜单,这个叫grub引导菜单,由于Linux的人性化操作,我们可以在这里任意编写和修改启动内容,甚至修改系统密码,在方便用户的同时也有很多安全隐患,因此,我们有必要为grub加一个密码。
在终端执行:
出现下列提示符:
执行:
找到下面一段:
替换为:
保存退出。
2.iptables防火墙设置
1)防火墙概念
防火墙在计算机网络中的位置至关重要,它主要实现以下四个作用:
●实现一个公司的安全策略
防火墙的主要意图是强制执行用户安全策略,如用户安全策略需要对FTP服务器限制流量,那么我们需要在防火墙上强制实施这些策略。
●创建一个阻塞点
防火墙在一个公司的私有网络和分网间建立一个检查点。这种实现要求所有的流量都要经过这个检查点。一旦检查点被建立,防火墙就可以监视,过滤和检查所有进出的流量。网络安全中称为阻塞点。通过强制所有进出的流量都通过这些检查点,管理员可以集中在较少的地方来实现安全目的。
●记录internet活动
防火墙还能强制记录日志,并且提供警报功能。通过在防火墙上实现日志服务,管理员可以监视所有从外部网或互联网的访问。一个好的网络管理员,要有查看日志的好习惯。
●限制网络暴露
防火墙在你的网络周围创建了一个保护的边界。并且对于公网隐藏了内部系统的一些信息以增加保密性。当远程节点侦测你的网络时,他们仅仅能看到防火墙。远程设备将不会知道你内部网络的布局都有些什么。防火墙提高认证功能和对网络加密来限制网络信息的暴露。通过对进入的流量进行检查,以限制外部发动攻击。
2)iptables
在Linux2.4.X版本以上的包过滤机制,多数采用iptables作为包防火墙。iptabeles内建有三个表,分别为MANGLE、NAT、FILTER,当未指定规则表时,则默认为FILTER表,若要将rule加到其他表中,则要用-t来指明。
MANGLE表的意思就是,会对数据包的一些传输特性进行修改,在MANGLE表中允许的操作是TOS、TTL、MARK。也就是说,今后只要我们见到这个词能理解它的作用就行了。建议不要在这个包中做任何过滤。
NAT表就是地址转换,可以做DNAT、SNAT,可做一对一、一对多、多对多转换,该表有prerouting和postrouting两条规则链。DNAT操作主要用在这样一种情况,你有一个合法的IP地址,要把对防火墙的访问重定向到其他的机子上(比如DMZ)。也就是说,我们改变的是目的地址,以使包能从路由到某台主机。SNAT改变包的源地址,这在极大程度上可以隐藏你的本地网络或者DMZ等。一个很好的例子是我们知道防火墙的外部地址,但必须用这个地址替换本地网络地址。有了这个操作,防火墙就能自动地对包做SNAT和De-SNAT(就是反向的SNAT),以使LAN能连接到Internet。如果使用类似192.168.0.0/24这样的地址,是不会从Internet得到任何回应的。因为IANA定义这些网络(还有其他的)为私有的,只能用于LAN内部。MASQUERADE的作用和SNAT完全一样,只是计算机的负荷稍微多一点。因为对每个匹配的包,MASQUERADE都要查找可用的IP地址,而不像SNAT用的IP地址是配置好的。当然,这也有好处,就是我们可以使用通过PPP、PPPOE、SLIP等拨号得到地址,这些地址是由ISP的DHCP随机分配。FILTER表是我们最常用的,包过滤就是通过它实现的,系统默认建有三个链,INPUT、OUTPUT还有FORWARD,这个表用来进行封包过滤的处理(如:DROP、ACCEPT、LOG、REJECT、ULOG等),基本规则都建在这个表中。
●定义政策
iptables政策指,当你的封包不在你的规则之内时,则该封包的通过与否,以Policy的设定为准,即当我们一个IP包试图通过防火墙的时候,如果我们制定的IP规则都不适用于它,那么这个包将依据Policy规则为准。
如果我们使用-F命令来清除所有定制的IP规则之后,我们需要自己定义IP规则,下面为读者举一个最简单的iptables配置实例。一般来说,我们按照下面这种格式为IP定制规则。
参数说明:
-t:定义table。tables:table的名称。
-P:定义政策(Policy)。
INPUT:封包为输入主机的方向。
OUTPUT:封包为输出主机的方向。
FORWARD:封包为不进入主机而向外再传输出去的方向。
PREROUTING:在进入路由之前进行的工作。
OUTPUT:封包为输出主机的方向。
POSTROUTING:在进入路由之后进行的工作。
将预设的政策都定义为接受:
●增加、插入规则
本段教用户如何定义规则,预设规则通用格式如下:
参数说明:
-A:新增加一条规则,该规则增加在最后面一行。
-I:在第一条规则加入。
INPUT:封包为输入主机的方向。
OUTPUT:封包为输出主机的方向。
FORWARD:封包为不进入主机而向外再传输出去的方向。
-i:流入的网卡接口。
-o:流出的网卡接口。
interface:网络卡接口,例如ppp0、eth0、eth1等。
-p:封包协议啦。
TCP:封包为TCP协议的封包。
UDP:封包为UDP协议的封包。
-s:来源封包的IP或者是Network。
—sport:来源封包的port号码。
-d:目标主机的IP或者是Network。
—dport:目标主机的port号码。
-j:动作,可以接底下的动作。
ACCEPT:接受该封包。
DROP:丢弃封包。
举几个简单的例子:
接受所有的来自lo这个接口的封包。
接受来自 192.168.0.1这个IP的封包。
接受来自 192.168.1.0 C Class的网域的任何一部计算机。
丢弃来自 192.168.1.25的IP的封包。
丢弃访问 21这个端口的封包。
端口22接受来自192.168.0.24主机的访问。
请注意:防火墙的规则是,一行一行依序来检查,若符合任何一条规则,则予以动作(接受或丢弃),否则继续往下直到检查最后一条。