2012年5月10日星期四

RHCE 考试要点 自学比对用

目     录


第一章 基本要求... 2


第一节 基础知识... 2


第二节 文件系统的层次结构... 2


第三节 基本命令工具... 3


第四节 基本安全... 5


第五节 系统管理... 5


第六节 基础硬件知识... 6


第七节 硬件兼容性... 6


第八节 配置外围设备... 6


第二章 磁盘管理... 7


第一节 磁盘分区... 7


第二节 扩展磁盘空间... 7


第三节 逻辑卷管理(lvm)... 8


第四节 磁盘阵列... 8


第五节 增加交换分区... 9


第六节 增加交换文件... 9


第七节 读取windows的文件... 9


第三章 基本配置和管理... 10


第一节 用户管理... 10


第二节 基本用户环境... 10


第三节 文件系统管理及自动挂接... 10


第四节 RPM的使用简介... 11


第五节 关于rpm 源码包... 11


第六节 基本网络配置... 11


第七节 基本启动过程... 12


第八节 虚拟控制台... 13


第九节 其他配置工具... 13


第四章  内核、用户管理和任务自动化... 14


第一节  shell配置文件... 14


第二节  实现磁盘配额... 14


第三节  内核基础知识... 15


第四节  升级内核... 16


第五节  任务自动化... 17


第五章 linux网络服务... 18


第一节  samba网络共享服务... 18


第二节 web服务及虚拟服务器(apache) 19


第三节 实现squid代理服务器... 20


第四节 Ftp服务... 20


第五节 邮件服务器... 20


第六节 DNS服务器... 21


 


第一章 基本要求


第一节 基础知识 


linux和unix都是通过一系列的文本文件来进行管理。Linux系统管理员通常不使用图形编辑器来管理这些配置文件。各种流行的编辑器的格式例如:word、startoffice等等,linux都无法识别。Linux常用的文本编辑器有这么几种:vi、pico、joe、emacs。尽管emacs可能是linux世界最流行的编辑器,但是系统管理员仍然必须懂得vi的基本使用。Emacs更加灵活更加流行,vi可以帮助你恢复系统。如果你要使用紧急引导盘来恢复一个重要的文件,vi是唯一可用的编辑器。


实际上,RHEL 3 使用增强版本的vi,即vim.它增加了颜色来对重要的文件进行区分。所有的vi 命令都是在vim编辑器,你可以通过在vim编辑其中使用:nohl命令来去掉颜色,这并不会对你管理系统带来任何影响。


Vi的基本用法:vi filename


基本命令:i 插入


o 插入新行


:w保存


:q退出


:wq!保存并强制退出


:q!不保存强行退出


练习1:使用vi来增加新用户


1、#vi /etc/passwd,使用命令yy拷贝当前行,使用命令p复制出一新行,然后修改。改变用户名,用户id用户组id,以及home目录。更改完成后使用命令:wq!保存退出。


2、更改新用户的密码:passwd username


3、建立用户的主目录:mkdir /home/username 



第二节 文件系统的层次结构 


linux中的任何事情都可以归结为一个文件。分区和文件系统设备节点关联,例如:/dev/hda1。硬件组件对应于节点文件如:/dev/modem。检测到的设备在/proc目录中存档。FHS是用来组织linux和unix文件的方法。


基本文件系统层次结构:


/ 根目录,linux的最高级目录


/bin 基本的命令行工具,不应该单独挂接。


/boot 引导目录,包含linux的启动文件,其中有linux内核。默认大小


为100M


/dev 所有软硬件设备的驱动,不要将此目录单独挂接在一个分区上


/etc 存放大多数的基本配置文件


/home 存放大多数用户的主目录


/lib 内核程序库以及各种命令行工具。不要将此目录挂接在单独的分区上


/mnt 可移动设备的挂接点,包括软盘,光驱等


/opt 存放应用程序,如wordperfect、openoffice套件等


/proc 当前运行的和内核相关的进程,包括IRQ ports,I/O地址,DMA通道


/root root用户的主目录


/sbin 系统管理命令,不要单独挂接


/tmp 临时文件夹


/usr 对所有用户可用的小程序,包括一些系统管理命令和功能


/var 可变的数据包括日志文件,打印池


文件系统的格式及检验


用来对不同的文件系统进行管理的工具有如下几种:fdisk、mkfs、fsck


fdisk:该命令功能强大,但使用该命令,你必须知道你需要对那个硬盘进行更改,即必须指定对应的设备。如果你要管理第一个scsi硬盘输入如下命令:fdisk /dev/sda


fdisk命令:a 指定引导分区


l 列出已知分区的类型


n 增加新的分区


q不保存退出


t 改变分区的文件系统


mkfs:格式化一个linux文件系统,使用mkfs命令,例如:


mkfs –t ext3 /dev/hda1


fsck:磁盘检查命令,类似于windows 2000的chkdsk,使用该命令之前应将所要检查的磁盘卸载,例如要检查挂接在/var目录下的hda7分区:#umount /var


#fsck –t ext3 /dev/hda7


#mount /dev/hda7 /var


练习:创建新的lvm分区


1、 增加一个新的硬盘


2、 创建了一个新的分区,使用fdisk工具将该分区设为lvm文件系统。


3、 备份/home目录


4、 使用vgscan命令,扫描lvm文件系统,为其他的lvm命令创建数据库


5、 使用pvcresate /dev/partition创建卷


6、 使用vgcreate groupname /dev/partition1 /dev/partition2命令创建卷组


7、 使用lvcreate –L –xyM –n volname groupname groupname创建逻辑卷,xy是卷的大小。


8、 最后使用mkfs命令来格式化逻辑卷


9、 将逻辑卷挂接在/home目录下,修改/etc/fstab使得系统自动挂载/home目录 



第三节 基本命令工具 


作为unix的变体,linux用不同的代码实现了和unix相同的功能。这两种系统都是基于命令行的,使用命令来对系统进行维护


基本文件操作


每一个用户都会有一个主目录,~表示用户的主目录。


路径:分为绝对路径和相对路径,以/目录开始的路径表示绝对路径,相对于当前目录的路径是相对路径。


显示当前所处目录:pwd命令显示尼当前相对于根目录的路径。


进入其他目录:cd 使用命令cd可以进入其他的目录,例如:cd /boot


