⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 0560daemons.htm

📁 鸟哥的linux私房菜
💻 HTM
📖 第 1 页 / 共 5 页
字号:
		那么你如何启动这个 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>&lt;==同一服务的同时连线数最多可达 60 个</span>
  log_type         = SYSLOG authpriv <span class=term_note>&lt;==登录后,会被纪录到登录档的资讯</span>
  log_on_success   = HOST PID <span class=term_note>&lt;==若成功的登入时,记录的资讯有哪些?</span>
  log_on_failure   = HOST     <span class=term_note>&lt;==若登入失败,则记录的资讯又是如何?</span>
  cps              = 25 30    <span class=term_note>&lt;==同一秒钟内最大连线数量为 25 个,若超过 25 个,
                                 则该服务会暂时停止 30 秒!</span>
}

includedir /etc/xinetd.d <span class=term_note>&lt;==更多的设定值在 /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  &lt;service_name>
{
       &lt;attribute>   &lt;assign_op>   &lt;value>   &lt;value> ...
       .............
}
</pre></td></tr></table>

		第一行一定都有个 service ,至于那个 &lt;service_name> 里面的内容,
		则与 /etc/services 有关,因为他可以对照著 /etc/services 内的名称与 port number 
		来决定所要启用的 port 是那个啊!然后相关的参数就在两个大刮号中间。
		attribute 是一些 xinetd 的管理参数, assign_op 则是参数的设定方法。
		assign_op 的主要设定形式为∶

		<ul><span class=text_import2><font face="细明体">
		&nbsp;= ∶ 表示后面的设定参数就是这样啦!<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 + -