外观
FTP 与 FTPS(官方插件)
FTP 是很老的协议,但摄像头、打印机、旧播放器这类设备仍然只认它。OMV 通过官方插件 openmediavault-ftp(基于 ProFTPD)提供 FTP 和 FTPS。做完这一篇,你会装好插件、共享一个文件夹并给用户授权,需要时开启 FTPS 加密,并在客户端验证过登录。
明文 FTP 会泄露账号、密码和传输内容
- 影响范围:普通 FTP 的用户名、密码和文件内容全部是明文,同一网络里的人用抓包就能看到。把 FTP 端口映射到公网,等于把账号密码送给整个互联网,而且很快就会被暴力破解。
- 前置条件:普通 FTP 只在可信的局域网里用;要加密就启用 FTPS 并配证书;不要映射到公网,远程访问用 VPN 或 SFTP;保持匿名登录关闭;配置封禁规则。
- 回退:取消勾选 FTP 服务的 已启动,点击顶部黄色提示条上的 应用(Apply),服务就停了;或者删除不需要的 FTP 共享。
插件信息
| 项 | 内容 |
|---|---|
| 包名 | openmediavault-ftp |
| 来源 | 官方插件(OMV 主仓库) |
| OMV 8 状态 | 截至 2026-10-22,官方软件源 synchrony 里是 8.0.4-1,要求 OMV 8.4.0 或更新 |
| 菜单位置 | 服务 → FTP(Services → FTP)下的 设置、SSL/TLS设置、封禁规则、共享;另有 诊断 → 服务 → FTP(Diagnostics → Services → FTP) |
| 依赖 | proftpd-core、proftpd-mod-vroot、proftpd-mod-crypto、proftpd-mod-wrap。卸载插件会连带清除它的设置、共享和封禁规则 |
安装
- 打开
系统 → 插件(System → Plugins),找到openmediavault-ftp,点击安装。 - 装好后用浏览器硬刷新页面,
服务 → FTP菜单才会出现,细节见 安装、更新与卸载插件。
它是怎么工作的
- FTP 用户登录后看到的是一个虚拟根目录(
/srv/ftp)。添加到 FTP 的共享文件夹,会作为别名出现在根目录下,名字是/<共享文件夹名>。登录后落在根目录,根目录本身不能写,要先进入某个共享文件夹。 - 登录账号就是 OMV 的用户,用 PAM 认证。
- 共享权限(第 1 层)对 FTP 生效:被设为「读/写」的用户和组可以写,「只读」的只能读。没有被授予任何权限的用户,既不能读也不能写。这和 SMB 不一样:SMB 里没有任何条目时所有人都能连,FTP 里没有授权就是谁也进不去。
- 文件系统权限和 ACL 同样生效,见 三层权限。
配置与使用
第一步:基本设置
打开 服务 → FTP → 设置(Services → FTP → Settings):
| 字段 | 默认值 | 说明 |
|---|---|---|
| 已启动(Enabled) | 不勾选 | 勾选启用服务 |
| 端口(Port) | 21 | |
| 最多客户端数(Max. clients) | 5 | 同时连接的客户端上限 |
| 每个主机最大连接数 | 2 | 0 表示不限制 |
| 最多登录尝试次数 | 1 | 超过就断开连接 |
| 超时(Timeout) | 1200 | 空闲秒数,0 表示不超时 |
| 匿名 FTP(Anonymous FTP) | 不勾选 | 允许不用密码登录,用系统用户 ftp。匿名用户始终只读 |
| 欢迎消息 | 有默认内容 | 登录时显示,留空则不显示 |
「主目录」一栏的 已启动:在浏览列表里显示用户的主目录,见 用户主目录。
「高级设置」一栏里常用的有:
| 字段 | 默认值 | 说明 |
|---|---|---|
| 允许 root 登录(Permit root login) | 不勾选 | 不要开 |
| 需要有效的shell(Require valid shell) | 勾选 | 拒绝登录 shell 不在 /etc/shells 里的用户,nologin 用户就登录不了 |
| 带宽限制(Bandwidth restriction) | 不勾选 | 勾选后可设置最大上传和下载速率(KiB/s),0 表示不限 |
| 被动模式 FTP(Passive FTP) | 不勾选 | 见下文 |
| 传输日志(Transfer log) | 不勾选 | 记录文件传输 |
| 扩展选项(Extra options) | 空 | 追加 ProFTPD 指令 |
点击 保存(Save),再点击 应用。
第二步:添加共享并授权
- 打开
服务 → FTP → 共享(Services → FTP → Shares),点击 创建(Create),共享文件夹 选要共享的,保存。 - 一定要授权:到
存储器 → 共享文件夹(Storage → Shared Folders),选中它,点 权限 按钮,给需要的用户或组设置「读/写」或「只读」,见 设置共享文件夹权限。 - 点击顶部黄色提示条上的 应用。
第三步:被动模式
FTP 的数据连接分主动和被动两种。客户端在 NAT 或防火墙后面时,用被动模式,这是现在最常见的方式。勾选 被动模式 FTP 后,最小被动端口 和 最大被动端口 默认是 49152 到 65534。这段端口要在防火墙里放行;范围可以缩小,够同时连接数用即可。局域网内通常不用动。
伪装地址(Masquerade address)是 NAS 在 NAT 后面时,告诉客户端该连哪个外部地址用的。局域网用不到,在公网用才需要,而这正是前面警告里不建议的做法。
第四步:启用 FTPS 加密
FTPS 就是给 FTP 加 TLS。OMV 默认的是显式 FTPS:先用普通 FTP 连上,再升级成加密。
- 先在
系统 → 证书 → SSL(System → Certificates → SSL)创建或导入证书,见 证书:自签名、导入与 Let's Encrypt。OMV 8.0.1 起 FTP 插件也支持椭圆曲线(EC)证书。 - 打开
服务 → FTP → SSL/TLS设置(SSL/TLS Settings),勾选 已启动,证书 选刚才那张。 - 「高级设置」里:
- 必要(Required):要求客户端的控制连接和数据连接都必须用 TLS(对应 ProFTPD 的
TLSRequired on)。要真正做到不暴露明文,勾上它。 - 无需重用会话(No session reuse required):兼容性开关,只在个别客户端连不上时才勾,它会降低一点安全性。
- 隐式 SSL(Implicit SSL):旧式做法,一般不需要。官方文档说,用隐式 SSL 并从外网访问时端口对应更麻烦。
- 必要(Required):要求客户端的控制连接和数据连接都必须用 TLS(对应 ProFTPD 的
- 保存,应用。客户端里选「FTP over TLS(显式)」。
用自签名证书时,客户端会提示证书不受信任,核对无误后接受即可。用 Let's Encrypt 证书时,官方文档还要求在 TLS 的扩展选项里补上 TLSCACertificateFile <证书目录>/chain.pem,并且不要启用隐式 SSL。按 Salt 模板和 ProFTPD 文档,OMV 默认只允许 TLS 1.2(OMV_PROFTPD_MODTLS_TLSPROTOCOL 环境变量可以调整),客户端需要支持它。
第五步:封禁规则
服务 → FTP → 封禁规则(Services → FTP → Ban Rules)可以自动封禁反复出错的客户端。点击 创建:
| 字段 | 默认值 | 说明 |
|---|---|---|
| 事件(Event) | MaxConnectionsPerHost | 触发规则的事件,可选 MaxLoginAttempts、MaxClientsPerHost、TimeoutIdle 等 |
| 发生次数(Occurrence) | 2 | 在时间间隔内发生这么多次就封禁 |
| 时间间隔(Time interval) | 00:30:00 | 格式 hh:mm:ss |
| 过期(Expire) | 00:10:00 | 封禁多久后自动解除,格式 hh:mm:ss |
例如防暴力破解:事件选 MaxLoginAttempts,发生次数 3,时间间隔 00:10:00,过期 01:00:00。没有任何规则时,封禁功能是关闭的。
可选:只允许某个组登录
默认所有 OMV 用户都能登录 FTP。官方文档给的限制办法:先建一个用户组,例如 ftp_users,然后在 设置 页的 扩展选项 末尾加上:
text
<Limit LOGIN>
DenyGroup !ftp_users
</Limit>这样只有 ftp_users 组的成员能登录。
关于上传文件的权限
按插件的 Salt 模板,FTP 共享目录里的默认 umask 是 000 000。ProFTPD 的 Umask 指令设置的是新建文件和目录权限的掩码,所以经 FTP 上传的文件在文件系统上会是 666(ProFTPD 不会创建带执行位的文件)、目录是 777,也就是所有人可读写。这是按文档和模板推算的,请以上传后 ls -l 的实际结果为准。要收紧,可以用 OMV_PROFTPD_UMASK 环境变量调整,见 环境变量。
检查结果
在客户端电脑上,用 FTPS 登录并列出根目录。自签名证书要加
-k:shcurl --ssl-reqd -k -u <用户名> ftp://<NAS 地址>/输入密码后,应该能看到被授权的共享文件夹名。
用图形客户端(FileZilla、WinSCP 等,协议选 FTP over TLS)进入共享文件夹,上传和下载一个测试文件。
用一个没被授权的账号登录,应该看不到这个共享文件夹。
诊断 → 服务 → FTP显示当前登录的用户,设置了封禁规则时还会显示封禁统计。日志在
诊断 → 系统日志 → 日志(Diagnostics → System Logs → Logs)里的 FTP;启用 传输日志 后还有 FTP - 传输日志。
常见问题
登录失败。 检查:用户的登录 shell 是不是 nologin(要么改用户的 shell,要么取消 需要有效的shell);最多登录尝试次数 默认是 1,输错一次就断开;密码是否正确。
登录成功,但列目录卡住。 通常是被动模式的问题:被动端口没放行,或者客户端和服务器之间有 NAT。
登录后什么目录都看不到。 共享文件夹没有授权,见上文第二步。
FTPS 连不上。 检查证书是否选了、客户端是否选了显式 TLS;个别客户端要勾 无需重用会话。
上传的文件别人也能改。 见上文「关于上传文件的权限」。
想从外面访问。 不要映射 FTP 端口,用 VPN 或 SFTP,见 远程访问。
参考资料
- OMV 官方文档:FTP
- OMV 源码:
openmediavault-ftp插件,界面定义在workbench/component.d/*.yaml,ProFTPD 配置的 Salt 模板在srv/salt/omv/deploy/proftpd/ - ProFTPD 文档:mod_core(含
Umask)、mod_tls、配置指令