1、创建用户组和用户
groupadd ftpgroup
useradd ftpuser -g ftpgroup -s /sbin/nologin
2、给/data/www/html赋ftpuser权限
mkdir -p /data/www/html
chown -R ftpuser:ftpgroup /data/www/html
3、安装pure-ftpd
yum install epel-release #默认的 yum 源没有提供 pure-ftpd,需要先安装epel扩展源
yum install pure-ftpd -y
4、下载配好的pure-ftpd.conf
wget -P /etc/pure-ftpd/ http://www.kglan.com/soft/pure-ftp/pure-ftpd.conf
5、修改配置文件pure-ftpd.conf
vi /etc/pure-ftpd/pure-ftpd.conf
#修改内容如下所示:
#限制所有用户只能访问主目录
ChrootEveryone yes
#信任组ID,不用设置,注释掉
# TrustedGID 100
#是否断开非兼容的客户端,设置no时,兼容ie等比较非正规化的ftp客户端
BrokenClientsCompatibility no
#最大连接的客户端数量
MaxClientsNumber 10
是否以守护(doemon)进程运行,设置yes
Daemonize yes
#单个IP最大连接数
MaxClientsPerIP 8
#是否记录所有用户的ftp连接命令
VerboseLog no
#客户端未发出-a命令时,是否列出隐藏文件(dot-files)?
DisplayDotFiles yes
#只允许匿名用户?我们用于非公共ftp,所以要进行认证,不能匿名登录
AnonymousOnly no
#设置为yes时,禁止匿名用户登录,只允许认证用户登录
NoAnonymous yes
#默认( facility )是 “ftp”。 “none” 将禁止日志。
SyslogFacility ftp
#设置用户登陆后的显示信息
# FortunesFile /usr/share/fortune/zippy
#//禁止反向解析,在日志文件中不解析主机名。
DontResolve yes
#LDAP配置文件目录
# LDAPConfigFile /etc/pure-ftpd/pureftpd-ldap.conf
#MySQL配置文件目录
# MySQLConfigFile /etc/pure-ftpd/pureftpd-mysql.conf
#PGSQL配置文件目录
# PGSQLConfigFile /etc/pure-ftpd/pureftpd-pgsql.conf
#删除注释,并启用,如果需要上面那几种数据库来存放用户信息,请自行删除注释
#此为虚拟用户数据库路径,我们创建的虚拟用户就保存在这里
PureDB /etc/pure-ftpd/pureftpd.pdb
#验证服务pure-authd 的socket 路径
# ExtAuth /var/run/ftpd.sock
#启用 PAM 认证方式
PAMAuthentication yes
#unix认证方式,只用一种即可
# UnixAuthentication yes
#是否允许匿名用户创建文件目录
AnonymousCanCreateDirs no
#设定负载阙值,当系统负载大于以下设定的数值后,将禁止匿名用户下载!
MaxLoad 2
#FTP启用主动模式时用到的端口范围,建议设置为31888 to 36888
#主要是不想去改防火墙了,用以前vsftp的防火墙端口规则
PassivePortRange 31888 36888
#强制一个IP地址使用被动响应( PASV/EPSV/SPSV replies)
#ForcePassiveIP 192.168.0.1
#匿名用户和认证用户下载时的速度比例
# AnonymousRatio 1 10
#上传下载速度比例设置,全局变量
# UserRatio 1 10
#不允许下载ftp属主的文件
AntiWarez yes
#服务监听的IP 地址和端口。(缺省是所有IP地址和21端口)
# Bind 127.0.0.1,21
#匿名用户带宽
# AnonymousBandwidth 8
#认证用户带宽
# UserBandwidth 8
#文件和目录的umask
Umask 133:022
#用户ID至少要大于1000才能登陆
MinUID 1000
#是否使用/etc/ftpusers配置文件来禁用帐号,默认为no
UseFtpUsers no
#是否仅允许认证用户进行 FXP 传输?默认为no,这里改yes
AllowUserFXP yes
#是否对匿名用户和非匿名用户允许进行匿名 FXP 传输。
AllowAnonymousFXP no
#用户不能删除和写点文件(文件名以 ‘.’ 开头的文件),即使用户是文件的所有者也不行。
ProhibitDotFilesWrite no
#同上
ProhibitDotFilesRead no
#是否对已存在的文件自动重命名?必须no
AutoRename no
#设置yes禁止匿名用户上传新文件
AnonymousCantUpload yes
#设定仅允许来自以下IP地址的非匿名用户连接。
#TrustedIP 10.1.1.1
#如果需要为日志每一行添加 PID 去掉下面行的注释
LogPID yes
#log文件路径
AltLog clf:/var/log/pureftpd.log
#设置为yes时,不接受 CHMOD 命令。用户不能更改他们文件的属性。
#NoChmod yes
#设置yes时,允许用户恢复和上传文件,不允许删除他们
#KeepAllFiles yes
#用户主目录不存在的话,自动创建。
CreateHomeDir no
#删除注释后,启用配额管理,1000:10 就限制每一个用户只能使用 1000 个文件,共10Mb。
#Quota 1000:10
#运行时的pid路径
#PIDFile /var/run/pure-ftpd.pid
# 如果你的 pure-ftpd 编译时加入了 pure-uploadscript 支持,这个指令将会使 pure-ftpd
# 发送关于新上传的情况信息到 /var/run/pure-ftpd.upload.pipe,这样 pure-uploadscript
# 就能读然后调用一个脚本去处理新的上传。
#这个功能用好了可以做很多事。。。
#CallUploadScript yes
#限定上传文件占用硬盘的极限值,超过后不再接收上传数据
MaxDiskUsage 99
# Set to ‘yes’ if you don’t want your users to rename files.
#是否禁止用户重命名已存在的文件
NoRename no
#设置为yes,防止chmod修改错误导致文件锁定
CustomerProof yes
#3:20 意思是同一个认证用户最大可以有3个同时活动的进程。而且同时最多只能有20个匿名用户进程。
# PerUserLimits 3:20
# yes文件相同直接删除旧的,no先保留再更新
NoTruncate yes
# TLS 1
# SSL is disabled by default. TLS 1.0, 1.1 and 1.2 are available by
# default.
# TLSCipherSuite HIGH
# Certificate file, for TLS
# CertFile /etc/ssl/private/pure-ftpd.pem
#只允许IPV4连接
IPV4Only yes
# Listen only to IPv6 addresses in standalone mode (ie. disable IPv4)
# By default, both IPv4 and IPv6 are enabled.
# IPV6Only yes
FileSystemCharset UTF-8
ClientCharset UTF-8
6、创建虚拟用户生成用户数据db
pure-pw useradd myftp -u ftpuser -d /data/www/html
密码:123456
pure-pw mkdb /etc/pure-ftpd/pureftpd.pdb
7、开启服务 设置开机启动
systemctl start pure-ftpd
systemctl enable pure-ftpd
systemctl status pure-ftpd
8、开放防火墙端口
在使用FTP过程中不仅仅会用到21端口,可能还会用到其他端口,所以此处我们放行 20/21,1024/65535,如下:
firewall-cmd –zone=public –add-port=20-21/tcp –permanent
firewall-cmd –permanent –zone=public –add-port=49152-65535/tcp
firewall-cmd –reload
9、本地使用 FTP 客户端测试
#查看相应日志记录
cat /var/log/messages
#查看安全日志记录
cat /var/log/secure
#先查看 21 端口是否开启
netstat -an | grep 21
#然后查看 proftpd 进程
ps -aux | grep pure-ftpd
#Linux 在启动一个进程时,系统会在 /proc下创建一个以 PID 命名的目录,该目录是系统内存的映射目录,提供内核与进程信息,其中包括一个名为 exe 的文件即记录了绝对路径,通过 ll 或 ls –l 命令即可查看
ls -l /proc/PID
10、修改虚拟用户密码
pure-pw passwd myftp