显示目录中的文件和子目录:ls


查找:find,例如查找文件qq find / -name qq


显示文件内容:cat filename、less filename、more filename


head:显示文件的前n行


tail: 显示文件的后n行


cp:拷贝文件


mv:移动文件


ln:创建符号链接文件


sort:排序命令,例如:sort /etc/passwd


grep and egrep:查找文件,例如:grep ‘zhao’ /etc/passwd


wc:对文本文件进行统计,得出其中的字符数、行数等信息


sed:用于替换文件中指定的字符,例如:使用linux替换windows


sed ‘s/windows/linux’ filename > newfile 替换第一个符合的项


sed ‘s/windows/linux’ filename >newfile 替换所有符合的项


awk:数据库管理命令,可以读出指定的列从某行,例:找出含有zhao 的行


awk ‘/zhao/ {print $1}’ /etc/passwd


ps:显示当前的进程


who and w:显示当前登陆的用户,可以看到谁登陆在那个终端上,登陆的时间运行的进程


通配符:*可以匹配任意字符


?可以匹配任意单字符


[] 例:ls abc[123],若文件存在则显示abc1、abc2、abc3


shells


shell是一种用户界面,你可以通过shell使用各种各样的命令来和计


算机进行交互,通过正确的权限,你可以把命令方在脚本文


件中在指定的时间运行,甚至是在深夜。Linux执行命令的


顺序,取决于你对每个命令的输入于输出的安排。


在各种shell中命令的运行方式很大程度上取决于该命令的参数和选项。部分变量对于各种shell是通用的。


linux默认的shell是bash,在用户中流行的其它很多shell也是可用的,如:c shell、k shell


添加path到自己的路径:


#PATH=$PATH:/sbin


#export PATH


查看自己当前的path:


#echo $PATH


查看文本文件的内容:


#cat filename


重定向把一个文件的输出作为另外一个的输入,例:


#database < datafiles 将文件datafiles作为程序database的输入


输出重定向:


#cat /etc/passwd >filenam把输出结果重定向到文件filename


#cat /etc/group >>filename 将输出的内容追加到filename


查看启动信息:


#dmesg | less :分平显示启动日志


重定向错误信息:


#redhat-config-network 2>error 如果运行正常则无输出,若有错误则将错误信息重定向到文件error


 
第四节 基本安全 


linux的安全性是基于文件的权限管理。默认的权限通过umask变量来进行设定。Suid和sgid权限赋予每一个指定的文件。对权限和属主进行更改分别使用命令:chmod chown chgrp


umask:


用于设置默认的文件权限,例:umask=123,则默认的权限为777-123=654,但实际上不论umask的最后一位是什么,默认的权限最后一位一定是0,即不具有可执行权限。


Suid and sgid:


为了防止赋予每一个用户完全的权限导致的潜在的威胁,可以设置suid和sgid来减小风险,详情件后续章节


shadow passwords


查看/etc/passwd文件的时候,你会发现有这么一列:x.旧版本的linux在这个位置将密码加密。由于/etc/passwd对所有的用户都是可以访问的,所以就会有黑客将这个文件拷贝之后进行破解以次得到该计算机的密码。这个问题导致了shadow passwords suite的出现。


Shadow password suite


Shadow password suite为密码提供了更进一步的保护,它把加密后的密码存放在shadow文件中(/etc/shadow、/etc/gshadow)。此文件只有root用户可以读取。


Shadow password command


Pwconv: 将/etc/passwd转化为/etc/shadow


Pwunconv:将/etc/shadow转化为/etc/passwd


Grpconv:将/etc/group转化为/etc/gshadow


Grpunconv:将/etc/gshadow转化为/etc/group


 



第五节 系统管理 


大多数管理任务需要root或者超级用户权限。你应该已经对一部分基本的linux系统管理命令和文件非常熟悉。标准用户文件存储在/etc/skel文件中。守护进程在后台运行并且执行各种不同的服务。Cron是一种特殊的守护进程,它可以在指定的场合运行指定的脚本文件。对于午夜执行的备份任务,这项功能非常有用。


总体来说,作为系统管理员可以执行普通用户的任何任务。仅仅当需要的时候才使用超级用户是一个很好的主意。好的系统管理员再任务完成以后会返回普通用户的身份。管理员的错误可能会给系统带来很大的伤害。


Su :superuser命令,su –c 只对一个特定的命令设定根用户权限。


Su – root:切换到根用户


Sudo:该命令允许/etc/sudoers种的用户运行管理员的命令


/etc/skel:对个体用户可用的配置文件存在于/etc/skel/目录中


tar czvf home.tar.gz /home 备份/home目录为home.tar.gz


tar xzvf home.tar.gz /home 将home.tar.gz 解压缩


gzip hello.jpg 压缩hello.jpg文件


gunzip hello.jpg.zip 解压缩hello.jpg.zip


 



第六节 基础硬件知识 


redhat虽然可以应用于各种硬件平台,诸如:alpha、itanium、s/390,但RHCE和RHCT考试是基于intel32位架构的计算机的。Pc机的架构决定了它所使用的组件和它可以使用的设备。所有的软件都是为特定架构的计算机写出来的。但并不是所有基于intel的软件都可以运行在linux的机器上。因此我们有必要了解基本的intel计算机的架构。


IRQ Settings


Irq是由外围设备发送给处理器要求处理时间的信号。连接到计算机的每一个设备都需要一个irq端口。正常情况下,每一个设备需要一个专用的irq。Intel架构的计算机只有十六个irq(0-15),现在这些irq端口号常常会显得不够用。通过共享端口号可以支持更多的设备。2000年以后生产的计算机大多都支持该功能。可以共享irq的主要是Pci、usb接口的设备。


DMA:


Dma设备之间可以直接通信而不经过cpu,但是dma设备仍然需要irq端口号,以共有八个标准dma通道(0-7),其中dma4属于保留号码,不能用于任何设备。


内存需求


对于as3.0最少需要256m内存,实际上我的内存少于256运行的也还算正常,只是慢了点。系统所需的最大内存是你同时运行所有程序所需要的内存容量,这难于计算,所以你应该尽量购买大一点的内存,这样可以让你的系统运行的更好。As3.0支持的最大内存是64g。如果你的内存大于16g,你需要安装hugemenm内核,详情容后介绍。


