Pure-FTPd

出自 ArchWiki

Pure-FTPd 是一个以安全为中心设计的 FTP 服务器。

安装

pure-ftpdAUR 可以从 Arch 用户仓库 (AUR) 安装。

启动启用 pure-ftpd.service 服务。

配置

Pure-FTPd 配置完全通过其启动参数完成。

有一个包装脚本,它读取 /etc/pure-ftpd/pure-ftpd.conf。然后使用相应的参数启动 Pure-FTPd。

设置虚拟用户

使用 Pure-FTPd,可以使用虚拟用户而不是真实的系统用户。

可用的用户需要由一个或多个后端提供。请参阅 后端

为了简单和演示目的,将使用 PureDB 后端。取消注释以下两行

/etc/pure-ftpd/pure-ftpd.conf
# We disable the anonymous account.
NoAnonymous yes
# We use PureDB as backend and specify its path.
PureDB /etc/pureftpd.pdb

现在只有经过身份验证的用户才能连接。要将用户添加到 PureDB,我们需要创建一个类似 /etc/passwd 的文件,然后用它来创建 PureDB。

要创建、查看或修改 /etc/pureftpd.passwd 文件,我们使用 pure-pw 命令。

# pure-pw useradd someuser -u ftp -d /srv/ftp

这将创建用户 someuser,该用户作为 FTP 系统用户运行。默认情况下,用户被 chroot 到 /srv/ftp。如果不需要 chroot,请将 -d 替换为 -D

注意

默认情况下,作为 FTP 系统用户运行的虚拟用户无法登录。要更改此行为,请将 /etc/pure-ftpd.conf 中的 MinUID 选项设置为 14(ftp 用户的 UID)。

我们还需要在 /etc/shells 中列出 FTP 系统用户的 shell。

# echo "/bin/false" >> /etc/shells
注意: 由于软件包编译时没有使用 --with-virtualchroot,因此 chroot 目录之外的符号链接不起作用。您可以使用 mount --bind source target 作为一种解决方法。

在这个账户可用之前,我们需要提交我们的更改

# pure-pw mkdb

虚拟用户现在可以访问 /srv/ftp 中的所有内容。

命令 pure-pw mkdb 创建了前面提到的文件 /etc/pureftpd.pdb,其中包含与您的虚拟用户相关的所有信息。发出此命令时无需重启服务,因为它会动态更新,更改会立即生效。

更改用户密码

例如,要更改用户的密码,请输入命令

# pure-pw passwd someuser

之后,通过更新 /etc/pureftpd.pdb 提交您的更改

# pure-pw mkdb

移除用户

要移除用户,请输入命令

# pure-pw userdel someuser

用户的家目录不会通过此命令移除;因此,必须手动移除。

检查用户设置

要检查用户当前的账户设置,请输入命令

# pure-pw show someuser

后端

您需要指定一个或多个后端。如果您指定了多个,Pure-FTPd 将按照指定的顺序尊重它们。它将使用第一个包含请求用户的后端。

可用的后端有

PAM

要启用 PAM 后端,请创建以下文件

/etc/pam.d/pure-ftpd
auth       required     pam_unix.so
auth       required     pam_env.so
account    required     pam_unix.so
session    required     pam_unix.so

并取消注释配置文件中的 PAMAuthentication 行,如下所示

/etc/pure-ftpd/pure-ftpd.conf
# If you want to enable PAM authentication, uncomment the following line

PAMAuthentication            yes

设置 TLS

创建证书

请参阅文档以获取更多信息。简短版本如下

创建自签名证书

# mkdir -p /etc/ssl/private
# openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -sha256 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

使其私有

# chmod 600 /etc/ssl/private/*.pem

启用 TLS

/etc/pure-ftpd/pure-ftpd.conf 的底部,您应该找到 TLS 部分。取消注释并将 TLS 设置更改为 1 以同时启用 FTP 和 FTPS

/etc/pure-ftpd/pure-ftpd.conf
TLS             1

现在重启 pure-ftpd.service 服务单元,您应该能够使用支持 FTPS 的客户端登录,例如 filezillaSmartFTP

参见