当我的同事每次传送文件到 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" 模块来控制用户的磁盘限额。