博客 / Linux/ Centos7.4 64bit安装pure-ftpd及配置笔记,用了多年vsftp,今天试试pure-ftpd,

Centos7.4 64bit安装pure-ftpd及配置笔记,用了多年vsftp,今天试试pure-ftpd,

Centos7.4 64bit安装pure-ftpd及配置笔记,用了多年vsftp,今天试试pure-ftpd,

前言

vsftpd 的权限配置非常强大,但对于一般用户而言可能较为复杂。笔者长期使用 vsftpd,虽然知道还有其他 FTP 服务器软件,但一直未曾尝试。近期在一台 VPS 上需要配置 FTP 服务,便决定尝试一下 Pure-FTPd。

安装 Pure-FTPd

在 CentOS 7 系统上,可以使用 yum 包管理器进行安装:

yum install pure-ftpd -y

配置 Pure-FTPd

主要的配置文件位于 /etc/pure-ftpd/pure-ftpd.conf。以下是一些关键配置项的说明与建议设置。

核心安全与访问控制

  • ChrootEveryone: 设置为 yes,限制所有用户只能访问其主目录,增强安全性。
  • NoAnonymous: 设置为 yes,禁止匿名登录,仅允许认证用户访问。
  • PAMAuthentication: 设置为 yes,启用 PAM 认证。
  • MinUID: 设置为 1000,仅允许 UID 大于等于 1000 的系统用户登录(CentOS/RHEL 7 中普通用户的 UID 通常从此开始)。
  • UseFtpUsers: 设置为 no,不使用 /etc/ftpusers 文件来禁用账户(已通过 MinUID 进行限制)。

连接与性能设置

  • MaxClientsNumber: 设置最大并发客户端连接数,例如 10
  • MaxClientsPerIP: 设置单个 IP 地址的最大连接数,例如 8
  • PassivePortRange: 设置被动模式使用的端口范围,例如 31888 36888。请确保防火墙已开放此端口范围。
  • Daemonize: 设置为 yes,以守护进程方式运行。

日志与文件系统

  • VerboseLog: 建议设置为 no,除非需要详细记录所有客户端命令。
  • AltLog: 可以启用,例如 clf:/var/log/pureftpd.log,以 Apache 通用日志格式记录传输日志。
  • FileSystemCharsetClientCharset: 均设置为 UTF-8,以支持中文等非 ASCII 字符的文件名。
  • Umask: 设置文件创建掩码,例如 133:022

其他常用选项

  • PureDB: 取消注释并设置为 /etc/pure-ftpd/pureftpd.pdb,这是存储虚拟用户信息的数据库文件。
  • IPV4Only: 设置为 yes,如果只需要 IPv4 连接。
  • CreateHomeDir: 设置为 no,不自动创建不存在的用户主目录。

修改完配置后,建议备份原文件。

创建系统用户与组

为 FTP 服务创建一个专用的系统用户和组(如果不存在):

groupadd -f ftpgroup
useradd -g ftpgroup ftpuser

管理虚拟用户

Pure-FTPd 使用虚拟用户系统,用户信息存储在独立的数据库中。

添加虚拟用户

以下命令创建一个名为 ftpnow 的虚拟用户,并将其映射到系统用户 ftpuser,同时指定其 FTP 根目录:

pure-pw useradd ftpnow -u ftpuser -d /whoisyourdaddy -m

执行后会提示输入并确认该虚拟用户的密码。-m 选项会将用户信息写入 PureDB 数据库。

设置目录权限

将 FTP 根目录的所有权赋予对应的系统用户和组:

chown ftpuser:ftpgroup /whoisyourdaddy -R

更新用户数据库

在添加或修改用户后,需要重建数据库索引:

pure-pw mkdb

其他用户管理命令

  • 删除用户: pure-pw userdel ftpnow -m (保留家目录,需手动删除)
  • 修改用户密码: pure-pw passwd ftpnow -m
  • 查看用户信息: pure-pw show ftpnow

服务管理

在 CentOS 7 及更高版本中,使用 systemctl 管理服务:

  • 启动服务: systemctl start pure-ftpd.service
  • 停止服务: systemctl stop pure-ftpd.service
  • 重启服务: systemctl restart pure-ftpd.service
  • 查看状态: systemctl status pure-ftpd.service
  • 设置开机自启: systemctl enable pure-ftpd.service

常见问题:530 登录认证失败

如果连接时出现“530 Login authentication failed”错误,请检查系统日志:

cat /var/log/messages | grep pure-ftpd

常见原因之一是虚拟用户映射的系统用户 UID 小于 pure-ftpd.confMinUID 设置的值(默认为 1000)。

解决方案

  1. 确保用于映射的系统用户(如 ftpuser)的 UID 大于等于 MinUID 的值。可以使用 id ftpuser 命令查看。
  2. 或者,根据实际情况调整 pure-ftpd.conf 中的 MinUID 值(不推荐设为过低的值,如 0)。

总结

Pure-FTPd 的配置文件结构清晰,选项说明详细,相较于 vsftpd 在某些场景下配置更为直观。其虚拟用户系统能将 FTP 账户与系统账户分离,提升了安全性。对于需要快速部署一个安全、易管理的 FTP 服务器的用户来说,Pure-FTPd 是一个不错的选择。

发表评论

您的邮箱不会公开。必填项已用 * 标注。