跳转到内容

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。卸载插件会连带清除它的设置、共享和封禁规则

安装 ​

  1. 打开 系统 → 插件(System → Plugins),找到 openmediavault-ftp,点击安装。
  2. 装好后用浏览器硬刷新页面,服务 → FTP 菜单才会出现,细节见 安装、更新与卸载插件。

它是怎么工作的 ​

  • FTP 用户登录后看到的是一个虚拟根目录(/srv/ftp)。添加到 FTP 的共享文件夹,会作为别名出现在根目录下,名字是 /<共享文件夹名>。登录后落在根目录,根目录本身不能写,要先进入某个共享文件夹。
  • 登录账号就是 OMV 的用户,用 PAM 认证。
  • 共享权限(第 1 层)对 FTP 生效:被设为「读/写」的用户和组可以写,「只读」的只能读。没有被授予任何权限的用户,既不能读也不能写。这和 SMB 不一样:SMB 里没有任何条目时所有人都能连,FTP 里没有授权就是谁也进不去。
  • 文件系统权限和 ACL 同样生效,见 三层权限。

配置与使用 ​

第一步:基本设置 ​

打开 服务 → FTP → 设置(Services → FTP → Settings):

字段默认值说明
已启动(Enabled)不勾选勾选启用服务
端口(Port)21
最多客户端数(Max. clients)5同时连接的客户端上限
每个主机最大连接数20 表示不限制
最多登录尝试次数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),再点击 应用。

第二步:添加共享并授权 ​

  1. 打开 服务 → FTP → 共享(Services → FTP → Shares),点击 创建(Create),共享文件夹 选要共享的,保存。
  2. 一定要授权:到 存储器 → 共享文件夹(Storage → Shared Folders),选中它,点 权限 按钮,给需要的用户或组设置「读/写」或「只读」,见 设置共享文件夹权限。
  3. 点击顶部黄色提示条上的 应用。

第三步:被动模式 ​

FTP 的数据连接分主动和被动两种。客户端在 NAT 或防火墙后面时,用被动模式,这是现在最常见的方式。勾选 被动模式 FTP 后,最小被动端口 和 最大被动端口 默认是 49152 到 65534。这段端口要在防火墙里放行;范围可以缩小,够同时连接数用即可。局域网内通常不用动。

伪装地址(Masquerade address)是 NAS 在 NAT 后面时,告诉客户端该连哪个外部地址用的。局域网用不到,在公网用才需要,而这正是前面警告里不建议的做法。

第四步:启用 FTPS 加密 ​

FTPS 就是给 FTP 加 TLS。OMV 默认的是显式 FTPS:先用普通 FTP 连上,再升级成加密。

  1. 先在 系统 → 证书 → SSL(System → Certificates → SSL)创建或导入证书,见 证书:自签名、导入与 Let's Encrypt。OMV 8.0.1 起 FTP 插件也支持椭圆曲线(EC)证书。
  2. 打开 服务 → FTP → SSL/TLS设置(SSL/TLS Settings),勾选 已启动,证书 选刚才那张。
  3. 「高级设置」里:
    • 必要(Required):要求客户端的控制连接和数据连接都必须用 TLS(对应 ProFTPD 的 TLSRequired on)。要真正做到不暴露明文,勾上它。
    • 无需重用会话(No session reuse required):兼容性开关,只在个别客户端连不上时才勾,它会降低一点安全性。
    • 隐式 SSL(Implicit SSL):旧式做法,一般不需要。官方文档说,用隐式 SSL 并从外网访问时端口对应更麻烦。
  4. 保存,应用。客户端里选「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 环境变量调整,见 环境变量。

检查结果 ​

  1. 在客户端电脑上,用 FTPS 登录并列出根目录。自签名证书要加 -k:

    sh
    curl --ssl-reqd -k -u <用户名> ftp://<NAS 地址>/

    输入密码后,应该能看到被授权的共享文件夹名。

  2. 用图形客户端(FileZilla、WinSCP 等,协议选 FTP over TLS)进入共享文件夹,上传和下载一个测试文件。

  3. 用一个没被授权的账号登录,应该看不到这个共享文件夹。

  4. 诊断 → 服务 → FTP 显示当前登录的用户,设置了封禁规则时还会显示封禁统计。

  5. 日志在 诊断 → 系统日志 → 日志(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、配置指令

OpenMediaVault 非官方中文使用指南,与 openmediavault 项目及其开发者无隶属关系。