关于硬盘:


在你的计算机将linux载如系统之前,bios一定要能够认出包含引导文件的主分区。这样硬盘上的linux才能启动,你应该知道下面这些关于硬盘的知识。


标准intel架构支持4个ide硬盘


最多支持31一个不通的scsi硬盘


linux可以安装在前两个硬盘上,否则你就需要一张启动软盘来引导系统了


尽管你可以使用usb硬盘或1394硬盘但是你不应该将系统安装在这两种设备上,因为既不能从这两种硬盘引导,也不能使用软盘来引导着两种硬盘上的系统。



第七节 硬件兼容性 


鉴于大多数人使用的硬件都可以被linux支持,此节就此略过



第八节 配置外围设备 


没有什么值得看的内容一并略过


 



第二章 磁盘管理 
第一节 磁盘分区 


磁盘使用之前必须进行格式化成某种格式才能够使用,linux支持多种文件系统。每一个硬盘最多可以划分为16个分区。


磁盘分区:推荐使用fdisk。举例说明:


#fdisk /dev/hda hda指第一块ide硬盘,scsi硬盘为sda或sdb等


command(m for help): n增加磁盘分区


command action


e extended


p primary partition (1-4)


p 增加主分区


Partition number (1-4):1


First cylinder (1-512, default 1):


Using default value 1


Last cylinder or +size or +sizeM +sizeK(1-512,default512):+200M


Command (m for help):p 查看当前磁盘信息


Device Boot Start End Blocks Id System


/dev/sdb1 1 192 196592 83 Linux


Command (m for help):w 保存退出


Mount:显示当前挂接的目录


Df:查看磁盘信息


Du: 查看文件夹的空间使用效率


磁盘格式化:mkfs ,例:格式化/dev/sda1: mkfs –t ext3 /dev/sda1


 



第二节 扩展磁盘空间 


现有的磁盘的空间可能会随着时间的增长而变得越来越不够用。在这种情况下就需要增加新的磁盘来对原先的硬盘进行扩展。方法如下:


1、 将新的硬盘接好,进入系统后使用fdisk进行分区,然后格式化。


2、 建立一个空目录,例如:mkdir /mnt/newdisk.


3、 挂接新的硬盘到新建的空目录:mount /dev/sda1 /mnt/newdisk


4、 修改/etc/fstab使该分区自动挂载


 



第三节 逻辑卷管理(lvm) 


磁盘上的某一个目录存储的文件增长迅速空间日渐不够使用


这时候你可以使用lvm来解决这个问题。实现方法如下:假设要增加/home目录的空间。


1、 增加新的硬盘,分区、格式化,假定要增加的新的分区为/dev/sdb2,/home目录的分区为:/dev/sda7


2、 备份/home文件夹的内容


3、 #umount home


4、 #vgscan 进行扫描并创建相关的文件


5、 #pvcreate /dev/sda7 /dev/sdb2 创建物理卷


6、 #vgcreate vgtest /dev/sda7 /dev/sdb2 创建卷组


7、 #lvcreate vgtest –L 2000M –nlvtest


8、 #mkfs –t ext3 /dev/vgtest/lvtest


9、 #mount /dev/vgtest/lvtest /home


10、 #vi /etc/fstab,删除和home 相关的行,并增加如下行:/dev/vgtest/lvtest /home ext3 defaults 0 0


11、 #reboot


 



第四节 磁盘阵列 


磁盘阵列可以有效的提高数据的读写速度和数据的可靠性。具体分类如下:raid 0、raid 1、raid 2、raid 3、raid 4、raid5其中常用的是:raid 0、raid 1、raid 5,简介如下:


raid 0:使用两块硬盘,数据分别存放在两块硬盘上,读写速度较快,但不提供数据冗余。


Raid 1: 也称为磁盘镜像,在两块硬盘上同时存储完全相同的


数据,写入速度一般,但读取速度增加一倍。任意 一块硬盘损坏不会对数据造成损害。


Raid 5: 也称为带奇偶校验的磁盘条带化,最少需要3块硬


盘,最多支持32块硬盘,可用磁盘数量为n –1块硬


盘。读取速度和写入速度都有一定程度的提高。为


最常用的阵列形式。


实现方法:假定添加了四块硬盘到计算机,分别为/dev/sdb、


/dev/sdc、/dev/sdd、/dev/sde,实现步骤如下:


1、 分别进行分区格式化


2、 更改分区类型:fdisk /dev/sdb1


t


fd


p


w


对每一块硬盘进行如上操作,把分区类型


改为raid


3、 创建/etc/raitab


#vi /etc/raidtab如下内容:


 


 


QUOTE:


raiddev /dev/md0


raid-level 1


nr-raid-disks 2


nr-spare-disks 0


persistent-superblock 1


chunk-size 4


device /dev/sdb1


raid-disk 0


device dev/sdc1


raid-disk 1


 


保存退出。


#mkdir /dev/md0 创建阵列md0


#mkfs -t ext3 /dev/md0 对阵列进行格式化


 



第五节 增加交换分区 


#mkswap /dev/sdb1 创建交换分区


#swapon /dev/sdb1 开启新增的交换分区


#cat /proc/swaps 查看当前的交换分区


 



第六节 增加交换文件


QUOTE:


#dd if=/dev/zero of=/swapfile bs=1024 count=8192


#mkswap /swapfile


#swapon /swapfile


 


交换文件最多8个,每个最大容量为16M


 



第七节 读取windows的文件 


#mkdir /mnt/windows 建立一个空目录


#mount –t vfat /dev/hda4 /mnt/windows 挂接windows


的fat分区


#mount –t ntfs /dev/hda5 /mnt/windows 挂接ntfs分区,linux内和默认不支持ntfs分区,要让linux识别ntfs分区必须要重 新编译内核加入对ntfs的支持。


 


 



第三章 基本配置和管理 
第一节 用户管理 


1、增加用户:方法1:#useradd username –p password


例:增加用户kk,密码kk #useradd kk –p kk


方法2:直接修改/etc/passwd文件,然后手工创


建相应的用户主目录


2、修改用户:#usermod –l newusername –c “comment” –d /home/newusername oldusername


例:把test 用户名改为test2,主目录改为:/home/test2


usermod –l test2 /home/test2 test(test2目录要手工建)


