📄 00000004.htm
字号:
可是,要知道所谓的「守候」,在电脑世界是某个程式在记忆体中跑,要是 <BR> 如此的话,那麽小小的记忆中将会塞满一堆没事作,单纯作等待的怪物,这 <BR> 很明显的将造成系统负担。 <BR> 所以,UNIX有个相当不错的作法,就是记忆体中只有一个专门作等待的 <BR> Daemon,叫inetd 。这个Daemon所等待的port不一定,是依inetd.conf中的 <BR> 设定而定。如果inetd.conf有设定要接受telnet,那麽inetd 会在telnet相 <BR> 关的port(即port 23) 作等待。要是有人把资料送给该port,那inetd 就会 <BR> 执行(应该叫fork)真正负责作相关事的Daemon(如这里是telnetd--> <BR> telnet Daemon )。而真正负责作事的Daemon是甚麽?在那里?执行时有甚 <BR> 麽参数等等,都会/得在inetd.conf中设定好。 <BR> 假设inetd.conf没有设finger,那麽如果有人从finger相关的port送资料来 <BR> ,那麽可想而知,由於我们的inetd 不在该port作等待,所以送来的资料就 <BR> 没被处理,因此别人就不能对我们作finger(这就是所谓的「关」掉 <BR> finger)。 <BR> <BR> inetd.conf的格式大概如下(以ftp为例) <BR> ftp stream tcp nowait root /usr/etc/in.ftpd in.ftpd <BR> ^^1. ^^^^^^^^^^^^^^^^^^^^2. ^^^3. ^^^^^^^^^^^^^^^4. ^^^^^5. <BR> <BR> 1.服务名称,这得在/etc/services有定义的服务名称,并不是随意的阿猫阿 <BR> 狗喔!:) <BR> 2.这里笔者偷懒略过,请照旧的设定而设。有兴趣了解者,请用"man"。 <BR> 3.表示这个Daemon跑时是以那一个user来跑。如果是finger,最好assign 个 <BR> 鸟不生蛋的id给它,如nobody。 <BR> 4.这个服务的负责daemon的所在目录与程式。 <BR> 5.执行这个daemon时,所配合使用的参数。如果没有的话,就如上直接再填上 <BR> daemon档名。如有,则在档名後直接把参数写上,如"in.ftpd -l" <BR> <BR> 如果使用tcp wrapper 的话,则要在"4."与"5."二处作改变。 <BR> ftp stream tcp nowait root /some/where/tcpd /usr/etc/in.ftpd <BR> ^^^^^^^^^^^^^^^^4. ^^^^^^^^^^^^^5. <BR> "4."改成tcpd所在的位置。 <BR> "5."改成daemon的位置与参数,即前面的"4."与"5."的组合。 <BR> 下面再举telnet为例,假设tcp wrapper 是装在/daemon/tcpd: <BR> 原本: <BR> telnet stream tcp nowait root /usr/etc/in.telnetd in.telnetd <BR> 修改後: <BR> telnet stream tcp nowait root /daemon/tcpd /usr/etc/in.telnetd <BR> <BR> <BR> □要注意的是:各栏位之间请用TAB 分隔。 <BR> 而且,在inetd.conf修改之後,得要kill -HUP <PID-OF-inetd> <BR> <BR>步骤四:控制档的设定 <BR> tcp wrapper 的控制档有二:/etc/hosts.allow与/etc/hosts.deny。前者是 <BR> 处理允许连接的主机、後者当然是拒绝的主机了。不过,由於我们是采用较 <BR> 有弹性的extensible language 设法,所以只要用一个档就可以了。笔者只 <BR> 打算介绍在/etc/hosts.allow中作设定的设法。 <BR> 档案格式是: <BR> daemon_list: client_list :option: option: option: ... <BR> ^^^^^^^^^1. ^^^^^^^^^2. ^^^^^^^^^^^^^^^^^^^^^^^^^^^3. <BR> 以"#" 作为附注,option间是以":" 作区隔 <BR> 1.daemon list 是服务的Daemon(注意:不是服务),例如:in.telnetd <BR> ftpd等等。就是在inetd.conf中,用到tcpd的某个服务其运作时的Daemon。 <BR> 这里可以把所有要作相同设定的daemon列举出来,用空白字元或"," 号作 <BR> daemon间的区隔。例如: <BR> telnetd in.ftpd in.fingerd: ....something(後面再谈这里) <BR> telnetd, in.ftpd, in.fingerd: ....something <BR> 最後的":" 是表示这一行的daemon写完了,後面是client list 了。 <BR> 不过,如果是表示全部,那这麽样子一个一个写恐怕会很累,我们可以用 <BR> 两个wildcard:ALL 与EXCEPT。 <BR> a.ALL ,就是全部嘛! <BR> b.EXCEPT,格式是:list_1 EXCEPT list_2。 <BR> 当我们用ALL 时,不见得都很完美的适合每个daemon(或client),如 <BR> 果有些例外不要的东东,那用EXCEPT是很方便的,例如: <BR> ALL EXCEPT telnetd: ....something <BR> ALL EXCEPT telnetd ftpd: ....something <BR> EXCEPT会把其後的全都当成例外处理的东东,所以有甚麽要用列举的, <BR> 那我们聪明点,写在EXCEPT之前就可。 <BR> 而且,EXCEPT可以包含EXCEPT(请参考hosts_access.5) <BR> <BR> <BR> 2.client list 是设定将受影响的机器。这可以是机器名、主机IP、patterns <BR> 或wildcard(如上述两个)。由於patterns含盖了前两者,所以下面只 <BR> 介绍patterns与wildcard。 <BR> <BR> A. patterns <BR> 共有四种,笔者只打算其中两种。有兴趣者请自行参考hosts_access.5 <BR> a.如果一串host name 由"." 开始(如:.nccu.edu.tw),那麽本软 <BR> 体只比较"." 之後的字元,只要"." 之後的字元相同,那就算是符 <BR> 合的。所以:如果.nccu.edu.tw的设定,someway.nccu.edu.tw 这 <BR> 机器是可以通过的,不过,someway.nccu.edu这机器(没.tw )当 <BR> 然没办法通过。 <BR> 如果写上一主机的全名,那部能受理的就只是该机器。 <BR> <BR> □这种方式只能在用host name ,而不能用ip address。 <BR> <BR> b.如果一串IP以"." (如:140.119.),则只比较"." 之前的数字。 <BR> 所以"140.119."的设定,当看到140.119.1.2 时,是可以很愉快的 <BR> 大叫宾果的。 <BR> 如果写全了一IP ADDRESS,则宾果的只有那一台机器而已。 <BR> □这种方式只能用IP ADDRESS。 <BR> <BR> 举例: <BR> ftpd: 140.113.23.3 140.119. .nccu.edu.tw bbs.ntu.edu.tw: ... <BR> <BR> B.wildcard <BR> 相同的,笔者没有全介绍,有兴趣者请参考hosts_access.5。 <BR> a.ALL <BR> b.EXCEPT这两个说明请参考上文,daemon list说明的区段。 <BR> c.KNOWN <BR> d.UNKNOWN <BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -