在 Linux 系统下,可供选择的 FTP 服务器软件种类繁多,vsftpd、wu‑ftp、Pure‑FTPd 都是历经考验的老牌方案,各自功能成熟稳定。然而,真正动手配置起来,往往需要花费不少精力。如果您希望快速搭建一个个人 FTP 服务器,又不想与发行版自带的复杂配置纠缠,Proftpd 是一款相当顺手的替代品。
Proftpd 是一款开放源代码的 FTP 服务器软件,脱胎于当年使用最广泛的 wu‑ftpd,但修正了后者的大量缺陷,并在安全性、性能表现以及可配置性等方面做出了重大改进。最值得一提的变化是它借鉴了 Apache 的配置风格,让整个安装、设置与日常维护变得直观很多。这款软件的设计目标非常明确:安全、易用、可定制。
回顾项目起步阶段,Unix 或类 Unix 平台上可以选择的 FTP 服务器寥寥无几,wu‑ftpd 几乎是唯一的主流方案。尽管 wu‑ftpd 性能不俗,却缺少不少 Win32 平台 FTP 服务器早已具备的功能,而且安全漏洞也陆续暴露出来。Proftpd 的原创者曾花费大量时间修补 wu‑ftpd 的漏洞并添加新特性,但很快意识到,要从根本上解决配置能力不足与功能缺失的问题,不如彻底重写一个。于是,Proftpd 应运而生。
它支持两种运行方式:独立服务器模式,或者作为超级服务器(inetd/xinetd)的子服务。无论从安全性、稳定性还是可配置性来看,都是相当可靠的选项。
下面是 Proftpd 的一些核心功能:
- 每个目录都可以放入一个
.ftpaccess文件进行精细的访问控制,类似于 Apache 的.htaccess机制。 - 支持多虚拟 FTP 服务器、多用户登录以及匿名 FTP 服务。
- 可以独立启动,也可以通过 inetd/xinetd 启动。
- 文件和目录的权限、属主、属组完全遵循 UNIX 模式。
- 独立运行时能避免 root 权限直接暴露,有效降低系统风险。
- 采用模块化设计,方便扩展 LDAP、SSL/TLS、RADIUS 等高级功能。
- 原生支持 IPv6。
接下来,以 Fedora 22 为例,一步步讲解如何使用 ProFTPD 搭建一个完整的 FTP 服务器。
1. 安装 ProFTPD
由于 Fedora 22 已经使用 dnf 取代了 yum,安装过程非常直接。在终端中执行以下命令即可:
$ sudo dnf -y install proftpd proftpd-utils
2. 配置 ProFTPD
核心配置文件是 /etc/proftpd.conf,所有关键设置都在这里。使用文本编辑器打开它:
$ sudo vi /etc/proftpd.conf
先修改 ServerName 和 ServerAdmin,替换为自己的域名和邮箱地址:
ServerName "ftp.linoxide.com"
ServerAdmin arun@linoxide.com
为了方便排查问题,建议将访问日志和认证日志分别记录到独立文件:
ExtendedLog /var/log/proftpd/access.log WRITE,READ default
ExtendedLog /var/log/proftpd/auth.log AUTH auth

3. 添加 FTP 用户
默认情况下,已有系统用户可以直接使用 FTP 服务。但更常见的做法是创建一个专用的 FTP 用户,并将其根目录限定在特定路径。先新建一个用户组:
$ sudo groupadd ftpgroup
然后创建用户 arunftp,主目录设为 /ftp-dir/,并加入 ftpgroup:
$ sudo useradd -G ftpgroup arunftp -s /sbin/nologin -d /ftp-dir/
设置密码:
$ sudo passwd arunftp
Changing password for user arunftp.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
如果系统启用了 SELinux,还需要打开相关的布尔值:
$ sudo setsebool -P allow_ftpd_full_access=1
$ sudo setsebool -P ftp_home_dir=1
最后设定目录权限,防止其他用户移动或重命名其中的内容:
$ sudo chmod -R 1777 /ftp-dir/
4. 启用 TLS 支持
传统 FTP 传输数据是明文的,任何监听网络的人都能截获。启用 TLS 加密后,数据通道和登录信息都会得到保护。操作前最好先备份配置文件:
$ sudo cp /etc/proftpd.conf /etc/proftpd.conf.bak
再次编辑 /etc/proftpd.conf,追加以下内容:
TLSEngine on
TLSRequired on
TLSProtocol SSLv23
TLSLog /var/log/proftpd/tls.log
TLSRSACertificateFile /etc/pki/tls/certs/proftpd.pem
TLSRSACertificateKeyFile /etc/pki/tls/certs/proftpd.pem

保存退出后,需要生成 SSL 证书。先确认已安装 openssl:
$ sudo dnf install openssl
然后生成自签名证书:
$ sudo openssl req -x509 -nodes -newkey rsa:2048 -keyout /etc/pki/tls/certs/proftpd.pem -out /etc/pki/tls/certs/proftpd.pem
过程中会询问证书信息,按实际情况填写即可。完成后限制私钥的权限:
$ sudo chmod 600 /etc/pki/tls/certs/proftpd.pem
5. 允许 FTP 通过防火墙
Fedora 22 默认使用 Firewalld,需要开放相应端口。如果启用了 TLS/SSL,执行:
$ sudo firewall-cmd --add-port=1024-65534/tcp
$ sudo firewall-cmd --add-port=1024-65534/tcp --permanent
如果没有启用 TLS,直接开放 FTP 服务:
$ sudo firewall-cmd --permanent --zone=public --add-service=ftp
success
然后重载防火墙规则:
$ sudo firewall-cmd --reload
success
6. 启动并激活 ProFTPD
所有配置就绪后,启动服务:
$ sudo systemctl start proftpd.service
设置开机自启:
$ sudo systemctl enable proftpd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/proftpd.service to /usr/lib/systemd/system/proftpd.service.
7. 登录到 FTP 服务器
如果一切顺利,现在就可以使用 FTP 客户端连接了。以 FileZilla 为例,主机名填写服务器 IP 或域名,协议选择 FTP,用户名填写 arunftp,密码是第 3 步设定的。如果启用了 TLS,加密类型选 要求显式的基于 TLS 的 FTP;否则选 简单 FTP。

在 FileZilla 菜单中打开 文件 > 站点管理器,新建站点并按上述方式配置。首次连接时系统会提示接受 SSL 证书,确认后就可以正常上传下载了。

总结
至此,已经在 Fedora 22 上成功部署并配置了一个带 TLS 加密的 ProFTPD 服务器。Proftpd 本身功能强大、扩展丰富,这套基础配置足以满足大多数个人或小团队的需求。强烈建议启用 TLS 加密,因为数据在传输过程中会被 SSL 证书保护,登录密码也不会明文泄露。另外,文中没有配置匿名访问——对于受保护的 FTP 系统,这符合安全最佳实践。如果遇到问题或有更好的建议,欢迎交流。