-p:修改密码


-e:设定账号过期时间


-s: 设定shell


-p: 设定密码


3、 改密码:passwd username


4、 删除用户:userdel username


5、 限定可以执行:su 命令的用户:普通的用户如果知道root


的密码,就可以通过su命令取得根用户的权限。黑客也有可能通过暴力破解的办法,获得超级权限,因此有必要对可以执行su命令的用户进行限制。具体方法如下:


#vi /etc/pam.d/su,修改其中一行:


#auth required /lib/security/$ISA/pam_wheel.so use_uid


将行首#去掉,这样就只有wheel组中的用户可以使用su命令了。然后将选定的用户加入到wheel用户组即可。


 



第二节 基本用户环境 


当我们使用userdd命令或redhat-config-users工具来创建一个新的用户的时候,会自动生成用户的主目录和一些默认的文件设定一些配置,即所谓的用户环境。这些默认的配置和文件存储在/etc/skel文件夹中。默认文件有以下这些:.bash_logout、.bash_profile、.bashrc、.kde、.zshrc,不同的版本的linux默认文件可能也会有一些差别


 



第三节 文件系统管理及自动挂接 


1、 挂接软盘:mount –t vfat /dev/fd0 /mnt/floppy


或者:mount /mnt/floppy 或者:mount /dev/fd0


2、系统启动时自动挂在软盘:修改/etc/fstab 增加如下一行:


/dev/fd0 /mnt/floppy auto noauto,owner,kudzu 0 0


3、卸载软盘:umount /mnt/floppy


卸载光驱:umount /mnt/cdrom


 



第四节 RPM的使用简介 


所谓rpm是指redhat package manager即红帽软件包管理器,是有redhat公司创建的一种软件发行发式,rpm格式发行的软件易于安装,相比其他的发行方式有很大的优越性。在此简介其基本用法。


1、rpm –i penguin-3.4.5.-26.i386rp安装以rpm形式发行的软件


2、rpm –U penguin-3.4.5-26.i386.rpm 升级软件包


3、rpm –e penguin-3.4.5.26 删除软件


4、http://download.fedora.redhat.co ... -1.494.2.2.i686.rpm 安装远程rpm包


5、rpm –import /usr/share/rhn/RPM_GPG_KEY 导入gpg公钥


6、 rpm –checksig /mnt/cdrom/RedaHat/pxe-0.1-36.i386.rpm导入公钥以后对文件的完整性进行验证


7、 rpm –verify –p /mnt/cdrom/RedaHat/pxe-0.1-36.i386.rpm进行md5校验和的验证


8、 rpm --redhatprovides /etc/group查找某个文件对应的rpm包


9、 rpm –q samba 查询samba是否安装,以及版本


10、 rpm –qf /etc/passwd 查询/etc/passwd属于哪个软件包


 


 



第五节 关于rpm 源码包 


1、 通过rpm 源码包创建和定制rpm


rpm –ivh rpm-build-4.2.3-10.i386.rpm:安装rpmbuild工具


rpm –ivh modutils-2.4.21-22.src.rpm:安装源码包


这时在/usr/src/redhat/SPECS文件夹内可以看到modutils.spec,/usr/src/redhat/SOURCES文件夹内可以看到以下的文件:modutils-2.4.21.tar.gz、modutils-2.4.21.tar.gz


cd /usr/src/redhat/SPECS/ 进入该文件夹


rpmbuild –ba modutils.spec 重新编译建立rpm包,运行结束后,


cd /usr/src/redhat/RPMS可以看到如下文件:modutils-2.4.21.i386.rpm modutils-debuginfo-2.4.21-22.i386.rpm


至此rpm包成功建立,使用rpmbuild命令的时候,使用参数-bb也同样可以生成rpm包


 



第六节 基本网络配置 


大多数情况下,在系统的安装过程中,网络的相关设置就已经设好了,但是如果你碰到了问题,你可能就会需要诊断网络的故障,特别是排除网络故障的时候,就更需要了解网络配置的知识。


1、和网络相关的配置文件大多数都存储在/etc/sysconfig文件夹里。/etc/syscofig/network是比较重要的一个,其设置简介如下:


networking:可以设置为yes或者no 以此来决定电脑是否联网。


Nisdomain: 如果你使用nis网络,你应该在这个文件中指定nis域的名字


Hostname:设定计算机的名字


Gateway:设定网关的ip地址


Gatewaydev:设定网络设备,例如eth0,如果你只有一个网卡那么你应该看不到这个选项。


2、/etc/syscofnig/network-scripts/ 命令即配置文件介绍


ifconfig-eth0:和第一块网卡有关的设置,如ip地址、子网掩码、网络地址、网关等等。最后一位的0代表第一块网卡,如有第二块网卡,就会有ifconfig-eth1文件,依此类推。


Ifconfig-lo:配置lookback 设备的相关信息,内容与ifconfig-eth0类似


Network-functions:包含其他的网络脚本所使用的激活网卡、禁止网卡等功能


Ifup-* and ifdown-*:用于激活或者禁止相关的协议


Ifup eth0:激活eth0


Ifdown eth0:禁止eth0


Ifconfig:主要的网络配置命令


2、 ifconfig 用法介绍


ifconfig:显示当前的网络配置


ifconfig eth0 192.168.0.1 netmask 255.255.255.0 设置ip地


址和子网掩码。该命令只在当前生效


ifconfig eth0 down:禁用网卡eth0


ifconfig eth0 up:激活网卡eth0


3、netstat –r:显示当前的路由表


 



第七节 基本启动过程 


理解系统的启动及关闭过程将对你的系统管理工作带来极大的益处。Redhat使用的启动过程称之为:System V init。一旦内核被装载,它启动一个程序:init,由init来启动其余所有的相关程序。我们将对linux如何将自己引导为一个可用的系统有一个大致的了解。Redhat提供两个工具来管理随系统启动服务:redhat-config-services(图形化工具)、chkconfig(命令行工具)。首先我们要了解redhat runlevels。


1、runlevel 0 :关闭系统


2、runlevel 1: 单用户模式,用于对系统进行维护


3、runlevel 2: 多用户模式,但不能使用网络


4、runlevel 3: 多用户模式,具有网络功能


5、runlevel 4: 未使用


6、runlevel 5: 重新启动


