brimmer·Gerhard Mourani
启动和停止daemon服务
init是内核在引导的时候运行的程序。它负责管理那些在引导的时候要启动的进程。这些进程包括:Apache daemon、网络daemon和其它你想在引导时运行的进程。
那么init是怎么启动和停止服务呢?每一个启动脚本都有可以接受一个参数,参数的值为:“start”或“stop”。这些脚本在“/etc/rc.d/init.d/”目录下。你也可以手工运行这些脚本,用类似下面的命令:
例如:
* 在Linux上手工启动httpd Web服务器。
[root@deep]# /etc/rc.d/init.d/httpd start
* 停止httpd Web服务器
root@deep]# /etc/rc.d/init.d/httpd stop
可以在“/etc/rc.d/init.d/”目录下查看一下有什么服务,然后,用参数“start”或“stop”,启动或停止服务。
安装完服务器之后必须卸载的软件
RedHat Linux在默认情况下会安装一些预置的软件,而且在安装的过程中,不能够选择不安装。因此,必须在安装完成之后卸载下面这些软件:
pump
apmd
isapnptools
redhat-logos
mt-st
kernel-pcmcia-cs
setserial
redhat-release
eject
linuxconf
kudzu
gd
Bc
getty_ps
raidtools
pciutils
mailcap
setconsole
gnupg
用下面的rpm命令卸载这些软件:
[root@deep]# rpm -e softwarenames
softwarename在这里指的是软件包的名字,如:foo。
apmd、kudzu和sendmail是daemon进程,在卸载它们之前最好先停止这些进程。
停止这些进程用如下的命令:
[root@deep]# /etc/rc.d/init.d/apmd stop
[root@deep]# /etc/rc.d/init.d/sendmail stop
[root@deep]# /etc/rc.d/init.d/kudzu stop
现在你可以象卸载其它程序那样卸载它们,步骤如下:
第一步
卸载这些软件包。
[root@deep]# rpm -e pump mt-st eject bc mailcap apmd kernel-pcmcia-cs linuxconf getty_ps setconsole isapnptools setserial kudzu raidtools gnupg redhat-logos redhat-release gd pciutils
第二步
手工删除linux.conf-installed文件。
[root@deep]# rm -f /etc/conf.linuxconf-installed
注意:这是和linuxconf程序相关的的配置文件,必须手工删除。
如果你有IDE硬盘,hdparm程序是必须要的,所以一定要保留下来。否则,你可以把它从硬盘中卸载掉。
kdbconfig、mouseconfig和timeconfig是用来设置键盘类型、鼠标类型和时区的。在这些都设置好之后,就很少有机会再用到它们了。所以,可以把它们卸载掉。等需要改变键盘、鼠标和时区的时候,可以再从CD-ROM用rpm命令安装。
sendmail、procmail和mailx在通常情况下是必须要的。因为服务器上运行的各种各样的服务会用这些程序发消息给root用户,以建立系统日志(syslog)。
sendmail是一个强大的邮件传送代理(Mail Transport Agent,简称MTA),可以把邮件从一台计算机发送到另一台计算机。它实际上所起的作用就是通过网络或Internet把email传送到email的目的地。sendmail有很多不同的配置方式:可以做为一个把邮件转给邮件集中服务器(Mail Hub Server)的内部邮件服务器,也可以做为单独的mail服务器,或者做为网络上所有sendmail服务器的中央邮件集中服务器(Central Mail Hub Server)。因此,可以根据需要配置不同的sendmail服务器。所以,你要先把sendmail卸载掉,参考本书sendmail的配置和安装的相关章节,根据需要建立自己的sendmail服务器。
sendmail并不是自己处理邮件的分发,它是通过运行其它程序来完成这项工作。procmail是RedHat Linux用于本地邮件分发的分发代理(delivery agent)。因此,procmail只要装在中央邮件集中服务器(Central Mail Hub Server)上就行了。所以,没有必要在内部所有运行sendmail服务的计算机上都安装procmail程序。因为,这些内部的计算机会通过“/bin/mail”或sendmail把邮件转发到中央邮件集中服务器上。
Pump DHCP(Dynamic Host Configuration Protocol)和BOOTP(Boot Protocol)协议允许在IP网络上的设备,从服务器上获取它们的网络配置信息(IP地址、子网掩码、广播地址,等等)。【没有必要】
mt-st软件包包括mt和st磁带机驱动管理程序。mt(用于磁性磁带驱动器(magnetic tape drivers))和st(用于SCSI磁带驱动器)可以控制磁带的回卷、弹出、跳过文件或块以及其它。【没有必要】
eject程序允许用户用软件弹出可移动的介质,如:CD-ROM、软盘以及Jaz或Zip盘。【没有必要】
bc软件包包括:bc和dc两个应用程序,bc是一种非常精确的用于处理算术运算的语言。dc是基于堆栈的交互式计算器,是用在文本模式下的。【没有必要】
mailcap文件是用于metamail程序的。metamail通过读mailcap文件来确定怎么显示非文本的和多媒体的邮件信息。【没有必要】
apmd是高级能源管理(Advanced Power Management)daemon和实用工具。它可以监控笔记本电脑的电池使用情况。当电池电压过低的时候,它会给出警告。【没有必要】
所有支持PCMCIA的笔记本电脑都要用到kernel-pcmcia-cs软件包。PCMCIA卡是很小的卡片,可以是SCSI卡或是modem。【没有必要】
linuxconf是非常好的系统配置工具。linuxconf提供四种界面供你选择:命令行、文本菜单、X Window的图形界面和基于Web的界面。【没有必要,有bug的程序】
getty_ps软件包包括getty和uugetty两个程序,这两个程序是RedHat Linux系统中实现进程登录的基本程序。getty和uugetty是用于接受控制台或终端的登录请求。【没有必要】
setconsole是基本的系统工具,用在为一个新的控制台创建/etc/inittab、/dev/systty和/dev/console文件。控制台可以是本地的终端(直接通过显示卡连接到系统上)或是通过串口连接的控制台。【没有必要】
ispnptools软件包包括用于配置ISA接口的即插即用(Plug-and-Play)卡,符合PnP ISA Specification 1.0a标准。【没有必要】
kudzu是系统引导的时候运行的硬件探测程序,可以检测到哪些硬件从系统中删除或添加到系统中。【没有必要】
raidtools软件包包括在Linux系统中建立和维护软件RAID(磁盘阵列,用于容错和提高性能,需要两个以上的磁盘)。【取决于你用不用RAID】
GnuPG是GNU的数据通讯和存储的安全工具。它可以用来加密数据和创建数字签名。包括高级的密匙管理工具,而且遵循RFC2440中描述的OpenPGP的国际标准。【我们会在后面的章节介绍如何自己编译】
redhat-logos包括RedHat “Shawdow Man”和RPM的标志图片。【没有必要】
redhat-release是RedHat Linux的发行文件。【没有必要】
gd是处理gif文件的图形函数库。gd可以用于显示图像(线条、弧、文本、多种颜色、从其它图像中剪切和粘贴、填充),并把结果保存为gif文件。【没有必要】
pciutils包括各种各样的工具,用于检测和设置连接到PCI总线上的设备。【我们用其它的方法】
kbdconfig是文本模式的程序,提供了设置键盘映像的一个简单的界面。【没有必要】
mousconfig是基于文本模式的鼠标设置程序。mouseconfig在RedHat Linux系统中,创建配置和使用鼠标所需要的文件和链接。【没有必要】
timeconfig包括:timeconfig和setclock。timeconfig提供了一个简单的文本模式的工具,用来配置/etc/sysconfig/clock和/etc/localtime中的时间参数。【没有必要】
procmail是RedHat Linux用于处理本地邮件发送的程序。除了发送邮件,procmail还可以用于自动过滤、排序和其它处理mail的工作。而且,procmail是SmartList邮件列表程序的基础。【只用在邮件集中服务器上】
安装完服务器之后必须安装的软件
为了可以在你的服务器上编译软件,你还必须安装下面的RPM软件包。这部分安装是非常重要的,要求你安装所有如下所述的软件包。所有的这些软件都在RedHat 6.1第一张光盘的/RedHat/RPMS目录下,而且都是使你的Linux系统能够编译程序所必须要的。
* 第一步
首先,先mount 上CD-ROM驱动器,转到RPMS子目录下。
mount CD-ROM驱动器和转到RPMS目录用下面的命令:
[root@deep]# mount /dev/cdrom /mnt/cdrom/
[root@deep]# cd /mnt/cdrom/RedHat/RPMS/
下面是我们需要安装的软件包,只有安装了这些软件包才在Linux系统上编译程序。记住这不过是能够编译.tar.gz软件最少必须的软件包。有一些软件的编译可能还需要用到别的特殊的软件包。这些特殊的软件包在RedHat的光盘中都能找到。所以,编译程序的时候,如果出错了,可以先看看需要编译的软件包的README文件。
autoconf-2.13-5.noarch.rpm
m4-1.4-12.i386.rpm
automake-1.4-5.noarch.rpm
dev86-0.14.9-1.i386.rpm
bison-1.28-1.i386.rpm
byacc-1.9-11.i386.rpm
cdecl-2.5-9.i386.rpm
cpp-1.1.2-24.i386.rpm
cproto-4.6-2.i386.rpm
ctags-3.2-1.i386.rpm
egcs-1.1.2-24.i386.rpm
ElectricFence-2.1-1.i386.rpm
flex-2.5.4a-7.i386.rpm
gdb-4.18-4.i386.rpm
kernel-headers-2.2.12-20.i386.rpm
glibc-devel-2.1.2-11.i386.rpm
make-3.77-6.i386.rpm
patch-2.5-9.i386.rpm
注意:最好把这些软件一起全装了,省得在安装这些RPM包的时候总出现一些相关出错的信息。
* 第二步
安装所有这些软件只要用一个命令就够了。这个命令是:
[root@deep]# rpm -Uvh autoconf-2.13-5.noarch.rpm m4-1.4-12.i386.rpm automake-1.4-5.noarch.rpm dev86-0.14.9-1.i386.rpm bison-1.28-1.i386.rpm byacc-1.9-11.i386.rpm cdecl-2.5-9.i386.rpm cpp-1.1.2-24.i386.rpm cproto-4.6-2.i386.rpm ctags-3.2-1.i386.rpm egcs-1.1.2-24.i386.rpm ElectricFence-2.1-1.i386.rpm flex-2.5.4a-7.i386.rpm gdb-4.18-4.i386.rpm kernel-headers-2.2.12-20.i386.rpm glibc-devel-2.1.2-11.i386.rpm make-3.77-6.i386.rpm patch-2.5-9.i386.rpm
* 第三步
为了让所有的改变都生效,必须退出再重新登录。退出的命令是:
[root@deep]# exit
安装和编译完在服务器上需要的所有软件之后,最好把上面几步安装的软件包都卸掉,除非有什么特殊的需要。这样做,其中一个原因是:如果黑客成功地入侵了你的服务器,他也不可能用上面这些软件来编译软件或改变二进制程序。同时,把它们卸载掉也释放了很多磁盘空间,这样当进行系统的安全性和一致性检查的时候,可以加快扫描所有文件的时间(文件少了)。
当然,有很多建立服务器的方法和策略,我在这本书中介绍的不过是我自己的观点,我的观点如下:
第一:每台服务器最好只安排一个特定的任务。你不应该把所有的服务都放在一台服务器上,否则,这台服务器的速度会受到影响(系统的资源要同时分给很多个进程),而且会降低系统的安全(在同一台服务器上运行太多的服务,黑客就有更多的机会找到系统的安全漏洞)。
第二:不同的服务器完成不同的任务。这样有利于简化管理(你可以清楚地知道每台服务器具体的用途、运行哪些服务、客户计算机(client)可以访问哪些端口,你也可以知道在日志文件中会看到什么,等等),而且还可以更好更灵活地控制每台服务器(专门用于邮件、Web、数据库、开发、备份,等等)。
举一个例子,一台专门用作开发和测试的服务器,就没有必要象上面介绍的那样,每一次装软件之前都要先装编译器,装完软件之后又把编译器卸掉,完全可以把编译器保留着。如果想知道更多的编译器的信息,请参考第八章《编译器的功用》。
服务器上已经安装的程序
因为我们选择定制安装我们的Linux系统, 下面是服务器上已安装的程序列表。这个列表必须和/tmp目录下的install.log文件一致,否则你就是没装全。不要忘了装全上一节《安装完服务器之后必须安装的软件》中的那些软件包,不然你编译一些程序的时候就会遇到问题。
Installing setup.
Installing filesystem.
Installing basesystem.
Installing ldconfig.
Installing glibc.
Installing shadow-utils.
Installing mktemp.
Installing termcap.
Installing libtermcap.
Installing bash.
Installing MAKEDEV.
Installing SysVinit.
Installing XFree86-SVGA.
Installing chkconfig.
Installing apmd.
Installing arpwatch.
Installing ncurses.
Installing info.
Installing fileutils.
Installing grep.
Installing ash.
Installing at.