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 nobody
MaxInstances 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 #log
TransferRate 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 针对某个用户允许的Limit
DenyUser 针对某个用户禁止的Limit
AllowGroup 针对某个用户组允许的Limit
DenyGroup 针对某个用户组禁止的Limit
AllowAll 针对所有用户组允许的Limit
DenyAll 针对所有用户禁止的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>