系统启动过程:计算机通电以后由bios会检查你的系统寻找引导装载程序(grub、lilo)。然后再由引导装载程序寻找linux内核。这样就开始安装你配置好的服务。内核总是通过调用init来启动。Init进程立刻运行/etc/rc.d/rc.sysinit,由其执行一系列的任务,例如网络配置、键盘映射、分区挂接等等。Init进程通过查看/etc/inittab来决定将系统引导至哪个运行级别。/etc/inittab中有类似这样的一行:id:5:initdefault:其中数字5代表系统的默认级别为runlevel 5,通过简单的更改这里的数字即可改变系统启动时自动运行的级别。


/etc/rc.d/目录中包含如下子目录:


init.d、rc0.d、rc1.d、rc2.d、rc3.d、rc4.d、rc5.d、rc6.d


除init.d之外的每一个目录都对应一个运行级别,其中包含该运行级别启动和关闭的服务,标有k的服务是该运行级别默认关闭的服务,标有s的服务为该运行级别默认启动的服务。


/etc/rc.d/init.d目录包含所有服务的启动脚本,手工启动一个服务即可在该目录下执行,例:/etc/rc.d/init.d/smb stop



第八节 虚拟控制台


linux作为多用户操作系统,你可以使用相同的身份同时等录到不同的终端。使用ALT+功能键在不同的终端窗口之间进行切换。例:切换到终端2:ALT+F2。在图形界面下切换使用:ctrl+alt+功能键


虚拟控制台在/etc/inittab文件中配置,可以看到有如下行:


 


 


QUOTE:


1:2345:respawn:/sbin/mingetty tty1


2:2345:respawn:/sbin/mingetty tty2


3:2345:respawn:/sbin/mingetty tty3


4:2345:respawn:/sbin/mingetty tty4


5:2345:respawn:/sbin/mingetty tty5


6:2345:respawn:/sbin/mingetty tty6


 


根据官方的说法,最多只有6个终端,实际试验的结果是在这里修改配置文件添加终端数量以后,重新启动。终端的数量增加了,但是可用的仍然只有6个


 


 


QUOTE:



第九节 其他配置工具


1、 clock:显示当前的系统时间设置


2、 redhat-config-date:图形化的时间配置工具


3、 redhat-config-keyboard:图形化的键盘配置工具


4、 redhat-config-mouse:图形化的鼠标配置工具


5、 redhat-config-services:图形化的服务配置工具,决定哪些


服务随系统启动


6、 chkconfig:确定某服务默认在哪个级别运行


7、 redhat-config-network:图形化的网络配置工具


 


 


 



第四章  内核、用户管理和任务自动化
第一节 shell配置文件


         1、所有的shell配置文件都保存在/etc目录中,包括:bashrc、profile以及/etc/profile目录中的脚本文件。简介如下:


            /etc/bashrc:设定别名和一些其它的功能,你可以使用文本编辑器来查看该文件,该文件设定了umask的数值该参数决定了新创建的文件的默认权限,另外还设定了命令行下的提示符。


           /etc/profile:用于设定系统环境,设定PATH、USER、


LOGINNAME、MAIL、HOSTNAME、HISTSIZE以及INPUTRC变量。以及最后运行/etc/profile.d目录中的脚本文件。


            /etc/profile.d:一个包含若干用于bash shell脚本文件的目录,这些脚本文件由/etc/profile启动运行。



第二节 实现磁盘配额


1、        查看当前的内核是否支持磁盘配额:


#grep CONFIG_QUOTA  /boot/config-2.4.21-4.EL


如果输出的内容如下则内核支持磁盘配额:


CONFIG_QUOTA=y


如果你看到的输出如下,则你需要自行编译内核:


CONFIG_QUOTA=n


2、        查看相关软件包是否已安装:


rpm –q quota


3、        举例说明磁盘配额的实现方法:


#useradd  linux          增加用户linux


#passwd  linux           修改用户linux的密码


#mkdir /www/linux        建立新文件夹


#chown  linux.linux  /www/linux  更改文件夹的属主


#vi /etc/fstab              增加如下行:


/dev/hda7  /www  ext3   defaults,usrquota  0 0


#mkfs –t ext3  /dev/sdb1   格式化分区


#quotacheck  -cu /www    生成aquota.user 文件


#quotacheck  -vu /www    生成相关的信息


#repquota    –au         显示所有的磁盘配额信息


#edquota     -u  linux    对用户linux设置配额


#edquota     -t           设置宽限期


#edquotaon   /www    开启/www目录上的磁盘配额



第三节 内核基础知识


          内核是整个操作系统的核心部分。它管理硬件之间的通讯,决定哪个进程运行,提供每一个进程运行所需的相对隔离的虚拟的地址空间。内核由引导程序(grub、lilo)装入系统。内核负责将驱动程序,模块装入系统。自行编译内核以后可以带来以下方面的好处:


         极大的提高核心服务的运行速度


         提供用户服指定的服务的内核直接支持


         对适当的服务以模块化的形式动态支持


         通过减少不必要的服务可以降低内核的内存需求


         配置支持高端硬件,例如大于4G的内存,硬盘阵列,对称式多cpu


编译内核的建议: 只有在需要的时候才编译内核,直接编译进内核的


东西越少系统运行越快。如果你不需要声卡,你可以从内核移除对声卡的支持。通过移除你不需要的设备,你可以做到减小内核,在不改变设备的情况下提高系统运行的速度。为其它的硬件留下更多的可用资源。


总体而言将各种硬件的设备的驱动作为模块动态的加载和卸载是一个


较好的办法。模块是内核的扩展,虽然没有直接编译进内核,但是可以


随需要加载和卸载。


内核概念:


对于系统管理员而言,对系统的内核应该有一定的了解,这样才能更好的编译内核。


单内核与模块化内核


      单内核:所有的设备模块直接编译进内核


      模块化内核:许多设备已模块的形式单独加载


单内核与设备的通讯速度快,模块化内核与硬件通信要通过模块


列表,不行的是单内核过于庞大。大内核减少了可用的内存。有


些系统甚至不能启动这样大的内核。Linux过去使用单内核,linux


一度在装载模块化内核的时候由于某些硬件而产生问题。使用单


内核则系统安装完成之后所有的驱动程序就已经装好了。模块化


