当我的同事每次传送文件到 Solaris 8 的 FTP Server 时,那些修改日期在 2002 年之前的文件总是不能在窗口中看到,这些文件在 Solaris 系统中用 ls -l 看到的是带有年份的,而那些 2002 年的文件则没有 2002 的年份。因此,问题就出在这里,我们每次需要用 touch 命令更新文件日期,十分的不方便。所以,我认定是 FTP Server的问题。随即决定选用熟悉的 Wu-ftpd ,但是,令人吃惊的是,使用这个版本的 FTP Server 后,居然不能显示目录,连整个目录都不能列出来了。想到以前曾经有文章介绍 ProFTPD ,因此,决定尝试这个软件。感觉起来十分的好用,特地撰写此文,愿意和大家共享。
ProFTPD 也是开放源码的软件,以 GPL 许可发布。ProFTPD 可以说是 wu-ftpd 的替代,同时在安全,可伸缩性等方面有很大的提高。特别是对于熟悉 Apache 配置的人而言,它的配置和 Apache 十分相似,因此,用起来肯定能得心应手。
主要特色:
一个单一的和 Apache 的 httpd.conf 类似的配置文件每个目录下的 .ftpaccess 文件(和 Apache 的. htaccess 类似)很容易配置的,多个虚拟 FTP 服务器以及匿名 FTP 服务可以单独运行也可以从 inetd/xinetd 启动匿名 FTP 的根目录不需要特别的目录结构系统的二进制文件和其他系统文件没有 SITE EXEC 命令在单独运行方式下,以非特权用户运行,降低攻击风险日志以及 utmp/wtmp 支持Shadow 口令支持
截止到本文成稿时, ProFTPD 的最新版本为 v1.2.4 ,为了保证系统安全,建议你总是把软件更新到最新的版本。
wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.2.4.tar.gz
./configure --prefix=/usr/local --enable-shadow make (如果是双 CPU 建议采用 make -j3)make install
然后你可以发现 ProFTPD 安装在 /usr/local 下,"proftpd" 可以在/usr/local/sbin/目录下找到,配置文件 proftpd.conf 位于:/usr/local/etc/ 。
如果你熟悉 Apache 的 httpd.conf 的配置的话, proftpd.conf 的配置十分简单。
DefaultRoot ~ users, !staff
ServerIdent On "FreeLAMP FTP Server"
ServerName ""
ServerType standalone
ServerAdmin webmaster@freelamp.com
Bind 192.168.0.1
ExtendedLog /var/log/proftpd read,write,auth
ScoreboardPath /usr/local/var/proftpd
RequireValidShell Off
User proftpd
Group proftpd
下面我们就可以启动了:
/usr/local/sbin/proftpd &
以上的配置方法十分简单,不再赘述。下面我们看限制匿名用户登录的办法:
#MaxClients 1 "Maximum users reached - try again later"
#MaxClients 1 "Sorry, max %m users -- try again later"
MaxClients None "对不起,本系统不支持匿名登录"
带宽控制:
RateReadBPS 81920
RateReadFreeBytes 5120
RateReadHardBPS on
这样用户的带宽就用公式: "RateReadBPS x MaxClients = Total Bandwidth allocation."
限制起来,但是针对每个虚拟域,每个用户以及全局的限制还没有实现。在 1.2.x 系
列中只有一个全局变量影响整个服务器:
Bandwidth 81920
另外,你还可以采用 "mod_quota" 和 "mod_ratio" 模块来控制用户的磁盘限额。