shell>tar -zxvf proftpd-1.2.10.tar.gz
shell>./configure –prefix=/usr/local/proftp
shell>make
shell>make install

如果想让系统启动时自动启动proftpd,具体配置如下:

shell>cd proftpd-1.2.10
shell>cp contrib/dist/rpm/proftpd.init.d /etc/rc.d/init.d/proftpd
shell>chkconfig –add proftpd
shell>chmod 755 proftpd
shell>chkconfig –level 3 proftpd on

这样还不能启动proftp,因为系统还找不到proftpd的启动脚本

shell>ln -s /usr/local/proftp/sbin/proftpd /usr/local/sbin/proftpd
shell>service proftpd start

如果还不能启动,可能是因为系统找不到日志目录 shell>mkdir -p /var/log/proftpd

这样就OK了。 下来详细讲解proftpd.conf的配置说明:

ServerName    “FTP server” 
ServerType     standalone           #运行方式 还可以用 inetd xinetd
DefaultServer  on
ServerIdent    off                  #屏蔽服务器版本信息
Port           21                   #FTP端口
Umask          022                  #掩码 为了便于管理 用 002
PassivePorts   20000 30000          #被动模式端口段
RootLogin      on                   #允许root用户登录IdentLookups off                    #加快连接速度,
UseReverseDNS off                   #加快连接速度
RequireValidShell off               #匿名的一般需要加上这个
MaxLoginAttempts 1                  #匿名的话1就可以了,最大密码验证次数
WtmpLog NONE                        #不记log到wtmp
AllowForeignAddress on              #要允许 FXP 写成 on
CommandBufferSize 128               #最大命令长度
DirFakeUser On FTP                  #不显示给用户真实的用户、组
DirFakeGroup On FTP
DeferWelcome on                     #显示欢迎信息
User nobody                         #proftpd 以哪个用户、组的身份运行
Group nobodyMaxInstances 250                    #最大连接数
TimeoutLogin 30                     #身份验证超时
TimeoutIdle 120                     #发呆超时
TimeoutNoTransfer 300               #无数据传输超时
TimeoutStalled 300                  #指定一个连接的超时时间#log一些自定义格式,根据需要调整或者用默认
LogFormat myxfer “%h %u %t “%r” %s %b”
LogFormat default “%h %a %u %t “%r” %s %b ‘%F’”
LogFormat auth “%h %a %t “%r” %s”
LogFormat write “%h %a %t “%r” %s %b”MaxClients 50                       #人多时的提示信息
MaxClientsPerHost 2                 #一个IP的连接数
TransferLog NONE                    #log
ExtendedLog /var/proftpd/upload.log write myxfer #log
ExtendedLog /var/proftpd/download.log read myxfer #logTransferRate STOR RETR 速度(Kbytes/s) user 使用者 #设定用户传输速率
MaxHostsPerUser 1                   #每个帐户最多允许来源ip为1个
MaxClientsPerUser 1                 #每个帐户在每个客户端最多可以同时登陆1次 Limit的权限控制比较完整,通过不同的组合基本上可以做到各种复杂的权限控制,其控制项如下: 
CMD:Change Working Directory 改变目录
MKD:MaKe Directory 建立目录的权限
RNFR: ReName FRom 更改目录名的权限
DELE:DELEte 删除文件的权限
RMD:ReMove Directory 删除目录的权限
RETR:RETRieve 从服务端下载到客户端的权限
STOR:STORe 从客户端上传到服务端的权限
READ:可读的权限,不包括列目录的权限,相当于RETR,STAT等
WRITE:写文件或者目录的权限,包括MKD和RMD
DIRS:是否允许列目录,相当于LIST,NLST等权限,还是比较实用的 

注:在测试是否可以下载时,不能用长度为0的空文件去测试,要用一个有内容的文件(文件大小不能为0k)。针对上面这个Limit所应用的对象,又包括以下范围:

AllowUser 针对某个用户允许的
LimitDenyUser 针对某个用户禁止的
LimitAllowGroup 针对某个用户组允许的
LimitDenyGroup 针对某个用户组禁止的
LimitAllowAll 针对所有用户组允许的
LimitDenyAll 针对所有用户禁止的Limit
############################################################################
<Directory  /var/opt/>
    PathAllowFilter  "([0-9]+_[0-9]+_?(s|b)?.(jpg|jp2|gif|png)$|[0-9]+$)"
    TransferRate STOR  100 group fpsgroup
    <Limit LOGIN>
        AllowGroup fpsgroup
        DenyAll
     </Limit>
     <Limit STOR DIRS  MKD RMD RETR SIZE>  
      AllowGroup fpsgroup 
     </Limit> 
       <Limit DELE  RNFR>
        AllowUser fpsfms
        DenyAll
        </Limit>
</Directory>
############################################################################
<Directory  /var/video/>
  PathAllowFilter  "([0-9]+_[0-9]+_?(s)?.(jpg|flv)$|[0-9]+$)"
  TransferRate STOR 1000 group  fvsgroup
   <Limit LOGIN>
    AllowGroup fvsgroup
     DenyAll
   </Limit>
    <Limit STOR DIRS  MKD RMD RETR  SIZE>
     AllowGroup fvsgroup
    </Limit>
     <Limit  DELE RNFR>
      AllowUser fvsfms
      DenyAll
      </Limit>
</Directory>