内核有极大的灵活性。你可以将几乎所有的驱动程序作为模块编


译,这样在必要的时候这些模块就会被载入系统。模块化使得内


核十分的小,这就减少了启动所需要的时间提高了系统整体性能。


如果linux装载模块的时候产生问题,你可以使用modprobe或者


insmod命令来手动装载模块。


升级内核:升级内合并不像看起来的那么难。你应该总是保留久的内核,以免由于新内核的错误而导致系统无法引导。对grub或者lilo而言新的内核就是一个新的操作系统。如果使用rpm包安装了新的内核,引导程序也自动被升级。如果你犯了一个比较大的错误,导致无法引导,你可以在重新启动后选择使用旧的内核。你应该保存内核配置文件这样你就可以轻松的将其拷贝到新的内核继续使用。详情后续部分将详细介绍。


/boot目录:  linux的内核存储在这个目录里。新的内核也必须存放于这个目录,才能够使用。该目录的莫人大小时100M,足够存储当前的内核以及升级内核的时候的附加内核。


/proc 目录:这个目录基于一个虚拟的文件系统。换句话说她不包含任何存储在硬盘上的文件,但它是查看计算机的一个窗口。如果你要查看当前的内存信息使用该命令:cat /proc/meminfo


Ip forwarding:查看当前状态:cat /proc/sys/net/ipv4/ip_forward,若输出为


1,则该功能已开启,若为0,则未开启。


             开启ip forward:echo 1 >;>; /proc/sys/net/ipv4/ip_forward


阻止ping of death攻击:#echo 1 >;>; /proc/sys/net/ipv4/tcp_syncookies


理解内核模块:


当你编译内核的时候,你可以将所有的需要的驱动程序编译成进内核,成为一个单内核。但是这样的内核太大了,并且需要很长的时间加载。大多数的系统管理员使用内核模块。内核模块并不直接编译进内核,而是根据需要动态的进行加载和卸载。如果和内核模块相关的硬件除了问题,你可以使用kudzu。这是一个自动检测和配置工具,一般在系统启动的时候自动运行,当然了你也可以手工运行这个工具来排除故障。Kmod是模块加载控制器,负责内核模块的加载和卸载。指定特别的选祥和参数可以修改/etc/modules.conf文件。大多数的硬件都可以自动检测到,对于未识别到的硬件可以执行:depmod –a


手工加载模块使用:modprobe例:#modprobe pcnet32


查看当前加载的模块:#cat /proc/modules或者#lsmod


卸载模块:rmmod –r pcnet32



第四节 升级内核


1、关于内核版本 内核版本号的形式一般都是这样的:x.x.x例如:2.4.21


  第一个数字表示主版本号,第二个数字表示辅助版本号,第三个号码代表patch的号码。主版本号的变更往往意味着很大的改变,可能会有很多程序不能够在新的内核上使用。辅助版本号有两个含义:第一主版本内核的第x个版本,第二x若为奇数则表示该版本为正在开发中的版本,不适合生产使用,若为偶数则表示该版本为稳定的可靠版本,可以用于生产。最后一个号码代表patch即补丁的版本号。


2、升级内核 新的内核往往会包含着新的技术,意味着系统可以支持更多的设备,也意味着更好的稳定性和更快的性能。所以系统管理员可能会需要对内核进行升级。升级内核主要有两种方式:


1、        rpm包升级方式  从网上下载已经编译好的rpm内核软件


包,然后进行安装,例:rpm –ivh  kernel-2.4.21-8.i386.rpm


2、        使用内核的源码包编译安装。这部分较为复杂,在后续章


节进行详细论述,此处略过。


        3、内核补丁为了使你的系统运行的更加的稳定、高效,你可能经常要给你的系统打补丁,例如从2.4.20到2.4.21。内核补丁可以很容易的从网上下载到。安装也很容易,例:


            #zcat pathch-2.4.22.gz | patch –p0


3、        制作引导盘


#mkbootdisk  “当前内核的版本号”


例:mkbootdisk 2.4.20


#dd if=/mnt/cdrom/images/bootnet.img  of=/dev/fd0


从光盘创建安装引导盘


        4、 内核资源


                  linux的优点之一是你可以格局你的需要对内核自


由进行裁减编译,使之符合自己的需要。要编译内核就要先了解linux的源代码。一旦安装了源码包,你就会在/usr/src目录中看到如下子目录:debug、redhat、linux-2.4、linux-2.4.21-4.EL。linux-2.4是linux-2.4.21-4.EL的符号链接文件。安装内核源码包使用如下命令


#mount  /mnt/cdrom


#rpm –Uvh /mnt/cdrom/RedHat/RPMS/kernel-source-*


或者你可以下载linux tar file,即以tar.gz的形式发行的源码包。


4、        重新编译内核


           将下载好的内核解压缩到:/usr/src/目录下


#cd /usr/src/   进入该目录


#ln linux-2.4.26 linux-2.4    创建该目录的符号链接文件


#cd linux-2.4   进入内核目录


修改Makefile文件,找到包含EXTAVERSION的行将其改为EXTRAVERSION=qun


  #make mrproper   确保源文件的一致性


#make xconfig  选择需要编译进内核的功能


#make dep       解决依赖性


#make bzImage   生成内核


#make modules   编译内核模块


#cp        usr/src/linux-2.4/arch/i386/boot/bzImage /boot/vmlinuz-2.4.26qun


#make modules_install   安装内核模块


#mkinitrd /boot/initrd-2.4.26qun.img 2.4.26qun 生成启动镜像文件


# cp /usr/src/linux-2.4/System.map /boot/System.map-2.4.26qun


#vi /etc/grub.conf # 在最后部分添加如下行:


title Red Hat Linux (2.4.26qun)


kernel /vmlinuz-2.4.26qun ro root=LABEL=/


initrd /initrd-2.4.26qun.img


:wq!


#reboot 重新启动后就可以看到刚刚安装好的内核了。


#对于2.6的内核而言,步骤就简单了很多只需要这几个命令:


  make xconfig、make、make install



第五节 任务自动化


        linux下实现任务自动化的工具主要有两个:cron、at,


cron的守护进程是crond,在默认的情况下,它每分钟都检查一系列的目录,如果有设定的程序就会在指定的时间内将其启动。用户的cron设置位于:/var/spool/cron目录,计算机的调度任务位于:/etc/crontab和/etc/cron.d目录。只用当需要运行程序的时候,cron守护进程才会启动。


        Cron的配置方法如下:


