<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[七小木东]]></title> 
<link>http://www.qixiaomudong.cn/index.php</link> 
<description><![CDATA[七小木东]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[七小木东]]></copyright>
<item>
<link>http://www.qixiaomudong.cn/read.php?351</link>
<title><![CDATA[openwebmail邮件常见问题]]></title> 
<author>七小木东 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[Linux]]></category>
<pubDate>Wed, 03 Feb 2010 02:08:54 +0000</pubDate> 
<guid>http://www.qixiaomudong.cn/read.php?351</guid> 
<description>
<![CDATA[ 
	邮件常见问题<br/>1、&nbsp;&nbsp;对于openwebmail来说，收信及发信箱都保存 ，收信箱在/var/mail/每个人名字下面，而发信箱保存在/home/每个人名字/mail/sent-mail文件中。<br/>同级还有如下的目录&nbsp;&nbsp;/home/每个人名字/mail/spam-mail //垃圾箱<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/home/每个人名字/mail/virtus-mail //病毒邮件<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /home/每个人名字/mail/saved-drafts //草稿箱<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /home/每个人名字/mail/saved-messages //已保存邮件<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /home/每个人名字/mail/mail-trash //废件邮件<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>2、&nbsp;&nbsp;当用outlook进行收发邮件时，linux邮件系统的对应目录中不会保存相应的文件。只有用openwebmail的格式时才能保存相关的文件到收信及发信箱中。<br/>3、&nbsp;&nbsp;日志文件保存在 /var/log/openwebmail.log<br/>4、&nbsp;&nbsp;看发送的缓冲队列是 /var/spool/mailq 命令。 具体的未发送队列是 /var/spool/mqueue目录中，有q1,q2等队列。<br/> <br/> <br/>为什么我发的邮件别人收不到,还会被退信?<br/> <br/>当您使用sohu邮箱给别人发信后，对方没有收到邮件，您的邮箱却出现了退信，这种情况一般来说，是对方服务器或者您的操作可能有问题，具体原因请您打开这封退信，退信的正文里面有标明退信原因的错误号，错误号及对应问题如下:<br/><br/><br/>1. 这个收件人不存在，退信提示信息一般为:invalid address (#5.5.0)或者User unknown或者user is not found等等。请核对对方email地址是否正确,或者有没有变动，一般是邮件地址@前面的部分填写有错,请核对无误后给对方发送。<br/><br/>2. 对方邮箱已满退信提示信息一般为:receiptor's mailbox is full 或者Quota exceed the hard limit for user原因对方邮箱超过了允许的容量,您只能让对方清空邮箱后再接收。<br/><br/>3. 对方服务器拒绝接收sohu邮件退信提示信息一般为:Recipient address rejected: Relay access denied或者554 Error: content rejected原因是对方邮件服务器将sohu邮件屏蔽掉了,您最好通过其他邮箱和对方邮件管理员联系,说明情况,解除屏蔽就可以了.或者换一个其他的邮箱和对方联系<br/> <br/>5、&nbsp;&nbsp; 目前人们都讨论关于邮件的问题，总有人发现我们的邮件能收不能发，发到别人发不到，这是一个如何的问题，一般来说不应该，发到其它人正确，而只有一小部分人总反映此问题。<br/>6、&nbsp;&nbsp; 还是就是我们邮件的relay问题，是不是有办法来解决，不进行relay,能否满足我们目前的需求。还有一个问题是如何，争取上网来发提示，按照回复的短信来下午改正。<br/>7、&nbsp;&nbsp; 清理垃圾邮件的队列 ：/var/spool/mqueue<br/>8、&nbsp;&nbsp; 对于邮件的日志来说，放到了/var/log/maillog下，所有的邮件信息都记录此文件中，而对于收发邮件来说，如果用的是outlook发送，则不会记录在/home/姓名/mail/sent-mail(发),/var/mail/姓名（收）。日志文件保存了进行收发的相关记录。<br/> <br/>8 重新启动邮件服务时，先启动named，使域名服务器能顺序启动，再有进入/var/www/bin下，启动httpd服务。<br/>./apachectl restart,即可。<br/>9 自启动’named’命令是 chkconfig - - level 3 named on<br/>10 选择自启动的命令是 ntsysv ,<br/>12 在/etc/mail/access 中的定义项及含义<br/>OK<br/>Accept mail even if other rules in the running ruleset would reject it, for example, if the domain name is unresolvable. "Accept" does not mean "relay", but at most acceptance for local recipients. That is, OK allows less than RELAY.//接受邮件甚至有规则将它拒绝，接受并不意味着可以“RELAY”,但是至多为本地容器所接受<br/>RELAY<br/>Accept mail addressed to the indicated domain or received from the indicated domain for relaying through your SMTP server. RELAY also serves as an implicit OK for the other checks.接受、发送指定MAIL地址<br/>REJECT<br/>Reject the sender or recipient(容器) with a general purpose message.拒绝发送者返回指定的信息<br/>DISCARD<br/>Discard the message completely using the $#discard mailer. If it is used in check_compat, it affects only the designated recipient, not the whole message as it does in all other cases. This should only be used if really necessary. 丢弃信息，它起作用只是指定的容器，并不是整个信息。<br/>SKIP<br/>This can only be used for host/domain names and IP addresses/nets. It will abort the current search for this entry without accepting or rejecting it but causing the default action.它中断当前的搜索按照默认的动作，不接受也不拒绝<br/>### any text<br/>where ### is an RFC 821 compliant（约定） error code and "any text" is a message to return for the command. The string should be quoted（引用） to avoid surprises（惊奇）, e.g., sendmail may remove spaces otherwise. This type is deprecated（不赞成）, use one the two ERROR: entries below instead. ### is an RFC 821是错误代码，"any text"是回传的错误，<br/>ERROR:### any text<br/>as above, but useful to mark error messages as such.标识错误信息<br/>ERROR:D.S.N:### any text<br/>where D.S.N is an RFC 1893 compliant error code and the rest as above.约定的错误代码<br/>For example:<br/>cyberspammer.com&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ERROR:"550 We don't accept mail from spammers"<br/>okay.cyberspammer.com&nbsp;&nbsp;OK<br/>sendmail.org&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RELAY<br/>128.32&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RELAY<br/>IPv6:1:2:3:4:5:6:7&nbsp;&nbsp;&nbsp;&nbsp; RELAY<br/>[127.0.0.3]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OK<br/>[IPv6:1:2:3:4:5:6:7:8] OK<br/>would accept mail from okay.cyberspammer<br/>Mail Abuse Prevention System (MAPS). 垃圾邮件保护组织<br/>MUA 指outlook 等相类信软件<br/>Mta指邮件传输代理 ，指mail server<br/>MDA,在mail server上运行的软件，帮助来将信件发到每个邮件帐号。<br/>Relay 指帮助别人传递信件。不是你的邮件传递到下一个邮件服务器。<br/>当关闭relay功能或对relay进行限制，则对于没有固定ip的邮件就没有办法来传递，这样就要用到邮件认证机制。<br/>当邮件发送时，mta会检查来自client端的认证对比，如果对比成功，则可以帮助收发邮件，如果对比不成功，则会不给发信，这就是一般所使用的SMTP邮件认证机制。(发时进行认证).<br/>使用cyrus-sasl密码认证机制.<br/>http://www.redhat.com/apps/support/errata/！<br/>ftp://linux.sinica.edu.tw/pub1/redhat/updates/<br/>cyrus-sasl是一个应用程式所使用的认证出函式库，sendmail 是一个应用程式，透过sasl提供的函数式功能 ，并且 定义出认证的方式，让SASL透过主机的沟通动作，提供应用程式来认证的目的。<br/>Cyrus-sasl提供 PAM与shadow两种认证方式。<br/>原理：1系统先 有cyrus-sasl<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2 sendmail.cf要编译cyrus-sasl的函数式。<br/>&nbsp;&nbsp;&nbsp;&nbsp; ？？3 如果Sendmail.conf中设置为pam,则必须有/etc/pam.d有smtp 这个档案。<br/>简单的说 procmail可以视为一个mda,帮助分析信件，之后在送给每个人。
]]>
</description>
</item><item>
<link>http://www.qixiaomudong.cn/read.php?215</link>
<title><![CDATA[Linux系统在使用光盘、软盘或U盘时，必须先执行挂载（mount）命令。]]></title> 
<author>七小木东 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[Linux]]></category>
<pubDate>Tue, 16 Dec 2008 13:25:02 +0000</pubDate> 
<guid>http://www.qixiaomudong.cn/read.php?215</guid> 
<description>
<![CDATA[ 
	Linux系统在使用光盘、软盘或U盘时，必须先执行挂载（mount）命令。挂载命令会将这些存储介质指定成系统中的某个目录，以后直接访问相应目录即可读写存储介质上的数据。1.挂载光盘 <br/>挂载光盘的命令如下： <br/># mount -r -t iso9660 /dev/cdrom /mnt/cdrom <br/>&nbsp;&nbsp;&nbsp;&nbsp; -r 只读 <br/>&nbsp;&nbsp;&nbsp;&nbsp; -t 类型 <br/>或#mount /mnt/cdrom <br/>挂载成功时显示： <br/><br/>mount: /dev/cdrom already mounted or /mnt/cdrom busy <br/>mount: according to mtab, /dev/cdrom is already mounted on /mnt/cdrom <br/><br/>有时即使插入光盘也可能会出现No medium的提示，可能是系统并没有识别光盘的缘故，我们可以试着退出光盘并重新插入，值得注意的是，在使用虚拟机时，一定要进入虚拟机中的linux后，再放入光盘，否则系统将无法识别光盘，在Red hat 11中，已经提供了另一种快捷的方法，当我们插入光盘时，桌面上会出现一个光盘图标，我们双击打开即可。 <br/><br/>上述命令将光盘挂载到/mnt/cdrom目录，使用“ls /mnt/cdrom”命令即可显示光盘中数据和文件。 <br/>卸载光盘的命令如下： <br/><br/># umount /mnt/cdrom <br/>我们可以通过点击桌面上的主目录图标，然后在位置栏中输入/mnt/cdrom或/mnt/floppy来访问光盘或软盘 <br/>2.挂载软盘 <br/>将软盘挂载到/mnt/floppy目录的命令如下： <br/><br/># mount /dev/fd0 /mnt/floppy <br/>或#mount -t vfat /dev/fd0 /mnt/floppy/ <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp; -t 代表类型 <br/>&nbsp;&nbsp;&nbsp;&nbsp; vfat 代表fat格式卸载软盘的命令如下： <br/><br/>#umount /mnt/floppy <br/>拷贝文件至软盘： <br/><br/>#cp filename /mnt/floppy/ <br/>3.挂载U盘挂载U盘相对复杂一些。首先使用“fdisk -l”命令查看外挂闪存的设备号，一般为/dev/sda1。然后用“mkdir /mnt/usb”命令建立一个挂载U盘用的目录。之后使用如下命令挂载FAT格式的U盘： <br/><br/># mount -t msdos /dev/sda1 /mnt/usb <br/>使用如下命令挂载FAT32格式的U盘： <br/><br/># mount -t vfat /dev/sda1 /mnt/usb <br/>4.挂载外挂硬盘分区 <br/>挂载外挂硬盘分区（FAT32格式）同样需要先用“fdisk -1”查看外挂的硬盘分区设备号，假设为/dev/hda1。建立/mnt/vfat挂载目录后，使用如下命令进行挂载： <br/><br/># mount -t vfat /dev/hda1 /mnt/vfat <br/>注意，默认情况下Linux只允许root用户执行mount命令。如果想让一般用户也能挂载，并且希望在系统启动时自动挂载光盘或软盘，需要修改/etc/fstab配置文件，加入以下内容： <br/><br/>LABEL=/ / ext3 defaults 11/dev/cdrom/mnt/cdrom iSo9660 auto,owner,kudzu,ro,user 00/dev/fdo /mnt/floppy auto auto,owner,kudzu,ro,user 00 <br/>其中，“user”表示将mount命令赋予一般用户使用。 <br/>/etc/fstab文件在Linux的帮助手册中讲得很详细。
]]>
</description>
</item><item>
<link>http://www.qixiaomudong.cn/read.php?214</link>
<title><![CDATA[killall -9 proftpd关闭]]></title> 
<author>七小木东 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[Linux]]></category>
<pubDate>Tue, 16 Dec 2008 09:02:05 +0000</pubDate> 
<guid>http://www.qixiaomudong.cn/read.php?214</guid> 
<description>
<![CDATA[ 
	killall -9 proftpd关闭
]]>
</description>
</item><item>
<link>http://www.qixiaomudong.cn/read.php?213</link>
<title><![CDATA[Linux下Proftp1.2.4 的安装设置 与上一篇有点不同，这个不需要mysql]]></title> 
<author>七小木东 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[Linux]]></category>
<pubDate>Tue, 16 Dec 2008 05:36:28 +0000</pubDate> 
<guid>http://www.qixiaomudong.cn/read.php?213</guid> 
<description>
<![CDATA[ 
	关于ProFtpd的安装<br/><br/>以这个版本为例<br/>proftpd-1.2.4.tar.gz<br/>http://www.proftpd.org<br/><br/>安装方法:<br/>./configure --prefix=/usr/local --enable-shadow <br/>make （如果是双 CPU 建议采用 make -j3） <br/>make install<br/>或者简单一点<br/>./configure <br/>make <br/>make install <br/><br/>配置方法:<br/><br/>然后你可以发现 ProFTPD 安装在 /usr/local 下，"proftpd" 可以在/usr/local/sbin/ <br/>目录下找到，配置文件 proftpd.conf 位于：/usr/local/etc/ <br/><br/>编辑/usr/local/etc/proftpd.conf，找到“Group xxxxxx”<br/>改为“Group nobody”<br/><br/><br/>要锁定用户在自己的本身的目录下,请在proftpd.conf文件里加上一句:<br/>DefaultRoot~<br/><br/>FTP服务器相关命令<br/><br/>　　1、ftpshut:关闭FTP服务，并在/etc下生成文件shutmsg。要重新开放FTP服务，把/etc/shutmsg删除。<br/>　　2、ftpcout:FTP服务器在线人数信息显示。<br/>　　3、ftpwho:FTP服务器在线人员名单。<br/><br/>几个文件的功能及路径 <br/>/usr/local/sbin/proftpd 执行程序 <br/>/usr/local/etc/proftpd.conf 设置文件 <br/>/usr/local/var/proftpd.pid proftpd做为一个服务的ID号<br/><br/><br/>设定proftpd.conf文件，起动服务 <br/><br/>cd /etc/rc.d/rc3.d<br/>ln -s /usr/local/sbin/proftpd S99proftpd<br/><br/>或者<br/>修改/etc/rc.d/rc.local<br/>加上下面这句<br/>/usr/local/sbin/proftpd start<br/><br/>在proftpd环境下如何设定虚拟主机？ <br/><br/>可以通过指令：VirtualHost来实现，一个最简单的例子： <br/><br/><VirtualHost 192.168.2.35> <br/>ServerName "virtual FTP server" <br/></VirtualHost> <br/>若你仅仅希望通过匿名访问某个虚拟主机，则使用如下! 的指令： <br/><br/><VirtualHost 192.168.2.35> <br/><br/>Serv erName "virtual FTP server" <br/><br/><Limit LOGIN> <br/>DenyAll <br/></Limit> <br/><br/><Anonymous /usr/local/private> <br/><br/>User private <br/>Group private <br/><br/><Limit LOGIN> <br/>AllowAll <br/></Limit> <br/><br/></Anonymous> <br/><br/></VirtualHost> <br/><br/>这样192.168.2.35的这台主机则仅仅允许匿名登录。<br/><br/>如果要求登陆访问，可以这样<br/><br/><Anonymous /home/lixin/ftp> #需要登录 <br/>User lixin <br/>Group lixin <br/>UserAlias publx lixin <br/>AnonRequirePassword on <br/>MaxClients 2 <br/>DisplayLogin welcome.msg <br/>DisplayFirstChdir .message <br/><br/><Limit LOGIN> <br/>AllowGroup lixin <br/>DenyAll <br/></Limit> <br/><br/><br/>GroupOwner lixin <br/>Umask 007 <br/><br/>HideUser root <br/>HideGroup root <br/><br/></Anonymous> <br/><br/>你登录的用户名、密码必须是linux注册的用户名、密码，所要访问的目录的属性也必须是用户名有相应权限的。目录里当然还要有东西<br/><br/> <br/><br/>conf文件说明<br/>/usr/local/etc/proftpd.conf<br/><br/>ServerName "ProFTPD Default Installation"<br/>顾名思义这就是为自己的FTP Server命名啰！例如笔者将预设的名称改为<br/>ServerName 帕胡德档案传输系统<br/><br/>ServerType standalone<br/>ProFTPD主要激活方式有两种，分别是"standalone"与"inetd"，前者必须手动来激活ProFTPD; 后者可以写在/etc/inetd.conf里头，每当开机激活执行档的时候，就会激活所有/etc/inetd.conf里面的所有Daemon了。如果各位想让自己的FTP服务成为Linux的主要服务的一部份，笔者建议各位使用inetd的方式，因此笔者是这么设定的：<br/>ServerType inetd<br/>此时，因为设定以inetd方式激活，必须在/etc/inetd.conf里头加上一行：<br/>ftp stream tcp nowait root /usr/local/sbin/in.proftpd in.proftpd<br/>(段落之间记得用Tab键隔开喔！)<br/>修改了/etc/inetd.conf之后记得养成习惯执行<br/>killall -HUP inetd<br/>让系统重新执行inetd并且读取更新过的/etc/inetd.conf檔。<br/><br/>DefaultServer on<br/>如果ProFTPD是您预设的FTP Server，请设定为on。<br/><br/>Port 21<br/>一般的FTP连接端口默认值是21，如果不是特别需要的话，请勿修改这个数字，但如果您之前已经有跑其它的FTP Server(例如wu-ftpd)，那么您可以修改这个Port值，这样一来就可以同时跑两个不同的FTP Server了。不过笔者不鼓励这种方式，因此这个地方还是建议各位保留21这个Port。<br/><br/>Umask 022<br/>Umask是用来设定当使用者新增加一个资料夹或档案的时候它的档案权限，为了预防使用者所新增的资料夹变成任何人都能写入的资料夹，预设的Umast值是022，也就是说除了本人之外，同一个group或是其它使用者都无法做写入该资料夹的动作。<br/><br/>MaxInstances 30<br/>这是预防有些有心的cracker利用类似DoS之类的程序来攻击系统，造成大量的child process导致瘫痪整个service，因此将最多的child process设为30。需要注意的是这个设定仅对standalone的执行方式有效，如果各位在前面跟笔者一样使用inetd的话，各位可能必须利用xinetd这套软件来限制child process的数目了。<br/><br/>User nobody<br/>Group nobody<br/>这里设定FTP Server执行时的身份，一般是设定为nobody。<br/><br/><Directory /*><br/>AllowOverwrite on<br/></Directory><br/>一般说来，我们都希望档案都能够覆写上去，因此这里我们设定为"on"。眼尖的读者是否已经发现ProFTPD设定档的设定格式跟Apache Web Server设定格式很像呢？甚至有点html卷标(tag)的味道呢！没错！这正是ProFTPD主要特色之一喔！<br/><br/><Anonymous ~ftp><br/>User ftp<br/>Group ftp<br/># We want clients to be able to login with "anonymous" as well as "ftp"<br/>UserAlias anonymous ftp<br/><br/># Limit the maximum number of anonymous logins<br/>MaxClients 10<br/><br/># We want 'welcome.msg' displayed at login, and '.message' displayed<br/># in each newly chdired directory.<br/>DisplayLogin welcome.msg<br/>DisplayFirstChdir .message<br/><br/># Limit WRITE everywhere in the anonymous chroot<br/><Limit WRITE><br/>DenyAll<br/></Limit><br/><br/></Anonymous><br/><br/>
]]>
</description>
</item><item>
<link>http://www.qixiaomudong.cn/read.php?212</link>
<title><![CDATA[Proftp 1.2.10安装配置详细介绍]]></title> 
<author>七小木东 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[Linux]]></category>
<pubDate>Tue, 16 Dec 2008 03:24:01 +0000</pubDate> 
<guid>http://www.qixiaomudong.cn/read.php?212</guid> 
<description>
<![CDATA[ 
	本文用到的软件<br/><br/>proftpd 1.2.10 <br/>网站：http://www.proftpd.org <br/>下载 <br/>MySQL 4.1.9 <br/>网站：http://www.mysql.com <br/>下载 <br/><br/><br/>1.安装<br/><br/>新版的proftp中已经有mod_quotatab了，所以不用另外下载了。<br/># tar -zxvf proftpd-1.2.10.tar.gz<br/># cd proftpd-1.2.10<br/># ./configure &#92;<br/>--prefix=/usr/local/proftpd &#92;<br/>--with-includes=/usr/local/mysql/include/mysql &#92;<br/>--with-libraries=/usr/local/mysql/lib/mysql &#92;<br/>--with-modules=mod_sql:mod_sql_mysql:mod_quotatab:mod_quotatab_sql:mod_ratio<br/># make<br/># make install<br/><br/>设置自启动<br/># cp contrib/dist/rpm/proftpd.init.d /etc/rc.d/init.d/proftpd <br/># chmod 755 /etc/rc.d/init.d/proftpd<br/># chkconfig --level 0123456 proftpd on<br/><br/>修改/etc/rc.d/init.d/proftpd <br/># vi /etc/rc.d/init.d/proftpd<br/>把 PATH="$PATH:/usr/local/sbin" 改为 PATH="$PATH:/usr/local/proftpd/sbin"<br/><br/>修改/usr/local/proftpd/etc/proftpd.conf<br/># vi /usr/local/proftpd/etc/proftpd.conf<br/>把Group nogroup 改为 Group nobody<br/>再添加两行，使支持续传（默认是不支持的）<br/>AllowRetrieveRestart on<br/>AllowStoreRestart on<br/><br/>启动服务<br/># service proftpd start<br/><br/>2.proftpd的结构<br/>proftpd.conf：这个是主要的 proftpd 的设定档。在 RPM 安装的范例中，所在的目录为 /etc/proftpd.conf ，在这个范例中，则是在/usr/local/proftpd/etc/proftpd.conf。<br/><br/>/usr/local/proftpd/sbin/proftpd：这个是主要的 proftpd 的 daemon 执行档。此外，这也是 TCP Wrappers (/etc/hosts.deny(allow)) 设定里头的服务档案档名。另外，当proftpd 在启动的时候会去读取设定档，也就是proftpd.conf这个档案，不过，我们也可以指定其它的档案来进行proftpd的设定。<br/># proftpd -c /usr/local/proftpd/etc/proftpd.conf<br/><br/>/usr/local/proftpd/bin/ftpcount：目前在主机上面使用 proftpd 的联机数，直接在指令列下达 ftpcount 即可。<br/><br/>/usr/local/proftpd/sbin/ftpshut：指定再过多久之后 proftpd 服务会终止。语法如下:<br/>ftpshut [ -l min ] [ -d min ] time [ warning-message ... ]<br/>-l min: 在ftp关闭服务之前的几分钟内，尝试建立新的ftp连接均不被接受<br/>-d min: 在ftp关闭服务之前的几分钟内，已经建立的ftp连接将被中止<br/>time: 在多少时间后，服务器将关闭ftp服务，格式有两种<br/>＋number 经过number分钟后关闭<br/>MMHH 在今天MM：HH服务器将关闭<br/><br/>注意，这里我们用这个命令是把ftp服务给停了，但实际的proftpd进程还没停止，所以一般调试ftp会使用到这个命令<br/><br/>举例：<br/>再经过30分钟后，FTP服务将关闭，在这之前的20分钟不可接受任何新的ftp连接，已经建立的在服务关闭前10分钟强制断线，并在客户端显示“FTP Server Will shutdown at time”<br/># ftpshut -l 20 -d 10 +30 "FTP Server Will shutdown at time"<br/>其实ftpshut就是产生/etc/shutmsg ,你只要删除这个文件ftp又可以重新服务，或者直接<br/># ftpshut -R<br/><br/>/usr/local/proftpd/bin/ftpwho：可以用来察看目前有多少人使用 proftpd 这个服务。简单的语法直接下达 ftpwho 即可，如下所示：<br/># ftpwho<br/>standalone FTP daemon [8451]:<br/>10194 badbird [ 0m 11s] 0m 6s (idle)<br/>Service class - 1 user<br/>如上所示，目前有一个使用者，名为badbird的账号，在使用proftpd。<br/><br/>3.proftpd.conf<br/><br/>3.1.proftpd.conf 的设定方式<br/>proftpd的设置和apache类似，它的配置基本格式如下：<br/><br/>#全局设置<br/>设置项目1 参数1<br/>设置项目2 参数2<br/><br/>#某个目录的设置<br/><Directory "路径名"><br/>...<br/>...<br/></Directory><br/><br/>#关于匿名用户的设置<br/><Anonymous "匿名登陆的目录"><br/>...<br/>...<br/><Limit 限制动作><br/>...<br/>...<br/></Limit><br/></Anonymous><br/><br/>我们用到的比较多的可能是Limit的使用，Limit大致有以下动作，基本能覆盖全部的权限了，大家灵活使用就是了。<br/><br/>CMD：Change Working Directory 改变目录<br/>MKD：MaKe Directory 建立目录的权限<br/>RNFR： ReName FRom 更改目录名的权限<br/>DELE：Delete 删除文件的权限<br/>RMD：ReMove Directory 删除目录的权限<br/>RETR：RETRieve 从服务端下载到客户端的权限<br/>STOR：STORe 从客户端上传到服务端的权限<br/>READ：可读的权限，不包括列目录的权限，相当于RETR，STAT等<br/>WRITE：写文件或者目录的权限，包括MKD和RMD<br/>DIRS：是否允许列目录，相当于LIST，NLST等权限，还是比较实用的<br/>ALL：所有权限<br/>LOGIN：是否允许登陆的权限<br/><br/>针对上面这个Limit所应用的对象，又包括以下范围 <br/>AllowUser 针对某个用户允许的Limit<br/>DenyUser 针对某个用户禁止的Limit<br/>AllowGroup 针对某个用户组允许的Limit<br/>DenyGroup 针对某个用户组禁止的Limit<br/>AllowAll 针对所有用户组允许的Limit<br/>DenyAll 针对所有用户禁止的Limit<br/><br/>关于限制速率的参数为： <br/>TransferRate STOR&#124;RETR 速度（Kbytes/s） user 使用者<br/><br/>3.2.常用参数说明<br/><br/>ServerName<br/>#当使用者登入主机的时候，proftpd 会显示在 Client 端的 FTP 软件的一些基本讯息啦！ <br/><br/>ServerType<br/>#启动 proftpd 的方法，有两种方式，分别是 standalone与xinetd<br/><br/>DefaultServer<br/>#预设的主机啊。这个项目可以设定为on或off，基本上，除非您有两个 IP 或者是设定了虚拟主机 (virtualhost)， 否则这个项目都应该要设定为 on 才行！不然有些 uknown的联机会无法连接到您的 FTP 服务。<br/><br/>Port<br/># 设定主机的 FTP 命令信道端口！FTP命令通道通常为 21 ，您也可以更改，不过，这个设定只有当ServerType 为 standalone 时才有效。<br/><br/>Umask<br/># 与建立目录及档案的预设属性有关的设定喔！用 022 就够了！ <br/><br/>MaxInstances<br/>#同一时间允许的联机数目，这个设定项目与 process (PID) 有关！所以您的 FTP 主机中，proftpd 启用的 process 最多能有30个。这个与 MaxClients 不一样！ <br/><br/>User 与 Group<br/>#预设的服务启动者！后面接的使用者与群组必须在 /etc/passwd 与 /etc/group 里面存在方可！ <br/><br/>MaxHostsPerUser 1 "对不起，每个帐户最多允许来源ip为1个"<br/>#MaxHostsPerUser 对防止ftp帐号还是比较有用的。<br/><br/>MaxClientsPerUser 1 "对不起，每个帐户在每个客户端最多可以同时登陆1次"<br/>#这个参数可以防止多线程软件下载对服务器的破坏<br/><br/>MaxClientsPerHost 1 "对不起，同一个客户端只能最多1个帐号可以登陆"<br/>#比如ftp服务端有好多帐户你都有，但也只能用1个帐号登陆<br/><br/>WtmpLog on <br/>#是否要把ftp记录在日志中，如果不想可以设置成off屏蔽掉log日志。<br/><br/>TimeoutIdle 600<br/>#客户端idel时间设置，默认就是600秒<br/><br/>DisplayLogin welcome.msg<br/>#设置ftp登陆欢迎信息文件<br/><br/>关于欢迎文件的设置包含如下参数<br/>%T 目前的时间<br/>%F 所在硬盘剩下的容量<br/>%C 目前所在的目录<br/>%R Client 端的主机名称<br/>%L Server 端的主机名称<br/>%U 使用者帐户名称<br/>%M 最大允许连接人数<br/>%N 目前的服务器连接人数<br/>%E FTP服务器管理员的 email<br/>%i 本次上传的文件数量<br/>%o 本次下载的文件数量<br/>%t 本次上传+下载的文件数量<br/><br/>知道这些参数，我们就可以写出一个友好的欢迎语<br/>vi /home/kaoyan/welcome.msg<br/>欢迎您%U， 这是Frank的测试FTP服务器；<br/>目前时间是：%T；<br/>本服务器最多允许%M个用户连接数；<br/>目前服务器上已有%N个用户连接数；<br/>目前你所在的目录是%C;<br/>目录所在的硬盘还剩下%F字节。<br/><br/>让proftp支持现在流行的passive传输方式，默认是不支持的。只要在服务端设置<br/>AllowForeignAddress on<br/>PassivePorts 49152 65534 #端口也可自己指定喜欢的<br/><br/>千万别忘了在客户端也要设置成支持passive<br/><br/>如何让root能登陆，默认proftp是不支持root登陆，我们可以设置让root也能登陆ftp，不过建议大家最好不要让root能登陆ftp，设置如下<br/>RootLogin on<br/><br/>如何禁止某个地址访问ftp。比如禁止10.1.1网段的机器访问ftp，可以这么设置<br/><Limit LOGIN><br/>order deny,allow<br/>Deny from 10.1.1.<br/>Allow from all<br/></Limit><br/><br/>虚拟ftp的建立，一般用于一台ftp服务器有好多ip地址，或者ftp用不同的端口，基本设置语法是:<br/>比如我们要做一个端口是5555的ftp服务器：<br/><VirtualHost 210.51.0.124><br/>ServerName "Frank FTP Server"<br/>Port 5555<br/>...<br/><Directory 目录><br/>...<br/><Limit 动作><br/>...<br/></Limit><br/>...<br/></Directory><br/></VirtualHost><br/><br/>至于虚拟主机中的其他设置跟我以前讲的基本差不多<br/><br/>上传/下载比率设置，我想用过Serv_U的朋友一定知道这个功能的使用，我们这里让proftp也实现这个功能。<br/>要实现功能注意编译的时候加入ratio模块，否则proftp默认是不支持，假设有个帐户ftp1的ftp目录在/home/kaoyan ，然后我们设置ftp1的上传/下载比率是1：2（即上传1M，就可以下载2M）<br/>touch /home/kaoyan/ratio.dat<br/>touch /home/kaoyan/ratio.tmp<br/>chmod -R 666 /home/kaoyan<br/>在proftpd.conf设置如下<br/>Ratios on<br/>SaveRatios on<br/>RatioFile /home/kaoyan/ratio.dat<br/>RatioTempFile /home/kaoyan/ratio.tmp<br/>在相应的设置项里添加<br/>UserRatio ftp1 0 0 2 1000<br/>#UserRatio "使用者帐户" fileratio filequota byteratio bytequota<br/>#　 fileratio ：以文件为基础的比率，通常不限制，故为 0 <br/>#　 filequota ：预设置能下载多少文件，不限制时为 0 <br/>#　 byteratio ：就是上传/下载的比例,如果数字为2，表示1:2 <br/>#　 bytequota ：预设置能下载多少 KBytes 的文件<br/>#上面设置的就是1：2的比率，默认只允许下载1M的文件<br/><br/>重启一下，以后ftp1就可以启用上传/下载比率了<br/><br/>4.各种ftp的配置<br/><br/>4.1.本地用户<br/>目标： <br/>使用主机本地端时间，而不要使用 GMT 时间； <br/>主机最多允许 50 条联机，且最多允许 100 个使用者上线，当超过 100 个使用者还有其它 FTP 要求时，就显示：很抱歉，上线人数额满了！； <br/>同一个 IP (或主机) 来源最多仅能具有 5 个 FTP 服务； <br/>允许续传； <br/>被动式(passive mode)的端口为 65400 到 65420 这21个端口；<br/>主机不允许 Root 登入； <br/>想建立一个名为 badbird 的群组，在该群组内的所有使用者都无法离开自己的家目录(chroot)； <br/>在badbird 这个群组当中的 nogoodbird 这个使用者，该使用者能够使用 ftp 但是无法使用 ssh 连到主机； <br/>在这个公开的目录 /home/ftp/pub 中，所有人均不可写入，只有读取的权限； <br/><br/># vi /usr/local/proftpd/etc/proftpd.conf <br/># FTP主机的环境设定<br/>ServerName "测试用的 Proftp 主机" <br/>ServerType standalone<br/>DefaultServer on <br/>Port 21 <br/>User nobody <br/>Group nobody <br/>#所谓的 GMT 时间就是格林威治时间，因为要使用本地时间，所以设为 off<br/>TimesGMT off<br/># 最多仅有 50 条 prftpd 的 PID <br/>MaxInstances 50<br/># 最多允许 100 个使用者在在线 <br/>MaxClients 100 "很抱歉上线人数额满了"<br/># 同一个主机最多可以同时 5 个 FTP 联机 <br/>MaxClientsPerHost 5 <br/># 允许使用者续传！预设是 off <br/>AllowStoreRestart on<br/># 后面接的是端口，最小到最大的端口共 21 个<br/>PassivePorts 65400 65420 <br/><br/># 其它与实体用户较相关的设定值！ <br/>Umask 022<br/># 不许 root 登入！预设就是 off <br/>RootLogin off<br/># 这个设定可以让使用者不需要具有能够执行的 shell。例如让nogoodbird 这个具有 /bin/false 的使用者，依然可以使用 ftp<br/>RequireValidShell off<br/># ~ 代表家目录。DefaultRoot后面接的是group，所以在这里badbird为group，而不是user<br/># 这里特别容易搞混乱，请再特别的留意一下阿！只要不属于 badbird <br/># 这个群组的 User 就可以离开自己的家目录了！(没有被 chroot )<br/>DefaultRoot ~ badbird <br/># 下面的设定中，在根目录内的所有目录均具有可擦写的权力，但是在 <br/># /home/ftp/pub 这个目录中，不论 Linux 属性为何，使用者均无法写入！ <br/># 但是可以浏览以及下载喔！在我们这个设定当中， badbird 这个群组无法离开 <br/># 自己的家目录，至于其它可以离开自己家目录的使用者，来到这个 <br/># /home/ftp/pub 当中，也不具有写入的权限喔！<br/><Directory /> <br/>AllowOverwrite on <br/></Directory> <br/><Directory /home/ftp/pub> <br/><Limit WRITE> <br/>Denyall <br/></Limit> <br/></Directory> <br/><br/>建立nogoodbird用户，由于不具有 shell 所以不能 SSH 但可以 ftp　 <br/># useradd -g badbird -m -s /bin/false nogoodbird <br/>　 <br/># service proftpd restart <br/>　 <br/>事实上，对于实体用户实在不需要限制的太多！要不然就不要开放，要不然就直接改成 sftp！此外，在上面这个设定当中，我们暂时拿掉了anonymous的登入，所以使用 anonymous 将无法登入。<br/><br/>4.2.匿名用户<br/>目标： <br/>anonymous的根目录为 /var/ftp 这个目录；<br/>anonymous登入后取得的 PID 在 Linux 的权限为 ftp:ftp；<br/>当anonymous登入 FTP 之后，在 Client 端的 FTP 软件显示一些欢迎讯息； <br/>最多允许 30 个 anonymous 的登入； <br/>限制上传/下载速度为 100Kbytes/s 与 50 Kbytes/s； <br/>在 /var/ftp/ 里面，除了 /var/ftp/upload 之外，其它的目录均不可写入； <br/>在 /var/ftp/upload 这个目录中，仅可以写入，不能下载，并且在使用者进入这个目录后，显示出一些相关的信息； <br/><br/>建立基本的设定档案： <br/># vi /usr/local/proftpd/etc/proftpd.conf <br/># 关于主机与实体用户的设定<br/>ServerName "测试用的 Proftp 主机" <br/>ServerType standalone<br/>DefaultServer on <br/>Port 21 <br/>User nobody <br/>Group nobody <br/>TimesGMT off # 所谓的 GMT 时间就是格林威治时间，因为要使用本地时间，所以设为 off<br/>MaxInstances 50 # 最多仅有 50 条 prftpd 的 PID <br/>MaxClients 100 "很抱歉上线人数额满了" # 最多允许 100 个使用者在在线 <br/>MaxClientsPerHost 5 # 同一个主机最多可以同时 5 个 FTP 联机 <br/>AllowStoreRestart on # 允许使用者上传续传！预设是 off <br/>PassivePorts 65400 65420<br/>　 <br/># anonymous 的设定<br/><Anonymous /var/ftp> <br/># 底下为建立 Anonymous 在 Linux 系统下的 PID 权限拥有者<br/>User ftp <br/>Group ftp <br/>UserAlias anonymous ftp <br/>UserAlias nogoodbird ftp <br/># 建立显示的讯息给 anonymous 观察用的！ <br/>DisplayLogin welcome.msg <br/>DisplayFirstChdir .message <br/>MaxClients 30 "匿名登入者联机数已经饱和了！" <br/># 这个就重要啦！用来限制传输速率的吶！基本语法为： <br/># TransferRate (STOR&#124;RETR) 速度(Kbytes/s) user 使用者 <br/># STOR 为上传而 RETR 为下载的意思！速度为 Kbytes/second 喔！ <br/>TransferRate STOR 100 user anonymous,ftp # 单位为 KBytes/second <br/>TransferRate RETR 50 user anonymous,ftp <br/><Limit WRITE> <br/>Denyall <br/></Limit> <br/># 底下这个则仅与 upload 这个目录以及其下的子目录有关而已！ <br/><Directory /var/ftp/upload/*> <br/><Limit READ> <br/>Denyall <br/></Limit> <br/><Limit WRITE> <br/>Allowall <br/></Limit> <br/></Directory> <br/></Anonymous> <br/>　 <br/>建立欢迎画面： <br/>注意：如果anonymous 根目录在 /var/ftp，welcome.msg 就必须放置在/var/ftp/welcome.msg<br/># vi /var/ftp/welcome.msg <br/>欢迎光临！这个是测试 FTP 站点！ <br/>我的主机： %L <br/>目前时间： %T <br/>最大联机： %M <br/>目前联机： %N <br/>您的主机： %R <br/>您的账号： %U <br/>目前目录： %C <br/>　 <br/>建立特殊注意事项： <br/>需要在 /var/ftp/upload 里面建立一个特殊讯息<br/># vi /var/ftp/upload/.message <br/>这个目录仅能上传不能下载，<br/>您的身份为anonymous！<br/>　 <br/>建立 upload 的权限： <br/># chown ftp:ftp /var/ftp/upload <br/># chmod 755 /var/ftp/upload <br/>　 <br/>重新启动！ <br/># service proftpd restart <br/>　 <br/><br/>4.3.特殊交流用户 (建立一个 ftpguest 群组！将所有的 guset 设定在这个群组内！)<br/>一些用户具有上传与下载的权限，并且这些权限是可以保留或者是累积的，在 Windows 系统上面有 Server-U 这个好用的家伙，那么我们的 Linux 上头的FT 可以达到这样的功能吗？！呵呵！proftpd 就可以！而且设定还真的是很简单喔！目标：<br/>　 <br/>主机环境、实体用户、anonymous 的环境都与前两节的内容相同； <br/>建立一个群组名为 ftpguest ，如果使用者属于该群组，则该使用者登入主机之后他的根目录会在 /var/ftp2 这个目录下； <br/>有三个使用者，名为 ftpuser1, ftpuser2, ftpuser3 ，都属于 ftpguest 群组，他们没有家目录，不能使用 ssh，但是他们在 /var/ftp2/upload 有写入的权限，但不可读取数据； <br/>在 /var/ftp2 内的所有相关下载中，最高流量为 50 Kbytes/second； <br/>ftpuser1 的上传/下载比例为 1:2 ，且具有 100 MB 的预设下载量； ftpuser2 与 ftpuser3 的上传/下载比例则为 1:1，仅具有 30MB 的预设下载量； <br/>当使用者进入 /var/ftp2 时，会显示该使用者的上传/下载比例，以及剩下的下载容量，还有其它的相关讯息； <br/>与使用者有关的上传/下载比例以及剩下的可下载容量，都记录在 /var/ftp2/work/ratio.dat, /var/ftp2/work/ratio.tmp 当中，所以使用者在这个目录都无法读、写！ <br/>　 <br/>在这个案例当中，最重要的就是那个『纪录使用者上传/下载的 ratio 以及可用空间的记录文件』了，在我的案例当中，使用的就是 /var/ftp2/work/ratio.dat 这个档案，请注意，这个档案必须要能被 ftpuser1, ftpuser2, ftpuser3 所读取与写入才行！相当的重要喔！所以，我应该要这样设计我的设定档： <br/><br/>建立所需要的群组与使用者： <br/>我要建立一个群组为 ftpguest ，此外，所有相关的使用者都是这个群组！ <br/># groupadd ftpguest <br/># useradd -M -g ftpguest -s /bin/false ftpuser1 <br/># useradd -M -g ftpguest -s /bin/false ftpuser2 <br/># useradd -M -g ftpguest -s /bin/false ftpuser3 <br/># passwd ftpuser1 <br/># 请依序建立 ftpuser1 ftpuser2 ftpuser3 的密码！ <br/>　 <br/>建立所需要的 FTP 相关路径： <br/>我要的路径在 /var/ftp2 当中，而且 ftpguest 必须要能够写入！ <br/># mkdir -p /var/ftp2 <br/># mkdir -p /var/ftp2/upload <br/># mkdir -p /var/ftp2/work <br/># chmod -R 775 /var/ftp2 <br/># touch /var/ftp2/work/ratio.dat #底下两个档案用在 ratio <br/># touch /var/ftp2/work/ratio.tmp <br/># chown -R ftpuser1:ftpguest /var/ftp2 <br/># chmod 666 /var/ftp2/work/* <br/><br/>建立基本的设定档案： <br/># vi /usr/local/proftpd/etc/proftpd.conf <br/># 关于主机,实体用户,anonymous 的设定如同前两小节所示，所以我这里就略过了！ <br/>...(沿用上两小节的设定，这里略过)..... <br/>　 <br/># 底下则是 /var/ftp2 的设定喔！就是与 ftpguest 有关的设定喔！ <br/>DefaultRoot /var/ftp2 ftpguest <br/>DisplayLogin welcome.msg <br/># 开始设定上传/下载比例 <br/>Ratios on <br/>SaveRatios on <br/>RatioFile /work/ratio.dat <br/>RatioTempFile /work/ratio.tmp <br/># 上面这两个档案需要比较注意！他的路径与 DefaultRoot 有关系！ <br/># 因为我们的 DefaultRoot 在 /var/ftp2 ，因此，这个档案在 <br/># 『根目录为 /var/ftp2 时，路径为 /work/』也就是说， /work/ratio.dat <br/># 其实就是 /var/ftp2/work/ratio.dat (因为 / 是 /var/ftp2 喔) <br/># 这个地方是最容易搞错的！请再次的看清楚喔！ ^_^ <br/>　 <br/># 至于底下的设定就是要让 /var/ftp2/work 这个目录下的档案都无法被使用！ <br/><Directory /var/ftp2/work> <br/><Limit All> <br/>Denyall <br/></Limit> <br/></Directory> <br/>　 <br/># 这里就是在设定使用者的上传/下载比例啦！语法为： <br/># UserRatio "使用者账号" fileratio filequota byteratio bytequota <br/># 　使用者账号：就是登入 proftpd 的账号啊！ <br/>#　 fileratio ：这个是以档案为基准的『比例』，通常不限制，故为 0 <br/>#　 filequota ：预设能够下载多少档案，不限制时为 0 <br/>#　 byteratio ：就是上传/下载的比例，这个数字代表『 1:下载 』之意！ <br/>#　 bytequota ：预设能够下载多少 KBytes 的档案！注意单位喔！ <br/>UserRatio ftpuser1 0 0 2 100000 # 上/下比例为 1:2 <br/>UserRatio ftpuser2 0 0 1 30000 <br/>UserRatio ftpuser3 0 0 1 30000 <br/># UserRatio ftpuser3 0 0 -2 30000 <br/># 上面这行有意思！当下载比例为负值时，表示上/下 比例为 2:1 的意思！ <br/><Directory /var/ftp2> <br/>Umask 002 <br/># 这里就是在进行『下载速度的限制』啰！ <br/>TransferRate RETR 50 group ftpguest <br/><Limit WRITE> <br/>Denyall <br/></Limit> <br/></Directory> <br/><br/><Directory /var/ftp2/upload/*> <br/><Limit READ> <br/>Denyall <br/></Limit> <br/><Limit WRITE> <br/>Allowall <br/></Limit> <br/></Directory> <br/>　 <br/>建立欢迎画面： <br/>注意：如果ftpguest 群组的根目录在 /var/ftp2，welcome.msg 就必须放置在 /var/ftp2/welcome.msg<br/># vi /var/ftp2/welcome.msg <br/>欢迎光临！测试 FTP！ <br/>我的主机： %L <br/>目前时间： %T <br/>最大联机： %M <br/>目前联机： %N <br/>您的主机： %R <br/>您的账号： %U <br/>目前目录： %C <br/>　 <br/>重新启动<br/># service proftpd restart<br/><br/>这样就设定妥当，并且也可以正确的启用啰！好了！那么我们就赶紧来测试看看能不能记录每个使用者的上传/下载比例呢？如下所示： <br/># ftp localhost <br/>Connected to localhost (127.0.0.1). <br/>220 ProFTPD 1.2.8 Server (这个是鸟哥的测试用的 Proftp 主机) [test.localhost] <br/>Name (localhost:root): ftpuser1 <br/>331 Password required for ftpuser1. <br/>Password: <== 这里输入 ftpuser1 的密码 <br/>230-欢迎光临！测试 FTP<br/>我的主机： test.localhost <br/>目前时间： Fri Sep 5 01:08:10 2003 <br/>最大联机： 100 <br/>目前联机： 1 <br/>您的主机： localhost.localdomain <br/>您的账号： ftpuser1 <br/>目前目录： / <br/>230-User ftpuser1 logged in. <br/>230 Down: 0 Files (0mb) Up: 0 Files (0mb) 1:2B CR: 97 <br/>Remote system type is UNIX. <br/>Using binary mode to transfer files. <br/>ftp> bye <br/>　 <br/>看到上面的粗体字了吧？那表示： <br/>　 <br/>Down：下载方面，目前下载过 0 个档案，共下载 0 MBytes； <br/>Up ：上传方面，目前上传过 0 个档案，共上传 0 MBytes ； <br/>1:2B：上传/下载 (为 Bytes 限制)的比例为 1:2 咯！也就是上传 1MB 可以下载 2MB；<br/>CR ：剩余的可以下载的 MBytes 数！注意单位为 MBytes<br/>　 <br/>未来您只要有上传或者是下载，那么上面那行粗体自就会随之而变！事实上，这些信息是记录在 proftpd.conf 里面的参数『RatioFile』指定档案当中！您可以检查一下该档案： <br/># vi /var/ftp2/work/ratio.dat <br/>ftpuser1&#124;0&#124;0&#124;0&#124;0 <br/># 这个档案的格式为：(注：以符号『&#124;』隔开各个字段) <br/># 账号&#124;上传档案数&#124;上传档案总量(KBytes)&#124;下载档案数&#124;下载档案总量(KBytes) <br/>　 <br/>该档案的格式如同上面的说明，以符号『 &#124; 』来隔开成为五个字段，每次使用者登入 proftpd 主机之后， Proftpd 会先去开启这个档案，将数据读出来，然后再与 UserRatio 的设定直比较，就可以持续的纪录每个使用者的剩余可下载容量啰！那么未来如果想要新增其它使用者在这个设定群组当中，只要进行(1)新增使用者，注意这个使用者的群组需要是 ftpguest ，并且(2)再到 proftpd.conf 里面设定好 UserRatio 的设定值，(3)最后重新启动 xinetd ，就 OK 了！其它的步骤不需要进行！设定是否方便很多呢！？<br/><br/><br/>4.4.proftp＋mysql＋quota<br/><br/>建立相应的用户和组<br/># groupadd -g 5500 ftpgroup<br/># adduser -u 5500 -s /bin/false -d /var/ftp -c "proftpd user" -g ftpgroup ftpuser<br/><br/>为FTPUSR建立HOME，把所有的FTP user活动空间全放在此目录下：<br/>mkdir /var/ftp<br/>chown ftpuser:ftpgroup /var/ftp <br/><br/>操作数据库<br/># mysql -u root<br/>mysql>create database ftpdb;<br/>mysql>grant select, update on ftpdb.* to proftpd@localhost identified by '123456';<br/><br/>mysql>use ftpdb;<br/><br/>Create TABLE `ftpgroup` (<br/>`groupname` varchar(16) NOT NULL default '',<br/>`gid` smallint(6) NOT NULL default '5500',<br/>`members` varchar(16) NOT NULL default '',<br/>KEY `groupname` (`groupname`)<br/>) TYPE=MyISAM COMMENT='ProFTP group table'; <br/><br/><br/>Insert INTO `ftpgroup` VALUES ('ftpgroup', 5500, 'ftpuser');<br/><br/>Create TABLE `ftpquotalimits` (<br/>`name` varchar(30) default NULL,<br/>`quota_type` enum('user','group','class','all') NOT NULL default 'user',<br/>`per_session` enum('false','true') NOT NULL default 'false',<br/>`limit_type` enum('soft','hard') NOT NULL default 'soft',<br/>`bytes_in_avail` float NOT NULL default '0',<br/>`bytes_out_avail` float NOT NULL default '0',<br/>`bytes_xfer_avail` float NOT NULL default '0',<br/>`files_in_avail` int(10) unsigned NOT NULL default '0',<br/>`files_out_avail` int(10) unsigned NOT NULL default '0',<br/>`files_xfer_avail` int(10) unsigned NOT NULL default '0'<br/>) TYPE=MyISAM;<br/><br/>Create TABLE `ftpquotatallies` (<br/>`name` varchar(30) NOT NULL default '',<br/>`quota_type` enum('user','group','class','all') NOT NULL default 'user',<br/>`bytes_in_used` float NOT NULL default '0',<br/>`bytes_out_used` float NOT NULL default '0',<br/>`bytes_xfer_used` float NOT NULL default '0',<br/>`files_in_used` int(10) unsigned NOT NULL default '0',<br/>`files_out_used` int(10) unsigned NOT NULL default '0',<br/>`files_xfer_used` int(10) unsigned NOT NULL default '0'<br/>) TYPE=MyISAM;<br/><br/>Create TABLE `ftpuser` (<br/>`id` int(10) unsigned NOT NULL auto_increment,<br/>`userid` varchar(32) NOT NULL default '',<br/>`passwd` varchar(32) NOT NULL default '',<br/>`uid` smallint(6) NOT NULL default '5500',<br/>`gid` smallint(6) NOT NULL default '5500',<br/>`homedir` varchar(255) NOT NULL default '',<br/>`shell` varchar(16) NOT NULL default '/bin/false',<br/>`count` int(11) NOT NULL default '0',<br/>`accessed` datetime NOT NULL default '0000-00-00 00:00:00',<br/>`modified` datetime NOT NULL default '0000-00-00 00:00:00',<br/>PRIMARY KEY (`id`)<br/>) TYPE=MyISAM COMMENT='ProFTP user table' ;<br/><br/>配置proftp<br/># vi /usr/local/proftpd/etc/proftpd.conf<br/>ServerName "TEST FTP Server"<br/>ServerType standalone<br/>ServerIdent on "Welcome to FTP server. Please login..."<br/>DeferWelcome on <br/>DefaultServer on <br/>Port 21<br/>Umask 022<br/>MaxInstances 30<br/>MaxLoginAttempts 3<br/>User ftpuser <br/>Group ftpgroup <br/>MaxHostsPerUser 1 "对不起，每个帐户最多允许来源ip为1个"<br/>MaxClientsPerUser 1 "对不起，每个帐户在每个客户端最多可以同时登陆1次"<br/>MaxClientsPerHost 1 "对不起，同一个客户端只能最多1个帐号可以登陆"<br/>RootLogin off<br/>RequireValidShell off<br/>TimeoutStalled 10<br/>MaxClients 10<br/>AllowForeignAddress on<br/>AllowStoreRestart on<br/>DefaultRoot ~ ftpgroup<br/><br/># To cause every FTP user to be "jailed" (chrooted) into their home <br/># directory, uncomment this line. <br/>DefaultRoot ~ <br/><br/># Normally, we want files to be overwriteable. <br/>AllowOverwrite on<br/><br/>MasqueradeAddress 192.168.0.5 <br/>PassivePorts 49152 65534<br/><br/>SQLAuthTypes Plaintext Crypt<br/>#Backend表示用户认证方式为MySQL数据库的认证方式 <br/>#Plaintext表示明文认证方式，排在最前面的为最先使用的方式<br/>SQLAuthenticate users* groups*<br/><br/># databasename@host database_user user_password<br/>SQLConnectInfo ftpdb@localhost proftpd 123456 <br/># Here we tell ProFTPd the names of the database columns in the "usertable" <br/># we want it to interact with. Match the names with those in the db <br/>SQLUserInfo ftpuser userid passwd uid gid homedir shell<br/># Here we tell ProFTPd the names of the database columns in the "grouptable" <br/># we want it to interact with. Again the names match with those in the db <br/>SQLGroupInfo ftpgroup groupname gid members<br/>SQLHomedirOnDemand on<br/>#如果用户主目录不存在，则系统会根据此用户在用户数据表中的homedir字段的值新建一个目录<br/># Update count every time user logs in<br/>SQLLog PASS updatecount<br/>SQLNamedQuery updatecount Update "count=count+1,accessed=now() Where userid='%u'" ftpuser<br/># Update modified everytime user uploads or deletes a file<br/>SQLLog STOR,DELE modified<br/>SQLNamedQuery modified Update "modified=now() Where userid='%u'" ftpuser<br/><br/># User quotas <br/>QuotaEngine on<br/>QuotaDirectoryTally on<br/>QuotaDisplayUnits Mb<br/>QuotaShowQuotas on<br/>QuotaLog "/var/log/quota"<br/>SQLNamedQuery get-quota-limit Select "name, quota_type, per_session, limit_type, bytes_in_avail, bytes_out_avail, bytes_xfer_avail, files_in_avail, files_out_avail, files_xfer_avail FROM ftpquotalimits Where name = '%&#123;0&#125;' AND quota_type = '%&#123;1&#125;'"<br/><br/>SQLNamedQuery get-quota-tally Select "name, quota_type, bytes_in_used, bytes_out_used, bytes_xfer_used, files_in_used, files_out_used, files_xfer_used FROM ftpquotatallies Where name = '%&#123;0&#125;' AND quota_type = '%&#123;1&#125;'"<br/><br/>SQLNamedQuery update-quota-tally Update "bytes_in_used = bytes_in_used + %&#123;0&#125;, bytes_out_used = bytes_out_used + %&#123;1&#125;, bytes_xfer_used = bytes_xfer_used + %&#123;2&#125;, files_in_used = files_in_used + %&#123;3&#125;, files_out_used = files_out_used + %&#123;4&#125;, files_xfer_used = files_xfer_used + %&#123;5&#125; Where name = '%&#123;6&#125;' AND quota_type = '%&#123;7&#125;'" ftpquotatallies<br/><br/>SQLNamedQuery insert-quota-tally Insert "%&#123;0&#125;, %&#123;1&#125;, %&#123;2&#125;, %&#123;3&#125;, %&#123;4&#125;, %&#123;5&#125;, %&#123;6&#125;, %&#123;7&#125;" ftpquotatallies<br/><br/>QuotaLimitTable sql:/get-quota-limit<br/>QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally<br/><br/>重启一下proftp服务就已经能使用proftp＋mysql＋quota的功能<br/><br/>我们可以在数据库ftpuser添加一个虚拟用户，<br/><br/>Insert INTO `ftpuser` VALUES (1, 'test', '123456', 5500, 5500, '/var/ftp/test', '/bin/false', 36, '2005-03-18 13:07:41', '2005-03-18 13:07:42'); <br/><br/>Insert INTO `ftpquotalimits` VALUES ('test', 'user', 'false', 'hard', 10, 0, 0, 0, 0, 0);<br/><br/>Insert INTO `ftpquotatallies` VALUES ('test', 'user', 0, 0, 0, 0, 0, 0);<br/><br/>如果你想设置quota，只要在ftpquotalimits表里设置一下就行了，这个表里的各个参数分别代表：<br/>quotalimits表结构说明<br/>name： - 用户帐号<br/>quota type： - user, group, class, all (we use user)<br/>per_session： - true or false (we use true)<br/>limit_type： - 硬限制 or 软限制 (我们一般用硬限制)<br/>bytes_in_avail： - 允许上传的字节数<br/>bytes_out_avail： - 允许下载的字节数<br/>bytes_xfer_avail： - 允许传输的字节数（包括上传/下载）<br/>files_in_avail： - 允许上传的文件数<br/>files_out_avail： - 允许下载的文件数<br/>files_xfer_avail： - 允许传输的文件数（包括上传/下载）<br/><br/>quotatallies表结构说明<br/>name <br/>quota_type <br/>bytes_in_used - upload tally in bytes <br/>bytes_out_used - download tally in bytes <br/>bytes_xfer_used - transfer tally in bytes <br/>files_in_used - upload tally in files <br/>files_out_used - download tally in files <br/>files_xfer_used - transfer tally in files <br/><br/>If a value of any limit field is set to '0' it is unlimited<br/><br/>老实说用mysql和quota模块来验证用户和设置磁盘限额，但我总觉得还是不够完善，因为在这个方法中，数据库表里还没有相应的权限的字段，所以说相应用户的权限还是得用实际得用户即mysql对应得uid和gid来控制权限，那天要是mysql数据库也能完全控制权限就好了。<br/><br/>调试<br/>如果出现错误提示可以进入proftpd的调试模式进行调试<br/># /usr/local/proftpd/sbinproftpd -n -d 5 -c /usr/local/proftpd/etc/proftpd.conf <br/>proftpd就会将调试信息打印到consle上以供调试之用。 <br/><br/>测试磁盘限额，运行quote SITE QUOTA显示当前用户的磁盘限额<br/>ftp> quote SITE QUOTA<br/><br/>
]]>
</description>
</item><item>
<link>http://www.qixiaomudong.cn/read.php?127</link>
<title><![CDATA[Iptables相关文档]]></title> 
<author>七小木东 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[Linux]]></category>
<pubDate>Tue, 04 Nov 2008 03:06:09 +0000</pubDate> 
<guid>http://www.qixiaomudong.cn/read.php?127</guid> 
<description>
<![CDATA[ 
	<span style="color: #32CD32;">Linux端口映射技术文档</span><br/><br/>目的：<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;通过221.231.141.195的2200端口访问172.16.58.110的22端口<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;通过221.231.141.195的2222端口访问172.16.58.220的22端口<br/>操作：<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;221.231.141.195的22端口已经映射到172.16.58.240的22端口，所以我们通过SecureCRT连到221.231.141.195上（实际上是连到了172.16.58.240上）然后添加两条以下规则：<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iptables -t nat -A PREROUTING -d 172.16.58.240 -p tcp --dport 2200 -j DNAT --to 172.16.58.110:22<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iptables -t nat -A PREROUTING -d 172.16.58.240 -p tcp --dport 2222 -j DNAT --to 172.16.58.220:22<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;规则含义是：如果数据包的目标地址是172.16.58.240、端口是2200、协议是tcp，就将这个包进行目标地址转换(-j DNAT)，转换的目标地址是172.16.58.110的22端口。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;开启路由转发功能：<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo "1" >/proc/sys/net/ipv4/ip_forward<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;保存规则：<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iptables-save >/etc/sysconfig/iptables<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;然后分别在172.16.58.110、172.16.58.220上编辑/etc/sysconfig/network-scripts/ifcfg-eth0文件：<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;添加：GATEWAY=172.16.58.240（指向端口转发的那台服务器，这里是172.16.58.240）<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;然后：ifdown eth0 && ifup eth0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OK，这样即可达到目的！<br/><br/><br/><span style="color: #32CD32;">使用iptables进行ip封杀 </span><br/><br/>把10.210.132.133这个ip地址封了：<br/> /sbin/iptables -A INPUT -s 10.210.132.133 -j DROP<br/>把上面那个封杀解除：<br/> /sbin/iptables -D INPUT -s 10.210.132.133 -j DROP<br/>或者用规则号：<br/> /sbin/iptables -D INPUT 1<br/>如果不指一个规则，则把1改成相应的数字，1是第一个<br/>把规则全部删空<br/> /sbin/iptables -F<br/> <br/>激活 iptables 服务<br/>防火墙规则只有在 iptables 服务运行的时候才能被激活。<br/>要手工启动服务，使用以下命令： <br/>&nbsp;&nbsp;/sbin/service iptables restart<br/>&nbsp;&nbsp;/etc/init.d/iptables start<br/>要确保它在系统引导时启动，使用以下命令： <br/>&nbsp;&nbsp;/sbin/chkconfig --level 345 iptables on<br/>ipchains 服务不能和 iptables 服务同时运行。要确定 ipchains 服务被禁用，执行以下命令： <br/>&nbsp;&nbsp;/sbin/chkconfig --level 345 ipchains off<br/> <br/>下面几个参考资料很不错，可以参考一下。<br/>iptables中文man文档<br/>http://www.douzhe.com/article/data/41/311.html<br/><br/>iptables在网络中的两个经典应用<br/>http://cx66.com/cxgzs/tips/1216.htm<br/> <br/>Iptables 指南 1.1.19<br/>http://iptables-tutorial.frozentux.net/cn/iptables-tutorial-cn-1.1.19.html<br/>
]]>
</description>
</item><item>
<link>http://www.qixiaomudong.cn/read.php?113</link>
<title><![CDATA[linux修改系统时间]]></title> 
<author>七小木东 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[Linux]]></category>
<pubDate>Tue, 14 Oct 2008 10:18:37 +0000</pubDate> 
<guid>http://www.qixiaomudong.cn/read.php?113</guid> 
<description>
<![CDATA[ 
	两步<br/>(1)date 042612492005<br/>(2)hwclock -w<br/>第一步的意思是设置时间,设置完了可以用date命令查看对不对...注意是月日时分年<br/>第二步的意思是写入主板的rtc芯片..<br/><br/>=======================================<br/><br/>su -c 'date -s 月/日/年'<br/>su -c 'date -s 时:分:秒'<br/><br/>=======================================<br/><br/>了解Linux的时钟 <br/>&nbsp;&nbsp; 由于Linux时钟和Windows时钟从概念的分类、使用到设置都有很大的不同，所以，搞清楚Linux时钟的工作方式与设置操作，不仅对于Linux初学者有着重大意义，而且对于使用Linux服务器的用户来说尤为重要。 <br/><br/>Linux时钟的分类 <br/><br/>Windows时钟大家可能十分熟悉了，Linux时钟在概念上类似Windows时钟显示当前系统时间，但在时钟分类和设置上却和Windows大相径庭。和Windows不同的是，Linux将时钟分为系统时钟(System Clock)和硬件(Real Time Clock，简称RTC)时钟两种。系统时间是指当前Linux Kernel中的时钟，而硬件时钟则是主板上由电池供电的那个主板硬件时钟，这个时钟可以在BIOS的“Standard BIOS Feture”项中进行设置。 <br/><br/>既然Linux有两个时钟系统，那么大家所使用的Linux默认使用哪种时钟系统呢？会不回出现两种系统时钟冲突的情况呢？这些疑问和担心不无道理。首先，Linux并没有默认哪个时钟系统。当Linux启动时，硬件时钟会去读取系统时钟的设置，然后系统时钟就会独立于硬件运作。 <br/><br/>从Linux启动过程来看，系统时钟和硬件时钟不会发生冲突，但Linux中的所有命令(包括函数)都是采用的系统时钟设置。不仅如此，系统时钟和硬件时钟还可以采用异步方式，见图1所示，即系统时间和硬件时间可以不同。这样做的好处对于普通用户意义不大，但对于Linux网络管理员却有很大的用处。例如，要将一个很大的网络中(跨越若干时区)的服务器同步，假如位于美国纽约的Linux服务器和北京的Linux服务器，其中一台服务器无须改变硬件时钟而只需临时设置一个系统时间，如要将北京服务器上的时间设置为纽约时间，两台服务器完成文件的同步后，再与原来的时钟同步一下即可。这样系统和硬件时钟就提供了更为灵活的操作。 <br/><br/><br/>设置Linux的时钟 <br/><br/>在Linux中，用于时钟查看和设置的命令主要有date、hwclock和clock。其中，clock和hwclock用法相近，只不过clock命令除了支持x86硬件体系外，还支持Alpha硬件体系。由于目前绝大多数用户使用x86硬件体系，所以可以视这两个命令为一个命令来学习。 <br/><br/>1.在虚拟终端中使用date命令来查看和设置系统时间<br/>查看系统时钟的操作：<br/># date <br/><br/>设置系统时钟的操作：<br/># date 091713272003.30 <br/><br/>通用的设置格式：<br/># date 月日时分年.秒 <br/><br/>2.使用hwclock或clock命令查看和设置硬件时钟<br/>查看硬件时钟的操作：<br/># hwclock --show 或<br/># clock --show<br/>2003年09月17日 星期三 13时24分11秒 -0.482735 seconds <br/><br/>设置硬件时钟的操作：<br/># hwclock --set --date="09/17/2003 13:26:00" <br/><br/>或者<br/># clock --set --date="09/17/2003 13:26:00" <br/><br/>通用的设置格式：hwclock/clock --set --date=“月/日/年 时：分：秒”。 <br/><br/>3.同步系统时钟和硬件时钟 <br/><br/>Linux系统(笔者使用的是Red Hat 8.0，其它系统没有做过实验)默认重启后，硬件时钟和系统时钟同步。如果不大方便重新启动的话(服务器通常很少重启)，使用clock或hwclock命令来同步系统时钟和硬件时钟。 <br/><br/>硬件时钟与系统时钟同步：<br/># hwclock --hctosys <br/><br/>或者<br/># clock --hctosys <br/><br/>上面命令中，--hctosys表示Hardware Clock to SYStem clock。 <br/><br/>系统时钟和硬件时钟同步：<br/># hwclock --systohc <br/><br/>或者<br/># clock --systohc <br/><br/>使用图形化系统设置工具设置时间 <br/><br/>对于初学者来，笔者推荐使用图形化的时钟设置工具，如Red Hat 8.0中的日期与时间设置工具，可以在虚拟终端中键“redhat-config-time”命令，或者选择“K选单/系统设置/日期与时间”来启动日期时间设置工具。使用该工具不必考虑系统时间和硬件时间，只需从该对话框中设置日期时间，可同时设置、修改系统时钟和硬件时钟。 <br/><br/>Internet同步时钟设置 <br/><br/>在Windows XP日期与时间设置中有一项与Internet同步的功能，有了这项<br/>
]]>
</description>
</item><item>
<link>http://www.qixiaomudong.cn/read.php?148</link>
<title><![CDATA[ 构建小型的入侵检测系统(RedHat9)]]></title> 
<author>七小木东 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[Linux]]></category>
<pubDate>Mon, 04 Jun 2007 05:27:16 +0000</pubDate> 
<guid>http://www.qixiaomudong.cn/read.php?148</guid> 
<description>
<![CDATA[ 
	一.系统平台<br/>　　Redhat9.0发行版， 安装gcc 及相关库文件，建议不要安装<br/>　　Apache,PHP,MySQL,我们将用源码编译安装。基于安全方面的<br/>　　考虑，可以设置一下iptables只允许SSH和WWW访问。<br/>　　<br/>二.软件<br/>　　MySQL4.0.12 http://mysql.secsup.org<br/>　　Snort2.0.0 http://www.snort.org<br/>　　Apache2.0.45 http://www.apache.org<br/>　　PHP4.3.1 http://www.php.net <br/>　　ADODBv3.30 http://phplens.com<br/>　　Acid0.9.6b23 http://acidlab.sourceforge.net<br/>　　Zlib1.1.4 http://flow.dl.sourceforge.net<br/>　　JPGraph1.11 http://jpgraph.techuk.com<br/>　　LibPcap0.7.2 http://www.tcpdump.org<br/>　　<br/>　　建议到这个站点下载http://ftp.cdut.edu.cn/pub/linux/NEW/<br/>　　也可以到www.rpmfind.com下载相关的xx.src.rpm...若安装了rpm包，<br/>　　可以强行将其反安装<br/>　　rpm -e -nodeps xx.xx<br/>　　<br/>　　三.安装(建议将所有的包文件考到同一目录)<br/>　　1.安装zlib1.1.4<br/>　　tar -xzvf zlib-xx.tar.gz<br/>　　cd zlib-xx<br/>　　./configure;make test<br/>　　make install<br/>　　cd ..<br/>　　2.安装LibPcap0.7.2<br/>　　tar -xzvf libpcap.tar.gz<br/>　　cd libpcap-xx<br/>　　./configure<br/>　　make<br/>　　make install<br/>　　cd ..<br/>　　3.安装MySQL4.0.12<br/>　　3.1创建mysql组和mysql用户<br/>　　groupadd mysql<br/>　　useradd -g mysql mysql<br/>　　修改/root下的.bash_profile的这一行：<br/>　　PATH=$PATH:$HOME/bin 为<br/>　　PATH=$PATH:$HOME/bin:/usr/local/mysql/bin<br/>　　3.2安装mysql<br/>　　tar -xzvf mysql-xx.tar.gz<br/>　　cd mysql-xx<br/>　　./configure --prefix=/usr/local/mysql<br/>　　make<br/>　　make install<br/>　　cd scripts<br/>　　./mysql_install_db<br/>　　chown -R root /usr/local/mysql<br/>　　chown -R mysql /usr/local/mysql/var<br/>　　chgrp -R mysql /usr/local/mysql<br/>　　cd ../support-files/my-medium.cnf /etc/my.cnf<br/>　　向/etc/ld.so.conf中加入两行：/usr/local/mysql/lib/mysql<br/>　　/usr/local/lib<br/>　　载入库，执行<br/>　　ldconfig -v<br/>　　3.3测试mysql是否工作：<br/>　　cd /usr/local/mysql/bin/<br/>　　./mysqld_safe --user=mysql&<br/>　　#ps -ef &#124;grep mysql<br/>　　看mysql_safe是否工作<br/>　　3.4设置mysql为自启动：<br/>　　将mysql安装目录下的support-files目录中的<br/>　　mysql.server文件拷到/etc/init.d目录<br/>　　cp mysql.server /etc/init.d/mysql<br/>　　chmod 755 /etc/init.d/mysql<br/>　　创建硬链接:<br/>　　cd /etc/rc3.d（文本方式启动)<br/>　　ln -s /etc/init.d/mysql S85mysql<br/>　　ln -s /etc/init.d/mysql K85mysql<br/>　　cd /etc/rc5.d (图形方式启动）<br/>　　ln -s /etc/init.d/mysql S85mysql<br/>　　ln -s /etc/init.d/mysql K85mysql<br/>　　<br/>　　4.安装Apache2.0.45和PHP4.3.1<br/>　　tar -zxvf httpd-2.0.xx.tar.gz<br/>　　cd httpd_2.xx.xx<br/>　　./configure --prefix=/www --enable-so<br/>　　注：apache根目录为 /www<br/>　　make<br/>　　make install<br/>　　<br/>　　cd ..<br/>　　tar -zxvf php-4.3.x.tar.gz<br/>　　cd php-4.3.x<br/>　　./configure --prefix=/www/php --with-apxs2=/www/bin/apxs --with-config- filepath=/www/php --enable-sockets --with-mysql=/usr/local/mysql --with-zlibdir=/<br/>　　usr/local --with- gd <br/>　　注意：这些为一行，中间不要有回车。<br/>　　cp php.ini-dist /www/php/php.ini<br/>　　编辑httpd.conf(/www/conf):<br/>　　加入两行<br/>　　LoadModule php4_module modules/libphp4.so<br/>　　AddType application/x-httpd-php .php<br/>　　httpd.conf中相关内容如下：<br/>　　#<br/>　　# LoadModule foo_module modules/mod_foo.so<br/>　　LoadModule php4_module modules/libphp4.so<br/>　　# AddType allows you to tweak mime.types without actually editing it, or $<br/>　　# make certain files to be certain types.<br/>　　#<br/>　　AddType application/x-tar .tgz<br/>　　AddType image/x- icon .ico<br/>　　AddType application/x-httpd-php .php<br/>　　<br/>　　设置Apache为自启动：<br/>　　cp /www/bin/apachectl /etc/init.d/httpd<br/>　　cd /etc/rc3.d<br/>　　ln -s /etc/init.d/httpd S85httpd<br/>　　ln -s /etc/init.d/httpd K85httpd<br/>　　cd /etc/rc5.d<br/>　　ln -s /etc/init.d/httpd S85httpd<br/>　　ln -s /etc/init.d/httpd K85httpd<br/>　　<br/>　　测试一下 PHP:<br/>　　cd /etc/init.d<br/>　　./httpd start<br/>　　在/www/htdocs下建立文件 test.php<br/>　　cd /www/htdocs<br/>　　vi test.php<br/>　　加入<br/>　　　　phpinfo();<br/>　　?><br/>　　用浏览器访问http://IP_address/test.php,成功的话，出现一些<br/>　　系统,apache,php信息<br/>　　<br/>　　5.安装 Snort2.0<br/>　　5.1建立snort配置文件和日志目录<br/>　　mkdir /etc/snort<br/>　　mkdir /var/log/snort<br/>　　tar -zxvf snort-2.x.x.tar.gz<br/>　　cd snort-2.x.x<br/>　　./configure --with-mysql=/usr/local/mysql<br/>　　make<br/>　　make install<br/>　　5.2安装规则和配置文件<br/>　　cd rules (在snort安装目录下）<br/>　　cp * /etc/snort<br/>　　cd ../etc<br/>　　cp snort.conf /etc/snort<br/>　　cp *.config /etc/snort<br/>　　5.3修改snort.conf(/etc/snort/snort.conf)<br/>　　var HOME_NET 10.2.2.0/24 (修改为你的内部网网络地址，我的是<br/>　　192.168.0.0/24)<br/>　　var RULE_PATH ../rules 修改为 var RULE_PATH /etc/snort/<br/>　　改变记录日志数据库：<br/>　　output database: log, mysql, user=root password=your_password<br/>　　dbname=snort host=localhost<br/>　　<br/>　　5.4设置snort为自启动：<br/>　　在snort安装目录下<br/>　　cd /contrib<br/>　　cp S99snort /etc/init.d/snort<br/>　　vi /etc/init.d/snort<br/>　　修改snort如下：<br/>　　CONFIG=/etc/snort/snort.conf<br/>　　#SNORT_GID=nogroup (注释掉）<br/>　　$SNORT_PATH/snort -c $CONFIG -i $IFACE $OPTIONS<br/>　　(去掉原文件中的 -g $SNORT_GID )<br/>　　chmod 755 /etc/init.d/snort<br/>　　cd /etc/rc3.d<br/>　　ln -s /etc/init.d/snort S99snort<br/>　　ln -s /etc/init.d/snort K99snort<br/>　　cd /etc/rc5.d<br/>　　ln -s /etc/init.d/snort S99snort<br/>　　ln -s /etc/init.d/snort K99snort<br/>　　<br/>　　四.在mysql中建立数据库<br/>　　/usr/local/mysql/bin/mysql<br/>　　mysql>SET PASSWORD FOR root@localhost=PASSWORD(your_password);<br/>　　mysql>create database snort;<br/>　　mysql>grant INSERT,SELECT on root.* to snort@localhost;<br/>　　mysql>quit;<br/>　　进入snort安装目录：/usr/local/mysql/bin/mysql -p <./contrib/create_mysql snort<br/>　　>Enter password:<br/>　　<br/>　　安装DB表：(在contrib目录）<br/>　　zcat snortdb-extra.gz &#124; /usr/local/mysql/bin/mysql -p snort<br/>　　进入mysql数据库，看看snort数据库中的表：<br/>　　/usr/local/mysql/bin/mysql -p<br/>　　>Enter password:<br/>　　mysql>show databases;<br/>　　+------------+<br/>　　&#124; Database<br/>　　+------------+<br/>　　&#124; mysql<br/>　　&#124; snort<br/>　　&#124; test<br/>　　+------------+<br/>　　3 rows in set (0.00 sec)<br/>　　<br/>　　mysql>use snort;<br/>　　mysql>show tables; 将会有这些：<br/>　　+------------------+<br/>　　&#124; Tables_in_snort &#124;<br/>　　+------------------+<br/>　　&#124; data<br/>　　&#124; detail<br/>　　&#124; encoding<br/>　　&#124; event<br/>　　&#124; flags<br/>　　&#124; icmphdr<br/>　　&#124; iphdr<br/>　　&#124; opt<br/>　　&#124; protocols<br/>　　&#124; reference<br/>　　&#124; reference_system<br/>　　&#124; schema<br/>　　&#124; sensor<br/>　　&#124; services<br/>　　&#124; sig_class<br/>　　&#124; sig_reference<br/>　　&#124; signature<br/>　　&#124; tcphdr<br/>　　&#124; udphdr<br/>　　+------------------+<br/>　　19 rows in set (0.00 sec)<br/>　　<br/>　　mysql>exit<br/>　　<br/>　　五.安装配置Web接口<br/>　　安装JPGraph1.11<br/>　　cp jpgraph-1.11.tar.gz /www/htdocs<br/>　　cd /www/htdocs<br/>　　tar -xzvf jpgraph-1.xx.tar.gz<br/>　　rm -rf jpgrap-1.xx.tar.gz<br/>　　cd jpgraph-1.11<br/>　　rm -rf README<br/>　　rm -rf QPL.txt<br/>　　安装ADODB:<br/>　　cp adodb330.tgz /www/htdocs/<br/>　　cd /www/htdocs<br/>　　tar -xzvf adodb330.tgz<br/>　　rm -rf adodb330.tgz<br/>　　<br/>　　安装配置Acid:<br/>　　cp acid-0.0.6b23.tar.gz /www/htdocs<br/>　　cd /www/htdocs<br/>　　tar -xvzf acid-0.9.6b23.tar.gz<br/>　　rm -rf acid-0.9.6b23.tar.gz<br/>　　cd /www/htodcs/acid/<br/>　　编辑acid_conf.php,修改相关配置如下：<br/>　　$DBlib_path = "/www/htdocs/adodb";<br/>　　/* The type of underlying alert database<br/>　　*<br/>　　* MySQL : "mysql"<br/>　　* PostgresSQL : "postgres"<br/>　　* MS SQL Server : "mssql"<br/>　　*/<br/>　　$DBtype = "mysql";<br/>　　/* Alert DB connection parameters<br/>　　* - $alert_dbname : MySQL database name of Snort alert DB<br/>　　* - $alert_host : host on which the DB is stored<br/>　　* - $alert_port : port on which to access the DB<br/>　　* - $alert_user : login to the database with this user<br/>　　* - 
]]>
</description>
</item><item>
<link>http://www.qixiaomudong.cn/read.php?147</link>
<title><![CDATA[linux里面的一个lns]]></title> 
<author>七小木东 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[Linux]]></category>
<pubDate>Wed, 23 May 2007 09:08:22 +0000</pubDate> 
<guid>http://www.qixiaomudong.cn/read.php?147</guid> 
<description>
<![CDATA[ 
	/usr/local/apache2/htdocs/web# ln -s pdf /usr/local/apache2/htdocs/pd 
]]>
</description>
</item>
</channel>
</rss>