跳转到内容

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. 准备共享文件夹和账号 ​

  1. 在 存储器 → 共享文件夹(Storage → Shared Folders)里建一个专用的共享文件夹,例如 webdav。
  2. 给 www-data 写入权限。共享文件夹默认的权限是 root:users、2775,「其他人」只能读,而读写文件的是 www-data,不给权限就会上传失败。选中共享文件夹,点 访问控制列表(Access control list),在 ACL 里给 www-data 读写权限,方法见 访问控制列表(ACL)详解。ACL 对话框的用户列表包含系统用户,www-data 应该能选到,以界面显示为准。
  3. 在 用户 → 用户(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            # 删除测试文件

另外确认三件事:

  1. 不带账号访问 https://<NAS 地址>/webdav/ 应该被拒绝(401)。能进,说明没有勾选身份验证。
  2. 用一个不在 webdav-users 组里的账号访问,应该被拒绝。
  3. 在 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 非官方中文使用指南,与 openmediavault 项目及其开发者无隶属关系。