Crontab –u  username  -e,例:


Crontab –u root –e    对用户root进行设置


设置的具体格式如下:


minute, hour, day of month, month, day of week, command


*        *          *           *        *          command


例:crontab -u root -e


    30  23   *     *    *     *    reboot


设定每晚23:30重新启动计算机


查看cron设置:crontab -l例:crontab -l -u zhao查看用户zhao的设置


crontab 参数介绍:


-e:编辑设置


-u:指定用户


-r:删除设置


-u:列出当前设置


使用at实现任务自动化:类似于cron,at也可以实现任务自动在指定的时间执行,不同之处在于cron任务是多次循环反复执行的,而at任务是一次性的,执行一次之后就不再生效了。设定at任务的方法如下:


#at  now + 1 hour


at>; reboot


at>;ctrl+D       设定一个小时之后重新引导系统


查看at任务:atq 例:#atq


1        2004-11-01 00:53  a  root


2        2004-11-01 01:53  a  root


          除任务:atrm 例:删除第一个任务:#atrm 1


增强cron、at安全性:


          可以通过这两个文件来对用户进行权限的控制:/etc/cron.allow、/etc/cron.deny。如果这两个文件不存在,那么所有的用户都可以使用cront、at。如果有/etc/cron.allow文件,则该文件不包含的用户将不能使用cron,如果没有/etc/cron.allow文件,则只有/etc/cron.deny文件所包含的用户不能访问cron.



第五章 linux网络服务
第一节 samba网络共享服务


共享文件是网络的一项重要服务,在linux中实现类似的功能主要有两种办法:samba文件共享,NFS文件共享,本节主要讲解samba的网络共享服务。使用samba服务可以实现linux和unix以及windows之间的网络文件共享。并且使用samba服务,linux还可以作为windows的服务器,主要有如下几种:


win9x的工作组成员、


nt/2000/xp/2003的域成员、


成员服务器甚至是域主服务器。


共享用户的主目录。


作为wins服务器


作为主浏览器


提供集中式的身份验证


配置本地目录作为共享文件系统


支持microsoft访问控制列表


1、        samba有两个守护进程:smbd、nmbd位于/usr/sbin


2、        启动和关闭samba服务:#service smb start、


                                  #service smb stop


3、        使之随系统一同启动:  #chkconfig –level 35 smb on


4、samba共享文件实例:


目标:共享本机上的/home/zhao,使用户zhao,可以通过网络读写,用户fang可以读不可以写。


实现步骤:


1、#vi /etc/samba/smb.conf   编辑[global],增加如下行:


               netbios name = kodadigital   设置计算机的共享名


               workgroup = koda                设置计算机的工作组


               valid users = zhao      设置可以访问这台计算机的用户


2、增加如下行:


                [zhao]                                共享文件夹的名字


                comment =  welcome    对该共享文件夹的注释


                path = "/home/zhao"       共享文件夹的路径


                admin users  = root    管理员用户,实际上并没有权限


                valid users  = root,zhao,fang 对该共享文件夹有访问权限的用户


                write list = root,zhao 对该共享文件夹有写权限的用户


3、将默认的[homes] 配置文件及其选项全部用#注释掉


4、#/etc/rc.d/init.d/smb restart


说明:通过网络访问的时候首先要通过global中设定的valid用户的身份验证,然后根据访问的文件夹的不同,


还要通过各共享文件夹定义的valid用户身份验证。



第二节 web服务及虚拟服务器(apache)


在linux中web服务主要依靠apache来实现。Apache是当今世界上应用最为广泛,最为可靠的web服务器。Linux的各种发行版都自带有发行形时最新版的apache。后续的部分将以一个实例来讲解如何配置apache服务器。


1、        如何安装软件大家应该都已经很熟了,就不讲了。


2、        #service httpd status  查看当前是否已运行web服务


3、        #service httpd start   启动web服务


4、        #使用浏览器在地址栏输http://127.0.0.1,应该可以  


看到apache的测试页面,如果看不到测试页面使用该命令:iptables –F 关掉防火墙


             5、  #配置apache服务器


步骤:1、安装完成后,/etc/rc.d/init.d/httpd start, 关闭防火墙,启动浏览器即可看到默认的页面,编辑/var/www/html/index.html,重新启动httpd服务,使生效。


2、实现用户的个人主页


#vi /etc/httpd/conf/httpd.conf  删除UserDir  disable, 去掉 UserDir public_html  之前的#号,/etc/rc.d/init.d/httpd restart,重新启动web服务,在浏览器地址栏输入192.168.0.4/~zhao/,来验证。目标:实现基本的web服务,用户web和基于名称、ip地址的虚拟主机服务


 


3、基于名字的虚拟主机:vi /etc/hosts,增加如下行:192.168.0.4   www.zhao.com   zhao


                        vi /etc/httpd/conf/httpd.conf     将最后的部分改为如下:


<VIrtualHost www.zhao.com>;


                       ServerAdmin webmaster@zhao.com


                       DocumentRoot  /var/www/zhao


                       ServerName     www.zhao.com


<Directory /var/www/zhao>;


</Directory>;


</VirtualHost>;


*实现基于名字的虚拟主机需要实现配置dns服务器


     /etc/rc.d/init.d/network restart


     /etc/rc.d/init.d/httpd restart


打开浏览器在地址栏输入www.zhao.com


4、基于ip地址的虚拟主机:


   ifconfig eth0:0 192.168.0.5 netmask 255.255.255.0


 


                vi /etc/httpd/conf/httpd.conf,增加以下部分:


<VirtualHost 192.168.0.5>;


     ServerAdmin webmaster@zhao.com


     DocumentRoot /var/www/hit


</VirtualHost>;


/etc/rc.d/init.d/httpd restart


打开浏览器在地址栏输入:192.168.0.5



第三节 实现squid代理服务器 


对于大多数企业而言代理服务器是必不可少的。在windows世界有各种软件来实现代理服务器的功能,如:sygate、wingate、isa等等,在linux领域中这个功能由squid来实现。Squid是一款功能强大的代理服务器软件,培植较为简洁,效率非常的高。本节以一个世纪的例子来讲解如何一步步的配置squid代理服务器。


