Hublog随手记录一些东西

Linux 用 Davfs 挂载坚果云 Webdav

需求:在 debian12 上利用 webdav 挂载坚果云

  1. 安装 davfs2

debian 12 安装命令:

1
sudo apt install davfs2

挂载和卸载:

1
2
3
4
5
# root 权限挂载
sudo mount -t davfs <WebDAV服务器URL> /mnt/webdav
sudo mount.davfs <WebDAV服务器URL> /mnt/webdav
# 卸载
sudo umount /mnt/webdav
  1. 设置非特权用户登陆
1
sudo dpkg-reconfigure davfs2 # 选择非特权用户登陆
1
2
3
4
5
6
7
# 复制配置文件到 ~/.davfs2
mkdir ~/.davfs2
cd /etc/davfs2/
sudo cp davfs2.conf secrets ~/.davfs2
# 修改用户名和组
cd ~/.davfs2
sudo chown username:username davfs2.conf secrets
  1. 配置免密码挂载
  • 编辑 ~/.davfs2/secrets 文件以将凭据添加到远程 WebDAV 目录。

  • 在文件末尾添加一行,样式如下: https://<WebDav URI> <username> <password>

  • 设置权限: chmod 600 ~/.davfs2/secrets

  • 修改 ~/.davfs2/davfs2.conf 将这一行取消注释 secrets ~/.davfs2/secrets 仅使用用户 secrets 文件配置

  • 修改 ~/.davfs2/davfs2.conf 忽略 dav 头请求头

1
2
# 将 ignore_dav_header 这一行取消注释并将值改为 1
ignore_dav_header 1

这是因为坚果云的 WebDAV 服务器不支持 Class 1,修改之后可以使 davfs 跳过 Class 1 的验证

  • /etc/fstab 添加行,类似 https://<WebDav URI> /mnt/dav/ davfs user,noauto,file_mode=600,dir_mode=700 0 1
1
2
# 使用 `mount /mnt/webdav` 自动挂载 `https://dav.jianguoyun.com/dav/` 到 `/mnt/webdav`
https://dav.jianguoyun.com/dav/ /mnt/webdav/ davfs user,noauto,file_mode=600,dir_mode=700 0 1

重新加载 systemd systemctl daemon-reload

将用户添加到 davfs2 组 sudo usermod -a -G davfs2 your_user

注销并重新登陆

执行命令挂载网盘mount /mnt/webdav

  1. 开机自动挂载
  • 以 root 权限为所有用户开机自动挂载
1
2
# 开机联网后自动挂载,默认是以 root 权限运行的,需要在 /etc/davfs2/secrets 增加登陆信息
https://dav.jianguoyun.com/dav/ /mnt/webdav/ davfs user,_netdev,auto,file_mode=600,dir_mode=700 0 1
  • 仅当前用户登陆时自动挂载

~/.config/systemd/user 增加 systemd 服务文件 webdav_mount.service ,添加以下内容

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
[Unit]
Description=WebDAV Connection Service
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
RemainAfterExit=yes
ExecStart=mount /mnt/webdav

[Install]
WantedBy=default.target

重新加载用户 systemd ,systemctl --user daemon-reload

启用 webdav_mount.servicesystemctl --user enable webdav_mount.service

以上配置内容是,在开机联网后自动执行 mount /mnt/webdav,RemainAfterExit=yes 是为了让 systemd 在执行命令后不退出,否则 systemd 会在执行命令后自动 umount

0%