外观
WebDAV 服务
完成后,支持 WebDAV 的客户端(电脑上的网络驱动器、手机上的同步类应用、命令行工具)可以用 https://<NAS 地址>/webdav/ 读写一个共享文件夹。
适合谁
- 手上的应用只支持 WebDAV,不支持 SMB 或 SFTP。
- 只在局域网或 VPN 里用,并且愿意给 Web 界面配好 HTTPS。
不适合:
- 只是想在电脑上访问共享文件夹,用 SMB 更合适,选择方法见 选哪种共享协议。
- 想直接放到公网。WebDAV 用的是 Web 界面的同一个端口和同一套系统账号,直接暴露等于把登录入口交出去,先读 远程访问 或改用 WireGuard。
WebDAV 和 Web 界面共用端口,认证用系统账号,读写文件的是 nginx 而不是登录用户
- 影响范围:插件在 OMV 的 nginx 站点里加了一段配置,用 Web 界面的端口提供 WebDAV。勾选 使用身份验证(Use auth)后,用 PAM 校验 OMV 系统账号,客户端走 HTTP 基本认证;明文 HTTP 下密码只经过 Base64 编码,等于明文。不勾选则任何能访问该端口的人都能读写这个共享文件夹。认证通过后实际读写文件的是 nginx 的工作进程(Debian 上是
www-data),所以给登录用户本人设置的共享文件夹权限和 ACL 对 WebDAV 不起作用,决定读写能力的是www-data的权限,用户之间的访问范围只由 用户组 和 用户隔离 区分。安装时插件还会把www-data加入shadow组,好让 nginx 能做 PAM 认证,这等于 nginx 进程能读取密码哈希文件。 - 前置条件:先给 Web 界面启用 HTTPS(
系统 → 工作台(System → Workbench),见 Web 界面安全 和 证书);用一个专用的共享文件夹,不要把存重要数据的目录整个发布出去;只在局域网或 VPN 内使用。 - 怎么回退:取消勾选 启动(Enable),保存并应用,插件生成的 nginx 配置会被删除并重载 nginx;共享文件夹里的数据不受影响。卸载插件也会删除这些配置,但不会把
www-data移出shadow组。
插件信息
| 项 | 内容 |
|---|---|
| 包名 | openmediavault-webdav |
| 来源 | omv-extras |
| OMV 8 状态 | 截至 2026-10-22 的 omv-extras synchrony 软件源为 8.0.1(amd64、arm64) |
| 菜单位置 | 服务 → WebDAV(Services → WebDAV) |
| 依赖 | nginx 的 auth-pam、dav-ext、headers-more-filter 三个模块。安装时创建 webdav-users 组 |
先装 omv-extras,再到 系统 → 插件(System → Plugins)里安装。
配置与使用
1. 准备共享文件夹和账号
- 在
存储器 → 共享文件夹(Storage → Shared Folders)里建一个专用的共享文件夹,例如webdav。 - 给
www-data写入权限。共享文件夹默认的权限是root:users、2775,「其他人」只能读,而读写文件的是www-data,不给权限就会上传失败。选中共享文件夹,点 访问控制列表(Access control list),在 ACL 里给www-data读写权限,方法见 访问控制列表(ACL)详解。ACL 对话框的用户列表包含系统用户,www-data应该能选到,以界面显示为准。 - 在
用户 → 用户(Users → Users)里为每个要用 WebDAV 的人建账号,并把他们加入webdav-users组,见 用户与用户组。
2. 启用 WebDAV
服务 → WebDAV:
| 字段 | 默认值 | 说明 |
|---|---|---|
| 启动(Enable) | 关 | 共享文件夹为空时不能启用 |
| 共享文件夹(Shared folder) | 无 | 要发布的共享文件夹 |
| 路径(Path) | webdav | 网址里域名后面的部分,即 /webdav/ |
| 用户隔离(User isolation) | 关 | 勾选后,每个用户只能看到共享文件夹里与自己用户名同名的子目录。需要先手动建好这些子目录,插件不会自动创建(待核实) |
| 使用身份验证(Use auth) | 新装为勾选 | 不要取消。取消后无需账号即可读写 |
| 用户组(Group) | webdav-users | 只有这个组的用户能通过认证。勾选身份验证后才显示 |
| 扩展选项(Extra options) | 空 | 原样追加到 nginx 的 location 里,必须是合法的 nginx 配置行 |
保存,点黄色提示条上的应用。
扩展选项写错,下次重启 nginx 时 Web 界面可能起不来
插件生成的配置文件被 OMV 的 nginx 站点包含进来。扩展选项里的语法错误不会在保存时被检查,重载 nginx 会失败,之后重启 nginx 或重启 NAS 时,Web 界面可能打不开。出现这种情况见 Web 界面打不开,到 shell 里用 nginx -t 看报错的位置,修好或清空扩展选项后再应用。
3. 解除上传大小限制
OMV 的 nginx 站点默认把请求体上限设为 25M(环境变量 OMV_NGINX_SITE_WEBGUI_CLIENT_MAX_BODY_SIZE 的默认值),WebDAV 继承了它。上传超过 25 MiB 的文件会失败,通常报 413。要放宽,在 扩展选项 里加一行:
text
client_max_body_size 4g;数值按你的需要改,0 表示不限制。这条指令只作用在 WebDAV 这个 location 上,不影响 Web 界面本身。
4. 在客户端上连接
地址是 https://<NAS 地址>/webdav/,用户名和密码是 OMV 里的账号。
- Windows:资源管理器的「映射网络驱动器」,地址写上面的网址。对不是 HTTPS 的 WebDAV 有限制,常见表现是反复要密码或连不上,所以先配好 HTTPS。
- macOS:Finder 的「前往 → 连接服务器」。
- Linux 和命令行:桌面文件管理器可用
davs://;脚本里用curl,见下一节。
证书不被客户端信任时会报错。不要用 -k 之类的选项绕过,先在客户端信任 OMV 的证书。
检查结果
在客户端电脑上,用 curl 测试,不要在 NAS 自己上测:
sh
# 在客户端电脑上执行。把 <用户名> 和 <NAS 地址> 换成你的,密码会提示输入
curl -u <用户名> -X PROPFIND -H "Depth: 1" https://<NAS 地址>/webdav/ # 列目录,应返回 207
curl -u <用户名> -T test.txt https://<NAS 地址>/webdav/test.txt # 上传,应返回 201
curl -u <用户名> -X DELETE https://<NAS 地址>/webdav/test.txt # 删除测试文件另外确认三件事:
- 不带账号访问
https://<NAS 地址>/webdav/应该被拒绝(401)。能进,说明没有勾选身份验证。 - 用一个不在
webdav-users组里的账号访问,应该被拒绝。 - 在 OMV 的 shell 里,
nginx -t应输出syntax is ok。
备份与维护
- 插件本身只保存设置,数据都在共享文件夹里,按 备份策略 备份这个共享文件夹。
- 通过 WebDAV 创建的文件,属主是
www-data,而不是 OMV 用户。SMB 或 NFS 用户(users组)能不能修改这些文件,取决于权限和 ACL。要两边都能读写,统一设置 ACL,必要时用重置权限插件整理,见 小工具合集,递归修改前先读它的警告。 - 配置文件在
/etc/nginx/openmediavault-webgui.d/openmediavault-webdav.conf,由 Salt 生成,不要手改。 - 不再使用 WebDAV 时,可以在 OMV 的 shell 里用
id www-data检查它是否还在shadow组。要不要移出由你判断,动手前先在测试环境确认 nginx 的其他功能不受影响。
常见问题
上传大文件失败,提示 413。 见上面「解除上传大小限制」。
上传失败,提示 403 或权限错误。 www-data 没有这个共享文件夹的写权限,按上面第 1 步补 ACL。
Windows 一直要密码,或者连不上。 先确认用的是 HTTPS 地址、证书被信任,再确认账号在 webdav-users 组里。
macOS 能读不能写。 先排除 www-data 的写权限问题。插件的配置里启用了 WebDAV 锁(LOCK 和 UNLOCK),客户端需要的方法都在,仍然失败时在 OMV 的 shell 里看 nginx 的错误日志 /var/log/nginx/openmediavault-webgui_error.log。
应用之后 Web 界面打不开。 多半是扩展选项写错,见上面的警告和 Web 界面打不开。
参考资料
- 插件源码:openmediavault-webdav,官方 wiki 目前没有这个插件的页面
- nginx 文档:ngx_http_dav_module、client_max_body_size