1、#vi /etc/squid.conf  编辑squid配置文件,增加如下行:


http_port 8080    将代理端口设为8080,如不进行设置则默认的代理端口为:3128


cache_men 16  MB  设置代理服务器的高速缓存大小


cache_dir  ufs  /spool/squid 100 16  256        设置代理服务器的交换空间,/spool/squid表示高速缓存的位置,100表示空间为100M,16代表16个目录,256代表共有256个二级目录


cache_access_log  /var/log/squid/access.log 缓存访问日志


cache_log         /var/log/squid/cache.log  缓存日志


cache_store_log   /var/log/squid/store.log  缓存存储日志


acl InternetAllow src 10.10.10.0    建立新的访问控制列表


http_access allow InternetAllow   建立新的规则允许InternetAllow列表中的主机使用代理服务器


2、#wq!          保存退出


3、#squid –z    进行初始化


4、#service squid start 启动squid 代理服务


5、        squid设置完成,现在就可以使用了。



第四节 Ftp服务


   ftp是互联网上很普遍的服务,再redhat中自带的ftp软件是vsftp,该软件的特点是易于使用,安全性极好。以下一个实际的例子来讲解如何实现vsftp服务器的全过程。


a)        安装vsftp软件:把第二张光盘放到光驱,挂接后进入/mnt/cdrom/RedHat/RPMS目录,使用命令:rpm –ivh vsftd-1.2.0-4.i386.rpm


b)        #service vsftpd start             启动服务


c)        常用配置命令:cd、get、mget、put、mput



第五节 邮件服务器


邮件服务是互联网上的一项基本服务,绝大多数经常上网的网民都有自己的电子信箱,用于商业的电子信箱也日益普遍,多数公司都会使用电子邮件与客户进行通信、交流。很多的时候公司内部也会有内部的电子邮件服务器,在公司内部提供电子邮件服务。在linux/unix平台之上最常用电子邮件系统为:sendmail。该系统功能强大,运行稳定,广泛的运行于世界各地,是internet上最为流行的电子邮件系统。但是sendmail有一个缺点就是难于配置,培植文件非常难以读懂。本节的其余部分一个以实际的例子来对sendmail的配置文件进行修改,希望大家严格按照本文的步骤来进行操作,以确保能够顺利的启动邮件服务:


a)        安装sendmail和bind


b)        配置DNS服务器:


1、#vi /etc/named.conf,添加新的域:test.com


    zone "test.com" IN {


    type master;


    file "test.com.dns";


    allow-update { none; };


     };


2、touch /var/named/test.com.dns建立相应的域的配置文件:


   $TTL 1d 默认的生存周期


   @ 1d IN SOA ns.test.com. root.test.com. (


                1 起始序列号


                2d 刷新频率


                1h 重试频率


                1w 失效时间


                1h) 最短TTL


  @ 1d IN NS ns.test.com. 设置域名服务器地址


     1d    IN MX 10 mail.test.com. 设置邮件服务器地址


     www  IN A 192.168.0.10 设置域名和ip地址的对应关系


     ns     IN A 192.168.0.10


     mail   IN A 192.168.0.10


3、保存退出,service named restart 将dns指向自己


4、测试:host -l test.com


c)        修改sendmail的配置文件:


1、#vi /etc/mail/,修改如下行:


o DaemonPortOptions=Port=smtp,Addr=127.0.0.1, Name=MTA


将其中的127.0.0.1更改为sendmail服务器的地址192.168.0.1,然后保存。


2、#vi /etc/mail/access,增加如下行:


test.com   RELAY


192.168.0  RELAY


执行命令,使之生效:


makemap –r hash /etc/mail/access.db < /etc/mail/access


         3、# vi /etc/mail/local-host-names,添加允许中继的主机


mail.test.com。保存退出


d)        重新启动sendmail服务:#service sendmail restart,现在你就可以使用这个sendmail服务起来收发邮件啦


 



第六节 DNS服务器


随着网络的发展,在公司内部建立自己的邮件服务器显得越来越重要,越来越多的服务要依赖于dns服务。Linux自带的邮件服务器是:bind 9。以下部分以新增tes.com域名为例讲解配置dns的过程。


1、        安装


2、        #vi /etc/named.conf     #修改改配置文件,增加test.com的配置信息


zone  “tes.com” IN {  #新域的名字


type master;    #该服务器的类型


file “tes.com.dns”;   #该域的配置文件


allow-update {none;};   #是否允许动态更新


};


3、#touch /var/named/test.com.dns  #建立test.com域的配置文件


4、# vi /var/named/test.com.dns    #修改配置文件,增加以下内容


     $TTL  1d


     @     1d  IN   SOA  ns.tes.com. root.test.com (


                           1


                            1d


                            2d


                            3d


                            1h )


       @  1d  IN NS  ns.test.com.      增加域名服务器纪录


          1d   IN MX 10 mail.test.com. 增加邮件服务器纪录


        www  1d IN A 192.168.0.1       增加主机纪录


        ns   1d IN A 192.168.0.1       增机主机纪录


        mail 1d  IN A 192.168.0.1      增机主机纪录


5、保存退出


6、以上部分为正向的域名解析部分,下边是反向解析的配置办法


7、# vi /etc/named.conf  #增加如下行


     zone “0.168.192.in-addr.arpa” {


         type master;


         file “0.168.192.in-addr.arpa.dns”;


         allow-update{none;};


     };


8、#touch /var/named/0.168.192.in-addr.arpa.dns # 创建配置文件


9、# vi /var/named/0.168.192.in-addr.arpa.dns#修改配置文件,增加如下内容


    $TTl 1d  0.168.192.in-addr.arpa IN SOA ns.test.com.(


               1107274122


                        10800


                        3600


                        604800


                        38400)


   0.168.192.in-addr.arpa.        IN        NS        ns.test.com.


   1.0.168.192.in-addr.arpa. IN        PTR          ns.test.com. 增加机指针纪录


1.0.168.192.in-addr.arpa.        IN        PTR          mail.test.com. 增加机指针纪录


10、# service named restart    #启动域名服务器


    # host –l test.com        #测试域名服务器正向解析


    # host  -l 0.168.192.in-addr.arpa #测试域名服务器的逆向解析

没有评论:

发表评论