开始之前,实名吐槽VSFTPD,神坑!!!为了活得久一点,不要用!!!
由于数据交换只支持FTP,开始使用的sftp不能使用,于是采用vsfptd来搭建ftp服务器,结果,不幸的事发生了,这也是为啥凌晨两点还在写博客的原因了。没有比较就没有伤害,pure-ftpd安装简单,配置简单,更容易排查问题
下载安装
apt-get install pure-ftpd
配置
pure-ftpd的配置比较特殊,不是用配置文件而是用命令行参数,这种方式比较怪异。不过pure-ftpd的作者还是为偏好配置文件的用户提供了wrapper,可以man一下pure-ftpd-wrapper. 在Debian/Ubuntu下的wrapper比较怪,是在/etc/pure-ftpd/conf下以设置项作为文件名,该项的设置值作为文件的内容,如需要设置ClientCharset=gbk,就建立一个名为“ ClientCharset ”的文件,内容为“GBK”.
一般使用如下参数即可:
ChrootEveryone yes #限制所有用户在其主目录中
BrokenClientsCompatibility no #兼容ie等比较非正规化的ftp客户端
MaxClientsNumber 50 #服务器总共允许同时连接的最大用户数
Daemonize yes #作为守护(daemon)进程运行
MaxClientsPerIP 8 #同一IP允许同时连接的用户数
VerboseLog no #如果你要记录所有的客户命令,设置这个指令为yes
DisplayDotFiles yes #即使客户端没有发送‘-a’选项也列出隐藏文件
AnonymousOnly no #不允许认证用户,仅作为一个公共的匿名FTP
NoAnonymous yes #不允许匿名连接,仅允许认证用户使用
SyslogFacility auth #日志
DontResolve yes #在日志文件中不解析主机名
MaxIdleTime 15 #客户端允许的最大空闲时间(分钟)
PureDB /etc/pureftpd.pdb #PureDB 用户数据库
LimitRecursion 10000 8 #ls命令的递归限制。第一个参数给出文件显示的最大数目。第二个参数给出最大的子目录深度
AnonymousCanCreateDirs no #允许匿名用户创建新目录
MaxLoad 4 #如果系统的loaded超过下面的值,匿名用户会被禁止下载
PassivePortRange 30000 50000 这两个参数开启的话,将会使FTP工作在被动模式,30000 50000分别是客户端连接服务端后服务器在被动模式下返回给客户端的可用端口
ForcePassiveIP 172.30.51.200 被动模式传输的IP,写自己的公网IP即可,最好进行配置,公有云可能会返回给客户端交换机的IP
tiWarez yes #不接受所有者为ftp的文件的下载
MinUID 100 #认证用户允许登陆的最小组ID(UID),此处要注意创建用户时的UID
AllowUserFXP no #仅允许认证用户进行FXP传输
AllowAnonymousFXP no #对匿名用户和非匿名用户允许进行匿名FXP传输
ProhibitDotFilesWrite no #禁止用户删除和写 点文件(文件名以.开头的文件)
ProhibitDotFilesRead no #禁止读点文件
AutoRename no #永不复盖文件。当上传的文件名和服务器中文件同名,将自动重命名
AnonymousCantUpload no #不允许匿名用户上传文件(no = 允许上传)
MaxDiskUsage 99 #保护日志文件。当所在磁盘分区使用超过百分之x时,将不再接受新的上传
CreateHomeDir yes #当虚拟用户第一次登录时,自动创建homedir
添加用户
-- 创建系统用户及ftp主目录
# groupadd -g 7777 pure-ftpd # pure-ftpd为组名 可自定义
# useradd -g 7777 -u 7777 -d /var/empty pure-ftpd #两个7777分别是UID和GID,注意上面配置的MinUID
# mkdir /ftp/
# chown pure-ftpd:pure-ftpd /ftp # 配置文件夹的权限
-- 创建ftp虚拟用户,并通过uid和gid将其与系统用户相关联
# pure-pw useradd xixi -u7777 -g7777 -d /ftp #两个7777分别是UID和GID,注意上面配置的MinUID
-- 创建用户数据库,每更改一次用户,即添加或删除,都需执行此命令来更新用户数据库
# pure-pw mkdb
# pure-pw list #是看用户列表的
# pure-pw show tony #查看tony这个用户的详细信息
# pure-pw passwd tony -m #修改tony的密码
# pure-pw usermod #修改用户
# 重中之重 一定要创建软连接 否则提示用户验证失败
# ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/60puredb
重启服务
service pure-ftpd restart