WebDAV(Web Distributed Authoring and Versioning)是一种网络协议,允许用户通过网络访问和编辑存储在服务器上的文件。在Ubuntu系统中配置WebDAV连接,可以方便地在本地和远程服务器之间传输和共享文件。本文将详细介绍如何在Ubuntu上轻松实现WebDAV连接,即使是小白用户也能快速上手。


1. 安装 davfs2

Ubuntu上,我们可以使用davfs2工具来挂载WebDAV服务器。首先,打开终端并输入以下命令安装davfs2:

sudo apt update
sudo apt install davfs2 -y

如果需要非 root 用户比如 max 挂载 webdav 并可读写,需要将普通用户 max 加入 davfs2 用户组:

sudo usermod -a -G davfs2 max

重要:需要注销并重新登录用户 max,或重启系统使组成员关系生效。

2. 配置

2.1 创建挂载目录

在本地文件系统中创建一个挂载点,用于挂载WebDAV服务器。例如,创建一个名为webdav的目录:

sudo mkdir -p /mnt/webdav
sudo chown max:max /mnt/webdav # 提前赋予用户所有权 

2.2 配置 WebDAV 账户信息

sudo sh -c 'echo "http://xx.xx.xx.xx:5005 你的用户名 你的密码" >> /etc/davfs2/secrets'
sudo chmod 600 /etc/davfs2/secrets

2.3 修改 davfs2 主配置文件

sudo vim /etc/davfs2/davfs2.conf

确保以下配置项存在且未被注释:

use_locks 0
buf_size 64 # 读取缓冲区大小为 64k

如果找不到,直接在文件末尾添加

2.4 创建 Systemd Mount 单元文件

这是最关键的步骤。创建一个名为 mnt-webdav.mount​ 的文件(注意命名规则:挂载点中的斜杠替换为减号):

sudo vim /etc/systemd/system/mnt-webdav.mount

内容如下:

[Unit]
Description=Mount WebDAV NAS Share
After=network-online.target
Wants=network-online.target
Requires=davfs2.service

[Mount]
What=http://xx.xx.xx.xx:5005
Where=/mnt/webdav
Type=davfs
Options=uid=max,gid=max,file_mode=664,dir_mode=775,_netdev

[Install]
WantedBy=multi-user.target

配置说明:

  • After=network-online.target - 确保网络完全就绪后才尝试挂载

  • Wants=network-online.target - 表达对网络服务的弱依赖

  • Options 中的 _netdev - 标记这是一个网络设备,系统会特殊处理

  • uid/gid 设置 - 确保挂载点归用户 max 所有

2.5 创建 davfs2 服务依赖(可选但推荐)

创建一个服务单元来确保 davfs2 内核模块已加载:

sudo vim /etc/systemd/system/davfs2.service

内容如下:

[Unit]
Description=DAVFS2 support service
Before=mnt-webdav.mount

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/true

[Install]
WantedBy=multi-user.target

启用这个服务:

sudo systemctl enable davfs2.service

3. 启用挂载

# 重新加载 systemd 配置
sudo systemctl daemon-reload

# 启用开机自动挂载
sudo systemctl enable mnt-webdav.mount

# 立即尝试挂载(测试配置是否正确)
sudo systemctl start mnt-webdav.mount

检查挂载状态:

# 查看挂载单元状态
sudo systemctl status mnt-webdav.mount

# 查看系统挂载情况
mount | grep webdav
df -h | grep webdav

# 如果挂载失败,查看详细日志
sudo journalctl -u mnt-webdav.mount
sudo journalctl -u network-online.target