tag:blogger.com,1999:blog-41715299305036432642024-02-20T15:58:31.263+08:00Linux-abc像使用 Windows 一样管理 Linux 服务器✿☞凌锋http://www.blogger.com/profile/12644976863380733852noreply@blogger.comBlogger126125tag:blogger.com,1999:blog-4171529930503643264.post-39774047481808697942006-09-24T10:59:00.000+08:002006-09-24T11:07:40.054+08:00附 录<div align="center"><strong><span style="font-size:130%;color:#666600;">Linux 常用命令快速查询</span></strong></div><span style="color:#666600;"> <br /><strong><span style="font-size:130%;">cal</span></strong></span><br /><span style="color:#666600;"> <br /><strong>功能:</strong>显示某年某月的日历<br /><strong>语法:</strong>[选项] [月[年]]<br /><strong>选项:</strong>-j 显示出给定月中的某一天是一年中的第几天<br />-y 显示出整年的日历</span><br /><span style="color:#666600;"> <br /><strong><span style="font-size:130%;">chgrp</span></strong></span><br /><span style="color:#666600;"> <br /><strong>功能:</strong>改变文件或目录所属的组<br /><strong>语法:</strong>chgrp[选项]group filename<br /><strong>选项:</strong>-R 递归式地改变指定目录及其下的所有子目录和文件的改组</span><br /><span style="color:#666600;"> <br /><strong><span style="font-size:130%;">chmod</span></strong></span><br /><span style="color:#666600;"> <br /><strong>功能:</strong>改变文件或目录的访问权限<br /><strong>语法:</strong>chmod [who] [+-=] [mode] 文件名<br /><strong>选项:</strong>操作对象 who 可是下述字母中的任何一个或者它们的组合。<br />u 表示“用户(user)”,即文件或目录的所有者<br />g 表示“同组(group)用户”,即与文件属主有相同组 ID 的所有用户<br />o 表示“其它(other)用户”<br />a 表示“所有(all)用户”,它是系统默认值<br />操作符号可以是:<br />+ 添加某个权限<br />- 取消某个权限<br />= 赋予给定权限并取消其他所有权限<br />设置mode所表示的权限可以使用下述字母的任意组合:<br />r 可读<br />w 可写<br />x 可执行<br />s 在文件执行时把进程的属主或组 ID 置为该文件的文件属主<br />u 与文件属主拥有同样的权限<br />g 与和文件属主同组的用户拥有一样的权限<br />o 与其他用户拥有一样的权限</span><br /><span style="color:#666600;"> </span><br /><strong><span style="font-size:130%;color:#666600;">chown</span></strong><br /><span style="color:#666600;"> <br /><strong>功能:</strong>更改某个文件或目录的属主和属组<br /><strong>语法:</strong>chown [选项] 用户或组文件<br /><strong>选项:</strong>-R 递归式地改变指定目录及其下的所有子目录和文件的拥有者<br />-v 显示 chown 命令所做的工作</span><br /><span style="color:#666600;"> <br /><strong><span style="font-size:130%;">clear</span></strong></span><br /><span style="color:#666600;"> <br /><strong>功能:</strong>是清除屏幕上的信息<br /><strong>语法:</strong>clear</span><br /><span style="color:#666600;"> <br /><strong><span style="font-size:130%;">date</span></strong></span><br /><span style="color:#666600;"> <br /><strong>功能:</strong>显示和设置系统日期和时间<br /><strong>语法:</strong>date [选项] 显示时间格式<br /><strong>选项:</strong>-d datestr 显示由 datestr 描述的日期<br />-s datestr 设置 datestr 描述的日期<br />-u 显示或设置通用时间</span><br /><span style="color:#666600;"> <br /><strong><span style="font-size:130%;">echo</span></strong></span><br /><span style="color:#666600;"> <br /><strong>功能:</strong>在显示器上显示一段文字,起到提示的作用<br /><strong>语法:</strong>echo [-n] 字符串<br /><strong>选项:</strong>-n 输出文字后不换行</span><br /><span style="color:#666600;"> </span><br /><strong><span style="font-size:130%;color:#666600;">fdformat</span></strong><br /><span style="color:#666600;"> <br /><strong>功能:</strong>低级格式化软盘<br /><strong>语法:</strong>fdformat [-n] device<br /><strong>选项:</strong>-n 软盘格式化后不作检验<br />device 指定要进行格式化的设备,通常是下述设备之一<br />/dev/fd0d360<br />/dev/fd0h1200<br />/dev/fd0D360<br />/dev/fd0H360<br />/dev/fd0D720<br />/dev/fd0H720<br />/dev/fd0h360<br />/dev/fd0h720<br />/dev/fd0H1440</span><br /><span style="color:#666600;"> <br /><strong><span style="font-size:130%;">free</span></strong></span><br /><span style="color:#666600;"> <br /><strong>功能:</strong>查看当前系统内存的使用情况<br /><strong>语法:</strong>free [选项]<br />-b 以字节为单位显示<br />-k 以K字节为单位显示<br />-m 以兆字节为单位显示</span><br /><span style="color:#666600;"> </span><br /><strong><span style="font-size:130%;color:#666600;">mesg</span></strong><br /><span style="color:#666600;"> <br /><strong>功能:</strong>设定是否允许其他用户使用 write 命令给自己发送信息<br /><strong>语法;</strong>mesg [y l n]</span><br /><span style="color:#666600;"> <br /><strong><span style="font-size:130%;">passwd</span></strong></span><br /><span style="color:#666600;"> <br /><strong>功能:</strong>改变用户口令<br /><strong>语法:</strong>passwd [用户名]</span><br /><span style="color:#666600;"> <br /><strong><span style="font-size:130%;">shutdown</span></strong></span><br /><span style="color:#666600;"> <br /><strong>功能:</strong>安全地关闭或重启 Linux 系统<br /><strong>语法:</strong>shutdown [选项] [时间] [警告信息]<br /><strong>选项:</strong><br />-k 并不真正关机,而只是发出警告信息给所有用户<br />-r 关机后立即重新启动<br />-h 关机后不重新启动<br />-f 快速关机,重启后跳过 fsck<br />-n 快速关机,不经过 init 进程<br />-c 取消一个已经运行的 shutdown</span><br /><span style="color:#666600;"> <br /><strong><span style="font-size:130%;">sort</span></strong></span><br /><span style="color:#666600;"> <br /><strong>功能:</strong>逐行对文件中的内容进行排序<br /><strong>语法:</strong>sort [选项] 文件<br /><strong>选项:</strong><br />-m 若给定文件已排好序,则合并文件<br />-c 检查给定文件是否已排好序,如果它们没的排好序,则打印一个出错信息<br />-u 对排序后具有相同内容的行,只保留其中的一行<br />-o 将排序后的结果输出到指定的文件中,而不是标准输出<br />-d 按字典顺序排序,比较时仅字母、数字、空格和制表符有意义<br />-f 将小写字母和大写字母同等对待<br />-I 比较时忽略非打印字符<br />-r 按逆序输出排序结果</span><br /><span style="color:#666600;"> </span><br /><strong><span style="font-size:130%;color:#666600;">su</span></strong><br /><span style="color:#666600;"> <br /><strong>功能:</strong>让普通用户暂时拥有 root 用户或者其他用户的权限<br /><strong>语法:</strong>su [选项] [-] [使用者帐号]<br /></span><span style="color:#666600;"><strong>选项:<br /></strong>-c 以指定用户执行某个命令<br />- 加这减号的目的是使环境变量和欲转换的用户相同<br />-m 保留环境变量不变</span><br /><span style="color:#666600;"> <br /><strong><span style="font-size:130%;">sync</span></strong></span><br /><span style="color:#666600;"> <br /><strong>功能:</strong>把内存中的数据强制写回硬盘,以免数据丢失<br /><strong>语法:</strong>sync</span><br /><span style="color:#666600;"> <br /><strong><span style="font-size:130%;">uniq</span></strong></span><br /><span style="color:#666600;"> <br /><strong>功能:</strong>删除文件中的重复行<br /><strong>语法:</strong>uniq [选项] 文件<br /><strong>选项:</strong><br />-c 在输出结果中每行行首加上本行在文件中出现的次数<br />-d 只显示重复行<br />-u 只显示文件中不重复的各行<br />-n 前n个字段与每个字段前的空白一起被忽略,一个字段是一个非空格、<br />非制表符的字符串,彼此由制表符和空格隔开(字段从0开始编号)<br />+n 前n个字符被忽略,之前的字符被跳过(字符从0开始编号)<br />-f n 与 -n 相同,这里 n 是字段数<br />-s n 与 +n 相同,这里 n 是字符数</span><br /><span style="color:#666600;"> <br /><strong><span style="font-size:130%;">uptime</span></strong></span><br /><span style="color:#666600;"> <br /><strong>功能:</strong>显示系统已经运行了多长时间<br /><strong>语法:</strong>uptime</span><br /><span style="color:#666600;"> <br /><strong><span style="font-size:130%;">wall</span></strong></span><br /><span style="color:#666600;"> <br /><strong>功能:</strong>向全部已登录的用户发送信息<br /><strong>语法:</strong>wall 字符串</span><br /><span style="color:#666600;"> <br /><strong><span style="font-size:130%;">write</span></strong></span><br /><span style="color:#666600;"> <br /><strong>功能:</strong>向系统中的指定用户发送信息<br /><strong>语法:</strong>write 用户帐号[终端名称]</span>✿☞凌锋http://www.blogger.com/profile/12644976863380733852noreply@blogger.com0tag:blogger.com,1999:blog-4171529930503643264.post-14415751631257713762006-09-24T10:41:00.000+08:002006-09-24T10:49:17.075+08:00第三节 防火墙<span style="color:#660000;"> 即使是世界上最好的认证和加密方案,也很难保证系统不会受到黑客高手的攻击。目前,阻止他们的最好办法还是使用防火墙,拒绝来自网络外的非法访问。Linux 在构建防火墙方面做得相当优秀,完全有能力同那些价格不菲的商业防火墙软件一决高低。</span><br /><span style="color:#660000;"> <br /><strong>1、认识防火墙</strong></span><br /><span style="color:#660000;"> <br /> 防火墙可以是一台计算机,一台路由器,或其它专用设备,虽然形式可以多种多样,但目的是为了阻止来自网络外部的非法访问。大多数防火墙都被设置在专用的 Internet 和公用的 Internet 之间,它依据事先定义好的一系列规则,将那些不受欢迎的数据包挡在网络之外,从而提高网络的安全性。</span><br /><span style="color:#660000;"> <br /> 防火墙的作用主要取决管理员的设置,它可以被设置成很开放的,几乎允许所有的数据包通过,也可以被设置成很保守的,仅仅允许极少数的数据包通过。</span><br /><span style="color:#660000;"> </span><br /><span style="color:#660000;"> 让网络中的一台计算机专门承担防火墙的职责是一个较好的做法,这是因为防火墙通常用来控制外界对内部网络的访问,它的安全性应该尽可能的高。黑客都清楚如果他们能够控制防火墙,也就相当于控制了整个网络。为了看好这个大门,管理员应该始终牢记下面这此戒律:</span><br /><span style="color:#660000;"> <br /> <strong>第一、</strong>关闭防火墙上所有不需要的服务;</span><br /><span style="color:#660000;"> <strong>第二、</strong>限制对防火墙拥有访问权限的人数;</span><br /><span style="color:#660000;"> <strong>第三、</strong>不要在防火墙上使用其它地方使用过的口令;</span><br /><span style="color:#660000;"> <strong>第四、</strong>要确保防火墙在物理上的安全。</span><br /><span style="color:#660000;"> <br /> 目前常用的防火墙有两种主要形式:代理服务器和包过滤器。代理服务器工作在整个网络体系中的应用层,通常都是针对具体协议的,也就是说 FTP、Telne 和HTTP 都有各自专用的代理服务器。包过滤工作在整个网络体系结构中的网络层,它可以查看来自网络外的任何一个 IP 包,然后按照一套事先定义好的规则来决定是允许 IP 包通过,还是简单地将其丢弃。</span><br /><span style="color:#660000;"> <br /> 作为一个优秀的网络操作系统,Linux 从一开始就支持数据包过滤功能。RedHat Linux AS 4 自带了 IPchains 和 iptables 两个软件包,它们都具有对网络中的数据包进行过滤的功能,是构建防火墙系统的基石。</span><br /><span style="color:#660000;"> </span><br /><strong><span style="color:#660000;">2、配置防火墙</span></strong><br /><span style="color:#660000;"> <br /> 以前 Linux 系统管理员在配置防火墙时基本上没有什么工具可言,在部分都是使用命令或者直接修改配置文件,Webmin 的出现总算多少缓解了这一尴尬局面。打开浏览器登录 Webmin,然后单击『网络』图标进入网络管理页面,如图 8-3-1 所示。</span><br /><span style="color:#660000;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-3-1.gif"><span style="color:#660000;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-3-1.png" border="0" /></span></a><span style="color:#660000;"> 图 8-3-1 配置防火墙</span></div><span style="color:#660000;"> </span><br /><span style="color:#660000;"> 单击『Linux Firewall』图标,如果之前没有对 IPtables 设置,将看到如图8-3-2 所示的页面。单击『Setup Firewall』按钮,Webmin 将开始初始化IPtables 的配置文件 /etc/sysconfig/iptables。</span><br /><span style="color:#660000;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-3-2.gif"><span style="color:#660000;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-3-2.png" border="0" /></span></a><span style="color:#660000;"> 图 8-3-2 初始化 IPtables</span></div><span style="color:#660000;"> <br /> 不要将防火墙想的很神秘,其实说穿了无非就是对要转发的数据包(FORWARD)、进入网络的数据包(INPUT)和从网络发出的数据包(OUTPUT)进行控制,如图 8-3-3所示。</span><br /><span style="color:#660000;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-3-3.gif"><span style="color:#660000;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-3-3.png" border="0" /></span></a><span style="color:#660000;"> 图 8-3-3 定义过滤规则</span></div><span style="color:#660000;"> <br /> 由于所有的处理规则都是相同的,因此只要学会对一种数据包进行处理,其它两种自然也就不在话下了。</span><br /><span style="color:#660000;"> </span><br /><span style="color:#660000;"> 我们以进入网络的数据包为例,一起来看看如何为防火墙定义过滤规则。单击『Incoming packets (input)』区域中的『Add rule』按钮,进入『Add Rule』页面。在『Action to take』内选择符合该过滤规则时采取的动作,最常用的动作是『Accept』和『Drop』,分别表示“接受”和“丢弃”符合过滤规则的数据包,如图 8-3-4 所示。</span><br /><span style="color:#660000;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-3-4.gif"><span style="color:#660000;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-3-4.png" border="0" /></span></a><span style="color:#660000;"> 图 8-3-4 采取的动作</span></div><span style="color:#660000;"> <br /> 为防火墙设置的每条过滤规则,实际上都可以简单地描述为:符合某些条件时,采取相应的动作。过滤规则中的动作在前面已经选好了,接下去自然就是定义过滤规则应该满足的条件了。说起来容易,但真正做起来可就不那么轻松了,因为可能的条件实在太多。不要着急,让我们各个击破。</span><br /><span style="color:#660000;"> <br /> 在『Source address or network』和『Destination address or network』区域中,可以设置符合该过滤规则的数据包应该具有的源地址和目标地址,如图8-3-5 所示。</span><br /><span style="color:#660000;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-3-5.1.gif"><span style="color:#660000;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-3-5.1.png" border="0" /></span></a><span style="color:#660000;"> 图 8-3-5 源地址和目标地址</span></div><span style="color:#660000;"> <br /> 源地址和目标地址既可以是某一主机的 IP 地址,也可以是以 CDIR 形式表示的网络地址。在地址前面的条件下拉框中,可以选择『<ignored>』、『Equals』和『Does not equsl』,分别表示忽略、等于和不等于三种情况。</span><br /><span style="color:#660000;"> </span><br /><span style="color:#660000;"> 在『Incoming interface』和『Outgoing interface』区域中,可以设置符合过滤规则的数据包应该来自哪个网络接口,以及应该发送到哪个网络接口,如图8-3-6 所示。</span><br /><span style="color:#660000;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-3-5.0.gif"><span style="color:#660000;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-3-5.0.png" border="0" /></span></a><span style="color:#660000;"> 图 8-3-6 网络接口</span></div><span style="color:#660000;"> </span><br /><span style="color:#660000;"> 出于安全性的考虑,大多数防火墙一般都装有两块网上,一块用来连接外部网络,另一块则用来连接内部网络,因为这样可以很好地将外部网络和内部网络隔开。</span><br /><span style="color:#660000;"> <br /> 在『Network protocol』区域中,可以设置符合过滤规则的数据包应该属于哪个网络协议,如图 8-3-7 所示。</span><br /><span style="color:#660000;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-3-5.gif"><span style="color:#660000;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-3-5.png" border="0" /></span></a><span style="color:#660000;"> 图 8-3-7 网络协议</span></div><span style="color:#660000;"> </span><br /><span style="color:#660000;"> 网络管理员通常不希望某类可能产生安全问题的协议数据包穿越防火墙,因此这个设置项非常实用。</span><br /><span style="color:#660000;"> <br /> 在『Source TCP or UDP port』和『Destination TCP or UDP port』区域中,可以设置符合该过滤规则的数据包应该有的源端口和目标端口号。可以同时指定多个端口,也可以指定一个端口的范围,如图 8-3-8 所示。</span><br /><span style="color:#660000;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-3-8.gif"><span style="color:#660000;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-3-8.png" border="0" /></span></a><span style="color:#660000;"> 图 8-3-8 源端口和目标端口</span></div><span style="color:#660000;"> </span><br /><span style="color:#660000;"> 如果源端口和目标端口相同,则只需在『Source and destination port (s)』区域中设置就足够了,不用将两者分开对待。</span><br /><span style="color:#660000;"> <br /> 如果熟悉 TCP 协议,那肯定知道 TCP 数据包中有一些标记(flag)字段,这些也可以成为防火墙对数据包进行过滤时的依据,如图 8-3-9 所示。</span><br /><span style="color:#660000;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-3-9.gif"><span style="color:#660000;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-3-9.png" border="0" /></span></a><span style="color:#660000;"> 图 8-3-9 TCP 标记</span></div><span style="color:#660000;"> </span><br /><span style="color:#660000;"> 其它一些设置项由于不是经常用到,这里就不作介绍了。在设置好过滤规则后,单击『Add Rule』页面中的『新建』按钮,就可以在『Linux Firewall』页面中看到刚刚添加的过滤规则了,如图 8-3-10 所示。</span><br /><span style="color:#660000;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-3-10.0.gif"><span style="color:#660000;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-3-10.0.png" border="0" /></span></a><span style="color:#660000;">图 8-3-10 防火墙过滤规则</span></div><span style="color:#660000;"> </span><br /><span style="color:#660000;"> 使用同样的办法可以添加多条过滤规则。需要注意的是,防火墙是按照一定的顺序来应用过滤规则的。对于同一个数据包,可能前一条规则允许它通过防火墙,而后一条规则不允许,此时防火墙将按照前一条规则来处理它。当同时存在多条过滤规则时,规则之间的应用顺序非常重要。通过单击规则列表『Move』列中的上下箭头,可以改变过滤规则的应用顺序,如图 8-3-11 所示。</span><br /><span style="color:#660000;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-3-10.gif"><span style="color:#660000;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-3-10.png" border="0" /></span></a><span style="color:#660000;"> 图 8-3-11 规则应用顺序</span></div><span style="color:#660000;"> </span><br /><strong><span style="color:#660000;">3、启用防火墙</span></strong><br /><span style="color:#660000;"> <br /> 在设置好防火墙的过滤规则后,需要激活这些新的配置。单击『LinuxFirewall』页面底部的『Apply Configuration』按钮,防火墙将按照最新定义的过滤规则,对经过的每个数据包进行处理,并采取相应的动作,如图 8-3-12 所示。</span><br /><span style="color:#660000;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-3-12.gif"><span style="color:#660000;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-3-12.png" border="0" /></span></a><span style="color:#660000;"> 图 8-3-12 应用新的过滤规则</span></div><span style="color:#660000;"> </span><br /><span style="color:#660000;"> 如果希望在系统启动的时候,防火墙就能自动运行并激活这些过滤规则,那就应该在『Linux Firewall』页面底部的『Activate at boot』按钮旁边选择『是』单选框,然后单击『Activate at boot』按钮,如上图所示。</span><br /><span style="color:#660000;"> <br /> 再强调一下,不管使用哪种策略和技术,绝对安全的系统都是不存在的。一个真正较为安全的系统是需要根据不同网络的具体情况,以及不同用户对安全性的需求进行定制。优秀的网络管理员应该做到比黑客更精明,即所谓的“魔高一尺,道高一丈”。</span><br /><span style="color:#660000;"> <br /> 现在你已经读完本书了,有什么感觉?我想,你会发现成为一名合格的 Linux管理员已经不再是一伯难事了!</span>✿☞凌锋http://www.blogger.com/profile/12644976863380733852noreply@blogger.com0tag:blogger.com,1999:blog-4171529930503643264.post-25929853165350520962006-09-24T10:16:00.000+08:002006-09-24T10:24:56.536+08:00第二节 安全网络连接 加密是保证网络连接安全的一种重要手段,如果能在数据发送前利用特定的算法对其进行加密,那么数据的机密性将更有保证。SSH 使用经过加密后的连接在两台计算机间进行通信,这样任何人想利用网络嗅探器来监视通信过程都将变得非常困难,因为所有数据都是经过加密处理的。<br /> <br /><strong>1、认识安全网络连接</strong><br /> <br /> 如果只能用一句话来描述安全的网络连接,那么就是要确保数据在从一个主机发送到另一个主机时,与通信无关的第三方无法读取。使用嗅探器虽然还是同样能中途截取数据包,但这些加密后的数据都是不可读的。经过加密处理之后,黑客们就无法轻松地获取诸如用户口令这类敏感数据,因而所有在网络上传输的数据都将是安全可靠的。<br /> <br /> 安全网络连接常用于需要发送机密数据的场合。由于 Internet 是一个全世界所有人都可以使用的公共网络,因此数据加密显得尤为重要,毕竟像电子商务这类应用,首先考虑的就是如何确保信用卡及用户信息的机密性。<br /> <br /> 传统的 rlogin、rsh 和 Telnet 是三个臭名昭著的不安全典型,它们不经过加密就进行系统登陆和数据传输。假如你是一名 root 用户并有使用 Telnet 登录系统进行管理的嗜好,那么你的用户我和密码实际上都是通过纯文本方式在网络中传递的。如果被黑客盯上,并通过网络嗅探器截获了数据包,那么整个系统离发生灾难的那一天也就不远了。<br /> <br /> SSH(Secure Shell)可以很好地解决这些令人头疼的问题。它能够对在网络上传输的数据进行加密,这样就为重要信息提供了较高的保密性和安全性。SSH 最初由芬兰一家公司开发,但由于受版权和加密算法的限制,现在使用更广的是其免费的替代产品 OpenSSH。与传统的远程登陆软件(如Telnet和rlogin)相比,OpenSSH 是一个更加安全的解决方案。它能对远程登录过程中的数据包进行加密,从而确保用户名和密码不至于泄密,即便是登录成功之后,所有在网络中传输的数据包仍将继续被加密。<br /> <br /> OpenSSH 的许多特性都确保了数据在网络中的安全性,如果你的 Linux 系统是运行在一个不怎么安全的网络环境中,那就该动手升级到 OpenSSH。<br /> <br /><strong>2、安装 OpenSSH</strong><br /> <br /> OpenSSH 是一个用于实现安全网络连接的软件包套件,它包含如下几个组成部分:<br /> <br /> <strong>SSH 客户工具(SSH):</strong>远程登录程序,能够实现安全的远程登录和会话加密,是 rlogin 和 Telnet 的安全替代;<br /> <br /> <strong>安全拷贝工具(scp):</strong>远程文件拷贝工具,用于在网络内的计算机间安全地复制文件,支持用户名和密码;<br /> <br /> <strong>安全传输工具(sftp):</strong>用于进行安全的文件传输,是 ftp 的安全替代;<br /> <br /> <strong>OpenSSH服务器(sshd):</strong>OpenSSH 的后台服务进程。<br /> <br /> 由于 OpenSSH 在 Linux 操作系统上的应用已经相当普遍了,因此许多发行版(包括 Red Hat Linux AS 4)都自带了 OpenSSH 软件包套件。OpenSSH 通常是默认安装的,可以在命令行方式下用 rpm 命令查询一下是否已经安装了 OpenSSH:<br /> <br /> [root@kevin rpm]#rpm -qalgrep openssh<br /> openssh-3.5p1-6<br /> openssh-clients-3.5p1-6<br /> openssh-server-3.5p1-6<br /> openssh-askpass-3.5p1-6<br /> openssh-askpass-gnone-3.5p1-6<br /> <br /> Red Hat Linux AS 4 提供的 OpenSSH 套件由 openssh-3.5p1-6.i386.rpm、openssh-clients-3.5p1-6.i386.rpm、 openssh-server-3.5p1-6.i386.rpm、 openssh-askpass-3.5p1-6.i386.rpm 和 openssh-askpass-gnome-3.5p1-6.i386.rpm 五个 RPM 包组成。如果当前 Linux 系统还没有安装 OpenSSH,那么可以执行下面的命令来手工安装它。<br /> <br /> [root@kevin ~]#mount /dev/cdrom /mnt/cdrom/<br /> [root@kevin ~]#cd /mnt/cdrom/RedHat/RPMS/<br /> [root@kevin RPMS]#rpm -Uvh openssh-3.5p1-6.i386.rpm<br /> [root@kevin RPMS]#rpm -Uvh openssh-clients-3.5p1-6.i386.rpm<br /> [root@kevin RPMS]#rpm -Uvh openssh-server-3.5p1-6.i386.rpm<br /> [root@kevin RPMS]#rpm -Uvh openssh-askpass-3.5p1-6.i386.rpm<br /> [root@kevin RPMS]#rpm -Uvh openssh-askpass-gnome-3.5p1-6.i386.rpm<br /> <br /><strong>3、配置 OpenSSH 服务器</strong><br /> <br /> 由于涉及到 Linux 系统的安全性,要管理好 OpenSSH 服务器可不是件轻松的差事,而如何安全有效地设置 OpenSSH 的配置文件则是管理员面临的第一个大难题。OpenSSH 服务器的配置文件位于 /etc/ssh/ 目录下面,你可以直接手工修改它们,不过刚开始时建议还是先用 Webmin 来代劳。打开浏览器并登录 Webmin 后,单击『服务』图标进入服务管理页面,在这里可以对 OpenSSH 服务器进行配置,如图8-2-1 所示。<br /> <br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-2-1.gif"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-2-1.png" border="0" /></a> 图 8-2-1 OpenSSH 服务器</div> <br /> 单击『SSH Server』图标,进入『SSH Server』页面,Webmin 允许对 OpenSSH服务器的各种参数进行设置,这样就不用与那些枯燥乏味的配置文件纠缠不清了,如图 8-2-2 所示。<br /> <br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-2-2.1.gif"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-2-2.1.png" border="0" /></a>图 8-2-2 OpenSSH 服务器配置</div> <br /> 在『SSH Server』页面中单击『Authentication』图标,进入『Authentication』页面,此处的参数都是与用户登录或身份认证相关的。在『Allowauthentication by password』和『Allow RSA authentication』区域中,可以设置是否允许在 SSH 登录过程中使用口令验证和 RSA 安全验证这两种身份验证方式。有时为了方便起见,系统中某些用户的口令是空的,在『Permit logins with empty passwords』区域中,可以选择是否允许这类用户通过 SSH 远程登录,如图8-2-3 所示。<br /> <br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-2-3.gif"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-2-3.png" border="0" /></a> 图 8-2-3 口令验证</div> <br /> Linux 系统中的最高统治者是 root,他拥有至高无上的权力,可以随心所欲地做任何事情,这也是为什么那么多黑客都将获得 root 用户权限作为攻击系统时的首要目标。虽然 SSH 在登录过程中对用户名和密码都作了加密,但为了更好地保护好系统,建议还是在『Allow login by root』下拉框中选择『否』,拒绝 root 用户使用 SSH 进行远程登录,如图 8-2-4 所示。<br /> <br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-2-4.gif"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-2-4.png" border="0" /></a> 图 8-2-4 拒绝 root 用户远程登录</div> <br /> 早在使用 rlogin 和 rsh 的年代,人们就想出了通过在 /etc/hosts.equiv 和$HOME/.rhosts 两个文件中指定“等价”主机的办法,来简化登录过程,但前提是这些主机间必须是互相信任的。在『Authentication』页面中的『Allow login just by hosts.equiv and .rhosts』区域中,可以指明是否只使用 hosts.equiv 和 .rhosts 进行安全验证就足够了;而在『Check hosts.equiv and .rhosts forRSA authentication』区域中,可以指明是否应该用 hosts.equiv 和 .rhosts 并加上 RSA 进行安全验证;如果希望在验证过程中忽略 hosts.equiv 和 .rhosts,则可以在『Ignore .rhosts files』区域中进行选择,如图 8-2-5 所示。<br /> <br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-2-5.1.gif"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-2-5.1.png" border="0" /></a> 图 8-2-5 可信任主机</div> <br /> 在设置好 OpenSSH 服务器的身份认证参数后,单击『保存』按钮返回到『SSHServer』页面。接下去就该对 OpenSSH 服务器的网络参数进行设置了,单击『Networking』图标进入页面后,可以在『Listen on addresses』区域中指定OpenSSH 服务器监听的地址,还可以在『Listen on port』区域中指定 OpenSSH 服务器监听的端口,如图 8-2-6 所示。<br /> <br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-2-5.0.gif"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-2-5.0.png" border="0" /></a> 图 8-2-6 监听地址和端口</div> <br /> OpenSSH 能够支持 SSH v1 和 SSH v2 两种协议,可以在『Networking』页面中的『Accept protocols』区域中选择 OpenSSH 服务器所使用的 SSH 协议版本,如图 8-2-7 所示。同时将『SSH v1』和『SSH v2』两个复选框选中,能够最大限度地同 SSH 客户端保持协议上的兼容。<br /> <br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-2-5.gif"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-2-5.png" border="0" /></a> 图 8-2-7 SSH 协议版本</div> <br /> 其实黑客有时采用的攻击手段并不是那么高明。例如为了成功地登录系统,他们可以在一个称为“字典”的数据库中事先保存好所有可能出现的用户名和密码的组合,然后借助一些工具的帮助一个接一个地尝试,直至找到某个匹配的用户名和密码为止。这种穷举的办法虽然看起来有点笨,但却令不少黑客屡屡得手。究其原因在于人们通常设置的用户名和密码并不是很复杂,大部分都逃不出黑客手中的那本“字典”。<br /> <br /> OpenSSH 服务器采用了一个很简单的策略来避免这类现象的发生,那就是要求用户必须在指定的时间内完成登录,否则连接将被中断。在『Networking』页面中的『Time to wait for login』区域中,可以指定 OpenSSH 服务器能够容忍的登录时间,如图 8-2-8 所示。注意,如果将该值设为0,则表示没有时间限制。<br /> <br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-2-8.gif"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-2-8.png" border="0" /></a> 图 8-2-8 允许的登录时间</div> <br /> 在为 OpenSSH 服务器设置好网络参数后,单击『保存』按钮返回到『SSHServer』页面。默认情况下,OpenSSH 服务器会允许系统中的所有用户通过 SSH 进行远程登录。如果觉得这样不是很安全,则可以单击『SSH Server』页面中的『Access Control』图标,进入『Access Control』页面,然后在『Only allow users』和『Only allow members of groups』区域中指定允许通过 SSH 远程登录的用户和组,或在『Deny users』和『Deny members of groups』区域中指定拒绝通过 SSH 远程登录的用户和组,如图 8-2-9 所示。<br /> <br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-2-9.gif"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-2-9.png" border="0" /></a> 图 8-2-9 访问控制</div> <br /> 注意,只有用户及其所属的组都被允许时,才可以成功地登录到 OpenSSH 服务器。设置好 OpenSSH 服务器的访问控制规则后,单击『保存』按钮保存设置。<br /> <br /> 单击『SSH Server』页面中的『Miscellaneous Options』图标,可以对OpenSSH 服务的其它一些杂项参数进行设置。在『Miscellaneous Options』页面中的『System log facility』区域中,可以指定在记录系统日志时所使用的助记代码。在阅读系统日志时,助记代码可以帮助管理员区分不同的记录。而日志记录级别则可以从『Logging level』区域中选择,如图 8-2-10 所示。日志级别会影响到将被记录信息的多少和种类,对大我数场合来说,『INFO』是一个较好的选择。<br /> <br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-2-10.gif"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-2-10.png" border="0" /></a> 图 8-2-10 系统日志</div> <br /> 在『Miscellaneous Options』页面中还有两个很重要的设置项,那就是在『Server key size』区域中定义服务器端密钥位数的『bits』,以及『Server keyregeneration interval』区域中定义的服务器自动重新生成密钥的时间间隔,如图 8-2-11 所示。<br /> <br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-2-11.0.gif"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-2-11.0.png" border="0" /></a> 图 8-2-11 密钥和度和生存期</div> <br /> 密钥的位数将影响到 OpenSSH 服务器的安全级别,而定时重新生成密钥则是为了防止黑客用盗用的密码来解密被截获的信息。设置好服务器端密钥的长度和生存期后,单击『保存』按钮确认。<br /> <br /> 除了可以对 OpenSSH 服务器进行配置外,使用 Webmin 还可以对 OpenSSH 客户端进行配置,如图 8-2-12 所示。<br /> <br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-2-2.0.gif"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-2-2.0.png" border="0" /></a> 图 8-2-12 配置 OpenSSH 客户端</div> <br /> 为了能够正确地通过 SSH 登录 OpenSSH 服务器,不仅需要在服务器端对OpenSSH 服务器进行配置,还需要在客户端对 OpenSSH 的客户机进行配置。当然,这些都可以借助 Webmin 来完成。<br /> <br /> 单击『SSH Server』页面中的『Client Host Options』图标,进入『Client Host Options』页面,在『SSH Client Hosts』区域中可以看到能够进行配置的SSH 客户,如图 8-2-13 所示。<br /> <br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-2-13.gif"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-2-13.png" border="0" /></a> 图 8-2-13 SSH 客户</div> <br /> 单击『ALL Hosts』图标,可以对所有 SSH 客户进行配置,如图 8-2-14 所示。<br /> <br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-2-14.gif"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-2-14.png" border="0" /></a> 图 8-2-14 设置 SSH 客户参数</div><div> <br /> 如果没有什么特殊需要,除了在『Add host to known_hosts file』和『CheckIP addresses in known_hosts file』区域中选择『是』单选框外,其它参数都使用默认值一般就可以满足绝大部分场合的需要了。</div><div> <br /> OpenSSH 客户端的参数保存在配置文件 /etc/ssh/ssh_config 中,如果想知道该文件中各个参数的具体含义,可以查看 OpenSSH 的联机手册:</div><div> <br /> [root@kevin ~]#man ssh_config</div><div> <br /><strong>4、启动 OpenSSH 服务器</strong></div><div> <br /> OpenSSH 服务器配置好之后,就可以启动它了。在 Webmin 的『SSH Server』页面中,有一个『Start Server』按钮,单击它可以启动 OpenSSH 服务器,如图8-2-15 所示。</div><div> </div><div> 如果此时 OpenSSH 服务器已经启动了,则将看到一个『Apply Changes』按钮,单击它可以按新的配置值重新加载 OpenSSH 服务器。</div><div> </div><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-2-2.gif"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-2-2.png" border="0" /></a> 图 8-2-15 启动 OpenSSH 服务器</div><div> <br /> 当然,也可以将 OpenSSH 服务器设置成开机自动启动。单击 Webmin 的『系统』图标,进入系统管理页面,接着单击『引导和关机』图标,打开『引导和关机』页面,在服务列表中找到 OpenSSH 对应的服务 sshd。</div><div> <br /> 单击『sshd』链接,进入『编辑操作』页面,选择『是』单选框,就可以在系统启动时自动运行 OpenSSH 服务器了。</div>✿☞凌锋http://www.blogger.com/profile/12644976863380733852noreply@blogger.com0tag:blogger.com,1999:blog-4171529930503643264.post-5639955160030968882006-09-24T09:41:00.000+08:002006-09-24T09:52:22.347+08:00第八章 Linux 系统安全及其它<span style="color:#663366;"> 世界上没有绝对安全的计算机系统,如果想获得绝对的安全性,估计唯一能够采取的措施就是不联网,不让管理员之外的任何人使用。那样计算机也就无异于一堆废铁了!作为系统管理员首先应该明白,我们只能尽量让系统在能承担最低风险的情况下正常工作,而不是追求绝对安全这一看起来很美好的海市蜃楼。<br /> <br /> 任何操作系统都不可能毫无漏洞,无论是 Windows、Linux 甚至 Unix,这些漏洞可能是先天系统设计上的缺陷,也可能是人为管理不当所造成的。要做好同这些漏洞进行持久战的心理准备。<br /></span><div align="center"><span style="color:#663366;"> <br /><strong>第一节 扫描和嗅探</strong></span></div><span style="color:#663366;"> <br /> 网络从诞生的那天起就存在一小撮破坏分子,他们或许是出于某种特定的目的,或许仅仅是为了寻找刺激和乐趣,总是喜欢乐此不疲地去探索和发现系统中的弱点,然后伺机进行破坏。正所谓未雨绸缪,管理员可以采用同样的方法来寻找系统已经存在或可能将要存在的弱点,然后采用相应的措施进行防范。<br /> <br /><strong>1、认识扫描和嗅探</strong><br /> <br /> 说起来有点滑稽,现在被系统管理员奉为法宝的系统扫描器(scanner)和网络嗅探器(sniffer),最早均出于黑客之手,是用来对系统实施攻击的。只不过后来被网络管理员“招安”之后用于正当途径,摇身一变成了捍卫系统安全的卫士。<br /> <br /> 对系统进行安全性检查的工作,以前通常是由管理员定期手工完成的,显然这要花费相当多的精力和时间。为了将管理员从这一繁重的体力劳动中解脱出来,有人专门开发了能够用来自动检查系统安全设置的小工具,帮助管理员发现系统中存在的问题。这类安全工具常被称为“系统扫描器”,它们通过对系统设置进行扫描,能够对已知的系统安全问题进行检查。如检查系统中是否存在没有口令的帐户,是否有非法运行着的程序,以及是否存在已经报告过的系统漏洞等等。<br /> <br /> 网络嗅探器是另外一类常用的安全工具,是用来截获网络通信数据的软件或硬件。与常用的电话网络不同,计算机网络是共享通信通道的,这就意味每台计算机在理论上都可以接收到发给其它计算机的信息。嗅探器常常被作为一种收集网络中特定数据(比如信用卡密码)的有效方法,由于它工作在整个网络环境中的最底层,几乎能够对所有正在网络上传送的数据进行拦截,因而是网络安全的一个巨大威胁。通过对网络进行嗅探,一些恶意用户能够很容易地窃取到绝密文档和敏感数据,因此网络嗅探器以前被黑客们作为网络攻击的基本手段。<br /> <br /> 任何工具有弊就有利,网络嗅探器既可以作为黑客们获得非法数据的手段,但同时对网络管理员来讲又是很重要的,因为它可以帮忙诊断出网络中大量不可见的模糊性问题,还可以用来判断是否有黑客正在攻击系统。如果网络管理员怀疑网络正在遭受攻击,通过嗅探器截获数据包可以确定正在攻击系统的是什么类型的数据包,以及它们的源头。这样就可以及时做出响应或对网络进行相应的调整,从而可以尽早避免一场灾难的发生。<br /> <br /><strong>2、安装安全工具</strong><br /> <br /> Red Hat Linux AS 4 自带了优秀的系统扫描工具 Nmap 和网络嗅探器工具Ethereal,只需在安装 Linux 系统时选择『系统工具』套件就可以安装它们了。如果不清楚当前的 Linux 系统是否安装了这两个工具,可以在命令行方式下用 rpm命令查询一下:<br /> <br /> [root@kevin ~]#rpm -qalgrep nmap<br /> nmap-3.00-4 (# 命令行模式下的系统扫描工具)<br /> nmap-frontend-3.00-4 (# 图形模式下的系统扫描工具)<br /> [root@kevin ~]#rpm -qalgrep ethereal<br /> ethereal-gnome-0.9.8-6<br /> ethereal-0.9.8.6 (# 网络嗅探器)<br /> <br /> 如果还没有安装两个系统安全工具,那就应该以 root 用户的身份登录 KDE,然后单击 KDE 主菜单,从『系统设置』菜单下选择『添加/删除应用程序』命令,当软件包管理窗口打开之后,在『系统』区域中将『系统工具』套件选中,如图8-1-1 所示。<br /> <br /></span><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-1-1.gif"><span style="color:#663366;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-1-1.png" border="0" /></span></a><span style="color:#663366;"> 图 8-1-1 安装系统工具</span></div><span style="color:#663366;"> <br /> 由于 Nmap 和 Ethereal 都是可选的软件包,因此需要单击右侧的『细节』按钮,打开『System Tools 软件包细节』窗口,在『额外软件包』区域中将『ethereal』、『ethereal-gnome』、『nmap』和『nmap-frontend』四项选中,如图 8-1-2 所示。<br /> <br /></span><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-1-2.gif"><span style="color:#663366;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-1-2.png" border="0" /></span></a><span style="color:#663366;"> 图 8-1-2 选择安全工具软件包</span></div><span style="color:#663366;"> <br /> 选择好要安装的软件包后,单击『软件包管理』窗口中的『更新』按钮,然后按照提示插入 Red Hat Linux AS 4 的安装光盘,就可以完成 Nmap 和 Ethereal软件包的安装了。<br /> <br /> Red Hat Linux AS 4 的系统扫描工具 Nmap 由 nmap-3.0-4.i386.rpm 和nmap-frontend-3.00-4.i386.rpm 两个 RPM 包组成,而网络嗅探工具 Ethereal 则由 ethereal-0.9.8-4.i386.rpm 和 ethereal-gnome-0.98-6.i386.rpm 两个 RPM包组成。<br /> <br /><strong>3、端口扫描</strong><br /> <br /> Nmap 是一个优秀的系统端口扫描工具,它可以帮助发现网络在安全性方面所存在的问题。Nmap 起初是一个黑客工具,但很快就受到系统管理员的青睐,用于以下几个方面:<br /> <br /> <strong>监视网络:</strong>使用 Nmap 可以很快地检查出网络中具有安全漏洞的计算机;<br /> <strong>检查防火墙:</strong>Nmap 可以帮助防火墙在不牺牲与外界通信的同时,确保已经阻断了那些应该阻断的数据包;<br /> <strong>测试路由器:</strong>借助 Nmap 的测试功能,管理员可以对网络中的路由器和交换机的配置进行检测。<br /> <br /> 早先的 Nmap 是一个命令行工具,要完成如此丰富的功能,其命令格式当然不会很简单,初学者掌握起来自然也不那么轻松了。现在的管理员相比之下就幸运多了,因为 Red Hat Linux AS 4 为 Nmap 提供了一个图形化的用户界面 NmapFE,可以执行 nmapfe 命令来启动它,如图 8-1-3 所示。<br /> <br /></span><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-1-3.gif"><span style="color:#663366;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-1-3.png" border="0" /></span></a><span style="color:#663366;"> 图 8-1-3 Nmap 系统端口扫描工具</span></div><span style="color:#663366;"> <br /> 要使用 Nmap 来对网络中的某台主机进行端口扫描,只需在『Host(S)』文本框中输入该主机的域名或 IP 地址,然后单击『Scan』按钮就可以了,端口扫描结果将在下面的文本框中显示出来,如图 8-1-4 所示。<br /> <br /></span><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-1-4.gif"><span style="color:#663366;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-1-4.png" border="0" /></span></a><span style="color:#663366;"> 图8-1-4扫描固定主机</span></div><span style="color:#663366;"> <br /> Nmap 会将所有它认为可能存在问题的端口都列出来,请仔细检查一下这些端口看它们是否真的需要向外界开放。Nmap 有一项很实用的功能就是能够判断某台计算机所使用的操作系统的类型,你只需在进行端口扫描前选中『General Options』区域中的『OS Detection』复选框就可以了。<br /> <br /> 你可能已经觉察到了扫描结果中只有 TCP 端口的信息,难道 Nmap 不能扫描UDP 端口吗?当然不是了,在『Scan Options』区域中可以看到 Nmap 提供的五种不同的扫描方式,其中『connect』、『SYN Stealth』、『Ping Sweep』和『FIN Stealth』都是针对 TCP 端口的,只有『UDP Port Scan』是针对 UDP 商品。要使用 Nmap 来对网络中某台主机的 UDP 端口进行扫描,首先在『Host(s)』文本框中输入该主机的域名可 IP 地址,然后在『Scan Options』区域中选择『UDP Port Scan』单选框,再单击『Scan』按钮就可以了,如图 8-1-5 所示。<br /> <br /></span><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-1-5.gif"><span style="color:#663366;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-1-5.png" border="0" /></span></a><span style="color:#663366;"> 图 8-1-5 扫描 UDP 端口</span></div><span style="color:#663366;"> <br /> 如果同时管理着网络中的多台主机,可能希望对网络中的所有主机做一次全面的端口扫描,以便发现可能存在的安全隐患。没有问题,Nmap 允许使用通配符“*”来指定要扫描的主机。假设需要对子网 218.168.100 内的所有主机进行 UDP 端口的扫描,只需在『Host (s)』文本框中输入“218.168.100.*”,然后在『Scan Options』区域中选择『UDP Port Scan』单选框,再单击『Scan』按钮就可以了,如图 8-1-6 所示。<br /> <br /></span><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-1-6.gif"><span style="color:#663366;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-1-6.png" border="0" /></span></a><span style="color:#663366;"> 图 8-1-6 扫描子网</span></div><span style="color:#663366;"> <br /> 除了可以使用通配符外,Nmap 还允许用 CIDR 表示法,对需要进行扫描的主机进行更精确的控制。CIDR 是表示子网掩码的一种新形式,它用子网掩码中“1”的个数来表示子网,比如要扫描子网 218.168.100 中的所有主机,则应在『Host(s)』文本框中输入“218.168.100.0/24”如图 8-1-7 所示。为了加快端口扫描速度,还可以在『General Options』区域中将『Fast Scan』复选框选中。<br /> <br /></span><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-1-7.gif"><span style="color:#663366;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-1-7.png" border="0" /></span></a><span style="color:#663366;"> 图 8-1-7 CIDR 表示子网</span></div><span style="color:#663366;"> <br /> 对主机中的所有端口进行一次完整的扫描,可能需要持续一段较长的时间。其实多数情况只需扫描某些特定的端口就可以了,因为黑客也只对那些特定服务(如WWW和DNS)的端口感兴趣。如果只想扫描端口号为 1 到 100 的 TCP 端口,可以在『Host(s)』文本框中输入要扫描的主机地址,然后在『Scan Options』区域中选择『SYN Stealth』单选框,最重要的当然是要在『General Options』区域中将『Range of Ports』复选框中,并在紧接着的文本框中输入端口的范围,如图 8-1-8所示。所有参数都填好后,单击『Scan』按钮,接着就可以在下面的文本框中看到端口扫描结果。<br /> <br /><strong>4、网络嗅探</strong><br /> <br /> 对 Linux 网络管理员来讲,使用嗅探器可以随时掌握网络的实际情况。当网络性能急剧下降时,可以通过嗅探器来分析原因,找出造成网络阻塞或者安全隐患的根源。正是因为嗅探器可以帮助网络管事员分析整个网络的状态、性能或故障,因而它已不再是帮助黑客们为非作歹的帮凶,而是变成了管理员手中一种不可或缺的强大工具。<br /> <br /> Linux 平台上的网络嗅探器非常多,简直可以说到了泛滥的地步,但口碑比较好的恐怕还是得数 Tcpdump。它是一个在命令行方式下运行的网络监视工具,能够截获在网卡上收到的所有数据包,并能够协助网络管理员对其中的内容进行分析。由于 Tcpdump 提供了一整套完善的规则来对截获的数据包进行过滤,因此对Linux 网络管理员来说,了解如何使用 Tcpdump 来捕获感兴趣的数据包就成了一门必修课。<br /> <br /> 如果一定要从鸡蛋里挑骨头,那么 Tcpdump 对某些人来说的确也存在一个很大的毛病,那就是没有提供图形化的用户界面。Ethereal 的出现正好解决了这一问题,它是一个基于图形用户界面的网络嗅探器,能够完成与 Tcpdump 相同的功能,但操作界面友好很多。<br /> <br /> Ethereal 和 Tcpdump 都依赖于一个名叫 pcap 的函数库所提供的功能,因此两者在很多方面非常类似,比如都使用相同的过滤规则和关键字。<br /> <br /> Ethereal 和其它图形化的网络嗅探器都使用相同的界面模式,如果能熟练地使用 Ethereal,那么其它图形用户界面的嗅探器也就不在话下了。由于需要对网卡这一硬件设备进行操作,所以必须以 root 身份执行 ethereal 命令来起动它,如图8-1-9 所示。<br /> <br /></span><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-1-9.gif"><span style="color:#663366;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-1-9.png" border="0" /></span></a><span style="color:#663366;"> 图 8-1-9 Ethereal 主界面</span></div><span style="color:#663366;"> <br /> 在用 Ethereal 从网络上截获数据包之前,应该为其设置恰当的过滤器。默认情况下 Ethereal 会捕获网络中所有的数据包,过滤规则的作用就是帮助管理员从数量众多的数据包内挑选出真正感兴趣的数据,使你不至于迷失方向。<br /> <br /> Ethereal 将过滤器分为两类:捕获过滤器(Capture Filter)和显示过滤器(Disply Filter)。当 Ethereal 在从网卡上截取数据包时,捕获过滤器将被应用,这样 Ethereal 就只会截取部分数据包。经过第一次筛选后,这些被截取的数据包要真正显示在 Ethereal 主窗口的数据包列表中,还必须满足显示过滤器的要求。捕获过滤器分别适用于不同的阶段,其语法格式也稍有不同。<br /> <br /> Ethereal 能够对过滤器进行管理,可以将它们保存到磁盘中,这样在需要时就可以随时使用。要为 Ethereal 设置捕获过滤器,单击『Edit』菜单,选择『Capture Filters』命令,打开『Edit Capture Filter List』对话框,如图8-1-10 所示。<br /> <br /></span><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-1-10.gif"><span style="color:#663366;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-1-10.png" border="0" /></span></a><span style="color:#663366;"> 图 8-1-10 管理捕获过滤器</span></div><div><span style="color:#663366;"> <br /> 此时还没有添加任何捕获过滤器,因此对话框右侧的列表框内是空的。</span></div><div><span style="color:#663366;"> <br /> Ethereal 捕获过滤器使用和 Tcpdump 相同的语法规则,Tcpdump 的过滤表达式是一个正则表达式,Tcpdump 利用它作为过滤数据包的条件。如果一个数据包满足表达式的条件,则这个数据包将会被捕获,如果不指定表达式,则在网络上任何两台主机间的所有数据包都将被截获。Tcpdump 的过滤表达式中一般有如下几种类型的关键字:</span></div><div><span style="color:#663366;"> <br /><strong>(1)类型关键字</strong></span></div><div><span style="color:#663366;"> <br /> 这类关键字用于指定主机、网络或端口,包括 host、net 和 port 三个关键字。例如,可以用“host 218.168.100.1”来标明监听的主机,用“net 218.168.100.0”来标明监听的网络,用“port 23”来标明监听的端口。如果没有在表达式中指明类型,则缺省的类型为 host。</span></div><div><span style="color:#663366;"> <br /><strong>(2)方向关键字</strong></span></div><div><span style="color:#663366;"> <br /> 这类关键字用于指定截获的方向,包括 dst、src、dst or src、dst and src四个关键字。例如,可以用“src 218.168.100.1”来指明截获的数据包中的源主机地址,用“dst net 218.168.100.0”来指明截获的数据包中的目标网络地址。如果没有在表达式中指明方向,则缺省的方向为 dst or src,即两个方向的数据包都将被捕获。对于数据链路层协议(如SLIP和PPP),使用 inbound 和 outbound 来定义方向。</span></div><div><span style="color:#663366;"> <br /><strong>(3)协议关键字</strong></span></div><div><span style="color:#663366;"> </span></div><div><span style="color:#663366;"> 这类关键字用于指定要截获的数据包所属的协议,包括 ether、fddi、tr、ip、ip6、arp、rarp、decnet、tcp、和 udp 等关键字 fddi 指明 FDDI(分布式光纤数据接口网络)上的特定网络协议,实际上它是 ether 的别名,fddi 和 ether 具有类似的源地址和目标地址,所以可以将 fddi 协议包当作 ether 的包进行分析和处理。其它几个关键字只是指定了所要截获的协议数据包。如果没有在表达式中指明协议,则所有协议的数据包都将被截获。</span></div><div><span style="color:#663366;"> </span></div><div><span style="color:#663366;"> 除了上述三种类型的关键字外,在 Tcpdump 的过滤表达式中还可以指定的一些重要关键字包括:gateway、broadcast、multicast、less、greater,这些关键安对于监听网络中的广播和多播很有帮助,详细的用法可以参考 Tcpdump 的联机手册。</span></div><div><span style="color:#663366;"> <br /> [root@kevin ~]#man tcpdump</span></div><div><span style="color:#663366;"> <br /> 在捕获过滤器的表达式中,各类关键字之间还可以通过布尔运算符来构成组合表达式,以满足实际需要。布尔运算符包括取非运算符(not或!)、与运算符(and或&&)、或运算符(or或),使用布尔运算符可以将表达式组合起来构成强大的组合条件,从而能够更好地截取真正需要的数据包。</span></div><div><span style="color:#663366;"> <br /> 一下子学了这么多过滤规则的基础知识,下面就来现学现卖一下吧!如果想要截取主机 218.168.100.1 所收到和发出的数据包,可以在『Edit Capture FilterList』窗口中的『Filter name』文本框中输入过滤规则“host 218.168.100.1”,然后在『Filter string』文本框中为该过滤规则起一个容易识别的名字,再单击『New』按钮就可以创建过滤规则了,如图 8-1-11 所示。</span></div><div><span style="color:#663366;"> </span></div><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-1-11.gif"><span style="color:#663366;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-1-11.png" border="0" /></span></a><span style="color:#663366;"> 图 8-1-11 设置过滤规则</span></div><div><span style="color:#663366;"> </span></div><div><span style="color:#663366;"> 如果想要截获主机 218.168.100.1 和主机 218.168.100.2 外所有其它主机间的 IP 数据包,可以先在『Edit Capture Filter List』窗口中的『Filter name』文本框中指定过滤规则的名字,然后在『Filter string』文本框中输入“ip host218.168.100.1 and ! 218.168.100.2”,再单击『New』按钮创建该过滤规则,如图 8-1-12 所示。</span></div><div><span style="color:#663366;"> </span></div><div><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-1-12.gif"><span style="color:#663366;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-1-12.png" border="0" /></span></a><span style="color:#663366;"> 图 8-1-12 过滤 IP 数据包</span></div><div><span style="color:#663366;"> </span></div><div><span style="color:#663366;"> 如果想要截获网络中所有 FTP(TCP端口号21)数据包,同样应该先在『Edit Capture Filter List』窗口中的『Filter name』文本框中指定过滤规则的名称,然后在『Filter string』文本框中输入“tcp port 21”,再单击『New』按钮开关创建该过滤规则,如图 8-1-13 所示。</span></div><div><span style="color:#663366;"> </span></div><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-1-13.gif"><span style="color:#663366;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-1-13.png" border="0" /></span></a><span style="color:#663366;"> 图 8-1-13 过滤 FTP 数据包</span></div><div><span style="color:#663366;"> </span></div><div><span style="color:#663366;"> 设置好所有的捕获过滤后,单击『Edit Capture Filter List』窗口中的『Save』按钮保存这些过滤器,再单击『Close』按钮关闭该对话框。除了可以设置捕获数据包时的过滤规则外,Ethereal 还允许设置显示数据包时使用的过滤规则。一个数据包只有同时满足两者才会最终显示在 Ethereal 主窗口中的数据包列表中,正是有了这样的双重过滤机制,Ethereal 能够使管理员将精力真正集中在那些关键数据包上。要为 Ethereal 设置显示过滤器,单击『Edit』菜单,选择『DisplayFilters』命令,打开『Ethereal Edit Display Filter List』对话框,如图8-1-14 所示。</span></div><div><span style="color:#663366;"> </span></div><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-1-14.gif"><span style="color:#663366;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-1-14.png" border="0" /></span></a><span style="color:#663366;"> 图 8-1-14 管理显示过滤器</span></div><div><span style="color:#663366;"> </span></div><div><span style="color:#663366;"> 最简单的显示过滤器是对属于某一特定协议的数据包进行过滤。假设只希望Ethereal 显示截获到的 IP 数据包,则可以在『Edit Display Filter List』窗口中的『Filter name』文本框中指定过滤规则的名称,然后在『Filter string』文本框中输入“ip”,再单击『New』按钮就可以创建该显示过滤规则,如图 8-1-15 所示。</span></div><div><span style="color:#663366;"> </span></div><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-1-15.gif"><span style="color:#663366;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-1-15.png" border="0" /></span></a><span style="color:#663366;"> 图 8-1-15 显示 IP 数据包</span></div><div><span style="color:#663366;"> </span></div><div><span style="color:#663366;"> 显示过滤器同样允许根据数据包中的特定信息设置过滤规则。假设只希望Ethereal 显示来自地址 218.168.100.1 的 IP 数据包,则可以单击『Add Expression』按钮,打开『Filter Express』窗口。在设置好所需要的过滤表达式后,单击『Accept』按钮确定,如图 8-1-16 所示。</span></div><div><span style="color:#663366;"> </span></div><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-1-16.gif"><span style="color:#663366;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-1-16.png" border="0" /></span></a><span style="color:#663366;"> 图 8-1-16 过滤表达式</span></div><div><span style="color:#663366;"> </span></div><div><span style="color:#663366;"> 返回到『Ethereal Edit Displya Filter List』窗口后,在『Filter name』文本框中指定过滤规则的名称,然后单击『New』按钮创建该过滤规则,如图 8-1-17 所示。</span></div><div><span style="color:#663366;"> </span></div><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-1-17.gif"><span style="color:#663366;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-1-17.png" border="0" /></span></a><span style="color:#663366;"> 图 8-1-17 显示来自特定地址的 IP 数据包</span></div><div><span style="color:#663366;"> <br /> 所有的显示过滤器都设置好后,单击『Save』按钮保存这些过滤器,再单击『Close』按钮关闭该对话框。Ethereal 能够同时维护很多个过滤器,这样网络管理员就可以很方便地根据实际需要选用不同的过滤器。例如,一个过滤器可能用于截获两个主机间的数据包,而另一个则可能用于截获 ICMP 包来诊断网络故障。</span></div><div><span style="color:#663366;"> <br /> 现在可以动手截取网络中的数据包了,单击 Ethereal 的『Capture』菜单,选择『Start』命令,打开『Capture Options』对话框。首先从『Interface』下拉框中选择要进行侦听的网络接口,然后选中『Capture packets in promiscuous mode』复选框,将网卡置于“混杂”模式,如图 8-1-18 所示。</span></div><div><span style="color:#663366;"> </span></div><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-1-18.0.gif"><span style="color:#663366;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-1-18.0.png" border="0" /></span></a><span style="color:#663366;"> 图 8-1-18 设置网卡</span></div><div><span style="color:#663366;"> <br /> 网卡被设置成混杂模式后,对接收到的每一个数据包都将产生硬件中断,以提醒操作系统处理经过该网卡的每一个数据包,这就是网络嗅探器的全部秘密。</span></div><div><span style="color:#663366;"> <br /> 如果不希望 Ethereal 转眼间就截获了成千上万个数据包,从而使自己陷入数据包的汪洋大海而无法自拔的话,那就充分利用一下刚刚设置好的捕获过滤器吧!单击『Ethereal Capture Options』窗口中的『Filter』按钮,打开『Ethereal Capture Filter』窗口,在过滤器列表中选中希望应用的过滤规则后,单击『OK』按钮确定,如图 8-1-19 所示。</span></div><div><span style="color:#663366;"> </span></div><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-1-19.gif"><span style="color:#663366;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-1-19.png" border="0" /></span></a><span style="color:#663366;"> 图 8-1-19 应用捕获过滤器</span></div><div><span style="color:#663366;"> <br /> 在『Ethereal Capture Options』窗口中,『Display options』区域内的两个选项是很重要的。如果希望每个数据包在被截获时就能够实时地显示出来,而不是在整个嗅探过程结束之后再显示所有截获的数据包,那就需要将『Update list ofpackets in real time』复选框选中。此外,如果选中『Automatic scrolling inlive capturt』复选框的话,则可以在截获数据包时自动滚屏,这样就能保证在Ethereal 主窗口的数据包列表中始终都可以看到最新截获的数据包,如图8-1-20 所示。</span></div><div><span style="color:#663366;"> </span></div><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-1-18.gif"><span style="color:#663366;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-1-18.png" border="0" /></span></a><span style="color:#663366;"> 图 8-1-20 实时更新数据包列表</span></div><div><span style="color:#663366;"> </span></div><div><span style="color:#663366;"> 单击『Ethereal Capture Options』窗口中的『OK』按钮,整个网络嗅探过程就开始了。在『Ethereal Capture』窗口中可以实时看到 Ethereal 到目前为止已经截获到的所有数据包的统计信息,如图 8-1-21 所示。单击『Stop』按钮可以终止对网络中数据包的截获。</span></div><div><span style="color:#663366;"> </span></div><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-1-21.gif"><span style="color:#663366;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-1-21.gif" border="0" /></span></a><span style="color:#663366;"> 图 8-1-21 网络嗅探</span></div><div><span style="color:#663366;"> </span></div><div><span style="color:#663366;"> 嗅探过程开始之后,所有符合捕获规则的数据包都将在 Ethereal 主窗口中的数据包列表中看到。不过可能并不是所有的数据包你都感兴趣,不有关系,此时还可以应用显示过滤器,让 Ethereal 只显示符合过滤规则的数据包。看到Ethereal 主窗口底部的『Filter』按钮了吧,单击它将打开『Displya Filter』窗口,从中可以选择将要被应用的显示过滤规则,最后单击『OK』按钮确定,如图 8-1-22 所示。</span></div><div><span style="color:#663366;"> </span></div><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-1-22.gif"><span style="color:#663366;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-1-22.png" border="0" /></span></a><span style="color:#663366;"> 图 8-1-22 应用显示过滤器</span></div><div><span style="color:#663366;"> </span></div><div><span style="color:#663366;"> 返回到 Ethereal 主窗口后,可以在窗口底部的组合框中看到选中的显示过滤器所对应的规则表达式。此时单击『Apply』按钮,Ethereal 就会再次对所有截获的数据包进行过滤,只有符合显示过滤器的数据包,才会最终在数据包列表中显示出来,如图 8-1-23 所示。</span></div><div><span style="color:#663366;"> </span></div><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-1-23.gif"><span style="color:#663366;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-1-23.png" border="0" /></span></a><span style="color:#663366;"> 图 8-1-23 过滤数据包</span></div><div><span style="color:#663366;"> <br /> 同许多 Windows 下流行的网络嗅探器类似,Ethereal 的整个窗口也被分成三个部分:最上面为数据包列表,用来显示每个数据包的总结性信息;中间为协议树,用来对选定的数据进行协议分析;最下边是以十六进制形式表示的数据包内容,用来显示数据包在物理层上传输时的最终形式。</span></div><div><span style="color:#663366;"> <br /> 有了功能如此强大的 Ethereal,网络对你来讲就没有任何秘密可言了。不管是数据的源地址、目的地址,或是其所属的协议,在 Ethereal 中都一览无余。图8-1-24 是在 Ethereal 中对一个 HTTP 包进行分析时的情景。</span></div><div><span style="color:#663366;"> </span></div><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/8-1-24.gif"><span style="color:#663366;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/8-1-24.png" border="0" /></span></a><span style="color:#663366;"> 图 8-1-24 分析 HTTP 协议包</span></div><div><span style="color:#663366;"> <br /> Ethereal 提供的图形用户界面非常友好,使用它监视网络中的每个数据包不再是一件什么难事了。正所谓知己知彼方能百战不殆,要保护好 Linux 系统,使用嗅探器掌握黑客们的行踪是你应该迈好的第一步。</span></div></div>✿☞凌锋http://www.blogger.com/profile/12644976863380733852noreply@blogger.com0tag:blogger.com,1999:blog-4171529930503643264.post-79024266949197647262006-09-24T09:39:00.000+08:002006-09-24T09:41:39.095+08:00第三节 MySQL 应用<span style="color:#000099;"> MySQL 是目前 Linux 平台上应用最广的数据库之一,它为 Per、c/c++、Java等语言提供了很好的应用接口(API),使得大多数程序员都可以使用自己熟悉的语言开发数据库应用系统。理值得一提的是,MySQL 与 Apache 和 PHP 的结合为Internet 应用提供了一个很好的解决方案,被称为开发动态网站的黄金组合。</span><br /><span style="color:#000099;"> <br /><strong>1、Apache、PHP 与 MySQL 的完美组合</strong></span><br /><span style="color:#000099;"> <br /> 目前在开发动态网站时,使用 Apache+PHP+MySQL 的组合是最受欢迎的方式,它们能够满足绝大部分应用场合的需要。</span><br /><span style="color:#000099;"> <br /> 同时管理好 Apache、PHP 和 MySQL 三者并不轻松,好在前面已经将 Apache和 PHP 配置好了,现在可以将精力全部集中在 MySQL 上。PHP 通过它的一个扩展模块来提供对 MySQL 数据的支持,该模块的 RPM 软件包 php-mysql-4.2.2-17.i386.rpm 放在 Red Hat Linux AS 4 的第二张安装光盘上,可以在命令行方式下执行下面的命令进行安装:</span><br /><span style="color:#000099;"> <br /> [root@kevin ~]#mount /dev/cdrom /mnt/cdrom/<br /> [root@kevin ~]#cd /mnt/cdrom/RedHat/RPMS/<br /> [root@kevin RPMS]#rpm -Uvh php-4.2.2-17.i386.rpm</span><br /><span style="color:#000099;"> <br /> 还记得 info.php 那个 PHP 脚本吧,打开你的浏览器并查看它,从中找到与MySQL 相关的配置信息。如果能够成功看到 MySQL 模块的配置参数,那么 PHP 引擎就已经可以支持 MySQL 数据库了!</span><br /><span style="color:#000099;"> </span><br /><span style="color:#000099;"> 现在可以在网站的文档根目录 /var/www/html/ 中创建如下的 PHP 脚本address.php 了。该脚本从 address 数据库中检索出 friend 表中的所有记录,并将其显示出来。</span><br /><span style="color:#000099;"> </span><br /><span style="color:#000099;"> 打开浏览器来测试一下吧。</span><br /><span style="color:#000099;"> <br /> Apache、PHP 和 MySQL 三者的结合为动态网站的开发提供了一个很好的解决方案,小到留言簿,大到网上商城,随时随地都不难发现它们的用武之地。作为Linux 系统管理员的你是不是已经打算在自己的网站上采用这一黄金组合了?</span>✿☞凌锋http://www.blogger.com/profile/12644976863380733852noreply@blogger.com0tag:blogger.com,1999:blog-4171529930503643264.post-9680592390478983902006-09-24T08:31:00.000+08:002006-09-24T08:48:46.353+08:00第二节 管理 MySQL<span style="color:#006600;"> MySQL 的适应性相当强,几乎可能运行在所有的 Linux 发行版上,现在又开始向 Windows 进军,相信今后 MySQL 的应用范围将越来越广。作为 Linux 数据库管理员,首要任务就是有效地管理 MySQL 服务器,为用户提供高质量的数据库服务。<br /> <br /><strong>1、安装 MySQL</strong><br /> <br /> 由于 MySQL 实在是太受欢迎了,因此许多 Linux 发行版都自带了 MySQL 服务器。对于 Red Hat Linux AS 4,只需在安装时选择『SQL数据库服务器』套件中的『mysql-server』就可以安装它了。如果暂时还不清楚当前 Linux 系统中是否安装了 MySQL 软件包,可以在命令行方式下用 rpm 命令查询一下:<br /> <br /> [root@kevin ~]#rpm -qagrep mysql<br /> mysql-server-3.23.54a-11 (# MySQL服务器软件)<br /> mysql-3.23.54a-11 (# MySQL客户端工具)<br /> mysql-devel-3.23.54a-11 (# MySQL开发包)<br /> <br /> 如果没有看到如上的输出信息,则表明在安装 Red Hat Linux AS 4 时,没有选择 MySQL 服务器套件。不要着急,还是按老办法用 root 身份登录 KDE,然后单击 KDE 主菜单,从『系统设置』菜单项下选择『添加/删除应用程序』命令,当『软件包管理』窗口打开之后,在『服务器』区域中将『SQL数据库服务器』套件选中,如图 7-2-1 所示。<br /> <br /></span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/7-2-1.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/7-2-1.png" border="0" /></span></a><span style="color:#006600;"> 图 7-2-1 安装 SQL 服务器套件</span></div><span style="color:#006600;"> <br /> 由于 MySQ L是一个可选的软件包,所以应该单击右侧的『细节』按钮,打开『SQL Database Server软件包细节』窗口,在『额外软件包』区域中将『mysql-server』项先中,如图 7-2-2 所示。<br /> <br /></span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/7-2-2.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/7-2-2.png" border="0" /></span></a><span style="color:#006600;"> 图 7-2-2 选择 MySQL 软件包</span></div><span style="color:#006600;"> <br /> 选择好要安装的软件包后,单击『软件包管理』窗口中的『更新』按钮,然后再按照提示插入安装光盘就可以完成 MySQL 软件包的安装了。<br /> <br /><strong>2、启动 MySQL</strong><br /><br /> MySQL 服务器软件包总算是安装好了,不过在正式启动 MySQL 之前,还得先完成另外一项初始化工作,那就是建立 MySQL 的授权访问表。具体的做法是在命令行方式下执行 MySQL 软件包提供的 mysql_install_db 命令:<br /> <br /> [root@kevin ~]#mysql_install_db<br /> <br /> 默认情况下,mysql_install_db 命令负责为 MySQL 服务器在/var/lib/mysql/目录下建立两个数据库:mysql 和 test(在Webmin中启动MySQL时,这两文件如果此时不存在,则也将自动生成),其中 mysql 中包含了 MySQL 运行时所依赖的基本信息,而 test 则仅仅用于测试目的。请注意妥善保护好 mysql,因为它包含了六个对 MySQL 数据库系统来说非常重要的表:user、db、host、tables_priv、columns_priv 和 func。<br /> <br /> 好了,现在就可以启动 MySQL 服务器了。打开浏览器并登录 Webmin 后,单击『服务』图标,进入服务管理页面,如图 7-2-3 所示。<br /> <br /></span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/7-2-3.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/7-2-3.png" border="0" /></span></a><span style="color:#006600;"> 图 7-2-3 管理 MySQL 服务器</span></div><span style="color:#006600;"> <br /> 单击『MySQL数据库服务器』图标,进入『MySQL数据库服务器』页面,如果此时尚未启动 MySQL 服务器,就可以通过单击『启动MySQL服务器』按钮来启动它,如图 7-2-4 所示。<br /> <br /></span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/7-2-4.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/7-2-4.png" border="0" /></span></a><span style="color:#006600;"> 图 7-2-4 启动 MySQL</span></div><span style="color:#006600;"> <br /> MySQL 数据库服务器正常启动后,就可以在 Webmin 中对其进行管理了。在『MySQL数据库』区域中可以看到 mysql_install_db 命令生成的两个数据库,而『全局选项』区域则用来对各种权限进行管理。如果想停止 MySQL 服务器,可以单击页面底部的『停止服务器』按钮,如图 7-2-5 所示。<br /><br /></span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/7-2-5.1.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/7-2-5.1.png" border="0" /></span></a><span style="color:#006600;"> 图 7-2-5 停止 MySQL</span></div><span style="color:#006600;"> <br /> 如果当前的 Linux 系统是专门作为数据库服务器使用,那就要将其设置成开机时自动启动。首先单击 Webmin 的『系统』图标,进入系统管理页面,然后单击『引导和关机』图标,打开『引导和关机』页面,在列表中找到 MySQL 服务,如图7-2-6 所示。<br /> <br /></span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/7-2-6.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/7-2-6.png" border="0" /></span></a><span style="color:#006600;"> 图 7-2-6 管理 MySQL 服务</span></div><span style="color:#006600;"> <br /> 单击『mysqld』链接,进入『编辑操作』页面。在『引导时启动』区域中选择『是』单选框,就可以在系统启动时自动控制运行 MySQL 服务器了,如图 7-2-7所示。<br /></span><br /><p align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/7-2-7.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/7-2-7.png" border="0" /></span></a><span style="color:#006600;"> 图 7-2-7 开机自动启动 MySQL</span></p><p><span style="color:#006600;"> MySQL 服务器的确已经启动了,可是怎么知道它是否正常工作了?所以还得先测试一下。对 MySQL 服务器的测试可以按下面的三个步骤进行。</span></p><p><strong><span style="color:#006600;">步骤一:证实服务器正常运行</span></strong></p><p><span style="color:#006600;"> MySQL 服务器软件包中有一个管理程序 mysqladmin,使用它可以测试 MySQL服务器当前运行状态。</span></p><p><span style="color:#006600;"> [root@kevin ~]#mysqladmin status<br /> Uptime: 2128 Threads: 1 Questions: 7 Slow queries: 0 Opens: 6 Flush tables: 1 Open tables: 0 Queries per second avg: 0.003</span></p><p><span style="color:#006600;"> <strong>输出信息的个体含义如下:</strong></span></p><p><span style="color:#006600;"> <strong>Threads:</strong>与 mysqld 相互作用的线程数<br /> <strong>Questions:</strong>mysqld 执行的 SQL 查询数<br /> <strong>Slow queries:</strong>超过 long_query_time(mysqld的一个配置参数)的查询数<br /> <strong>Opens:</strong>自从启动以来,mysqld 打开的表数<br /> <strong>Flush tables:</strong>执行刷新、重载、更新命令的次数<br /> <strong>Open tables:</strong>mysqld 当前打开的表数</span></p><p><span style="color:#006600;"> 如果当前 MySQL 服务器无法正常工作,那么将看到类似下面的输出信息:</span></p><p><span style="color:#006600;"> [root@kevin ~]#mysqladmin status mysqladmin: connect to server at 'localhost' failed ......</span></p><p><strong><span style="color:#006600;">步骤二:证实服务器可关闭</span></strong></p><p><span style="color:#006600;"> 一个运行良好的 MySQL 服务器不仅可以正常启动,还应该在需要时可以被顺利关闭。执行下面的命令可以测试 MySQL 服务器是否能够被正常关闭:</span></p><p><span style="color:#006600;"> [root@kevin ~]#mysqladmin shutdown</span></p><p><span style="color:#006600;"> MySQL 服务器关闭之后,可以用下面的命令查看 MySQL 是否被关闭了:</span></p><p><span style="color:#006600;"> [root@kevin ~]#mysqladmin ping</span></p><p><span style="color:#006600;"> mysqladmin:connect to server at "localhost" failed</span></p><p><span style="color:#006600;"> errot: 'can't connect to local MySQL server through sochet'/var/lob/mysql/mysql.sock' (2)'</span></p><p><span style="color:#006600;"> Check that mysqld is running and that the socket:'/var/lob/mysql/mysql.sock' exits!</span></p><p><strong><span style="color:#006600;">步骤三:功能测试</span></strong></p><p><span style="color:#006600;"> 重新启动 MySQL 服务器后,就可以对其进行功能性测试了。首先用 mysqlshow命令查看 MySQL 服务器中现有的数据库:</span></p><p><span style="color:#006600;"> [root@kevin ~]#mysqlshow</span></p><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/7-2-8.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/7-2-8.png" border="0" /></span></a><span style="color:#006600;"> 图 7-2-8 查看现有数据库</span></div><span style="color:#006600;"> <br /> 数据库 mysql 和 test 是 mysql_install_db 命令在进行数据库初始化时所建立的。关系型数据库是由二维表格组成的,如果想知道数据库 mysql 中所包含的表,同样可以用 mysqlshow 命令:<br /> <br /> [root@kevin ~]#mysqlshow mysql<br /> <br /></span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/7-2-9.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/7-2-9.png" border="0" /></span></a><span style="color:#006600;"> 图 7-2-9 查看数据库中的表</span></div><span style="color:#006600;"> <br /> 最能说明问题的当然还是用 SQL,直接同 MySQL 数据库服务器对话了。没问题,只要使用 mysql 命令就可以达到目的了:<br /> <br /> [root@kevin ~]#mysql -e "SELECT host,db,user FROM db" mysql<br /> <br /></span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/7-2-10.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/7-2-10.png" border="0" /></span></a><span style="color:#006600;"> 图 7-2-10 查看表中的数据</span></div><span style="color:#006600;"> <br /> 如果 MySQL 服务器能够顺利通过以上严格的测试,那就说明它的确已经准备好,下面就可以放心的使用了。<br /> <br /><strong>3、数据库管理</strong><br /> <br /> 既然 MySQL 是一个数据库系统,那管理员的任务自然就是管理好大大小小的各个数据库了。使用 mysqladmin 命令或者通过 mysql 这一客户端工具来执行 SQL语句都可以对 MySQL 数据库进行管理,但更便捷的方法仍是使用 Webmin。在『MySQL 数据库服务器』页面的『MySQL数据库』区域中,可以很方便地对数据库进行管理,如图 7-2-11 所示。<br /> <br /></span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/7-2-11.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/7-2-11.png" border="0" /></span></a><span style="color:#006600;"> 图 7-2-11 管理数据库</span></div><span style="color:#006600;"> <br /> 如果要创建一个新的数据库,可以先单击『创建新的数据库』链接,进入『创建数据库』页面,然后在『数据库名』文本框中输入要创建的数据库名称,再单击『新建』按钮就可以了,如图 7-2-12 所示。<br /><br /></span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/7-2-12.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/7-2-12.png" border="0" /></span></a><span style="color:#006600;"> 图 7-2-12 创建数据库</span></div><span style="color:#006600;"> <br /> 数据库创建成功之后,就可以在『MySQL数据库服务器』页面中找到它所对应的图标了,如图 7-2-13 所示。之后再对该数据进行的任何操作,就都可以通过它来完成。<br /> <br /></span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/7-2-13.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/7-2-13.png" border="0" /></span></a><span style="color:#006600;"> 图 7-2-13 新创建的数据库</span></div><span style="color:#006600;"> <br /> 单击刚刚创建的数据库所对应的图标,进入『编辑数据库』页面。有创建当然就有删除了,单击『删除数据库』按钮可以将该数据库删除,如图 7-2-14 所示。注意,删除数据库意味着将丢失其中的所有数据,所以千万三思而后行。<br /> <br /></span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/7-2-14.0.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/7-2-14.0.png" border="0" /></span></a><span style="color:#006600;"> 图 7-2-14 删除数据库</span></div><span style="color:#006600;"> <br /> 数据库的职责是对数据进行有效的管理,将所有的数据都一古脑儿堆放在数据库里可不是修好办法,必须分门另类进行恰当的组织,才不至于需要时找不到。关系型数据库组织数据的方法是使用二维表格,除了创建数据库之外,管理员还得在数据库中维护一些真正用来存放数据的表格,之后才能利用数据库来存放自己的数据。<br /> <br /> 要在数据库中创建一个表,首先在『编辑数据库』页面中的『字段』文本框中输入所要创建的表格列数,然后单击『新建一个表』按钮来创建表格,如图 7-2-15 所示。<br /></span><br /><p align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/7-2-14.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/7-2-14.png" border="0" /></span></a><span style="color:#006600;"> 图 7-2-15 创建表格</span></p><p><span style="color:#006600;"> 进入『创建表』页面后,首先在『表名』文本框中输入表格的名称,然后在『初始字段』区域为表格中的各个字段设置恰当的属性,最后单击『新建』按钮,在当前数据库中创建一个表,如图 7-2-16 所示。</span></p><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/7-2-16.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/7-2-16.png" border="0" /></span></a><span style="color:#006600;"> 图 7-2-16 表格选项</span></div><span style="color:#006600;"> <br /> 使用 Webmin 来管理数据库中的表也很简单,在『编辑数据库』页面中不难找到新创建的表所对应的图标,如图 7-2-17 所示。通过它可以很方便地修改数据表的各种属性。<br /> <br /></span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/7-2-17.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/7-2-17.png" border="0" /></span></a><span style="color:#006600;"> 图 7-2-17 数据表属性</span></div><span style="color:#006600;"> <br /> 单击表格对应的图标,进入『编辑数据表』页面,数据表中各个列的属性在这里都可以看到,如图 7-2-18 所示。需要时可以对表中字段的名称、属性等进行修改。<br /> <br /></span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/7-2-18.0.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/7-2-18.0.png" border="0" /></span></a><span style="color:#006600;"> 图 7-2-18 数据表属性</span></div><span style="color:#006600;"> <br /> 单击要修改的字段所对应的链接,进入『修改字段』页面,此时可以重新设置字段名或数据类型,另外还可能指定该字段是否允许空值,是否对大小写敏感等,如图 7-2-19 所示。字段属性设置好后,单击『保存』按钮即可。<br /> <br /></span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/7-2-19.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/7-2-19.png" border="0" /></span></a><span style="color:#006600;">图 7-2-19 修改字段</span></div><span style="color:#006600;"> <br /> 在修改数据库中的表时,如果改变了字段的数据类型,可能将导致数据的丢失,所以最好在建表时就确定好整个表的结构,不到万不得已最好不要对数据表的结构进行修改。<br /> <br /> MySQL 允许你在创建数据表之后,再为其添加额外的字段,如果一开始设计数据表时没有考虑周到,这一功能可就帮上大忙了。在『编辑数据表』页面中的类型下拉框中为要添加的字段选择好数据类型,然后单击『增加字段,类型为』按钮,就可以为数据表添加一个新的字段,如图 7-2-20 所示。<br /> <br /></span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/7-2-18.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/7-2-18.png" border="0" /></span></a><span style="color:#006600;"> 图 7-2-20 添加字段</span></div><span style="color:#006600;"> <br /> 此时将进入『增加字段』页面,在『字段参数』区域中设置好字段的名称、类型宽度、缺省值、主键等属性后,如图 7-2-21 所示,单击『新建』按钮,一个新的字段就被添加到数据表中了。<br /> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/7-2-21.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/7-2-21.png" border="0" /></span></a><span style="color:#006600;"> 图 7-2-21 设置字段属性</span></div><span style="color:#006600;"> <br /> 现在数据库创建好了,数据库中的表结构也已经定义好了,下面自然就是往表中添加数据了,这才是真正应该关心的东西。单击『编辑数据表』页面中的『查看数据』按钮,打开『表数据』页面,由于还没有往数据库里添加任何数据,所以当然是什么也没有了,如图 7-2-22 所示。<br /> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/7-2-22.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/7-2-22.png" border="0" /></span></a><span style="color:#006600;"> 图 7-2-22 查看数据</span></div><span style="color:#006600;"> <br /> 单击『增加行』按钮,打开『表数据』页面。在为数据表中的各个安段输入恰当的值后,单击『保存』按钮,就可以入数据表中添加一条记录,如图 7-2-23 所示。<br /> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/7-2-23.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/7-2-23.png" border="0" /></span></a><span style="color:#006600;"> 图 7-2-23 添加记录</span></div><span style="color:#006600;"> <br /> 以前的 MySQL 数据库管理员只能通过命令行的方式,或者编写相应的程序才能完成对数据库的操作,实现记录的添加、修改和删除。现在有了 Webmin 的帮助可就好多了,只需在『表数据』页面中选择所要修改或删除的记录,然后单击『编辑选择的行』或『删除选择的行』,就可以轻轻松松完成对表格的管理,如图7-2-24 所示。很显然,Webmin 将数据库管理员从冗长的 SQL 语句中解放出来了。<br /> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/7-2-24.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/7-2-24.png" border="0" /></span></a><span style="color:#006600;"> 图 7-2-24 管理记录</span></div><span style="color:#006600;"> <br /> 有经验的数据库管理员总会在必要时对数据库进行备份,也就是将数据库中所有信息保存下来,这样如果数据库发生意外时,就不至于手足无措了。单击『表数据』页面底部的『回到数据表列表』链接,返回到『编辑数据库』页面,现在单击『Backup Database』按钮就可以对数据库进行备份,如图 7-2-25 所示。</span><br /><p align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/7-2-25.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/7-2-25.png" border="0" /></span></a><span style="color:#006600;"> 图 7-2-25 备份数据库</span></p><p><span style="color:#006600;"> 此时将进入『Backup Database』页面,首先在『Database backup options』区域中的『Backup to file』文本框中输入用来保存备份的文件路径,然后在『Add drop table statements to backup』区域中选择『是』单先框,再单击『Backup Now』按钮就可以完成数据库的备份,如图 7-2-26 所示。</span></p><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/7-2-26.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/7-2-26.png" border="0" /></span></a><span style="color:#006600;"> 图 7-2-26 设置备份文件</span></div><span style="color:#006600;"> <br /> 完成对数据库的备份后,管理员就可以高枕无忧了,因为即使数据库遭到毁灭性的破坏,也可以将其瞬间恢复过来,所以千万注意要保护好数据库备份文件(备份文件最好备份到其它的机器、硬盘、光盘可磁带机上)。在『编辑数据库』页面中虽然找不到专门用来恢复数据库的按钮,但单击『执行SQL』按钮可以开始数据库的恢复操作,如图 7-2-27 所示。<br /> <br /></span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/7-2-27.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/7-2-27.png" border="0" /></span></a><span style="color:#006600;"> 图 7-2-27 执行 SQL 来恢复数据库</span></div><span style="color:#006600;"> <br /> 此时将进入『执行SQL』页面,在『Select SQL commands file to cxecute on database address』区域中选择『From local file』单选框,然后在随后的文本框中输入数据库备份文件所在的路径,再单击『执行』按钮就可以完成数据库的恢复。<br /> <br /><strong>4、权限管理</strong><br /> <br /> 在数据库中存放的数据往往都是很重要的,如果任何人都可以随意对它进行修改,那将造成严重的后果。正因如此,权限管理是数据管理员日常工作的重中之重。MySQL 数据库服务器的存取管理功能非常强大,而且比 PostgreSQL 要灵活的多。<br /> <br /> MySQL 主要是通过用户连接数据库时的身份认证和对数据库操作时的权限设置,来完成对数据库的保护。在『MySQL数据库服务器』页面的『全局选项』区域中,可以对 MySQL 支持的各种权限进行管理,如图 7-2-29 所示。<br /> <br /></span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/7-2-5.0.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/7-2-5.0.png" border="0" /></span></a><span style="color:#006600;"> 图 7-2-29 权限管理</span></div><span style="color:#006600;"> <br /> 单击『用户权限』图标,进入『用户权限』页面,在这里可以对 MySQL 用户进行管理。首先要注意的是,MySQL 用户和 Linux 系统用户之间没有任何联系。初始时 MySQL 服务器中只有两个用户:root 和匿名用户,它们都是由mysql_install_db 命令创建的,如图 7-2-30 所示。<br /> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/7-2-30.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/7-2-30.png" border="0" /></span></a><span style="color:#006600;"> 图 7-2-30 MySQL 用户</span></div><span style="color:#006600;"> <br /> MySQL 服务器的 root 用户具有最高的控制权,但没有密码,并且只能从本机登录。匿名用户对地址数据库或以“test_”开头的数据库具有完全的控制权,但无权访问其它数据库。<br /> <br /> 要添加 MySQL 用户,可以单击『用户权限』页面中的『创建新用户』链接,进入『创建用户』页面。在『MySQL用户详情』区域中设置好用户名、口令、主机和权限后,单击『保存』按钮就可以添加一个新的 MySQL 用户,如图 7-2-31 所示。<br /> <br /></span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/7-2-31.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/7-2-31.png" border="0" /></span></a><span style="color:#006600;"> 图 7-2-31 创建 MySQL 用户</span></div><span style="color:#006600;"> <br /> 在『主机』区域中应该输入允许用户从哪些主机登录 MySQL 服务器,可以是IP 地址或域名。如果允许多个地址,则可以使用通配符%,如 218.168.100.% 和%.mylinux.org。<br /> <br /> 表 7-2-1 列出了可以被 MySQL 支持的权限,管理员的职责就是为用户分配恰当的权限。<br /></span><br /><div align="center"><span style="color:#006600;"> <br />表 7-2-1 用户权限</span></div><span style="color:#006600;"> <br /> 权限 范围 描述<br /> SELECT 表 允许用户在表上执行选择操作<br /> INSERT 表 允许用户在表上执行插入操作<br /> UPDATE 表 允许用户在表上执行更新操作<br /> DELETE 表 允许用户在表上执行删除操作<br /> INDEX 表 允许用户创建和删除表索引<br /> ALTER 表 允许用户在表上执行 ALTERE 命令<br /> CREATE 数据库、表或索引 允许用户创建新的数据库或表<br /> DROP 数据库或表 允许用户删除现有的数据库或表<br /> GRANT 数据库或表 允许用户将自己的权限再赋予其它用户<br /> RELOAD 服务器管理 允许用户执行 mysqladmin 的下列命令:<br /> reload、refresh、flush-privileges、<br /> flush-hosts、flush-logs、flush-tables<br /> SHUTOWN 服务器管理 允许用户执行 mysqladmin 的 shutdown 命令,<br /> 关闭 MySQL 服务器<br /> PROCESS 服务器管理 允许用户执行 mysqladmin 的 processlist 和<br /> shutdown 命令管理 MySQL 进程<br /> FILE 访问服务器文件 允许用户读写 MySQL 服务器上的文件<br /> <br /> 为 MySQL 用户赋予恰当的权限是很有讲究的,一般只允许管理员才有权关闭数据库、刷新权限表等。普通用户则只拥有 SELECT、INSERT、DELETE 和 UPDATE 权限,管理员应该为他们赋予尽可能少的权限,以免造成不必要的麻烦。<br /> <br /> 单击『用户权限』页面底部的『回到数据库列表』链接,重新回到『MySQL数据库服务器』页面,然后单击『数据库权限』图标,进入『数据库权限』页面。除了可以为用户分配恰当的权限外,MySQL 管理员还可以为每个数据库分别指定恰当的权限,如图 7-2-32 所示。根据实际需要分别为每个数据库指定恰当的权限,可以更好地保护好数据库中的数据。<br /> <br /></span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/7-2-32.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/7-2-32.png" border="0" /></span></a><span style="color:#006600;"> 图 7-2-32 数据库权限</span></div><span style="color:#006600;"> <br /> 单击『创建新的数据库权限』链接,进入『创建数据库』权限页面。首先在『数据库权限选项』区域的『数据库』中选择要进行权限管理的数据库,然后在『用户名』和『主机』中指定允许对数据库进行操作的 MySQL 用户和主机地址,最后在权限列表中选择恰当的权限,如图 7-2-33 所示。<br /> <br /></span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/7-2-33.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/7-2-33.png" border="0" /></span></a><span style="color:#006600;"> 图 7-2-33 创建数据库权限</span></div><span style="color:#006600;"> <br /> 在为数据库选择权限时还是同样的原则——只赋予必要的权限。在为数据库设置好权限后,单击『保存』按钮确定。<br /> <br /> 单击『数据库权限』页面底部的『回到数据库列表』链接,返回到『MySQL数据库服务器』页面,然后再单击『主机权限』图标,你就可以对允许访问 MySQL 服务器的主机进行设置了,如图 7-2-34 所示。<br /> <br /></span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/7-2-34.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/7-2-34.png" border="0" /></span></a><span style="color:#006600;"> 图 7-2-34 主机权限</span></div><span style="color:#006600;"> <br /> 通过限制能够访问 MySQL 服务器的主机,可以有效地拒绝某些非法访问的请求,MySQL 默认情况下没有定义权限。<br /> <br /> 要定义新的主机权限,单击『主机权限』页面中的『创建新的主机权限』链接,进入『创建主机权限』页面。在『主机权限选项』区域中设置好允许访问的数据库、主机和权限后,再单击『保存』按钮就可以了,如图 7-2-35 所示。</span><br /><p align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/7-2-35.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/7-2-35.png" border="0" /></span></a><span style="color:#006600;"> 图 7-2-35 创建主机权限</span></p><p><span style="color:#006600;"> 通常来说,设置好用户权限、数据库权限和主机权限就可以应付绝大多数场合的需要了,但 MySQL 提供的权限管理机制还允许在表和字段一级设置权限,如图7-2-36 所示。</span></p><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/7-2-5.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/7-2-5.png" border="0" /></span></a><span style="color:#006600;"> 图 7-2-36 表权限和字段权限</span></div><span style="color:#006600;"> <br /> 要为数据库中的表设置访问权限,可以单击『表权限』图标进入『表权限』页面,在下拉框中选择好表所在的数据库后,单击『在数据库中增加新权限』按钮,就可以创建新的表权限,如图 7-2-37 所示。</span><br /><span style="color:#006600;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/7-2-37.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/7-2-37.png" border="0" /></span></a><span style="color:#006600;"> 图 7-2-37 新建表权限</span></div><span style="color:#006600;"> <br /> 此时将进入『创建表权限』页面,在『表权限选项』区域的『表』、『用户名』和『主机』中指明将要被赋予访问权限的表、用户名和允许的主机后,再在『表权限』和『字段权限』中选择恰当的权限,最后单击『保存』按钮就可以创建该表权限了,如图 7-2-38 所示。</span><br /><span style="color:#006600;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/7-2-38.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/7-2-38.png" border="0" /></span></a><span style="color:#006600;"> 图 7-2-38 表权限设置</span></div><span style="color:#006600;"> <br /> 这段是数据库结构中最小的单击,MySQL 居然可以将对数据的访问权限精确到这一级别,的确令人佩服。在『MySQL数据库服务器』页面中单击『字段权限』图标,进入『字段权限』页面,在下拉框中选择好字段所在的数据表后,单击『在数据库和表中增加新权限』按钮可以创建新的字段权限,如图 7-2-39 所示。</span><br /><span style="color:#006600;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/7-2-39.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/7-2-39.png" border="0" /></span></a><span style="color:#006600;"> 图 7-2-39 新建字段权限</span></div><span style="color:#006600;"> <br /> 此时将进入『创建字段权限』页面,在『字段』、『用户名』和『主机』中指明将要被赋予访问权限的表字段、用户名和允许的主机后,现从『权限』列表中为该字段选择合适的权限,最后单击『保存』按钮就可以创建该字段权限了,如图7-2-40 所示。</span><br /><span style="color:#006600;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/7-2-40.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/7-2-40.png" border="0" /></span></a><span style="color:#006600;"> 图 7-2-40 字段权限设置</span></div><span style="color:#006600;"> <br /><strong>5、MySQL 客户端工具</strong></span><br /><span style="color:#006600;"> <br /> 管理 MySQL 客户端工具的软件有很多,笔者认为 MySQL_Front 是一款不错的软件。关于 MySQL_Front 笔者在《PHP_&_MySQL无需编程轻松创建数据库网站》一书中已做过详细介绍,如需要就查阅该书。</span><br /><span style="color:#006600;"> <br />下载地址:</span><a href="http://abcmmm.googlepages.com" target="_blank"><span style="color:#006600;">http://abcmmm.googlepages.com</span></a>✿☞凌锋http://www.blogger.com/profile/12644976863380733852noreply@blogger.com0tag:blogger.com,1999:blog-4171529930503643264.post-52577842831241305142006-09-24T08:26:00.001+08:002008-06-15T22:11:56.005+08:00第七章 数据库服务<span style="color: rgb(102, 102, 0);"> 现在不会再有人怀疑数据库的重要性了,Linux 平台下可供选择的数据库有很多种,既有商业化的数据库产品,也有自由的免费数据库系统。千万不要以为免费的就是质量差的代名词,事实上许多免费的数据库系统的性能指标甚至比商业化数据库还好。利用它们同样可以构造性能优良、安全高效的数据库应用系统。除了性能之外,如果还很关心成本,那么 MySQL、PostgreSQL 这类免费的数据库软件肯定是你不二的选择。</span><br /><div align="center"><span style="color: rgb(102, 102, 0);"> <br /><strong>第一节 数据库系统与 SQL</strong></span></div><span style="color: rgb(102, 102, 0);"> <br /> 做一名数据库管理员可不是一件轻松的事,成为一名优秀的数据库管理员就更难了,这是因为数据库管理涉及许多方面,要求有相当深厚的知识背景。什么是数据库?什么是数据库系统?什么是 SQL?什么是结构化查询?如果这一切都还似懂非懂,那就一起来进行一次上岗前的基本培训吧!</span><br /><span style="color: rgb(102, 102, 0);"> <br /><strong>1、数据库系统</strong></span><br /><span style="color: rgb(102, 102, 0);"> <br /> 数据库系统简单地说就是具有数据存储与处理能力的计算机应用系统。它是一个能处理种类数据的大管家,负责对数据进行统一的保存、更新和查询。一个完整的数据库系统包含两个部分,即数据库和数据库管理系统,前者指的就是数据库中所储存的数据(通常是具有特定结构的文件),而后者则是用来处理这些数据并管理整个系统的应用程序。</span><br /><span style="color: rgb(102, 102, 0);"> </span><br /><span style="color: rgb(102, 102, 0);"> 虽然目前存在的数据库系统有很多种,但真正实用的还得算关系型数据库。关系型数据库以二维矩阵构成的表格来存储数据,每笔数据称为一条记录,而每条数据一般又分成多个字段。借助表格中“行”与“列”的关系,可以很轻松地获得真正所需的数据,如表 7-1-1 所示。</span><br /><div align="center"><span style="color: rgb(102, 102, 0);"> <br /><strong>表 7-1-1 通讯录</strong></span></div><div align="left"><span style="color: rgb(102, 102, 0);"> <br /> Name City Telephone ID</span></div><div align="left"><span style="color: rgb(102, 102, 0);"> kevin Abc 123456789 1</span></div><div align="left"><span style="color: rgb(102, 102, 0);"> erica Abc 123456789 2</span></div><div align="left"><span style="color: rgb(102, 102, 0);"> <br /> 在表 7-1-1 所示的表格中,假设要找到“kevin”所在的城市,可以由横向的“kevin”记录与纵向的“City”字段的关系相交而得。说穿了,关系型数据库就是由多个二维表格所组成的有机系统,只不过这些表格这间存在着各种各样的关系罢了。当然,这些关系可能很简单,也可能很复杂。</span></div><div align="left"><span style="color: rgb(102, 102, 0);"> </span></div><div align="left"><strong><span style="color: rgb(102, 102, 0);">2、SQL 服务器</span></strong></div><div align="left"><span style="color: rgb(102, 102, 0);"> <br /> 结构化查询语言(Structured Query Language,SQL)是目前各种关系型数据库系统采用的一种通信标准,它使得管理员可以与数据库服务器进行有效的沟通,来获得真正感兴趣的数据。可不要被 SQL 名称中的“查询”两个字给蒙蔽了,以为它只能用来查询数据,事实上对数据库的添加、删除、修改等操作,也都可以通过SQL 来完成。</span></div><div align="left"><span style="color: rgb(102, 102, 0);"> <br /> SQL 最早源自 IBM 公司开发的 DB2 数据库系统,后来经美国国家标准组织(ANSI)和国际标准组织(ISO)的推动,开始被广泛地使用在关系型数据库系统之中。由于 SQL 的广泛应用,以至于许多数据库产品为了强调本身具有的 SQL 功能,都纷纷在名称中加上 SQL 几个字,最明显的莫过于 Microsoft 公司推出的 SQL Server 了。具有 SQL 执行能力的数据库系统常常被人们简称为 SQL 服务器。</span></div><div align="left"><span style="color: rgb(102, 102, 0);"> <br /> Red Hat Linux AS 4 自带了两个非常优秀的 SQL 服务器:PostgreSQL 和 MySQL。</span></div><div align="left"><span style="color: rgb(102, 102, 0);"> <br /> PostgreSQL 是一个优秀的对象关系型(object-relational)数据库系统,以关系型数据库的设计为基础,支持绝大多数 SQL 特性,包括子查询、事物处理以及用户自定义数据库类型等,并且是一种完全免费的数据库系统,许多 Linux 发行版都将其作为首选的 SQL 服务器。</span></div><div align="left"><span style="color: rgb(102, 102, 0);"> <br /> 相比之下,MySQL 是一个小型的多用户、多进程的 SQL 服务器,管理起来简单方便,因此适合于普通的应用场合,难怪许多 Linux 数据库管理员都对它情有独钟。</span></div><div align="left"><span style="color: rgb(102, 102, 0);"> </span></div><div align="left"><strong><span style="color: rgb(102, 102, 0);">3、认识 MySQL</span></strong></div><div align="left"><span style="color: rgb(102, 102, 0);"> <br /> MySQL 目前在 Linux 操作系统上非常流行,它是一个真正意义上的多用户、多线程,并完全符合 SQL 标准的关系型数据库服务器。它提供了一个很好的客户机/服务器解决方案,不仅包含基本的服务器和客户机软件,还提供了 Perl 等语言的接口和用于 Windows 平台的 ODBC 驱动程序。MySQL 的最大魅力在于它是免费的自由软件,能和其它重量级的自由软件如 Apache 服务器、PHP 动态页面编程语言等紧密结合,从而成为架设动态网站的黄金组合。</span></div><div align="left"><span style="color: rgb(102, 102, 0);"> <br /> MySQL 最主要的特点是快速、健壮、易用,其目标是提供一个在普通的硬件设备上能快速处理海量数据的 SQL 服务器。MySQL 依赖的是一组经过多年严格测试的程序,虽然它们仍处在发展阶段,但已经是一个能提供丰富功能的实用系统了。曾经有人使用 MySQL 处理了 10,000 个表格,其中有 500 个表格存有超过 700 万条的记录,数据总量达到 100GB,这对一个免费的 SQL 服务器软件来讲是非常难得的。</span></div><div align="left"><span style="color: rgb(102, 102, 0);"> <br /> 尽管 MySQL 还有一些 SQL 的高级特性没有实现,但在一般应用场合下,特别是在那些速度要求很快但功能要求不是很高的 Web 应用中,MySQL 可以算是最佳的选择。</span></div>✿☞凌锋http://www.blogger.com/profile/12644976863380733852noreply@blogger.com0tag:blogger.com,1999:blog-4171529930503643264.post-30060820920206156132006-09-23T17:40:00.000+08:002006-09-23T17:45:55.342+08:00第四节 动态网站的开发<span style="color:#660000;"> 在 Internet 上有许多交互式的网站,如留言簿、同学录、网上购物等,这些动态效果仅仅依靠 FrontPage、Dreamweaver 等网页制作软件软件所产生的 HTML页面是较难以实现的,必须采用动态网站开发技术。用 Perl 开发 CGI 程序是比较古老的一种做法,并且其怪异的语法令许多初学者望而却步,不过救世主总算出现了,那就是 PHP。</span><br /><span style="color:#660000;"> <br /><strong>1、认识 PHP</strong></span><br /><span style="color:#660000;"> <br /> 早期 WWW 服务器所使用的 HTML 语言功能十分有限,只能描述简单的内容,难以进行复杂的信息处理,尤其是无法满足 Web 数据库的处理要求。为此人们绞尽脑汁想了很多解决办法,其中 SSI(Server Side Include)技术在目前被认为是一种较好的解决方案。</span><br /><span style="color:#660000;"> <br /> SSI 说得简单些其实只是一种 WWW 服务器可以识别和理解的脚本,通常将其嵌入到 HTML 页面中,当客户端浏览器在请求这种特殊的网页时,WWW 服务器会对SSI 脚本进行解释,执行相应的动作,并将执行结果输出到最后返回给浏览器的HTML 页面中,从而实现动态效果。</span><br /><span style="color:#660000;"> <br /> 举个简单的例子帮助理解一下,当你登录某个网站时,位于 WWW 服务器端的一段代码 SSI 脚本被激活,它首先获得系统当前时间,然后根据结果判断出现在是上午、下午或者晚上,最后依据判断结果动态生成 HTML 页面给客户端浏览器。这就不难解释为什么你在一天中的不同时刻访问一些网站时,会看到诸如“早上好”、“下午好”、“晚上好”这样不同的欢迎信息。</span><br /><span style="color:#660000;"> </span><br /><span style="color:#660000;"> 实现 SSI 的方式有很多种,PHP 是在 Linux 平台下较为流行的一种,其功能十分强大,许多大型的商业网站都是采用 PHP 开发的。PHP 早期的版本只是一个简单的个人主页制作工具,仅包括一个可以解释几条指令的分析引擎和一组用于信息反馈的工具(如留言簿、计算器等)。1995年,PHP 创始人 Rasmus 重写了整个解释器,将个人主页工具、表单集成工具组合在一起,并加入了对 mSQL 数据库的支持,这样就有了 PHP/FI2.0。</span><br /><span style="color:#660000;"> <br /> 到了1997年,PHP 从作者的个人爱好成功地转变为一个有组织的集体活动,整个解释器被重写,形成了 PHP3 的雏形,此时已经有大量的商业化产品(如C2的StrongHold Web Server)开始捆绑 PHP/FI 或 PHP3。</span><br /><span style="color:#660000;"> <br /> 当 PHP3 在自由发展的同时,Zend 公司重写了 PHP 的核心引擎,大大提高了PHP3 的执行效率,这就是现在仍广泛使用的 PHP4。经过优化的 PHP4 执行速度更快,一点也不比传统的 CGI 或 Microsoft 的 ASP 差,更重要的是它还有更多更好的新功能和更丰富的函数库。无论你接不接受,PHP 无疑都将在 CGI 领域中掀起一场新的革命。好了,现在我们就一起开始 PHP 这段愉快的旅程吧。</span><br /><span style="color:#660000;"> <br /> PHP 实际上是一种解释性的程序设计语言,虽然也能够作为一门单独的语言使用,但更深常见的做法还是将其嵌入到 HTML 网页中,作为开发动态网站的一种方法。下面是一个最简单的 PHP 脚本 test.php:</span><br /><span style="color:#660000;"> </span><br /><span style="color:#660000;"> 上页的 PHP 脚本中只有几行有用,其它的都是标准的 HTML 语法。PHP 中的echo 函数类似于 C 语言中的 printf 函数,用于内容的输出,Apache 负责截取PHP 输出信息,并将其插入到 HTML 页面中,这就是 PHP 能够产生动态页面的基本方法。脚本 test.php 经 Apache 处理后将变成类似如下的 HTML 页面:</span><br /><span style="color:#660000;"> </span><br /><span style="color:#660000;"> 客户端浏览器负责将最终生成的 HTML 页面显示出来,如图 6-4-1 所示。由于PHP 代码的解释和执行是在 Apache 服务器上完成的,因此客户端浏览器只要能处理普通的 HTML 页面就可以了。</span><br /><span style="color:#660000;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-4-1.gif"><span style="color:#660000;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-4-1.png" border="0" /></span></a><span style="color:#660000;"> 图 6-4-1 PHP 页面浏览效果</span></div><span style="color:#660000;"> </span><br /><strong><span style="color:#660000;">2、搭建 PHP 运行环境</span></strong><br /><br /><span style="color:#660000;"> Apache 和 PHP 简直可以算得上是天作之合。一方面 PHP 可以扩充 Apache 的功能,使其具备了动态能力,而另一方面 Apache 又为 PHP 提供了良好的运行环境,令它的功能可以得到最充分的发挥。不过为了让 Apache 能够支持 PHP,首先还得做些配置才可以。</span><br /><span style="color:#660000;"> <br /> 由于 PHP 的应用范围越来越广,许多 Linux 发行版本都自带了 PHP 软件包,Red Hat Linux AS 4 使用的是 PHP4.2.2,在命令行方式下用 rpm 命令可以查看是否已经安装了 PHP:<br /></span><br /><span style="color:#660000;"> [root@kevin ~]#rpm -qa php<br /> php-4.2.2-17 (# 已经安装了PHP)</span><br /><span style="color:#660000;"> <br /> 如果没有看到任何输出信息,则表明在安装 Red Hat Linux AS 4 时,可能忘记选择 PHP 软件包了。现在需要以 root 用户的身份登录 KDE,然后单击 KDE 主菜单,从『系统设置』菜单下选择『添加/删除应用程序』命令。当『软件包管理』窗口打开后,在『服务器』区域中将『万维网服务器』套件选中,如图 6-4-2 所示。</span><br /><span style="color:#660000;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-1-1.0.gif"><span style="color:#660000;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-1-1.0.png" border="0" /></span></a><span style="color:#660000;"> 图 6-4-2 安装 WWW 服务器套件</span></div><span style="color:#660000;"> <br /> 由于 PHP 只是一个可选的软件包,所以应该单击右侧的『细节』按钮,打开『WebServer 软件包细节』窗口,在『额外软件包』区域中将『php』项选中,如图6-4-3 所示。</span><br /><span style="color:#660000;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-1-2.0.gif"><span style="color:#660000;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-1-2.0.png" border="0" /></span></a><span style="color:#660000;"> 图 6-4-3 选择 PHP 软件包</span></div><span style="color:#660000;"> <br /> 选择好要安装的软件包后,单击『软件包管理』窗口中的『更新』按钮,然后按照提示插入安装光盘,就可以完成 PHP 软件包的安装了。</span><br /><span style="color:#660000;"> <br /> 安装好 PHP 后,还需要对 Apache 服务器进行相应的配置,使得两者能协调一致地工作。打开浏览器并登录 Webmin 后单击『服务』→『Apache服务器』,打开『Apache WEB 服务器』页面。由于 PHP 是作为 Apache 中的一个模块动态加载的,因此需要先对 Apache 模块进行配置,如图 6-4-4 所示。</span><br /><span style="color:#660000;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-4-4.gif"><span style="color:#660000;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-4-4.png" border="0" /></span></a><span style="color:#660000;"> 图 6-4-4 管理 Apache 模块</span></div><span style="color:#660000;"> <br /> 单击『Apache模块』图标,进入配置页面,在『活动模块』列表中确保mod_php4 模块已被选中,如图 6-4-5 所示。</span><br /><span style="color:#660000;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-4-5.gif"><span style="color:#660000;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-4-5.png" border="0" /></span></a><span style="color:#660000;"> 图 6-4-5 PHP 支持模块</span></div><span style="color:#660000;"> <br /> 如果找不到该模块,可能需要在『Apache WEB 服务器』页面中单击『重新配置已知的模块』图标,进入『重新配置已知的模块』页面,对 Webmin 支持的Apache 模块进行重新配置。</span><br /><span style="color:#660000;"> <br /> 配置好 Apache 服务器加载的 PHP 模块后,单击『保存』按钮,退回到『Apache WEB 服务器』页面。为了让 Apache 能够通过文件扩展名识别出哪些文件中包含了 PHP 脚本,需要为其添加特定的 MIME 类型。在『Apache WEB 服务器』页面的『虚拟服务器』区域中单击『缺省服务器』图标,进入『虚拟服务器选项』页面,在这里可以对 Apache 服务器支持的 MIME 类型进行管理,如图 6-4-6 所示。</span><br /><span style="color:#660000;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-4-6.gif"><span style="color:#660000;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-4-6.png" border="0" /></span></a><span style="color:#660000;"> 图 6-4-6 管理 MIME 类型</span></div><span style="color:#660000;"> <br /> 单击『MIME类型』图标进入『MIME类型』页面后,首先在『扩展MIME类型』文本框中输入为 PHP 专门定义的 MIME 类型 application/x-httpd-php,然后在『扩展』文本框中为 Apache 服务器指明以哪些扩展名结束的文件将使用 PHP 引擎进行处理,可以为同一种 MIME 类型指定多个与这对应的扩展名,如图 6-4-7 所示。设置好 MIME 类型对应的扩展名后,单击『保存』按钮确定。</span><br /><span style="color:#660000;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-4-7.gif"><span style="color:#660000;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-4-7.png" border="0" /></span></a><span style="color:#660000;"> 图 6-4-7 MIME 类型对应的扩展名</span></div><span style="color:#660000;"> <br /> 好了,重新启动 Apache 服务器吧,现在应该可以处理 PHP 脚本了。可以将前面介绍的那个 test.php 脚本复制到 /var/www/html/ 目录下,然后通过访问http://www.mylinux.org/test.php 来测试一下 PHP 模块的正确性。不过还有一种更好也更全面的测试方法,那就是在 /var/www/html/ 目录下生成一个内容如下的info.php 脚本:</span><br /><span style="color:#660000;"> </span><br /><span style="color:#660000;"> 在浏览器中访问该脚本,如果 PHP 模块能正常工作,可以从中获得 PHP 模块运行时的各种信息。</span><br /><span style="color:#660000;"> <br /><strong>3、用 PHP 开发动态网站</strong></span><br /><span style="color:#660000;"> <br /> 许多网站现在都有计数器功能,用于记录一共有多少人访问了该网站。用 PHP实现这一功能十分简单,从中不难领略到 PHP 的迷人魅力。计数器的原理说起来其实很简单:当用户浏览网页时,服务器程序从文件中读取该页面被访问的次数,将添加1后显示给该用户,然后再将新的计数登值存回到文件中。</span><br /><span style="color:#660000;"> <br /> 首先在 /var/www/html/ 目录下生成一个内容如下的 counter.php 文件:</span><br /><span style="color:#660000;"> <br /> 将 PHP 语句加入到 HTML 文件中有以下几种方法:</span><br /><span style="color:#660000;"> 第一、<? echo "嵌入PHP语句" ?></span><br /><span style="color:#660000;"> 第二、<?php echo "嵌入PHP语句" ?></span><br /><span style="color:#660000;"> 第三、<?script language="php">echo"嵌入PHP语句"</span><br /><span style="color:#660000;"> 第四、<% echo "嵌入PHP语句" %> </span><br /><span style="color:#660000;"> <br /> 其中第一种和第二种是最常用的方法,即在小于符号后加上问号,然后可加可不加“php”,之后就是 PHP 的程序代码,在 PHP 代码结束后,再加入问号及大于号就可以了。第三种写法对熟悉 JavaScript 的用户来说有相当的亲切感。而那些从 Windows 平台下的 ASP 转向 Linux 平台下的 PHP 用户来说,对第四种写法肯定有种似曾相识的感觉。</span><br /><span style="color:#660000;"> <br /> 编写 PHP 程序最好的方法是先处理纯 HTML 格式的静态页面,然后在需要动态处理的地方插入 PHP 语句,这样开发时可以达到事半功倍的效果。</span><br /><span style="color:#660000;"> <br /> 上述 PHP 计数器程序的核心是 displayCounter 函数。它首先调用 fopen 函数打开保存了计数值的文件,然后从中读出当前的计数值,并将其加1后作为新的计数值显示给当前浏览网页的用户,最后通过 exec 函数执行两条 Linux 命令将新的计数值写入到文件中。</span><br /><span style="color:#660000;"> <br /> 在浏览器中查看该 PHP 文件时,你将看到该段代码为你统计出来的访问次数。</span><br /><span style="color:#660000;"> <br /> PHP 语法简单、功能强大,是开发动态网站的得力助手,相信你在实际应用中会慢慢喜欢上它的。虽然 Perl、Python、ASP、JSP 等服务器端脚本语言导出不穷,但如果愿意留一次机会给 PHP,它将不会让你失望的。</span>✿☞凌锋http://www.blogger.com/profile/12644976863380733852noreply@blogger.com0tag:blogger.com,1999:blog-4171529930503643264.post-65672891846242661252006-09-23T17:18:00.000+08:002006-09-23T17:26:25.730+08:00第三节 授权访问 作为 Apache 服务器的管理员,应该知道如何对一些关键信息进行保护,也就是说只有合法的授权用户才可以访问它们。Apache 提供了两种授权访问方式:一种是根据用户的 IP 地段、网段、主机名等信息来决定是否具有访问权,例如可以只允许 mylinux.org 域中的主机能访问 Apache 服务器,这种授权访问方式通过Apache 服务器配置文件 /etc/httpd/httpd.conf 就可以完成;另一种是提供登录形式的授权访问,用户访问页面需要输入用户名和密码,这种授权访问方式需要配置“.htaccess”存取控制文件,是较常用的一种用户授权访问方式。<br /> <br /><strong>1、基于主机的授权</strong><br /> <br /> Apache 服务器的授权访问功能需要 mod_auth 和 mod_auth_dbm 两个模块的支持。在 Webmin 中单击『服务』图标,进入服务器管理页面,然后单击『Apache服务器』图标,进入『Apache WEB 服务器』页面,在这里可以对 Apache 服务器加载的模块进行管理,如图 6-3-1 所示。<br /> <br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-3-1.0.gif"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-3-1.0.png" border="0" /></a> 图 6-3-1 管理加载的模块</div> <br /> 单击『Apache模块』图标,进入『Apache模块』页,在活动模块列表中将mod_auth 和 mod_auth_dbm 两个模块均选中,如图 6-3-2 所示。<br /> <br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-3-2.gif"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-3-2.png" border="0" /></a> 图 6-3-2 授权访问支持模块</div> <br /> 配置好 Apache 服务器动态加载的模块后,单击『保存』按钮,返回『ApacheWEB 服务器』页面。下面先来介绍基于主机的授权访问方式。<br /> <br /> 假设 www.mylinux.org 网站中有一个 /var/www/secret/ 目录,接着来看如何通过授权来限制用户对该资源的访问。由于是要对 www.mylinux.org 这一虚拟主机进行管理,因此应该在『Apache WEB 服务器』页面中的『虚拟服务器』区域中单击该虚拟主机对应的图标,如图 6-3-3 所示。<br /> <br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-3-3.gif"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-3-3.png" border="0" /></a> 图 6-3-3 管理 www.mylinux.org 网站</div> <br /> 进入『虚拟服务器选项』页面后,从『创建目录、文件或目录选项』区域中的『类型』下拉框中,选择『Directory』项,并在『路径』文本框中输入要进行设置的目录“/var/www/secret”,然后单击『新建』按钮创建这一目录,如图 6-3-4所示。注意此时指定目录只是将其纳入 Apache 的管理,但该目录必须事先已经在磁盘上存在了。<br /> <br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-3-4.gif"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-3-4.png" border="0" /></a> 图 6-3-4 创建目录</div> <br /> 新目录创建后,就可以在『按目录选项』区域中找到该目录对应的图标了,如图 6-3-5 所示。<br /> <br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-3-5.gif"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-3-5.png" border="0" /></a> 图 6-3-5 新创建的目录</div> <br /> 对目录的配置与缺省服务器类似。单击该目录对应的图标,进入『按目录选项』页面。在这里可以对该目录的所有属性进行配置,其中就包括对目录访问权限的控制,如图 6-3-6 所示。<br /> <br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-3-6.gif"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-3-6.png" border="0" /></a> 图 6-3-6 配置目录</div><div> <br /> 单击『访问控制』图标,进入『访问控制』页面。如果想让 IP 地址为218.168.100.5 的机器访问该目录,可能先在『约束访问』区域的『动作』列中选择『Allow』项,然后在『条件』列中选择『从IP请求』项,最后在随后的文本框中输入允许访问的 IP 地址,如图 6-3-7 所示。</div><div> </div><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-3-7.gif"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-3-7.png" border="0" /></a> 图 6-3-7 允许访问的 IP 地址</div><div> <br /> 单击『保存』按钮并重新回到『访问控制』页面后,就又可以在『约束访问』区域中指定其它的约束规则了。例如从『动作』列中选择『Deny』项,并从『条件』列中选择『从网络/掩码请求』项,然后在后面的文本框中输入“218.168.100.0/255.255.255.0”,可以限制子网 218.168.100 中所有主机对该目录的访问,如图 6-3-8 所示。</div><div> </div><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-3-8.gif"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-3-8.png" border="0" /></a> 图 6-3-8 拒绝访问的网络</div><div> <br /> 也许你已经注意到了,第一条访问规则允许 IP 地址为 218.168.100.5 的主机访问该目录,而第二条访问规则又拒绝 218.168.100 子网中的所有主机访问该目录,这岂不是自相矛盾吗?</div><div> </div><div> Apache 通过设置访问规则的优先级来解决这一问题,管理员可以自定义是先使用允许(allow)规则还是拒绝(deny)规则,(注意在后面应用的规则将覆盖前面应用的规则)。在这里我们显然应该先应用 deny 规则,拒绝 218.168.100 子网中的所有主机访问请求,然后再应用 allow,允许主机 218.168.100.5 访问该目录。在『约束访问』区域中的『访问检查次序』中选择『先禁止后允许』单选框,就可以指定正确的访问规则应用顺序了,如图 6-3-9 所示。</div><div> </div><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-3-9.gif"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-3-9.png" border="0" /></a> 图 6-3-9 访问规则应用次序</div><div> <br /> 单击『访问控制』页面底部的『保存』按钮,回到『按目录选项』页面后单击『文档选项』图标,进入『文档选项』页面。除了指定该目录能被哪些主机访问之外,还应该在『目录选项』中为其指定正确的操作选项,如图 6-3-10 所示。注意,若不想使用缺省值,应该将『已选择以下』单选框选中。</div><div> </div><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-3-10.gif"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-3-10.png" border="0" /></a> 图 6-3-10 设置目录选项</div><div> <br /> 设置好文档目录选项后,单击『保存』按钮返回到『按目录选项』页面,然后单击页面底部的『回到服务器索引』链接,返回『虚拟服务器选项』页面,为了使用户能够更好的访问 /var/www/secret 目录,可以为它指定一个别名,如图 6-3-11 所示。</div><div> </div><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-3-11.gif"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-3-11.png" border="0" /></a> 图 6-3-11 管理别名和重定向</div><div> <br /> 单击『别名和重定向』图标,进入『别名和重定向』页面。分别在『文档目录别名』区域中的『From』和『To』文本框中输入“/secret/”和“/var/www/secret/”,然后单击页面底部的『保存』按钮,就可以为/var/www/secret/ 目录指定一个别名 /secret/,如图 6-3-12 所示。</div><div> </div><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-3-12.gif"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-3-12.png" border="0" /></a> 图 6-3-12 创建文档目录别名</div><div> <br /> 回到『虚拟服务器选项』页面后,单击『应用更改』链接,使新的设置值生效。在放置一些将被访问的资源到 /var/www/secret/ 目录下后,就可以进行授权访问的测试了。当从 IP 地址为 218.168.100.5 的主机通过http://www/mylinux.org/secret/ 来访问这些资源时,将看到资源列表。</div><div> <br /> 但如果是从其它机器访问时,由于缺乏相应的权限,将无法浏览到该目录下的资源。</div><div> </div><div><strong>2、基于用户的认证</strong></div><div> <br /> 基于主机的授权方式难以满足具有较高安全要求的场合,因为即使是一个很蹩脚的初级黑客也完全有能力仿造一个假的 IP 地址,因此有时就不得不考虑基于用户的认证方式。</div><div> <br /> 事实上,基于主机的授权方式和基于用户的认证方式并非是截然分开的。当用户访问 Apache 服务器的某个目录时,Apache 会先根据配置文件 httpd.conf 中Directory 的设置,来决定是否允许用户访问该目录。如果允许,则 Apache 还会继续查找该目录或其父目录中是否存在“.httpd.conf”文件,以决定是否要对用户进行身份认证。</div><div> <br /> 正是因为“.httpd.conf”文件在基于用户的认证方式中起着很重要的作用,所以首先要做的事情就是在要进行身份认证的目录下生成该文件。假设要让用户必须通过身份认证后才能访问 /var/www/secret/ 目录下的资源,就应该先创建/var/www/secret/.httpd.conf 文件。虽然使用普通的文本编辑器也能手工生成该文件,但使用 Webmin 将更方便些。</div><div> </div><div> 在『Apache WEB 服务器』页面中,可以通过『按目录选项文件』来管理所有的“.httpd.conf”文件,如图 6-3-13 所示。</div><div> </div><div><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-3-13.gif"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-3-13.png" border="0" /></a> <strong>图 6-3-13 管理认证文件</strong></div><div> <br /> 单击『按目录选项文件』图标,进入『按目录选项文件』页面。接着单击『创建选项文件』右侧的『...』按钮,打开『选择文件』窗口,从中选择要为其创建“.httpd.conf”文件的目录,如图 6-3-14 所示。</div><div> </div><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-3-14.gif"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-3-14.png" border="0" /></a> 图 6-3-14 选择认证目录</div><div> <br /> 选择好要进行认证的目录后,单击『创建选项文件』按钮,Webmin 就会在该目录下生成一个“.httpd.conf”文件,同时打开『按目录选项』页面。在这里可以对该文件的内容进行编辑和管理,如图 6-3-15 所示。</div><div> </div><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-3-15.gif"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-3-15.png" border="0" /></a> 图 6-3-15 设置认证文件</div><div> <br /> 文件“.httpd.conf”由一系列 Apache 指令组成。那些对这些指令早就一清二楚的资深 Apache 管理员可以很轻松地使用自己熟悉的编辑器,手工修改这些文件,但对于连这些指令是什么都还不知道的初学者来说 Webmin 的确是个不错的跳板,它可以帮助你很快成为一名合格的 Apache 管理员。单击『显示指令』图标,进入『指令』页面,在『编辑Apache指令』按钮旁边的下拉框中,可以找到所有的Apache 指令,如图 6-3-16 所示。</div><div> </div><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-3-16.gif"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-3-16.png" border="0" /></a> 图 6-3-16 选择 Apache 指令</div><div> <br /> Apache 提供的指令虽然多,但常用的也就那么几条,而且 Webmin 还提供了很好的配置界面。从 Apache 指令下拉框中选择『AuthName』指令,然后单击『编辑Apache指令』按钮,进入『访问控制』页面。可以在『认证真名』文本框中输入一个字符串作为提示信息。浏览器访问该目录时,弹出的登录提示对话框中将显示该字符串。</div><div> <br /> 在『认证类型』下拉框中,可以选择进行身份认证的方式。Apache 目前提供两种认证方式:Basic(基本认证)和 Digest(简要认证)。一般使用 Basic 方式,但使用方 Digest 方式会更安全一些。</div><div> <br /> 在『登录约束的访问』区域中,可以指明只允许某些特定的用户或者组登录,当然也可以允许所有的合法用户登录。注意此外的用户和组指的都是 Apache 服务器自己维护的用户和组,他们同 Linux 系统的用户和组可以没有任何瓜葛。</div><div> <br /> Apache 服务器自身维护了一个用户和组列表,同样也有用户密码文件和组文件。这两个文件存放的位置可以由你在『文本文件认证』区域中任意指定。出于安全性的考虑,建议管理员不要将该文件与网站中的数据存放在一起。至于创建该文件的方法,后面将会介绍,这里只需指定这两个文件的路径就可以了。</div><div> <br /> 好了,现在单击『访问控制』页面底部的『保存』按钮,返回到『按目录选项文件』页面。接着单击该页面中的『当前模块首页』链接,进入『Apache WEB 服务器』页面。由于对 /var/www/secret/ 目录同时采用了基于主机的授权方式和基于用户的认证方式,难免会造成两者在某些地方的冲突。如果你现在从218.168.100.5 的主机访问 http://www/mylinux.org/secret/ 时,不必登录,Apache 也会将这些信息大大方方的显示出来。</div><div> <br /> 为了避免这一问题,应该明确告诉 Apache 在处理“.httpd.conf”文件时,哪些指令可以覆盖 .httpd.conf 中定义的参数,这些参数包括 AuthConfig、FileInfo、Indexs、Limits 和 Options。可以同时选择多个,如果全选则可以用All 参数代替,但如果一项都不选,则应该使用 None 参数。</div><div> <br /> 现在是不是有点明白了呢?没错,应该对 /var/www/secret/ 目录的选项再稍做调整,以满足基于用户认证的需要。单击『Apache WEB 服务器』页面『虚拟服务器』区域中网站 www.mylinux.org 所对应的虚拟主机图标,进入『虚拟服务器选项』页面后单击『按目录选项』区域中的『Directory /var/www/secret/』图标,打开『按目录选项』页面。由于对 /var/www/secret/ 目录采用基于用户的认证方式,因此需要配置恰当的文档选项。</div><div> <br /> 单击『文档选项』图标,进入『文档选项』页面,在『选择文件可覆盖』区域中选择『已选择以下』单选框,然后从下面的列表中选择“.httpd.conf”文件要覆盖“.httpd.conf”文件中的哪些参数。</div><div> <br /> 现在单击『文档选项』页面中的『保存』按钮,返回到『按目录选项』页面,单击该页面顶部『应用更改』链接根据新的设置值重新加载 Apache 服务器。此时若再从 218.168.100.5 的主机访问 <a href="http://www/mylinux.org/secret/">http://www/mylinux.org/secret/</a>,就可以看到要求用户先进行登录的窗口。</div><div> <br /> 现在只有合法的 Apache 用户才能访问该目录下的资源了。</div><div> <br /> 基于用户的认证方式可以很好地保护资源,使得只有授权的用户才能访问某些敏感的数据,不登录就访问资源现在已经变得不可能了,因为将吃到闭门羹。</div>✿☞凌锋http://www.blogger.com/profile/12644976863380733852noreply@blogger.com0tag:blogger.com,1999:blog-4171529930503643264.post-85298373673927332232006-09-23T16:58:00.000+08:002006-09-23T17:03:57.233+08:00第二节 主页空间管理<span style="color:#663366;"> Apache 很吸引人的一点就是它可以对主页空间进行灵活而有效的管理。不仅可以为系统中的第个用户提供自己的主页空间,还可以利用 Apache 的虚拟主机功能在同一台机器是架设多个网站。如果不希望所有的用户都能够访问 WWW 服务器时,Apache 的授权访问机制又为此提供了一个很好的解决方案。</span><br /><span style="color:#663366;"> <br /><strong>1、开辟个人主页空间</strong></span><br /><span style="color:#663366;"> <br /> 经常能看到某些商业网站为自己的注册用户提供个人主页服务,使用 Apache来实现这一功能并不困难。打开浏览器并登录 Webmin 后,单击『服务』图标进入服务管理页面,然后单击『Apache 服务器』图标进入『Apache WEB 服务器』页面,接着再『虚拟服务器』区域中单击『缺省服务』图标,进入『虚拟服务器选项』页面,如图 6-2-1 所示。</span><br /><span style="color:#663366;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-2-1.gif"><span style="color:#663366;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-2-1.png" border="0" /></span></a><span style="color:#663366;"> 图 6-2-1 管理缺省服务</span></div><span style="color:#663366;"> </span><br /><span style="color:#663366;"> 现在单击『文档选项』按钮,进入该页面,在『用户WWW目录』中指定用户在自己的主目录(HOME)中存放 HTML 文件的目录,如图 6-2-2 所示。</span><br /><span style="color:#663366;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-2-2.gif"><span style="color:#663366;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-2-2.png" border="0" /></span></a><span style="color:#663366;"> 图 6-2-2 用户文档根目录</span></div><span style="color:#663366;"> <br /> 默认情况下,Apache 会为系统中的所有用户提供个人主页空间。如果你不想为某些用户提供个人主页空间,或者只希望某些特定的用户才能拥有个人主页空间,可以在『用户WWW目录』区域中分别选中『所有用户除了』或『Only users』单选框,然后单击随后的『...』按钮,打开『选择用户』窗口选择允许和拒绝拥有个人主页空间的用户,如图 6-2-3 所示。</span><br /><span style="color:#663366;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-2-3.gif"><span style="color:#663366;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-2-3.png" border="0" /></span></a><span style="color:#663366;"> 图 6-2-3 只为特定的用户开辟个人主页</span></div><span style="color:#663366;"> <br /> 这样,拥有个人主页空间的用户就可以在自己主目录(HOME)下的 public_html目录中,存放自己的 HTML 文件。作为管理员,可以事先为用户创建此目录,供他们今后旋转网页用。下面的命令可以为用户 kevin 创建这一目录,请注意为该目录赋予的权限:</span><br /><span style="color:#663366;"> <br /> [root@kevin ~]#cd /home/<br /> [root@kevin home]#chmod 705 kevin (# 允许其它用户浏览)<br /> [root@kevin home]#cd kevin<br /> [root@kevin kevin]#mkdir public_html (# 用户文档根目录)<br /> [root@kevin kevin]#chmod 705 public_html (# 允许其它用户浏览)<br /> [root@kevin kevin]#chown kevin:kevin public_html</span><br /><span style="color:#663366;"> <br /> 如果需要为系统中的多个用户提供个人主页空间,可以在 /etc/skel/ 目录下建立一个 public_html 目录,这样在创建新用户时,其主目录下会自动生成一个名为 public_html 的目录。</span><br /><span style="color:#663366;"> <br /> 此后,用户 kevin 就可以在自己主目录下的 public_html 目录中,编写自己个人网站的 index.html 文件了,以下是 index.html 文件的代码:</span><br /><span style="color:#663366;"> <br /></span><br /><span style="color:#663366;"></span><br /><span style="color:#663366;"></span><br /><span style="color:#663366;"></span><br /><span style="color:#663366;"></span><br /><span style="color:#663366;"><h1>Welcome to Gary's homepage!</h1></span><br /><span style="color:#663366;"></span><br /><span style="color:#663366;"></span><br /><span style="color:#663366;"> <br /> 赶紧来测试一下吧。不过,测试在 www.mylinux.org 主机上 kevin 用户的个人主页,你需要在浏览器地址栏中输入 http://www.mylinux.org/~kevin/,如图6-2-4 所示。</span><br /><span style="color:#663366;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-2-4.gif"><span style="color:#663366;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-2-4.png" border="0" /></span></a><span style="color:#663366;"> 图 6-2-4 测试个人主页</span></div><span style="color:#663366;"> <br /> 如果 WWW 服务器的IP地址是动态分配的,可能不能从其它计算机上正确地访问到个人主页,此时只能在本机中使用 http://127.0.0.1/~kevin/ 或http://localhost/~kevin/ 的方式来进行测试。</span><br /><span style="color:#663366;"> <br /> 在设置个人主页时,关键是要允许其他用户有权浏览自己的主目录(HOME),同时在主目录下创建的 public_html 目录也要设置正确的权限,只有这样才能在浏览器中正确访问个人网站。如果不想将自己主目录下的其它目录暴露给别人,那就请将除 public_html 外的其它目录的访问权限都设置成700吧。</span><br /><span style="color:#663366;"> <br /><strong>2、基于 IP 的虚拟主机</strong></span><br /><span style="color:#663366;"> <br /> 虚拟主机(Virtual Host)指的是在一台 WWW 服务器上,将一台计算机虚拟成多个 WWW 服务器,同时为多个域名提供服务。</span><br /><span style="color:#663366;"> <br /> 举个例子,假设网络中一台 IP 地址为 218.168.100.2 的主机上安装了Apache 服务器,现在已经可以通过 http://www.mylinux.org 来访问这个网站。如果还想架设 www2.mylinux.org 和 www3.mylinux.org 两个网站,为了节省开支又不希望额外添置两台机器,就可以考虑把 www.mylinux.org、www2.mylinux.org 和www3.mylinux.org 三个网站都放到IP地址为 218.168.100.2 的主机上。</span><br /><span style="color:#663366;"> <br /> 其实实现的方法也很简单,那就是利用 Apache 的虚拟主机功能。</span><br /><span style="color:#663366;"> <br /> 对 ISP 来讲,虚拟主机绝对是一个节省费用的好办法。目前许多小企业由于种种条件的限制,通常是自用 ISP 维护的服务器来开发自己的网站。如果访问量不是很大,ISP 完全没有必要为每个客户提供一台单独的服务器,可以借助虚拟主机的功能,使 Apache 服务器为多个域名提供 WWW 服务,不同域名相互各不干扰,而对外则表现为多个不同的 WWW 服务器。</span><br /><span style="color:#663366;"> <br /> Apache 提供了多种建立虚拟主机的方法,在 HTTP 协议的 1.0 及其以下版本中,各个虚拟主机必须使用不同的 IP 地址,这就是基于 IP 的虚拟主机的方式。建立基于 IP 的虚拟主机需要为每个虚拟主机配置不同的 IP 地址。一般是通过安装多块网卡,并为每块网卡分配一个 IP 地址来实现,但如果只有一块网卡呢?</span><br /><span style="color:#663366;"> <br /> 当然没有问题了,那就是使用 Linux 内核提供的 IP 别名功能。</span><br /><span style="color:#663366;"> <br /> 打开浏览器并登录 Webmin 后,单击『网络』图标进入网络管理页面,然后单击『网络配置』图标,在随后打开的『网络配置』页面中,可以对网卡进行配置。</span><br /><span style="color:#663366;"> <br /> 单击『网络接口』图标,进入『网络接口』页面。在『接口当前活动』区域中你可以看到所有当前活动的网络接口设置,而在『启动时启用接口』区域中则可以看到在系统启动时激活的所有网络接口设置。为 eth0 接口分配了 IP 地址218.168.100.2,现在看看如何将别名 218.168.100.12 分配给它,使得通过 IP 地址 218.168.100.2 和 218.168.100.12 都可以进行访问。</span><br /><span style="color:#663366;"> <br /> 在『启动时启动接口』区域中单击『eth0』链接,进入『编辑引导时接口』页面,『在虚拟接口』区域中可以为该网卡添加新的虚拟接口。通过添加虚拟接口,可以给虚拟接口分配其它 IP 地址。</span><br /><span style="color:#663366;"> <br /> 单击『增加虚拟接口』链接,进入『创建引导时接口』页面。首先在『名称』后面的文本框中输入虚拟接口的名称“0”,然后在『IP地址』文本框中输入要分配给该虚拟接口的IP地址“218.168.100.2”,『子网掩码』和『广播地址』当然必须得填了,最后单击『Create and Apply』按钮,新的虚拟网络接口就创建好了。</span><br /><span style="color:#663366;"> <br /> 返回到『网络接口』页面后,就可以在『接口当前活动』和『启动时启用接口』区域中找到新创建的虚拟接口。</span><br /><span style="color:#663366;"> <br /> 接下去就该为 IP 地址 218.168.100.12 分配域名 www2.mylinux.org。首先进入 Webmin『服务』管理页面,然后单击『BIND & DNS服务器』图标,在随后打开的『BIND & DNS服务器』页面中的『现有DNS区域』中找到 mylinux.org 域。</span><br /><span style="color:#663366;"> <br /> 单击『mylinux.org』图标,进入『编辑主区域』页面,此时的目标是要为 IP地址 218.168.100.12 添加一条地址记录(A)。</span><br /><span style="color:#663366;"> <br /> 单击『地址』图标,进入『地址记录』页面。在『增加地址记录』区域中的『名称』文本框中输入域名“WWW2”,并在『地址』文本框中输入 IP 地址“218.168.100.12”,然后单击『新建』按钮创建地址记录。</span><br /><span style="color:#663366;"> <br /> 创建好地址记录后,单击『地址记录』页面底部的『回到区域列表』链接,返回到『BIND & DNS服务器』页面。然后再单击『应用更改』按钮,重新加载 DNS 服务器,使新的设置生效。</span><br /><span style="color:#663366;"> <br /> 准备工作已经完成,现在可以设置 Apache 的虚拟主机了。Webmin 的『服务』→『Apache服务器』进入『Apache WEB 服务器』页面。在『创建新虚拟服务器』区域中的『地址』文本框中输入虚拟主机的 IP 地址“218.168.100.12”,并在『根文件』文件框中输入该网站的文档根目录“/var/www2/html”(该目录应该事先手工创建),而『服务器名称』文本框中则应输入虚拟主机的域名“www2.mylinux.org”,同时注意不要选择『增加名称虚拟服务器地址』复选框。最后,单击『新建』按钮创建该虚拟主机。</span><br /><span style="color:#663366;"> <br /> 虚拟主机成功创建后,在『Apache WEB 服务器』页面中的『虚拟服务器』区域中,可以找到新创建的虚拟主机所对应的图标,单击该图标可以进入『虚拟服务器』页面。如果已经熟悉了缺省服务器的配置,相信此时就难不倒你了。</span><br /><span style="color:#663366;"> <br /> 单击『联网和地址』图标,进入『联网和地址』页面,在『服务器管理员电子邮件地址』区域中,可以指定该网站管理员的 E-mail 地址。每个虚拟主机都可以单独拥有自己的管理员,设置好 E-mail 地址后,单击『保存』按钮即可。</span><br /><span style="color:#663366;"> <br /> 重新启动 Apache 服务器,然后在 /var/www2/html/ 目录下创建该网站的index.html 文件,index.html 文件代码如下:</span><br /><span style="color:#663366;"> <br /><htl></span><br /><span style="color:#663366;"></span><br /><span style="color:#663366;"></span><br /><span style="color:#663366;"></span><br /><span style="color:#663366;"></span><br /><span style="color:#663366;"><ht>Welcom to WWW2 site! <h1></h1></span><br /><span style="color:#663366;"></span><br /><span style="color:#663366;"></span><br /><span style="color:#663366;"> <br /> 现在就可以在浏览器中测试了。</span><br /><span style="color:#663366;"> </span><br /><strong><span style="color:#663366;">3、基于域名的虚拟主机</span></strong><br /><span style="color:#663366;"> <br /> 在采用基于 IP 地址的虚拟主机方式时有一个很明显的不足,那就是能够使用的 IP 地址有限,或者换句话说能够支持的虚拟主机数量有限。HTTP 协议的 1.1版本改进了这一缺点,可以用域名来区分各个虚拟站点,而不用为它们各自分配一个 IP 地址。使用同一个 IP 地址。可以建立多个虚拟站点,大大提高了 Apache服务器可以支持的虚拟主机数量,这就是基于域名的虚拟主机方式。</span><br /><span style="color:#663366;"> <br /> 在使用虚拟主机时,第一步仍是配置 DNS 服务器。假设要在 IP 地址为218.168.100.2 的机器上创建 www3.mylinux.org 这一虚拟主机。根据当前的 DNS配置,218.168.100.2 对应的域名是 www.mylinux.org,因此第一步工作是为 IP地址 218.168.100.2 分配新的域名 www3.mylinux.org。至于俱体的做法,还记得DNS 的别名记录(CN)吗?</span><br /><span style="color:#663366;"> <br /> 单击 Webmin 中的『服务』图标,进入服务管理页面,然后单击『BIND & DNS服务器』图标进入『BIND DNS服务器』页面,在现有 DNS 区域中找到mylinux.org,如图 6-2-5 所示。</span><br /><span style="color:#663366;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-2-5.gif"><span style="color:#663366;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-2-5.png" border="0" /></span></a><span style="color:#663366;"> 图 6-2-5 管理 mylinux.org 域</span></div><span style="color:#663366;"> <br /> 单击『mylinux.org』图标,进入『编辑主区域』页面,现在的目标是要为域名</span><a href="http://www.mylinux.org"><span style="color:#663366;">www.mylinux.org</span></a><span style="color:#663366;"> 添加一个别名记录(CN),如图 6-2-6 所示。</span><br /><span style="color:#663366;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-2-6.gif"><span style="color:#663366;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-2-6.png" border="0" /></span></a><span style="color:#663366;"> 图 6-2-6 别名记录</span></div><span style="color:#663366;"> <br /> 单击『名称别名』图标,进入『名称别名』页面。在『增加名称别名记录』区域中的『名称』文本框中输入“WWW3”,并在『真名』文本框中输入真实的域名“WWW”,接着单击『新建』按钮创建别名记录,如图 6-2-7 所示。</span><br /><span style="color:#663366;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-2-7.gif"><span style="color:#663366;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-2-7.png" border="0" /></span></a><span style="color:#663366;"> 图 6-2-7 新建别名记录</span></div><span style="color:#663366;"> <br /> 创建好别名记录后,单击『名称别名记录』页面中的『当前模块首页』链接,返回到『BIND DNS服务器』页面,接着再单击页面底部的『应用更改』按钮,按照新的设置值重新启动 DNS 服务器,如图 6-2-8 所示。</span><br /><span style="color:#663366;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-2-8.gif"><span style="color:#663366;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-2-8.png" border="0" /></span></a><span style="color:#663366;"> 图 6-2-8 重启 DNS 服务器</span></div><span style="color:#663366;"> <br /> 现在可以在 Apache 服务器中创建虚拟主机了。首先单击 Webmin 的『服务』图标,进入服务管理页面,然后单击『Apache服务器』图标进入『Apache WEB 服务器』页面。在『创建新虚拟服务器』区域中的『地址』文本框中输入主机的 IP 址“218.168.100.2”,并在『根文件』文本框中输入该网站的文档根目录“/var/www3/html”,而『服务器名称』文本框中则应输入虚拟主机的域名“www3.mylinux.org”。在创建基于域名的虚拟主机时,关键是要将『增加名称虚拟服务器地址』复选框选中,如图 6-2-9 所示。这些参数都设置好后,单击『新建』按钮创建虚拟主机。</span><br /><span style="color:#663366;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-2-9.gif"><span style="color:#663366;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-2-9.png" border="0" /></span></a><span style="color:#663366;"> 图 6-2-9 创建虚拟主机</span></div><span style="color:#663366;"> <br /> 基于域名的虚拟主机成功创建之后,同样可能在『Apache WEB 服务器』页面的『虚拟服务器』区域中,找到新创建的虚拟主机所对应的图标。单击该图标后可以进入『虚拟服务器』页面,此时就可以用和缺省服务器相同的方法来对该虚拟服务器进行配置了。</span><br /><span style="color:#663366;"> <br /> 重新启动 Apache 服务器,然后在该网站的文档根目录 /var/www3/html/ 下建立 index.html 文件,index.html 代码如下:</span><br /><span style="color:#663366;"> <br /></span><br /><span style="color:#663366;"></span><br /><span style="color:#663366;"></span><br /><span style="color:#663366;"></span><br /><span style="color:#663366;"></span><br /><span style="color:#663366;"><h1>Welcom to WWW3 site!</h1></span><br /><span style="color:#663366;"></span><br /><span style="color:#663366;"></span><br /><span style="color:#663366;"> <br /> 大功告成,接着就可以在浏览器中测试一下了。</span><br /><span style="color:#663366;"> <br /> 成功后,再测试一下 www.mylinux.org。咦,显示的是 www3.mylinux.org 网站的首页,怎么搞的?不要着急,只要为 www.mylinux.org 创建一个虚拟主机就可以解决这个问题了。按照前面介绍的方法进入『Apache WEB 服务器』页面,然后在『创建新虚拟服务器』区域中的『地址』文本框中输入主机的IP地址“218.168.100.2”,并在『根文件』文本框中输入网站的文档根目录“/var/www/html”,至于『服务名称』文本框,当然是输入『服务器名称』文本框,当然是输入“www.mylinux.org”了。最后,单击『新建』按钮创建该虚拟主机。</span><br /><span style="color:#663366;"> <br /> 现在重新启动 Apache 服务器,然后再在浏览器中测试一下。</span>✿☞凌锋http://www.blogger.com/profile/12644976863380733852noreply@blogger.com0tag:blogger.com,1999:blog-4171529930503643264.post-21518878750375959502006-09-23T16:52:00.000+08:002006-09-23T16:54:51.551+08:004、启动 Apache<span style="color:#000099;"> 在 Webmin 中启动 Apache 服务器比较简单,『虚拟服务器选项』页面有『启动 Apache』链接,单击它就可以根据 httpd.conf 文件中的最新配置启动 Apache服务器了,如图 6-1-22 所示。</span><br /><span style="color:#000099;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-1-22.gif"><span style="color:#000099;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-1-22.png" border="0" /></span></a><span style="color:#000099;"> 图 6-1-22 启动 Apache 服务器</span></div><span style="color:#000099;"> <br /> Apache 服务器启动后,如果又更改了 httpd.conf 文件,则可以单击『虚拟服务器』页面中的『应用更改』链接,请求 Apache 服务器重新加载新的配置值。此外,还可以单击『停止Apache』链接来关闭 Apache 服务器,如图 6-1-23 所示。<br /> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-3-1.gif"><span style="color:#000099;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-3-1.png" border="0" /></span></a><span style="color:#000099;"> 图 6-1-23 重新加载和关闭 Apache 服务器</span></div><span style="color:#000099;"> <br /> Apache 服务器已经正常启动了吗?只要用 ps 命令查看一下 Apache 服务器的后台服务进程 httpd 是否存在就可以了:</span><br /><span style="color:#000099;"> <br /> [root@kevin ~]#ps -aux grep httpd (# 查看httpd进程)</span><br /><span style="color:#000099;"> apache 20007 0.0 1.8 18140 7021 ? S 21:11 0:00 [httpd]...</span><br /><span style="color:#000099;"> <br /> 如果当前 Linux 系统是专门为 WWW 服务器使用的,那么将其设置成开机时自动启动是很必要的。在 Webmin 中单击『系统』图标,进入系统管理页面后再单击『引导和关机』图标打开服务列表页面,在列表中找到 httpd 服务,如图 6-1-24 所示。<br /> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-1-24.gif"><span style="color:#000099;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-1-24.png" border="0" /></span></a><span style="color:#000099;"> 图 6-1-24 管理 httpd 服务</span></div><span style="color:#000099;"> <br /> 单击『httpd』链接,进入『编辑操作』页面。在『引导时启动』区域中选中『是』单选框,并单击『保存』按钮,就可以在系统启动时自动运行 Apache 服务器了,如图 6-1-25 所示。<br /> <br /></span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-1-25.gif"><span style="color:#000099;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-1-25.png" border="0" /></span></a><span style="color:#000099;"> 图 6-1-25 开机自动启动 Apache</span></div><span style="color:#000099;"> <br /> 大功告成,现在可以从网络中随便找一台客户机,来测试一下 Apache 服务器了。如果出现如图 6-1-26 所示的页面,则表明 Apache 服务已经正常工作了。<br /> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-1-26.gif"><span style="color:#000099;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-1-26.png" border="0" /></span></a><span style="color:#000099;"> 图 6-1-26 测试 Apache</span></div>✿☞凌锋http://www.blogger.com/profile/12644976863380733852noreply@blogger.com0tag:blogger.com,1999:blog-4171529930503643264.post-65609432432470591632006-09-23T16:27:00.000+08:002006-09-23T16:35:43.963+08:00Apache 管理主页面<span style="color:#006600;"> 为了保证服务质量,Apache 服务器在提供 WWW 服务时,httpd 后台进程数目会随着访问量的改变而发生变化,这样做的好处是可以尽可能快地响应用户请求,但如果设置不当又会事与愿违。在『最大剩余服务器进程』区域中可以设置最大闲置服务器进程数,而在『最小剩余服务器进程数』区域中则可以指定最小闲置服务器进程数。所谓闲置服务器进程,指的是暂时还没有处理请求的 httpd 后台服务进程,Apache 会同期性地自动检查所有后台服务进程的状态,以调整闲置服务器进程的数目,使其始终在庙宇的范围之内。<br /> <br /> 在『进程和限制』页面中的『初始服务器进程数』区域中,还可以指定在启动Apache 时,httpd 后台服务器进程的数目。这些限制参数都设置好后,就可以放心启动 Apache 服务器了,它绝不会因为连接的用户数目过多而导致性能的下降。<br /> <br /> 设置好后,单击『保存』按钮返回到 Apache 管理主页面。<br /> <br /> Apache 很吸引人的一点是为用户提供了服务器和客户机之间的持久连接。具有持久性的连接可以加快数据的传送速度,以提高服务质量,因为不需要花时间为每个请求建立新的连接。<br /> <br /> 单击『Apache WEB服务器』页面中的『联网和地址』图标,进入『联网和地址』页面。在『每个连接多个请求数』中可以为每次持久性连接指定请求的最大数目,而『保持活动超时』区域中的设置值则限制了持久性连接中连续两个请求之间的最大时间,如图 6-1-7 所示。一旦请求超过规定的时间仍没有响应,则 Apache 将结束这次持久性连接。<br /> <br /></span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-1-7.2.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-1-7.2.png" border="0" /></span></a><span style="color:#006600;"> 图 6-1-7 持久性连接设置</span></div><span style="color:#006600;"> <br /> 在『联网和地址』页面的『请求超时』区域中,可以指定 Apache 服务器等待客户机的超时秒数。如果超过规定的时间 Apache 仍未收到或发送任何数据,那么已经建立的连接将被切断,这种做法可以最大限度地利用有限的资源,这也是Apache 性能如此优越的原因之一。<br /> <br /> 下面来看看『联网和地址』页面中最重要的设置选项,那就是在『Listen onaddresses and ports』区域中指定的 Apache 监听端口,如图 6-1-8 所示。<br /> <br /></span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-1-7.1.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-1-7.1.png" border="0" /></span></a><span style="color:#006600;"> 图 6-1-8 监听的端口</span></div><span style="color:#006600;"> <br /> HTTP 协议使用 80 作为默认的通信端口,需要时也可以选用系统中其它尚未占用的端口,如 8080,那样就必须在浏览器中输入类似http://www.mylinux.org:8080 的 URL 来访问 WWW 服务器。如果『联网和地址』页面中的所有参数都设置好后,单击『保存』按钮返回到 Apache 管理主页面。<br /> <br /> 在『Apache WEB服务器』页面中单击『用户和组』图标,进入『用户和组』页面,在这里可以指定 httpd 后台服务进程应该以哪一个用户和用户组的身份运行,如图 6-1-9 所示。<br /> <br /></span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-1-9.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-1-9.png" border="0" /></span></a><span style="color:#006600;"> 图 6-1-9 有效用户和用户组</span></div><span style="color:#006600;"> <br /> Apache 在启动时需要用 root 帐号来与小于 1024 的端口相结合,但占据端口之后 Apache 会立即将它的有效用户和组设为在这里指定的用户和组。从安全角度来讲,这是很重要的。在设置好 Apache 运行时的有效用户和组后,单击『保存』按钮返回 Apache 管理主页面。<br /> <br /> 以上是 Apache 服务器中一些重要全局参数的设置,下面再看看缺省服务器的配置,估计这才是你真正感兴趣的。<br /> <br /> 在『Apache WEB服务器』页面中单击『虚拟服务器』区域中的『缺省服务器』图标,进入『虚拟服务器选项』页面,如图 6-1-10 所示。</span><br /><p align="center"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-1-10.png" border="0" /> 图 6-1-10 配置缺省服务器</span></p><p><span style="color:#006600;"> 单击『联网和地址』图标,进入『联网和地址』页面。在『服务器管理员电子邮件地址』区域中可以指定 Apache 管理员的 E-mail 地址。此外,还可以在『服务器主机名』区域中设置 Apache 服务器的主机名,如图 6-1-11 所示。<br /> <br /></span></p><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-1-11.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-1-11.png" border="0" /></span></a><span style="color:#006600;"> 图 6-1-11 管理员和主机名设置</span></div><span style="color:#006600;"> <br /> 为 Apache 服务器设置的主机名应该是合法的 DNS 域名。否则,也可以用 IP地址代替,不设置主机名有时可能会导致 Apache 无法正常启动。设置好管理员的E-mail 地址和主机名后,单击『保存』按钮即可。<br /> <br /> 一旦 Apache 在运行时产生故障,日志文件对管理员诊断问题时将变得非常重要。Apache 提供了非常完善的日志功能。单击『虚拟服务器』页面中的『日志文件』图标,进入『日志文件』页面,在『错误记录日志到』区域可以为 Apache 指定记录日志的文件,而在『Error log level』下拉框中则可以选择记录日志的等级,如图 6-1-12 所示。<br /> <br /></span><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-1-12.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-1-12.png" border="0" /></span></a><span style="color:#006600;"> 图 6-1-12 日志文件</span></div><span style="color:#006600;"> <br /> 浏览器请求资源时产生的错误,以及启动和关闭 httpd 进程时的信息,只要符合日志等级的规定,都会被仔细地记录在指定的日志文件中,供管理员需要时查看。</span><br /><span style="color:#006600;"> <br /> Apache 服务器是按照固定式来记录日志信息的,在『缺省日志格式』区域中定义了 combined、common、referer 和 agent 四种缺省的日志格式。如果想以combined 格式来记录日志信息,可以在『访问日志文件』区域中的『格式』列中输入指定的格式,在『写入』列中选择『文件』单选框,同时在『文件或程序』列中输入日志文件的路径,如图 6-1-13 所示。这样 Apache 就会按照选定的格式将日志信息保存到指定的文件中关于日志格式的定义请参考 Apache 的联机帮助手册。设置好 Apache 的日志文件和格式后,单击『保存』按钮确定。</span><br /><span style="color:#006600;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-1-13.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-1-13.png" border="0" /></span></a><span style="color:#006600;"> 图 6-1-13 日志格式</span></div><span style="color:#006600;"> <br /> 单击『虚拟服务器选项』页面中的『文档选项』图标,进入『文档选项』页面。在『文档根目录』中单击『...』按钮打开『选择目录』窗口来为 Apache 服务器指定网站的文档根目录,如图 6-1-14 所示。所有能够被浏览器访问的 HTML 页面都位于网站的文档根目录下。<br /> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-1-14.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-1-14.png" border="0" /></span></a><span style="color:#006600;"> 图 6-1-14 文档根目录</span></div><span style="color:#006600;"> <br /> 在 Apache 服务器中,为各个允许访问的目录赋予恰当的权限是管理员的一项重要职责,文档根目录下存放的是所有能被访问的 HTML 文件,其重要性自然勿庸置疑。在『文档选项』页面的『目录选项』区域中选择『已选择以下』单选框后,就可以在表格中为文档根目录赋予相应的权限了,如图 6-1-15 所示。</span><br /><span style="color:#006600;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-1-15.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-1-15.png" border="0" /></span></a><span style="color:#006600;"> 图 6-1-15 文档根目录选项</span></div><span style="color:#006600;"> <br /> 为 Apache 服务器设置好根目录和权限后,别忘了单击『保存』保存设置。</span><br /><span style="color:#006600;"> <br /> 如果浏览器请求的资源不存在或发生错误时,为其返回一段错误信息是 WWW 服务器经常采用的一种做法。单击『虚拟服务器选项』页面中的『错误处理』图标,在『客户错误响应』列表中可以看到 Apache 服务器定义的所有错误处理方法,如图 6-1-16 所示。所有错误代码都是由 HTTP 协议规定的,管理员可以根据需要指定在错误产生时是跳转到某个 URL 地址,还是显示一段固定信息。比较常见的做法是将错误信息保存到某个 HTML 文件中,在产生相应的错误时就跳转到该文件。</span><br /><span style="color:#006600;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-1-16.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-1-16.png" border="0" /></span></a><span style="color:#006600;"> 图 6-1-16 客户错误响应</span></div><span style="color:#006600;"> <br /> 看到这里你可能会有些迷惑:Apache 默认的错误处理方法都是在相应的错误产生时,直接显示 /error/ 目录下的某个文件,可系统中根本不存在 /error/ 这个目录啊。这是怎么回事呢?</span><br /><span style="color:#006600;"> <br /> 不要着急,首先单击『错误处理』页面底部的『保存』按钮,返回到『虚拟服务器选项』页面,接着单击『别名重定向』图标。相信当看到『文档目录别名』区域中的设置值时,就已经可以明白了。Apache 通过为目录 /var/www/error/ 设置一个别名 /error/,使得访问 /error/ 目录就等于访问 /var/www/error/ 目录,如图 6-1-17 所示。</span><br /><span style="color:#006600;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-1-17.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-1-17.png" border="0" /></span></a><span style="color:#006600;"> 图 6-1-17 文档目录别名</span></div><span style="color:#006600;"> <br /> 在『别名和重定向』页面中,除了可以为文档目录设置别名外,还可以设置各种 URL 的重定向地址。设置完这些重定向地址后,单击页面底部的『保存』按钮返回『虚拟服务器选项』页面。</span><br /><span style="color:#006600;"> <br /> 通常 WWW 服务器返回的都是静态的 HTML 文档,但很多情况下可能需要根据浏览器发送请求时的条件来决定返回给浏览器的文档内容。设想一下网上聊天时的情况,WWW 服务器需要根据用户名,为同时在线的每个人显示各不相同的内容。通用风头接口 (Common Gateway Interface,CGI)是满足这类要求的一种传统方法,它定义了 WWW 服务器的由它执行的程序间共享信息的一种方法。</span><br /><span style="color:#006600;"> <br /> 说的白一些就是 WWW 服务器可以根据浏览器的请求,运行相应的 CGI 程序,而这个程序可以根据 WWW 服务器设置的各种环境变量、服务器磁盘文件中保存的相关信息,以及客户端的请求信息,来创建动态网页,并通过服务器返回给浏览器。</span><br /><span style="color:#006600;"> <br /> 在『虚拟服务器选项』页面单击『CGI程序』图标,进入该页面。在『CGI目录别名』区域中可以为 CGI 程序所在目录指定别名,如图 6-1-18 所示。</span><br /><span style="color:#006600;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-1-18.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-1-18.png" border="0" /></span></a><span style="color:#006600;"> 图 6-1-18 CGI 目录别名</span></div><span style="color:#006600;"> <br /> CGI 程序在运行时,最重要的是其依赖变量的当前值。在『CGI程序』页面的『变量集基于浏览器类型』区域中,可以根据客户端使用的浏览器来设置 CGI 变量的值。例如,在『浏览器正则表达式』中输入“Moxilla/2”,在『设置变量』中输入“nokeepalive”,并在『值』中输入“1”,如图 6-1-19 所示。这样就可以当客户端在使用 Moxilla/2 浏览器时将 CGI 变量 nokeepalive 的值设为1,从而能够保证对老版本浏览器的兼容,并支持新版本浏览器的一些新特性。</span><br /><span style="color:#006600;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-1-19.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-1-19.png" border="0" /></span></a><span style="color:#006600;"> 图 6-1-19 基于浏览器类型的 CGI 变量</span></div><span style="color:#006600;"> <br /> 在『CGI程序』页面中,还可以根据实际需要设置 HTTP 方法对应的 CGI 动作、CGI 程序在执行时的环境变量,以及由 HTTP 请求中的头信息(header)所决定的CGI 变量值等等。在为 CGI 程序设置好这些参数后,单击页面底部的『保存』按钮保存设置信息。</span><br /><span style="color:#006600;"> <br /> Apache 允许为每个目录指定默认显示的文件,或许平时你也局级注意到了,当我们在浏览器中输入一个网址(如http://www.mylinux.org)时,通常没有指定所要访问的文件名。在这种情况下 Apache 会将文档根目录下的默认文件显示出来。</span><br /><span style="color:#006600;"> <br /> 单击『虚拟服务器选项』页面中的『目录索引』图标,进入设置页面。在『目录索引文件』区域中可以指定目录中默认显示的文件名,如图 6-1-20 所示。还可以同时指定多个默认显示的文件是允许的,Apache 将会优先显示排在前面的文件。</span><br /><span style="color:#006600;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-1-20.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-1-20.png" border="0" /></span></a><span style="color:#006600;"> 图 6-1-20 默认显示的文件</span></div><span style="color:#006600;"> <br /> 在『目录索引』页面中,还可以对其它目录索引选项进行设置,如是否显示图标,是否显示文件大小,各种类型的文件分别采用哪个图标表示等等。设置好目录索引的各种参数后,单击页面底部的『保存』按钮,重新返回到『虚拟服务器选项』页面。</span><br /><span style="color:#006600;"> <br /> 对于中文用户来说,Apache 服务器还有一个很重要的参数需要进行设置,那就是其默认的字符集类型。单击『虚拟服务器选项』页面中的『Language』图标,进入设置页面,然后在『Character set for documents』区域中输入“GB2312”,再单击『保存』按钮就可以将默认的字符集设置为中文,如图 6-1-21 所示。<br /> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-1-21.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-1-21.png" border="0" /></span></a><span style="color:#006600;"> 图 6-1-21 默认字符集</span></div><span style="color:#006600;"> <br /> Apache 的配置也很有学问,深究起来会涉及很多方面,但上面的配置对一个普通的 WWW 服务器来讲已经绰绰有余了,你可以在实际应用的过程中慢慢地理解和掌握 Apache 的其它设置。</span><br /><span style="color:#006600;"> <br /> 好了,下面该动手启动 Apache 服务器了。</span>✿☞凌锋http://www.blogger.com/profile/12644976863380733852noreply@blogger.com0tag:blogger.com,1999:blog-4171529930503643264.post-54645015884977478722006-09-20T12:04:00.000+08:002006-09-20T12:06:19.554+08:00配置 Apache 服务器<span style="color:#666600;"> 接着就自动进入『Apache WEB服务器』页面,在这里可以对 Apache 服务器的各种参数进行设置,如图 6-1-5 所示。</span><br /><span style="color:#666600;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-1-5.gif"><span style="color:#666600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-1-5.png" border="0" /></span></a><span style="color:#666600;"> 图 6-1-5 配置 Apache 服务器</span></div><span style="color:#666600;"> </span><br /><span style="color:#666600;"> 首先单击『进程和限制』图标,进入『进程和限制』页面,对 Apache 服务器做一些保护性工作。在『每个服务器进程的最大请求数』区域中,可以指定一个独立的 httpd 后台服务进程在同一时刻允许处理的最大请求数目,如图 6-1-6 所示。这样就不用担心 Apache 服务器由于同时连接的用户过多而导致性能下降甚至瘫痪。注意,如果该参数的值设为0,则表示没有限制。<br /> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-1-6.gif"><span style="color:#666600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-1-6.png" border="0" /></span></a><span style="color:#666600;"> 图 6-1-6 允许处理的请求数目</span></div>✿☞凌锋http://www.blogger.com/profile/12644976863380733852noreply@blogger.com0tag:blogger.com,1999:blog-4171529930503643264.post-18687030648965934462006-09-20T12:01:00.000+08:002006-09-20T12:04:00.495+08:003、配置 Apache<span style="color:#660000;"> 打开浏览器并登录 Webmin 后,单击『服务』图标,进入服务管理页面,在这里可以对 Apache 服务器进行管理,如图 6-1-3 所示。</span><br /><span style="color:#660000;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-1-3.gif"><span style="color:#660000;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-1-3.png" border="0" /></span></a><span style="color:#660000;"> 图 6-1-3 管理 Apache 服务器</span></div><span style="color:#660000;"> </span><br /><span style="color:#660000;"> 单击『Apache服务器』图标,由于是第一次在 Webmin 中配置 Apache 服务器,Webmin 会对 Apache 加载的模块进行检查,如图 6-1-4 所示。当前所有已经安装的 Apache 模块都将被选中,也可以只选择自己所需的模块,然后单击『配置』按钮完成模块配置。<br /> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-1-4.gif"><span style="color:#660000;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-1-4.png" border="0" /></span></a><span style="color:#660000;"> 图 6-1-4 检查 Apache 模块</span></div>✿☞凌锋http://www.blogger.com/profile/12644976863380733852noreply@blogger.com0tag:blogger.com,1999:blog-4171529930503643264.post-23299359460705864502006-09-20T11:56:00.000+08:002006-09-20T12:01:32.710+08:00第六章 配置与管理 WWW 服务 在绚丽多彩的 Internet 上,WWW 服务器所起的作用的确是功不可没,它是目前 Internet 上应用最广的一种服务器,也是网络管理员的一个工作重心。目前在Linux 平台上架构 WWW 服务器时绝大部分采用的是 Apache,这是因为它稳定、速度快,并且极具弹性,如果再配以合适的硬件,将可以得到很高的性能。这也就难怪 Yahoo、Altavista、Amazon 这些世界级的大网站都不约而同地投入了 Apache的怀抱。<br /> <br /><div align="center"><strong><span style="font-size:130%;">第一节 Apache 服务器管理</span></strong></div> <br /> Linux 最大的优势是稳定性能高且成本低廉,因此现在越来越多的人都开始采用 Linux 操作系统,再配上 Apache 这一优秀的 WWW 服务器软件来构建自己的网站。做为一名合格的 Linux 系统管理员,自然不能落伍了,下面就一起来看看如何在 Red Hat Linux AS 4 上借助 Apache 来架设 WWW 站点。<br /> <br /><strong>1、认识 Apache</strong><br /> <br /> 优秀的 WWW 服务器很多,却为何钟情于 Apache 呢?问得好,我们还是用事实来说话吧。截止到2000年5月,根据 Netcraft 对 Internet 上1500万台服务器的统计结果表明,60%的 WWW 服务器都采用了 Apache,如果再将 Apache 的衍生产品算上,这个比例会更高。相比之下,Microsoft 公司的 IIS 只占了大约21%的比例,是 Apache 约三分之一的份额。显而易见,Apache 的确是一个很好的选择。<br /> <br /> Apache 最初由 Apache 组织负责开发和维护,从一出现就显示出了锐不可挡的强劲势头,很快它就横扫其它对手成为最流行的 WWW 服务器了。<br /> <br /> Apache 不仅功能强大,而且还是免费的自由软件,并支持最新的 HTTP 标准。Apache 开发小组的工作热情相当高,目前它的稳定版本已经开发到了1.3.27,而采用新技术的 Apache2.0 也开始进入了实用阶段,在 Apache 的官方网站(www.apache.org)上可以下载到最新的 Apache 软件包。时至今日,Apache 忆已成为建立低价格、高性能网站的首选,它与 Linux 的联手为 Internet 应用开辟了一个崭新的自由天地。<br /> <br /><strong>2、安装 Apache</strong><br /> <br /> 目前几乎所有的 Linux 发行版都自带了 Apache 服务器,Red Hat Linux AS 4自然不会背道而驰,它提供了 Apache HTTP 服务器的 2.0.40 版本,只需在安装Linux 系统时选择“万维网服务器”套件就可以了。如果不清楚当前 Linux 系统中是否安装了 Apache 服务器,可以在命令行方式下用 rpm 命令查询一下:<br /> <br /> [root@kevin ~]#rpm -qa httpd<br /> httpd-2.0.40-21 (# 表明已经安装了Apache服务器)<br /> <br /> 如果没有看到任何安装信息,则表明在安装 Red Hat Linux AS 4 时,忘记选择 Apache 服务器。不过即便这样也不用担心,你可以用 root 用户的身份登录KDE,然后单击 KDE 主菜单,从『系统设置』菜单下选择『添加/删除应用程序』命令,打开『软件管理』窗口,在『服务器』区域中将『万维网服务器』套件选中,如图 6-1-1 所示。<br /> <br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-1-1.gif"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-1-1.png" border="0" /></a> 图 6-1-1 安装 WWW 服务器软件</div> <br /> 如果要对 WWW 服务器套件做进一步的选择,可以单击右侧的『细节』按钮,打开『Web Server软件包』细节窗口,选择是否为 Apache 服务器安装其它的支持模块,如图 6-1-2 所示。<br /> <br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/6-1-2.gif"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/6-1-2.png" border="0" /></a> 图 6-1-2 选择 WWW 服务器软件包</div> <br /> 采用模块化设计是 Apache 服务器的一个显著特点,这样做的好处是可以很容易的扩展 Apache 的功能,目前许多 Apache 的额外功能(如对PHP的支持)都是采用模块方式添加上的。<br /> <br /> 选择好要安装软件包后,单击『软件包管理』窗口中的『更新』按钮,然后按照提示插入安装光盘就可以完成 Apache 服务器的安装。✿☞凌锋http://www.blogger.com/profile/12644976863380733852noreply@blogger.com0tag:blogger.com,1999:blog-4171529930503643264.post-4713458016217228242006-09-20T11:52:00.000+08:002006-09-20T11:56:01.102+08:00身份认证信息<span style="color:#663366;"> 现在输入在邮件服务器上的用户名和密码,如图 5-3-11 所示。填好后单击『下一步』按钮继续。<br /> <br /></span><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/5-3-11.gif"><span style="color:#663366;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/5-3-11.png" border="0" /></span></a><span style="color:#663366;"> 图 5-3-11 身份认证信息</span></div><span style="color:#663366;"> <br /> 出于安全性的考虑,在创建邮件账户时也可以不填密码,但 Outlook 在每次连接 IMAP 服务器时都会要求输入用户名和密码。然后单击『下一步』按钮就完成了,如图 5-3-12 所示。<br /> <br /></span><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/5-3-12.gif"><span style="color:#663366;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/5-3-12.png" border="0" /></span></a><span style="color:#663366;"> 图 5-3-12 完成设置<br /> </span></div><div align="left"><span style="color:#663366;"> 最后,单击『完成』按钮,使用 IMAP 服务器接收 E-mail 的帐号就创建好了。退回到『Internet帐户』窗口后,可以在邮件列表中找到新创建的 IMAP 帐户,单击『Internet帐户』窗口中的关闭按钮,退回到 Outlook 主界面。现在就可以检查 IMAP 服务器是否已经正常工作了。</span></div><div align="left"><span style="color:#663366;"> </span></div><div align="left"><span style="color:#663366;"> 使用 Outlook 收发邮件就不用再介绍了吧,相信已经很熟悉了。</span></div><div align="left"><span style="color:#663366;"> <br /> 瞧,Windows 用户现在也可以享用 Linux 下的 Sendmail、POP3 和 IMAP 服务器提供的电子邮件服务了。</span></div>✿☞凌锋http://www.blogger.com/profile/12644976863380733852noreply@blogger.com0tag:blogger.com,1999:blog-4171529930503643264.post-38257801701564540022006-09-20T11:50:00.000+08:002006-09-20T11:52:17.138+08:00设置 E-mail 地址<span style="color:#000099;"> 进入『Internet电子邮件地址』界面后,在『电子邮件地址』文本框中输入E-mail 地址,如图 5-3-9 所示,然后单击『下一步』按钮继续。</span><br /><span style="color:#000099;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/5-3-9.gif"><span style="color:#000099;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/5-3-9.png" border="0" /></span></a><span style="color:#000099;"> 图 5-3-9 设置 E-mail 地址</span></div><span style="color:#000099;"> </span><br /><span style="color:#000099;"> 接着,在『电子邮件服务器』界面中输入的内容是最关键的。首先从『我的邮件接收服务器是』下拉框中选择『IMAP』项,然后在『邮件接收服务器』文本框中输入 IMAP 服务器的域名或 IP 地址,需要时还可以在『邮件发送服务器』文本框中输入 Sendmail 邮件服务器地址,如图 5-3-10 所示。所有这些都设置好后,单击『下一步』按钮。</span><br /><span style="color:#000099;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/5-3-10.gif"><span style="color:#000099;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/5-3-10.png" border="0" /></span></a><span style="color:#000099;"> 图 5-3-10 设置邮件服务器</span></div>✿☞凌锋http://www.blogger.com/profile/12644976863380733852noreply@blogger.com0tag:blogger.com,1999:blog-4171529930503643264.post-12281489174597898682006-09-20T11:46:00.000+08:002006-09-20T11:50:09.896+08:003、测试 POP 服务器<span style="color:#006600;"> 如果要在 Linux 平台上的 Kmail 中使用已经配置好的 POP 服务器,可以单击『设置』菜单,选择『配置Kmail』命令,打开『配置』窗口后单击左侧的『网络』图标,进入『设置信件收发』界面,在『接收』选项卡中,可以管理接收邮件的所有帐号。</span><br /><span style="color:#006600;"> <br /> 单击『添加』按钮,打开『添加帐号』窗口,从中选择要添加的帐号类型。此处应选择『POP3』单选框了。</span><br /><span style="color:#006600;"> <br /> 单击『确定』按钮后,将看到设置帐号属性的窗口,在这里可以对 POP3 邮件帐号的各种属性进行设置,其中最重要的是 POP3 服务器的主机地址,以及你的用户名和口令。</span><br /><span style="color:#006600;"> <br /> 好了,现在单击『确定』按钮,就可以在『配置』窗口中的『接收帐号』列表内找到刚刚创建的 POP3 邮件帐号。单击『配置』窗口中的『确定』按钮返回到Kmail 主界面,之后就可以通过 POP3 服务器来收取别人发给你的 E-mail 了。</span><br /><span style="color:#006600;"> <br /> 单击『文件』菜单,选择『检查邮件』命令,如果此时邮箱中有尚未处理的邮件, Kmail 就会通过 POP3 服务器将其下载到本地计算机中。</span><br /><span style="color:#006600;"> </span><br /><strong><span style="color:#006600;">4、测试 IMAP 服务器</span></strong><br /><span style="color:#006600;"> <br /> IMAP 是一个比 POP 更加灵活的邮件接收协议,只可惜目前还不像 POP 协议那样被广泛应用。要测试 IMAP 服务器,可以使用 Windows 下的 Outlook 或Outlook Express(简称OE)。</span><br /><span style="color:#006600;"> <br /> 启动 Outlook 或 OE 后,单击『工具』菜单,选择『帐号』命令,打开『Internet 帐号』对话框。接着选择『邮件』选项卡,单击『添加』按钮,选择『邮件』命令,创建一个新的邮件账户,此时将打开『Internet连接向导』对话框,在『显示名』文本框中输入你的名称后单击『下一步』按钮,如图 5-3-8 所示。</span><br /><span style="color:#006600;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/5-3-8.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/5-3-8.png" border="0" /></span></a><span style="color:#006600;"> 图 5-3-8 设置邮件显示姓名</span></div>✿☞凌锋http://www.blogger.com/profile/12644976863380733852noreply@blogger.com0tag:blogger.com,1999:blog-4171529930503643264.post-78260761417031738612006-09-20T11:44:00.000+08:002006-09-20T11:46:31.626+08:00重新启动 Xinetd 服务器<span style="color:#996633;"> 现在需要重新启动 Xinetd 服务器,使得刚刚修改的设置值可以立即生效。单击『扩展的Internet服务』页面底部的『应用改变』按钮,可以重新启动 Xinetd服务器,如图 5-3-7 所示。</span><br /><span style="color:#996633;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/5-3-7.gif"><span style="color:#996633;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/5-3-7.png" border="0" /></span></a><span style="color:#996633;"> 图 5-3-7 重新启动 Xinetd 服务器</span></div><span style="color:#996633;"> <br /></span><br /><span style="color:#996633;"> 在功告成,POP3 和 IMAP 服务器已经准备好提供服务了,不过在正式启用它们之前最好还是先测试一下。</span>✿☞凌锋http://www.blogger.com/profile/12644976863380733852noreply@blogger.com0tag:blogger.com,1999:blog-4171529930503643264.post-44734046171789675892006-09-20T11:41:00.000+08:002006-09-20T11:44:34.843+08:00启动 POP2 服务器<span style="color:#660000;"> 单击『POP2』链接,进入『编辑Internet服务器』页面,在『启用服务吗』区域中选择『是』单选框,然后单击页面底部的『保存』按钮,就能够以 Xinetd 方式启动 POP2 服务器了,如图 5-3-5 所示 。</span><br /><span style="color:#660000;"> </span><br /><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/5-3-5.gif"><span style="color:#660000;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/5-3-5.png" border="0" /></span></a><span style="color:#660000;"> 图 5-3-5 启动 POP2 服务器</span><br /><span style="color:#660000;"> </span><br /><span style="color:#660000;"> 用同样的办法再将 POP3 和 IMAP 服务器都以 Xinetd 方式启动,如图 5-3-6所示。目前常用的 POP 协议有两个版本,即 POP2 和 PO3(POP3比PO2使用更广泛),因此与之对应的服务器也有两个。<br /> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/5-3-4.0.gif"><span style="color:#660000;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/5-3-4.0.png" border="0" /></span></a><span style="color:#660000;"> 图 5-3-6 启动 POP3 和 IMAP 服务器</span></div>✿☞凌锋http://www.blogger.com/profile/12644976863380733852noreply@blogger.com0tag:blogger.com,1999:blog-4171529930503643264.post-35741689237258698572006-09-20T11:38:00.000+08:002006-09-20T11:41:08.803+08:002、启动 POP 和 IMAP 服务器 同 Sendmail 比较,POP 和 IMAP 服务器的配置要简单得多基本上不需要做任何设置就可以正常工作了。如果安装过程没有出现问题,现在你就可以启动它们了。<br /> <br /> POP 和 IMAP 服务器都是采用 Xinetd 方式启动。单击『Webmin』中的『网络』图标,进入网络管理页面,如图 5-3-3 所示。<br /> <br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/5-3-3.gif"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/5-3-3.png" border="0" /></a> 图 5-3-3 管理 Xinetd 服务器</div> <br /> 单击『Xinetd服务配置』图标,进入『扩展的Internet服务』页面,在服务列表中找到 POP2 服务,如图 5-3-4 所示。<br /> <br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/5-3-4.gif"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/5-3-4.png" border="0" /></a> 图 5-3-4 管理 POP2 服务器</div>✿☞凌锋http://www.blogger.com/profile/12644976863380733852noreply@blogger.com0tag:blogger.com,1999:blog-4171529930503643264.post-80475951694244056882006-09-20T11:34:00.000+08:002006-09-20T11:38:17.936+08:00第三节 POP 和 IMAP 邮件系统<span style="color:#663366;"> 目前,大多数 PC 机用户可能还是更习惯于使用 Windows 下的 Outlook、Foxmail 等软件收发 E-mail。为了让这些用户能够访问 Sendmail 邮件服务器中的邮箱,还必须为他们架构 POP 服务器或者 IMAP 服务器。</span><br /><span style="color:#663366;"> <br /> POP 和 IMAP 都是从邮件服务器上接收邮件的协议,用户可以通过它们将E-mail 从邮件服务器取回到自己的计算机中阅读和处理,并可以使用自己最熟悉的软件来编辑和收发邮件。对绝大多数用户来说,这些功能都是很关键的。</span><br /><span style="color:#663366;"> <br /><strong>1、安装 POP 和 IMAP 服务器</strong></span><br /><span style="color:#663366;"> <br /> 以 root 登录 KDE,然后单击 KDE 主 菜单,从『系统设置』菜单项下选择『添加/删除应用软件』命令,打开『软件包管理』窗口,在『服务器』区域中将『邮件服务器』套件选中,如图 5-3-1 所示。</span><br /><span style="color:#663366;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/5-2-7.1.gif"><span style="color:#663366;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/5-2-7.1.png" border="0" /></span></a><span style="color:#663366;"> 图 5-3-1 安装邮件服务器套件</span></div><span style="color:#663366;"> </span><br /><span style="color:#663366;"> 由于 POP 和 IMAP 服务器不属于 Red Hat Linux AS 4 的标准软件包,因此需要单击右侧的『细节』按钮,打开『Mail Server』窗口,并在『额外软件包』下面选中『imap』,如图 5-3-2 所示。<br /> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/5-3-2.gif"><span style="color:#663366;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/5-3-2.png" border="0" /></span></a><span style="color:#663366;"> 图 5-3-2 选择 POP 和 IMAP 服务器</span></div><span style="color:#663366;"> <br /> 现在单击『关闭』按钮退回到『软件包管理』窗口,然后单击『更新』按钮,再按照提示放入 Red Hat Linux AS 4 的安装光盘,就可以完成 POP 和 IMAP 服务器软件包的安装。</span>✿☞凌锋http://www.blogger.com/profile/12644976863380733852noreply@blogger.com1tag:blogger.com,1999:blog-4171529930503643264.post-4638217654220039662006-09-20T11:31:00.000+08:002006-09-20T11:34:47.541+08:00查看邮件<span style="color:#000099;"> 如果想查看队列中等待发送的邮件的详细信息,可以在『邮件ID』列中单击要查看的邮件,打开『读邮件』页面阅读邮件内容。</span><br /><span style="color:#000099;"> <br /> 单击『读邮件』页面中『邮件头』区域右侧的『View all headers』链接,可以查看到邮件中包含的所有头(header)信息。可不要小瞧这些头信息,当 Sendmail邮件服务器因配置问题而无法正常发送邮件时,查看队列中那些无法发送的邮件的头信息,说否定可以带来一些启发。</span><br /><span style="color:#000099;"> <br /> 对于那些迟迟无法发送的邮件,将它们一直保存在发送队列中没有任何意义,Sendmail 的管理员应该将它们从邮件队列中删除,以免过多的占用磁盘空间。要删除邮件队列中等待发送的邮件,只需在邮件列表中将其 ID 前的复选框选中,然后单击『Delete selected messages』按钮就可以了。</span><br /><span style="color:#000099;"> <br /> 默认情况下,Sendmail 邮件服务器将在邮件队列中等待发送的邮件都统一存放在 /var/spool/mqueue/ 目录下,其访问权限通常为“-rw-------”,拥有者是root。当然,必要时指定系统中的其它目录来存放邮件队列中的邮件。在 Webmin的『Sendmail配置』页面中单击『Sendmail选项』,进入『Sendmail选项』页面,在『邮件队列目录』中指定好存放邮件的邮件队列目录后,单击『保存并应用』按钮即可。这样下次启动 Sendmail 邮件服务器时,邮件队列中的邮件就会保存在新指定的目录下。</span><br /><span style="color:#000099;"> <br /> 当邮件发送成功后,Sendmail 会将发给每个用户的邮件收集在/var/spool/mail/ 目录下,供 E-mail 客户端软件读取,Linux 系统中的第一个用户都有一个与帐号同名的文件来储存邮件。管理员通过『Sendmail配置』页面中的『用户邮箱』可以查看所有用户当前邮箱中的内容。</span><br /><span style="color:#000099;"> </span><br /><span style="color:#000099;"> 单击『用户邮箱』图标,进入『用户邮箱』页面,在这里可以看到系统中当前拥有邮箱的所有用户列表。</span><br /><span style="color:#000099;"> <br /> 要查看某个用户邮箱中的具体内容,可以在『用户邮箱』区域中的邮箱列表中单击该用户名对应的链接,进入『用户邮件』页面来查看该用户当前收到的所有E-mail,如图 5-2-27 所示。</span><br /><span style="color:#000099;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/5-2-27.gif"><span style="color:#000099;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/5-2-27.png" border="0" /></span></a><span style="color:#000099;"> 图 5-2-27 查看邮件</span></div><span style="color:#000099;"> <br /></span><br /><span style="color:#000099;"> 在一定程度上可能将 Webmin 看成一个简单的 Webmin 邮件系统。通过 Webmin不仅可以查看邮件内容,还可以完成邮件的转发和删除,甚至撰写新的邮件所示。怎么样,又一次体会到 Webmin 的强大了吧。</span><br /><span style="color:#000099;"> <br /> Sendmail 本身只是一个邮件服务器,每一个合法的 Linux 用户都能够通过Sendmail 来发送邮件,但它不能对用户的邮箱大小进行限制。如果需要像许多流行的 Webmail 那样限制邮箱的大小,可通过前面介绍过的用户磁盘限额功能来实现。</span>✿☞凌锋http://www.blogger.com/profile/12644976863380733852noreply@blogger.com0tag:blogger.com,1999:blog-4171529930503643264.post-89027852192188963232006-09-20T11:29:00.000+08:002006-09-20T11:31:09.839+08:006、管理邮件队列<span style="color:#006600;"> 现在 Sendmail 邮件服务器已经正常工作了,KMail 邮件客户软件也将 E-mail发送出去了,可难免还是会出现因为网络问题而全邮件发送失败的情况,此时就需要查看邮件队列的内容来确定问题的所在了。在 Webmin 的『Sendmail配置』页面中,可以找到管理邮件队列的图标,如图 5-2-25 所示。</span><br /><span style="color:#006600;"> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/5-2-25.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/5-2-25.png" border="0" /></span></a><span style="color:#006600;"> 图 5-2-25 管理邮件队列</span></div><span style="color:#006600;"> </span><br /><span style="color:#006600;"> 单击『邮件队列』图标,进入『邮件队列』页面,在这里可以看到当前所有正在队列中等待发送的邮件,如图 5-2-26 所示。<br /> </span><br /><div align="center"><a href="http://photos1.blogger.com/blogger2/128/509219962219683/1600/5-2-26.gif"><span style="color:#006600;"><img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger2/128/509219962219683/400/5-2-26.png" border="0" /></span></a><span style="color:#006600;"> 图 5-2-26 邮件队列</span></div>✿☞凌锋http://www.blogger.com/profile/12644976863380733852noreply@blogger.com0tag:blogger.com,1999:blog-4171529930503643264.post-62536409812598497382006-09-20T11:27:00.000+08:002006-09-20T11:29:09.913+08:005、测试 Sendmail<span style="color:#996633;"> 如何测试配置好 Sendmail 邮件服务器是否工作正常呢?你也许会考虑发送一封 E-mail 的办法进行测试。虽然这是一个比较简单的办法,但不是最好的方法。因为如果发生了问题,将无法等到足够的反馈信息,也就很难判断出现问题的环节。</span><br /><span style="color:#996633;"> <br /> 正如 SMTP 名字所表明的那样,它的确是一个简化了的邮件传输协议。SMTP 服务器在 TC P端口 25 上监听连接,SMTP 客户机连接到这个端口后,通过简单的SMTP 命令就可以完成一次 E-mail 会话。作为 Sendmail 管理员,应该了解最基本的 SMTP 命令,因为这对检测邮件系统的故障是很重要的。</span><br /><span style="color:#996633;"> <br /> 你肯定对 Windows 下的 Outlook、Foxmail 等电子邮件客户端软件非常熟悉了吧,其实在 Linux 中也有很多选择,既可以使用文本模式下的 mail 和 pine,也可以使用图形模式下的 KMail、Ximian 等。KDE 桌面环境下的 KMail 就是一个相当不错的电子邮件客户端软件。单击 KDE 主菜单,选择『互联网』→『更多互联网应用程序』→『KMail』,可以启动 KMail。</span><br /><span style="color:#996633;"> <br /> 要在 KMail 中使用 Sendmail 服务器,单击『设置』菜单,选择『配置KMail』命令,打开『配置』对话框。</span><br /><span style="color:#996633;"> <br /> 首先在 KMail 中创建一个邮件身份标识,单击『配置KMail』窗口左侧的『身份标识』图标,进入『管理身份标识』界面。然后单击『新建』按钮,在随即打开的『新身份标识』窗口中输入身份标识名称。</span><br /><span style="color:#996633;"> </span><br /><span style="color:#996633;"> 单击『确定』按钮,打开『编辑身份标识』窗口,输入名字、组织或公司名称和 E-mail 地址后,单击『确定』按钮,新的身份标识符创建好了。</span><br /><span style="color:#996633;"></span><br /><span style="color:#996633;"> 退回『编辑』对话框后,单击窗口左侧的『网络』图标,进入『设置信件收发』界面。在『发送』选项卡中单击『添加』按钮,打开『添加传送方式』对话框,在选中『SMTP』单选框后,单击『确定』按钮。</span><br /><span style="color:#996633;"> <br /> 此时将打开『添加传送方式』对话框,首先在『名字』文本框中输入 Sendmail邮件服务器的名称,然后在『主机』文本框中输入 Sendmail 邮件服务器的域名或IP 地址,再单击『确定』按钮。</span><br /><span style="color:#996633;"> <br /> 返回到『配置』对话框后,在『发送帐号』列表中可以找到刚刚添加的Sendmail 帐号,在『默认域名』文本框中可以指定该帐号在发送 E-mail 时所使用的默认域名。接着单击『确定』按钮退出『配置』窗口,现在就可以在 KMail 中利用该 Sendmail 邮件服务器发送 E-mail 了。</span><br /><span style="color:#996633;"> <br /> 要借助 KMail 并通过 Sendmail 服务器来发送 E-mail,可以单击『信件』菜单,选择『撰写新信件』命令,打开邮件编辑窗口来撰写新的邮件。编辑好邮件内容后,单击『发送』按钮,KMail 就会自动连接 Sendmail 邮件服务器,并通过一系列命令将邮件发送出去。</span>✿☞凌锋http://www.blogger.com/profile/12644976863380733852noreply@blogger.com5