Pure-FTPd
Pure-FTPd 是一个以安全为中心设计的 FTP 服务器。
安装
pure-ftpdAUR 可以从 Arch 用户仓库 (AUR) 安装。
配置
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 将按照指定的顺序尊重它们。它将使用第一个包含请求用户的后端。
可用的后端有
/etc/passwd
- MySQL
- LDAP
- PostgreSQL
- PAM
- PureDB
- 或者您可以编写自己的后端
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 的客户端登录,例如 filezilla 或 SmartFTP。