如何在 Termux 中使用 pure-ftpd 搭建一个安全的 FTP 服务。
1. 安装 pure-ftpd
在 Termux 中使用 pkg install 命令安装 pure-ftpd。
pkg install pure-ftpd
2. 创建 FTP 用户并设置密码
使用 pure-pw 命令创建一个新的 FTP 用户。以下是命令的含义:
pure-pw useradd tianya -u 1001 -g 1001 -d /sdcard/Download
pure-pw useradd tianya:添加用户名为tianya的 FTP 用户。-u 1001 -g 1001:指定此用户的 UID 和 GID。通常,Termux 中默认用户的 UID 和 GID 是1001。-d /sdcard/Download:设置该用户的主目录为/sdcard/Download,即该用户登录 FTP 后只能访问这个目录。
执行后系统会提示输入密码。输入你希望为 djd1226 用户设置的 FTP 密码,并确认密码。
3. 生成 pure-ftpd 用户数据库
每次添加或更新用户后,都需要使用以下命令更新数据库:
pure-pw mkdb
该命令会生成一个 pureftpd.pdb 文件(即 pure-ftpd 用户数据库文件),存放在 $PREFIX/etc 目录中,这样 pure-ftpd 才能识别你创建的用户。
4. 启动 pure-ftpd 服务
最后,使用以下命令启动 pure-ftpd 服务:
pure-ftpd -B -E -l puredb:$PREFIX/etc/pureftpd.pdb -S 0.0.0.0,2121
以下是各个参数的含义:
-B:在后台运行pure-ftpd,这样它不会占用终端。-E:禁止匿名用户登录。-l puredb:$PREFIX/etc/pureftpd.pdb:指定使用pure-ftpd的用户数据库文件(即我们在前面生成的pureftpd.pdb)。-S 127.0.0.1,2121:指定服务监听的 IP 地址和端口,这里是127.0.0.1:2121,即仅允许本地连接。你可以更改为0.0.0.0,2121以允许局域网内其他设备访问。
测试 FTP 连接
在同一台设备上使用 127.0.0.1:2121 进行测试,或者在局域网中使用 Termux 设备的 IP 地址连接。
例如,在 FTP 客户端中连接:
- 服务器地址:
ip:2121(或使用局域网 IP) - 用户名:
tianya - 密码:你在创建用户时设置的密码
1. 服务启动配置 (run 脚本)
这是解决“服务自动崩溃”的关键。使用 termux-services 时,脚本必须在前台运行(不能有 -B)。
- 脚本位置:
$PREFIX/var/service/pureftpd/run - 编辑命令:
nano $PREFIX/var/service/pureftpd/run - 正确内容:
#!/data/data/com.termux/files/usr/bin/sh
# 注意:
# 1. 必须用 exec
# 2. 绝对不能加 -B 参数
# 3. 端口建议使用 2121 (大于1024)
exec pure-ftpd -E -l puredb:$PREFIX/etc/pureftpd.pdb -S 2121
2. 服务控制命令
日常开启、停止或重启 FTP 服务的命令。
查看状态:
sv status pureftpd正常状态应显示
run: ...且时间在持续增加。启动服务:
sv up pureftpd停止服务:
sv down pureftpd重启服务:
sv restart pureftpd(修改配置后必须执行)
3. 用户管理 (虚拟用户模式)
这是你目前使用的模式,配置保存在数据库中,修改后必须更新数据库。
当前你的 UID: 10083 (用于解决文件读写权限问题)
A. 常用操作
| 操作 | 命令示例 | 备注 |
|---|---|---|
| 列出所有用户 | pure-pw list | 查看有哪些账号 |
| 查看用户详情 | pure-pw show djd1226 | 查看特定用户的路径、UID等 |
| 更新数据库 | pure-pw mkdb | 每次修改用户后必做! |
| 修改密码 | pure-pw passwd djd1226 | 修改后记得 mkdb |
B. 添加/修改用户 (Copy & Paste)
- 添加新用户 (指定你的 UID 10083):
pure-pw useradd 新用户名 -u 10083 -d /storage/你的路径/
pure-pw mkdb
- 修改现有用户路径 (比如修改
djd1226):
pure-pw usermod djd1226 -d /storage/新的路径/
pure-pw mkdb
- 修复现有用户权限 (如果无法上传文件):
pure-pw usermod djd1226 -u 10083 -g 10083
pure-pw mkdb
4. 常见问题排查 checklist
- 连不上?
- 检查手机是否连在同一 WiFi。
- 检查端口是否是 2121 (默认 FTP 是 21,Termux 通常用 2121)。
- 检查是否开启了被动模式 (Passive Mode),有时需要在客户端设置。
- 上传报错 (Permission Denied)?
- 检查该用户的 UID 是否为
10083(pure-pw show 用户名)。 - 检查目录是否存在 (
ls -ld /storage/你的路径/)。
- 服务一直 Down?
- 检查是否有残留进程占用端口:
pkill -9 pure-ftpd,然后sv restart pureftpd。
