一、安装
默认 yum 源不含 pure-ftpd,需先装 epel 扩展源:
yum install -y epel-release
yum install -y pure-ftpd
二、创建系统用户与存储根目录
# 创建用户 ftp(不允许登录 shell)
useradd ftp -s /sbin/nologin
# 创建 FTP 存储根目录并设置权限
mkdir /data/ftp
chown -R ftp.ftp /data/ftp/
三、核心配置项
编辑 /etc/pure-ftpd/pure-ftpd.conf,下面是最常用的几项:
| 配置项 | 值 | 说明 |
|---|---|---|
PureDB | /etc/pure-ftpd/pureftpd.pdb | 用户数据库路径(重要) |
ChrootEveryone | yes | 锁定所有用户到家目录 |
CreateHomeDir | yes | 虚拟用户目录不存在时自动创建 |
BrokenClientsCompatibility | yes | 兼容不同客户端 |
DisplayDotFiles | no | 是否显示隐藏文件 |
CustomerProof | yes | 防止命令误操作 |
PassivePortRange | 30000 50000 | 被动模式端口范围 |
ForcePassiveIP | 192.168.1.100 | 被动模式对外 IP |
NoAnonymous | yes | 禁止匿名用户(为 no 时允许) |
AnonymousOnly | no | 是否只允许匿名访问 |
AnonymousCantUpload | yes | 禁止匿名用户上传(为 no 时允许) |
AnonymousCanCreateDirs | yes | 是否允许匿名用户建目录 |
AllowUserFXP | no | 仅允许认证用户 FXP 传输 |
AllowAnonymousFXP | no | 是否允许匿名 FXP 传输 |
SyslogFacility | none | 日志告警级别,none 为禁止记录 |
被动模式下务必在防火墙放行
PassivePortRange指定的端口段,否则客户端能登录但列不出目录。
四、创建虚拟用户
# 创建用户家目录
mkdir /data/ftp/aaa
chown -R ftp.ftp /data/ftp/aaa/
# -u 将虚拟用户 aaa 与系统用户 ftp 关联(登录后以 ftp 身份读写文件)
# -d 指定家目录,使 aaa 只能访问 /data/ftp/aaa/
pure-pw useradd aaa -u ftp -d /data/ftp/aaa/
# 生成用户信息数据库文件(关键步骤,新增用户后必须执行)
pure-pw mkdb
# 查看已创建的账号列表
pure-pw list
五、启动服务
systemctl start pure-ftpd.service
systemctl enable pure-ftpd.service
# 或一步到位
systemctl enable --now pure-ftpd.service
六、测试
用 Windows 或 Linux 上的 FTP 客户端登录,验证上传、下载与目录锁定是否符合预期。