proftpd软件和vsftpd一样是一个开放源代码的ftp服务器软件,但是可配置项比vsftpd要多,是目前比较流行的ftp软件,proftpd的配置和apache的配置相似,因此该软件也十分容易配置和管理。
proftpd的全称是Professional FTP daemon,是针对Wu-FTP的弱项而开发的,软件在经过多年的发展之后完善了很多功能,ProFTP已经成为继Wu-FTP之后最为流行的FTP服务器软件,越来越多的站点选用它构筑安全高效的FTP站点。
个人觉得该软件比较好用的功能有一下几点:
1)目录访问权限配置灵活,配置简单。
2)能够不依赖系统用户,可以使用独立的虚拟用户系统(使用过Serv-U的朋友应该深有体会,配置非常方便,对原有系统环境影响较小)
3)对中文的支持良好,上篇博客写道vsftpd有个比较严重的bug,对中文中一些字符的支持不是很好(目前只碰到对中文的双引号支持不是很好)。
1、软件下载
我使用的安装方式为源码安装,从http://www.proftpd.org/网站中能够下载到profptd源码,点击左侧的gz能够下载到最新的proftpd源码。ftp://ftp.proftpd.org/distrib/source/这个是软件源码ftp地址,在这个地址中能够下载到想要的软件的各个版本。
2、软件安装
将软件下载完成后放到linux系统下的某个目录中,使用root账户登录系统,进入的该软件目录下,输入如下命令进行安装:
tar -zxvf proftpd-1.3.6.tar.gz #将源码压缩包解压到当前目录中
cd proftpd-1.3.6/ #进入到解压目录中
./configure --enable-nls --prefix=/usr/local/proftpd #(其中nls是mod_lang,文档:http://www.proftpd.org/docs/modules/mod_lang.html )
make
make install
上面的源码编译安装过程成功完成后,在/usr/local/proftpd的目录下会生成配置文件目录以及相应服务的二进制可执行文件。
3)软件配置
我倾向于使用虚拟用户的方式,创建独立的用户密码文件,这样相对安全些,下面是创建虚拟用户的命令:
/usr/local/proftpd/bin/ftpasswd --passwd --uid=1001 --gid=101 --home=/home/shareroot --shell=/sbin/nologin --file=/usr/local/proftpd/etc/ftpd.passwd --name=proftptest
#name是登陆ftp的用户名 file是密码文件位置 home是ftp用户的根目录
/usr/local/proftpd/bin/ftpasswd --group --file=/usr/local/proftpd/etc/ftp.group --gid=101 --name=ftpman --member=proftptest
#创建用户组,生成配置文件 member将创建的用户添加到用户组中
在网上找了下没有看到完整的配置文件,下面我贴出我proftpd的完整的配置文件
# This is a basic ProFTPD configuration file (rename it to
# 'proftpd.conf' for actual use. It establishes a single server
# and a single anonymous login. It assumes that you have a user/group
# "nobody" and "ftp" for normal operation and anon.
ServerName "ProFTPD Default Installation"
ServerType standalone
DefaultServer on
# Port 21 is the standard FTP port.
Port 21
# Don't use IPv6 support by default.
UseIPv6 off
# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask 022
# To prevent DoS attacks, set the maximum number of child processes
# to 30. If you need to allow more than 30 concurrent connections
# at once, simply increase this value. Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd).
MaxInstances 1000
# Set the user and group under which the server will run.
User nobody
Group nobody
# To cause every FTP user to be "jailed" (chrooted) into their home
# directory, uncomment this line.
DefaultRoot ~
# Normally, we want files to be overwriteable.
AllowOverwrite on
TimeoutLogin 120
TimeoutNoTransfer 900
AllowStoreRestart on
#允许断点续上传
AllowRetrieveRestart on
#允许断点续下载
PassivePorts 50000 65534
#指定数据端口的范围
UseReverseDNS off
#关闭DNS反向查询,节省连接时间
TransferLog /var/spool/syslog/proftpd/xferlog.legacy
#数据传输记录
# Bar use of SITE CHMOD by default
AuthOrder mod_auth_file.c mod_auth_unix.c
AuthUserFile /usr/local/proftpd/etc/ftpd.passwd
AuthGroupFile /usr/local/proftpd/etc/ftpd.group
MaxClients 100
IdentLookups off
UseReverseDNS off
DeleteAbortedStores on
DirFakeGroup on
DirFakeUser on
DirFakeMode 0600
RequireValidShell off
LangOptions PreferServerEncoding #在编译时加入 --enable-nls才能用
UseEncoding utf8 gbk #在编译时加入 --enable-nls才能用
<Limit Login>
Order deny,allow
AllowGroup ftpman
</Limit>
#显示~/welcome.msg中的欢迎信息,可以编辑welcome.msg自己制定欢迎信息
# %T 当前的时间
# %F 所在硬盘剩下的空间
# %C 当前所在的目录
# %R:客户的主机名
# %U:客户登陆的帐号
# %M:允许最大连接数
# %N:当前的连接人数
# %E:FTP服务器管理员的email
# %i:本次上传的文件数量
# %o:本次下载的文件数量
#AllowOverwrite YES
#允许文件可以重新写
#IdentLookups off
#查找客户的远程用户名,关掉节省连接时间
#ExtendedLog /var/spool/syslog/proftpd/access.log WRITE,READ write
#以write的日志格式记录READ,WRITE的日志
#ExtendedLog /var/spool/syslog/proftpd/auth.log AUTH auth
#以auth的日志格式记录AUTH的日志
<Directory /home/shareroot>
<Limit WRITE READ>
Order deny,allow
AllowUser share
</Limit>
</Directory>
<Limit SITE_CHMOD>
AllowAll
</Limit>
# A basic anonymous configuration, no upload directories. If you do not
# want anonymous users, simply delete this entire <Anonymous> section.
按照上面的参数配置完成之后,下面开始启动服务
4)启动服务
cd /usr/local/proftpd/sbin #进入到服务运行文件目录
./proftpd #启动服务
ps -ef | grep proftpd #检查服务进程是否启动
好啦,profptd的源码整体部署就是上面这个流程,下一篇介绍源码安装的软件,将service添加到systemctl管理中(CentOS7.*之后的系统中才有这个命令),并做到开机启动。