📄 0560daemons.htm
字号:
那么你如何启动这个 daemon 呢?可以查询一下 man 8 syslogd 来看看到底他需要如何被启动。
想必看的结果是『很烦ㄟ!』干嘛要这样启动啊!真是麻烦~
此时,启动 syslogd 这个 daemon 的 shell script (/etc/init.d/syslog) 就帮上忙了!
你只要『 /etc/init.d/syslog restart 』就能够重新启动 syslogd 呢!
真是很方便啊!而该 shell script 就会主动的去读取相关的设定档,好让我们的设定生效啊!^_^<br><br>
OK!那么这些 daemons 的 shell scripts 放在哪里啊?他们放置的地方依据 stand alone
与 super daemon 的差异而有所不同,基本上,是放在这些地方∶
<ul>
<li><span class=text_import1>stand alone</span>∶<br>
这个放置在 <span class=text_import2>/etc/init.d/
</span>这个目录里面,几乎所有的
RPM 安装的套件之启动 scripts 都在这里啦!不过,实际上,我们的 FC4 是放置到 /etc/rc.d/init.d/* ,
但你依旧可以记忆成 /etc/init.d ,因为所有的 unix like 机器都有这个目录!</li><BR>
<li><span class=text_import1>super daemon</span>∶<br>
这个工作的那一支服务其实就是 <b>xinet</b>
或者是 <b>inet</b> 啦!请注意, <b>xinet</b> 也是一个 daemon 呢!他是 stand
alone 启动的,也就是他会一直在监听大家的需求,所以 xinet 的启动 scripts
写在 <span class=text_import2>/etc/init.d/xinetd</span> 这个 scripts
里面棉!但是挂在这个 daemon 里头的服务之设定项目呢?嗯!就是写在<span class=text_import2>
/etc/xinetd.conf 与 /etc/xinetd.d/* </span>这个目录里面的任何档案!</li></ul>
更详细的来说明每个目录底下的设定的话,总的来说,是这样的∶<br><br>
<li><a NAME="init.d"></a><span class=text_import1>/etc/init.d/*</span></li>
<div class=block2>
OK!先来了解一下 stand alone 的 daemon 是怎么启动的呢?!很简单,假如我们要启动
<a href="0570syslog.php">syslog</a>
这支记录登录档的服务,那么要启动他的话,就直接下达∶<br>
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>/etc/init.d/syslog start</span>
[root@linux ~]# <span class=term_command>servcie syslog start</span>
</pre></td></tr></table>
那个 service 是一支程式,基本上,也只是用来启动 /etc/init.d/ 底下的 shell script
而已~至于指令或者是档案后面接的参数,亦即是档名之后加上 start
即可,或者是使用 Red Hat 系统有的这个 service script
来进行启动的功能!如果你还记得我们前几节提到过的
<a href="0340bashshell-scripts.php">shell scripts</a> 的话,那么或许还记得
<a href="0340bashshell-scripts.php#case">case ..... esac</a>
这个有选择性的项目的语法吧!?没错!这几支服务就是以 bash
scripts 里头的 case 语法写成的!因此,只要加上后面的参数,如此一来, scripts
就会自动的去找寻执行档来执行棉!如果有兴趣的话,
可以在你的系统里面的该目录下开一个档案来观看一下,就知道如何写棉!<br><br>
</div>
<li><a NAME="xinetd.conf"></a><span class=text_import1>/etc/xinetd.conf</span></li>
<div class=block2>
这个档案就是设定 xinet 服务的参数档案啦!<br><br>
</div>
<li><a NAME="xinetd.d"></a><span class=text_import1>/etc/xinetd.d/*</span></li>
<div class=block2>
这个目录里面的所有档案就是个别挂上 xinet 的所有服务啦!例如赫赫有名的
wu-ftpd 及 telnet 与 pop3 等等!
</div>
</div>
<hr><a NAME="daemon_start"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class=text_h2>daemon 的启动方式∶ service</span>
<div class=block2>
知道了一些有关 daemon 的相关知识后,再来,那么我们如何启动一个 daemon 呢?
其实,我们知道所谓的 daemon 就是一支可以在系统背景下面运作的程式 (program) 啊,
所以,要启动该 daemon ,就是找到他的执行档,执行他就是了。
不过,因为该 daemon 的执行档所需要加的参数太多了!举例来说,你可以使用『man syslogd』及
『man sshd』来查阅一下该 daemon 要启动时的设定参数!<br><br>
为了克服这样的困扰,所以各主要 Linux distributions 都会针对该服务设计一个比较亲和的
shell script 来进行启动的程序啊!那就是 /etc/init.d/ 底下的档案,以及
/etc/xinetd.d/ 底下的设定资料。因此,启动服务的方法就变得很简单了。
只要设定好该服务的设定档,然后下达∶<br>
<table class="term"><tr><td class="term"><pre>
<span class=term_hd>1. 启动 stand alone 服务的方式∶以 syslog 为例∶</span>
[root@linux ~]# <span class=term_command>/etc/init.d/syslog start</span>
<span class=term_hd>2. 启动 super daemon 服务的方式∶以 telnet 为例∶</span>
[root@linux ~]# <span class=term_command>vi /etc/xinetd.d/telnet (设定方式参考下节)</span>
[root@linux ~]# <span class=term_command>/etc/init.d/xinetd restart</span>
</pre></td></tr></table>
另外,除了这样的启动方式之外,我们还可以透过 Fedora ( Red Hat 系统 ) 所提供的 service
这个程式来进行 daemon 的启动喔!其实 service 仅是一支 script 啦,
他可以解析后面带有的参数,然后去到 /etc/init.d/ 去启动相对应的服务名称的 script 而已!
有兴趣的话,可以自行去解析 /sbin/service 这支 shell script 啊!
底下我们大略说明一下他的用法!<br>
<a name=service></a><table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>service [service name] (start|stop|restart|...)</span>
<span class=term_say>参数∶
service name∶亦即是需要启动的服务名称,需与 /etc/init.d/ 对应;
start|... ∶亦即是该服务要进行的工作。
范例∶</span>
<span class=term_hd>范例一∶重新启动 crond 这支 daemon ∶</span>
[root@linux ~]# <span class=term_command>service crond restart</span>
[root@linux ~]# <span class=term_command>/etc/init.d/crond restart</span>
</pre></td></tr></table>
在上面的范例当中,其实启动方式以 service 这个程式,或者直接去到 /etc/init.d/ 底下启动,
都一样啦!自行去解析 /sbin/service 就知道为啥了! ^_^<br>
<div style="padding: 10 0 10 0 ;" align="right"><table width="90%"><tr><td><b>Tips:</b><br /><span style="font-style: italic; color : darkgreen"> 事实上,在 Linux 系统中,要『开或关某个 port 』,就是需要『
启动或关闭某个服务』啦!因此,你可以找出某个 port 对应的服务,程式对应的服务,
进而启动或关闭他,那么那个经由该服务而启动的 port ,自然就会关掉了!
</span></td><td><img src="../images/vbird_face.gif" /></td></tr></table></div> </div>
</div>
<hr><a name=superd></a><img src="images/penguin-m.gif" alt="大标题的图示" height="34" width="25" align="middle" /><span class=text_h1>解析 super daemon 的设定档</span>
<div class=block1>
前面提到,Super daemon 就是一支总管许多服务的 daemon ,这支 daemon 在 FC4 上面即是 xinet 棉~
通常我们也称呼为 xinetd 啦~这支 daemon 来管理许多的服务是有好处的,
最大的优势就是『安全性较高!』。怎么说呢?因为 super daemon 可以透过额外的资料分析,
来管理谁可以、谁不能使用某个服务,因此,多了一道类似防火墙的手续,自然就能够比较安全一些啦。
而且他还可以记录该服务的使用状态,也可以记录错误登入的资讯,用在管理一些比较危险的服务上面,
确实有他的必要性啦!<br><br>
底下我们就来谈一谈,这个 super daemon 到底是如何分析的,
当然,就得要先谈一谈,这个 xinetd 的主要预设参数档∶ /etc/xinetd.conf 棉~<br><br>
<hr><a NAME="xinetd"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class=text_h2>解析 xinetd.conf</span>
<div class=block2>
先来看一看预设的 /etc/xinetd.conf 这个档案的内容是什么吧!<br>
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>vi /etc/xinetd.conf</span>
#
# Simple configuration file for xinetd
#
# Some defaults, and include /etc/xinetd.d/
defaults
{
instances = 60 <span class=term_note><==同一服务的同时连线数最多可达 60 个</span>
log_type = SYSLOG authpriv <span class=term_note><==登录后,会被纪录到登录档的资讯</span>
log_on_success = HOST PID <span class=term_note><==若成功的登入时,记录的资讯有哪些?</span>
log_on_failure = HOST <span class=term_note><==若登入失败,则记录的资讯又是如何?</span>
cps = 25 30 <span class=term_note><==同一秒钟内最大连线数量为 25 个,若超过 25 个,
则该服务会暂时停止 30 秒!</span>
}
includedir /etc/xinetd.d <span class=term_note><==更多的设定值在 /etc/xinetd.d 那个目录内</span>
</pre></td></tr></table>
基本上,这个预设参数档的意义是∶『<span class=text_import2>当某个使用 super daemon
管理的服务启动时,除非该服务已经设定好管理的项目,否则将以上述 xinetd.conf
内的预设参数带入。</span>』的意思,也就是说,这仅是预设值,
但我们可以自行指定新的设定值来取代 xinetd.conf 内的预设值啦!
也就是说,这个档案设定成,在预设的状态下『∶<span class=text_import2>一个服务最多可达
60 个连线,且同一秒内连接上的连线不可超过 25 个。而若登入的成功与否时,
会分别记录不同的资讯到登录档当中。</span>』这样说,可以比较清楚了吧? ^_^
至于更多的参数说明,我们会在底下再强调的!<br><br>
既然这只是个预设参数档,那么自然有更多的服务参数档案棉~没错~而所有的服务参数档都在
/etc/xinetd.d 里面,这是因为上表当中的最后一行啊!这样了了吧! ^_^。
那么每个参数档案的内容是怎样呢?一般来说,他是这样的∶<br>
<table class="term"><tr><td class="term"><pre>
service <service_name>
{
<attribute> <assign_op> <value> <value> ...
.............
}
</pre></td></tr></table>
第一行一定都有个 service ,至于那个 <service_name> 里面的内容,
则与 /etc/services 有关,因为他可以对照著 /etc/services 内的名称与 port number
来决定所要启用的 port 是那个啊!然后相关的参数就在两个大刮号中间。
attribute 是一些 xinetd 的管理参数, assign_op 则是参数的设定方法。
assign_op 的主要设定形式为∶
<ul><span class=text_import2><font face="细明体">
= ∶ 表示后面的设定参数就是这样啦!<br>
+= ∶ 表示后面的设定为『<b>在原来的设定里头加入新的参数</b>』<br>
-= ∶ 表示后面的设定为『<b>在原来的参数舍弃这里输入的参数</b>!』
</ul></span></font>
用途不太相同,敬请留意呦!好了!底下再来说一说那些 attribute 与 value !<br><br>
<table width=95% border=1 cellspacing=0 cellpadding=3 bgcolor=lightyellow>
<tr bgcolor=lightblue align=center>
<td width=120>attribute<br>(功能)</td><td width=120>assing_op<br>(允许的动作)</td>
<td>说明与范例</td></tr>
<tr bgcolor=lightblue><td colspan=3><span class=text_import1>一般设定项目∶</span></td></tr>
<tr>
<td align=center><font face="细明体">disable</font></td>
<td align=center><font face="细明体">yes<br>no</font></td>
<td>允许该 server 可以执行或者是不能执行!当设定为 yes 表示该服务不能执行!
这个设定是一定要的啦。如果我想要启动某个服务,那么这里就要设定成为∶<center>
disable = no</center></td></tr>
<tr>
<td align=center><font face="细明体">socket_type</font></td>
<td align=center><font face="细明体">stream<br>dgram<br>raw</font></td>
<td>stream 为连线机制较为可靠的 TCP 封包,若为 UDP 封包则使用 dgram 机制。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -