五、禁止程序运行
要让程序在系统启动时就开始执行,两种常用的方法是通过/etc/rc以及通过System V类型的启动脚本。通常,如果你的系统是 BSD系统,它将从/etc/rc启动;而大多数的Linux类系统使用/etc/init.d/(或/etc/rc.d/init.d,或其他类似名字的目录)下面的脚本。
例如,在某些Linux系统上,cron通过/etc/init.d/cron脚本启动,Apache通过 /etc/init.d/httpd启动,syslogd通过/etc/init.d/syslogd启动,而sshd则通过 /etc/init.d/sshd脚本启动。
一般地,这些System V脚本通过来自特定rc.d目录的符号连接运行。为了配置从哪个rc.d目录运行脚本,Linux系统提供了许多不同的工具,同时你也可以手工进行配置。应该存在一个包含所有实际启动脚本的目录,例如它可能是/etc/init.d/或者 /etc/rc.d/rc.d。同时,对应每一个运行级别(runlevel)又有一个另外的目录,例如它们可能是/etc/rc2.d或者 /etc/rc.d/rc2.d,这些目录中的文件通常是指向实际脚本文件的符号连接。标准的运行级别通常是2、3、4或5。在Linux平台上,你可以在/etc/inittab文件中搜索“initdefault”找出它的默认运行级别。
因此,用手工方法禁用某个启动脚本时,你只需删除相应的符号连接即可(忽略符号连接名字前面的“S”或“K”以及数字)。进行这方面管理的工具包括:update-rc.d,chkconfig,以及一些GUI应用。例如,执行“/usr/sbin/update-rc.d - f lpd remove”就可以删除lpd的启动符号连接。如果你的系统也有这些命令,要了解更多信息请参见它们的文档和手册。
单一的/etc/rc脚本就要简单得多,此时系统不是用多个脚本来启动各种不同的程序,而是只通过一个脚本启动。有时/etc/rc会调用另外一个脚本/etc/rc.local,后者会启动其他一些任务(有些使用/etc/rc的系统还可能用到System V风格的/etc/rc.d/ 脚本)。要在/etc/rc脚本内禁止某个daemon启动,只需注释掉启动该daemon的代码即可。
有些BSD系统会提供一个配置文件,如/etc/rc.conf,使用这个配置文件你可以避免编辑/etc/rc文件。例如,如果这个配置文件指定了“inetd=YES”,而你想禁止inetd在系统启动时自动启动,只需把这行内容改为“inetd=NO”即可。
(续)