davfs2 は WebDAV リソースを Linux のファイルシステムツリーへ割り当て、通常のプログラムがパスでリモート内容へアクセスできるようにします。ただし WebDAV がローカルディスクになるわけではありません。読み書きはネットワークとローカルキャッシュに依存し、サーバー機能、ロック、遅延、別クライアントが結果へ影響します。
本稿は手動テストから永続化へ進み、自分が所有するかアクセス許可を得た WebDAV だけを対象にします。例は使用不能な .invalid プレースホルダーです。Nutstore は公式文書で確認した一事業者の例で、推奨や宣伝ではありません。
末尾に 2025 年
source_exportの可視本文を完全保存しています。実パスワードや個人識別子はないため意味上のマスキングは行わず、Markdown の行末空白 5 か所だけを正規化しました。囲い内のcredentials=、広すぎる自動マウント保証、早期にignore_dav_headerを有効化する提案は歴史的証拠にすぎず、実行禁止です。
Table of Contents
まずマウント・同期・バックアップを区別する
| 目的 | 適切なツール | 重要な制約 |
|---|---|---|
| アプリからパスでリモートファイルへアクセス | davfs2 または rclone mount | ネットワーク FS の表示で、オフライン、ロック、キャッシュ、遅延はローカルディスクと異なる |
| オフライン利用可能なローカル複製と変更調整 | 公式同期クライアント、または検証済み同期手順 | 競合、削除伝播、除外、版復元はツール/事業者固有 |
| 一方向の一括転送 | rclone copy 等の監査可能なコピー | 方向、検証、再試行、保持を定義する必要があり、バックアップ方針ではない |
| 復元可能なバックアップ | 独立した版管理対象と定期復元テスト | 同じマウント/アカウント内の別フォルダーは独立バックアップでない |
マウント上の削除は通常リモートにも影響します。キャッシュは完全なオフライン複製でも復元点でもありません。データベース、VM イメージ、メールストア、頻繁に書き換える大ファイル、POSIX 原子性/ロック依存の処理にはアプリと事業者の明示対応が必要で、「マウントできた」だけでは本番証拠になりません。
エンドポイント・識別子・互換性の事実を集める
開始前にサービス管理者と最新公式文書から次を記録します。
- パスと末尾スラッシュ要件を含む正確な HTTPS WebDAV URL。共有/ブラウザー URL から推測しない。
- アカウント識別子、アプリ専用パスワード/token の生成・失効とアクセス範囲。
- アップロードサイズ、要求頻度、ページング、ファイル名、ロック、容量、版履歴、ゴミ箱規則。
- 同じファイルを編集する他クライアントと競合解決の担当。
- Linux 配布版、
davfs2の由来/版、init、保守責任者。 - キャッシュ容量、ログ/キャッシュ保持、バックアップ、検証可能なロールバック時間。
専用テストディレクトリ、失効可能資格情報、独立確認手段、復元可能バックアップがなければ停止します。本番ルート全体を初回テストにしません。
導入前に配布パッケージと版を確認する
現行ディストリビューションが支援するパッケージを使い、無関係なスクリプト、ミラー、古いブログから入れません。次は棚卸しだけです。パッケージ/コマンド不在は解決すべき事実で、迂回しません。
apt-cache policy davfs2
dnf info davfs2
mount.davfs --version
管理者は Debian/Ubuntu なら apt install davfs2、Fedora/RHEL なら現行 repo の dnf install davfs2 手順を使えます。非 root マウントに関する導入質問は権限判断で、無条件に “Yes” としません。通常ユーザーマウントには管理者承認済み /etc/fstab、配布版が要求する davfs2 group 所属、本人の秘密ファイルが必要です。
マウント主体とローカル所有権を選ぶ
一つのマウントは一つの WebDAV 資格情報を表します。uid、gid、file_mode、dir_mode はローカル表示だけを制御し、サーバーには同じ WebDAV ユーザーとして見え、他クライアントはローカル権限を継承しません。
個人マウントは本人 home に置き本人が mount/unmount するのを優先します。共有サービスは専用サービス identity と管理者所有 system secret を使います。同じ app password を複数のユーザー可読場所へ複製せず、任意ユーザーが unmount できる users はリスク/資格情報境界を承認した場合に限ります。
空の private テスト mountpoint とユーザー設定 directory を作ります。
for path in "$HOME/mnt/webdav-test" "$HOME/.davfs2"; do
test ! -L "$path" || { printf 'Stop: symlink path: %sn' "$path" >&2; exit 1; }
done
install -d -m 700 -- "$HOME/mnt/webdav-test" "$HOME/.davfs2"
mountpoint は既存ファイルを隠す場所でなく、想定した空 directory でなければなりません。id 出力を記録し 1000 と推測せず名前を使います。root が uid/gid を指定するなら専用 identity の実在を先に確認します。
TLS とエンドポイントの真正性
公式記載の https:// hostname だけを使います。davfs2 は通常 system CA で証明書期限と hostname を検証します。失敗時に未知証明書を対話で恒久承認したり検証を無効化したりしません。private CA は独立した信頼経路で管理者が配布し、更新/失効責任を負います。
資格情報送信前に非認証 TLS probe ができます。まず local OpenSSL が option を支援するか確認します。
openssl s_client -connect dav.example.invalid:443 -servername dav.example.invalid -verify_hostname dav.example.invalid -verify_return_error -brief </dev/null
成功はその接続の証明書 chain/hostname の検証だけを示し、WebDAV path、account、write 権限を証明しません。hostname 不一致、未知 CA、期限切れ、HTTPS downgrade、別 domain redirect、proxy login、時刻異常では停止します。
Nutstore は確認済み事業者例の一つ
Nutstore help center の現行 WebDAV endpoint は https://dav.jianguoyun.com/dav/ です。username は Nutstore account、password は account login password ではなく第三者アプリ管理で client ごとに生成する app password です。client ごとに個別名を付け、単独失効可能にします。
公式ページには request 頻度、一覧、file size の制限もあります。plan/時期で変わり得るため、永久値として hard-code せず展開日に再確認します。endpoint、identity 方針、制限が本稿と異なる場合、現行公式ページと契約/管理者が優先です。app password を command、ticket、画像、記事例へ貼りません。
ユーザー secrets:正しい構文と mode
ユーザーマウントは ~/.davfs2/secrets を優先します。対象が symlink でないことを確認し、内容を表示せず作成/権限強化します。
umask 077
test ! -L "$HOME/.davfs2" || { printf 'Stop: symlink path: %sn' "$HOME/.davfs2" >&2; exit 1; }
test ! -L "$HOME/.davfs2/secrets" || { printf 'Stop: symlink path: %sn' "$HOME/.davfs2/secrets" >&2; exit 1; }
touch -- "$HOME/.davfs2/secrets"
chmod 600 -- "$HOME/.davfs2/secrets"
stat -c '%U %G %a %n' -- "$HOME/.davfs2/secrets"
local editor で 1 行追加します。第 1 field は /etc/fstab と完全一致する mountpoint にでき、資格情報をそのマウントへ限定できます。
/home/example-user/mnt/webdav-test user@example.invalid "APP_PASSWORD_FROM_PROVIDER"
placeholder 行全体を local で実 absolute mountpoint、account、app password に置換します。space、tab、#、backslash、quote は導入済み davfs2.conf(5) の quote/escape 規則に従い、推測しません。user secrets は本人所有 mode 600、system /etc/davfs2/secrets は root 専用です。
davfs2 は user secrets、system secrets、対話入力の順に探します。現行 mount.davfs(8) に汎用 credentials=/path mount option はなく、CIFS 等の構文を移植しません。username= は pam_mount 用と明記され、fstab 禁止で process list に露出します。
noauto の単一ユーザー fstab から手動試験する
通常ユーザーマウントには、先に管理者承認済みの正確な /etc/fstab 行が必要です。以下も使用不能 template で、URL、home directory、mountpoint を公式値/secrets と完全一致させます。
https://dav.example.invalid/webdav/ /home/example-user/mnt/webdav-test davfs noauto,user,_netdev 0 0
noauto は boot 自動 mount を止めます。user は mount 実行者だけの unmount を許し noexec,nosuid,nodev を含みます。_netdev は network dependency を示します。upstream は任意ユーザーが unmount 可能な users を通常推奨しません。
管理者は上書きしない fstab backup を作り、sudoedit でこの 1 行だけ追加して静的検証します。全 entry を起動する mount -a をテストに使いません。
fstab_backup=/etc/fstab.before-davfs2
sudo test ! -e "$fstab_backup" && sudo test ! -L "$fstab_backup" || { printf 'Stop: backup path already existsn' >&2; exit 1; }
sudo cp -a -- /etc/fstab "$fstab_backup"
sudo cmp -s -- /etc/fstab "$fstab_backup" || { printf 'Stop: fstab backup verification failedn' >&2; exit 1; }
sudoedit /etc/fstab
findmnt --verify --verbose
承認ユーザーだけを配布版手順で davfs2 group へ追加し、新しい login session を開始します。その user で URL/username/password を含まない正確な mountpoint を使います。
mount "$HOME/mnt/webdav-test"
findmnt --target "$HOME/mnt/webdav-test" --output TARGET,SOURCE,FSTYPE,OPTIONS
credential prompt が出たら停止し、secrets の absolute mountpoint、owner、mode、fstab の完全一致を確認します。password を繰り返し推測して account lock を起こしません。
専用リモート directory で 1 回だけ読み書き検証する
まず小さな非機密 file を読み、provider Web UI または別の検証済み client で directory を照合します。write 権限確認後、専用 test directory に固有名の probe を 1 個だけ作ります。
probe_name="davfs2-probe-$(date -u +%Y%m%dT%H%M%SZ)-$$.txt"
local_probe=$(mktemp "$HOME/davfs2-probe.XXXXXX")
printf 'davfs2 controlled proben' > "$local_probe"
cp -- "$local_probe" "$HOME/mnt/webdav-test/$probe_name"
cmp -- "$local_probe" "$HOME/mnt/webdav-test/$probe_name"
rm -- "$HOME/mnt/webdav-test/$probe_name"
rm -- "$local_probe"
probe 名を記録します。失敗時は停止し精密 cleanup のため名前を保持します。cmp は local cache を読む可能性があるため、remote object の出現と後の削除を独立 client で確認します。全 directory copy、本番 rename、複数 client 同時 edit を初回テストにしません。
全 consumer を閉じ、network が使えるうちに clean unmount します。
sync
umount "$HOME/mnt/webdav-test"
findmnt --target "$HOME/mnt/webdav-test"
最後に mount record がないことが期待結果です。unmount が止まっても直ちに lazy/force unmount、daemon kill、cache 削除をせず、新規 write を止め、正確な error と pending upload/lost+found を導入済み manual/管理者手順で照合します。
fstab option は異なる層が解釈する
| option | 解釈者 | 正確な境界 |
|---|---|---|
noauto / user / users | mount/davfs2 | user は実行者だけが unmount、users は広く通常非推奨 |
_netdev | davfs2 と boot system | network dependency を宣言するだけで DNS、認証、remote availability を証明しない |
uid / gid / file_mode / dir_mode | davfs2 | local 表示だけ。別 owner を選べるのは root のみ |
nofail | systemd host の systemd fstab generator | boot が mount 成功を必須としない。runtime I/O error は残る |
x-systemd.automount / x-systemd.idle-timeout= | systemd fstab generator | on-demand automount/idle unmount。初回アクセスは待機/失敗し得る |
credentials= | davfs2 option ではない | 削除。davfs2 は定義済み/default secrets を読む |
必ず導入版の mount.davfs(8)、davfs2.conf(5)、fstab(5)、init 文書を参照します。未知 option を「無視されるだろう」で本番投入しません。
systemd on-demand mount と boot 境界
systemd host で manual が支援を確認し、手動テスト完了後にだけ管理者が次の system-service template を検討できます。
https://dav.example.invalid/webdav/ /srv/webdav-example davfs rw,_netdev,nofail,x-systemd.automount,x-systemd.idle-timeout=5min,uid=webdavsvc,gid=webdavsvc,file_mode=0600,dir_mode=0700 0 0
これは user mount の代替案です。実在する専用 webdavsvc、対応する root-only /etc/davfs2/secrets 行、private mountpoint が必要です。user/system 版を同時に残さず、user secret を system file へコピーしません。
x-systemd.automount は path access まで試行を遅延し、nofail は boot が実 mount 成功を要求しないこと、_netdev は network mount dependency を作ることを意味します。正しい network-online 設定を保証せず、最初の ls の block も防ぎません。導入版で意味を確認します。
systemd --version
man systemd.mount
man systemd.automount
編集後 findmnt --verify --verbose と systemctl daemon-reload を実行し、この mountpoint だけを起動して DNS failure、offline、credential revoke、reboot、shutdown を模擬します。critical service は remote availability を無条件前提にせず、明示 timeout と application-level degraded mode を持たせます。
キャッシュ・ロック・オフライン・競合
davfs2 は directory/attribute を memory cache し、開いた全 file の local copy を disk に保持するため local 容量が必要です。他 client の directory 変更は遅れて見える場合があります。close 後 upload も遅れ得るので、offline で local write 成功しても remote acknowledgement ではありません。
WebDAV lock は strong consistency 保証ではありません。server が lock 非対応、期限切れ、network が refresh 阻止、他 client が別意味を使う場合があります。upstream は local change を安全 upload できない場合 cache の lost+found に残し得ると説明します。人手照合が必要で backup/自動 conflict 解決ではありません。
default use_locks 1 を保ちます。再現可能 evidence、server semantics、concurrency test なしに performance 目的で lock 無効化や cache/validation 弱化をしません。official sync client、davfs2、別 WebDAV client で同じ file を同時 write しません。
診断順序と停止条件
| 症状 | 先に確認 | 禁止事項 |
|---|---|---|
| TLS/redirect error | 公式 endpoint、最終 host、certificate chain/hostname、時刻、proxy | 未知証明書承認、HTTP downgrade、検証無効化 |
401/403 | app password、identity、permission scope、revoke/lock | 反復推測、account password 使用、argv credential |
| “server does not support WebDAV” | URL path、WebDAV enable、HTTP status/DAV capability、server log | 最初に ignore_dav_header 1 |
| file 遅延/競合 | cache space、pending upload、lock、second client、lost+found | cache 削除、force unmount、remote version 上書き |
| boot/初回 access 停止 | _netdev、automount、network-online、timeout、DNS | nofail が app availability を保証すると主張 |
| permission 不一致 | 実 mounter、uid/gid、local mode、remote account rights | mount tree recursive chmod/chown で server ACL を変える期待 |
ignore_dav_header は upstream が支援する default-off compatibility switch で、server が DAV response header で capability を誤報した証拠がある場合だけです。provider/server owner が確認し、path/TLS/auth を除外し、隔離テストが通った後だけ user davfs2.conf の mountpoint section に一時限定できます。
[/home/example-user/mnt/webdav-test]
ignore_dav_header 1
wrong URL、権限、TLS、lock、壊れた WebDAV 実装は直せません。原 response、版、owner を記録し、検証失敗なら section を削除します。実 account で debug secrets を有効にしません。upstream は通常隠す機密を出すと明記します。通常 log にも URL、username、path、filename があり得るため短い範囲だけ見て共有前に脱敏します。
journalctl --since "15 minutes ago" --no-pager _COMM=mount.davfs
provider client または rclone を選ぶ場面
完全 offline copy、provider version history、conflict UI、selective sync が必要なら official provider client を評価します。監査可能 transfer や別 WebDAV 実装には rclone 公式 WebDAV backend を使えます。rclone mount も network mount で、同期/backup へ自動変換されません。
interactive rclone config で隔離 test remote を作り、config を mode 600 として password を argv/environment に渡しません。rclone の obscured password は strong encryption ではなく secret 扱いです。初回 read-only inventory と copy/sync preview は次です。
rclone config
rclone lsd webdav-test:
rclone copy --dry-run /path/to/controlled-source webdav-test:controlled-destination
rclone sync --dry-run /path/to/controlled-source webdav-test:controlled-destination
copy と sync は異なり、実 sync は source に合わせ destination を削除できます。完全 dry-run、filter、direction、verify、version retention、rollback を確認後だけ --dry-run を外します。rclone と davfs2 で同じ test path を同時変更しません。
ロールバック・失効・受入チェック
rollback は新規 write 停止、consumer close、pending probe/cache conflict 記録、online clean unmount の順で、その後今回の fstab 行だけを削除し systemctl daemon-reload します。既知良好 backup を戻す前に差分を比較し、後続管理変更を上書きしません。最後に provider でこの client の app password を失効し secrets の対応行だけを削除します。secret を evidence として表示しません。
retire 前に mount、automount、open process、pending upload/lost+found、test object がないことを確認します。脱敏済み版、時刻、error code、recovery result だけを残し、credential と完全 private path は保持しません。
- WebDAV URL、TLS 最終 host、provider identity は最新公式 source 由来。
- 個別失効可能 app password を使い account password、argv、URL、log 漏洩がない。
- user/system mount の一方だけが有効で mountpoint、owner、secrets、permission が一致。
- fstab に
credentials=/username=がなく、導入 manual が全 davfs2/systemd option を確認。 noautomanual test 後に独立 remote 検証と clean unmount を実施。- cache space、lock、concurrency、offline、revoke、reboot、first access、shutdown を試験。
ignore_dav_headerは default off。例外には server evidence、局所 scope、rollback がある。- sync、mount、独立 versioned backup ごとに tool、direction、owner、restore test がある。
参考資料
- 現行 davfs2 upstream project と security/cache 説明
- davfs2 upstream `mount.davfs(8)` source 文書
- davfs2 upstream `davfs2.conf(5)` source 文書
- Debian 現行 package `mount.davfs(8)` manual
- Nutstore:第三者アプリ WebDAV authorization 有効化
- Nutstore:公式 WebDAV endpoint と app-password 例
- systemd 公式 `systemd.mount` 文書
- systemd 公式 `systemd.automount` 文書
- rclone upstream WebDAV 文書ソース
- rclone upstream mount 文書ソース
- rclone upstream sync 文書ソース
歴史的原文アーカイブ
以下は 2025 年 source_export 可視本文の完全な不活性アーカイブです。実パスワード、個人アカウント、追跡パラメーターはなく、意味上の値は置換していません。リポジトリ検査のため行末空白 5 個だけを除去し、本文、空行、生成された目次の残骸、コード、リンクはそれ以外変更していません。囲い内の HTTP リンク、credentials=、自動マウント保証、ignore_dav_header の提案は歴史的証拠にすぎず、実行禁止です。
WebDAV(Web Distributed Authoring and Versioning)是一种允许通过 HTTP 协议将远程存储挂载到本地文件系统的技术。通过它,你可以像操作本地目录一样对远程文件进行 `ls`、`cp`、`mv` 等操作。本文将介绍如何在 Linux 系统中安装和配置 **davfs2**,并以坚果云(Nutstore / 坚果云)为例,演示挂载 WebDAV 目录的全过程。
---
Table of Contents
Toggle
- [一、前言](https://blog.lazying.art/en/html/computer_internet/unix_linux/ubuntu/3087/%e4%bd%bf%e7%94%a8-davfs2-%e5%9c%a8-linux-%e4%b8%8a%e6%8c%82%e8%bd%bd-webdav-%e7%bd%91%e7%9b%98%ef%bc%88%e4%bb%a5%e5%9d%9a%e6%9e%9c%e4%ba%91%e4%b8%ba%e4%be%8b%ef%bc%89.html/#%E4%B8%80%E3%80%81%E5%89%8D%E8%A8%80)
- [二、安装 davfs2](https://blog.lazying.art/en/html/computer_internet/unix_linux/ubuntu/3087/%e4%bd%bf%e7%94%a8-davfs2-%e5%9c%a8-linux-%e4%b8%8a%e6%8c%82%e8%bd%bd-webdav-%e7%bd%91%e7%9b%98%ef%bc%88%e4%bb%a5%e5%9d%9a%e6%9e%9c%e4%ba%91%e4%b8%ba%e4%be%8b%ef%bc%89.html/#%E4%BA%8C%E3%80%81%E5%AE%89%E8%A3%85_davfs2)
- [1. Debian/Ubuntu 系列](https://blog.lazying.art/en/html/computer_internet/unix_linux/ubuntu/3087/%e4%bd%bf%e7%94%a8-davfs2-%e5%9c%a8-linux-%e4%b8%8a%e6%8c%82%e8%bd%bd-webdav-%e7%bd%91%e7%9b%98%ef%bc%88%e4%bb%a5%e5%9d%9a%e6%9e%9c%e4%ba%91%e4%b8%ba%e4%be%8b%ef%bc%89.html/#1_DebianUbuntu_%E7%B3%BB%E5%88%97)
- [2. RHEL/CentOS/Fedora 系列](https://blog.lazying.art/en/html/computer_internet/unix_linux/ubuntu/3087/%e4%bd%bf%e7%94%a8-davfs2-%e5%9c%a8-linux-%e4%b8%8a%e6%8c%82%e8%bd%bd-webdav-%e7%bd%91%e7%9b%98%ef%bc%88%e4%bb%a5%e5%9d%9a%e6%9e%9c%e4%ba%91%e4%b8%ba%e4%be%8b%ef%bc%89.html/#2_RHELCentOSFedora_%E7%B3%BB%E5%88%97)
- [三、创建挂载点目录](https://blog.lazying.art/en/html/computer_internet/unix_linux/ubuntu/3087/%e4%bd%bf%e7%94%a8-davfs2-%e5%9c%a8-linux-%e4%b8%8a%e6%8c%82%e8%bd%bd-webdav-%e7%bd%91%e7%9b%98%ef%bc%88%e4%bb%a5%e5%9d%9a%e6%9e%9c%e4%ba%91%e4%b8%ba%e4%be%8b%ef%bc%89.html/#%E4%B8%89%E3%80%81%E5%88%9B%E5%BB%BA%E6%8C%82%E8%BD%BD%E7%82%B9%E7%9B%AE%E5%BD%95)
- [四、配置 davfs2](https://blog.lazying.art/en/html/computer_internet/unix_linux/ubuntu/3087/%e4%bd%bf%e7%94%a8-davfs2-%e5%9c%a8-linux-%e4%b8%8a%e6%8c%82%e8%bd%bd-webdav-%e7%bd%91%e7%9b%98%ef%bc%88%e4%bb%a5%e5%9d%9a%e6%9e%9c%e4%ba%91%e4%b8%ba%e4%be%8b%ef%bc%89.html/#%E5%9B%9B%E3%80%81%E9%85%8D%E7%BD%AE_davfs2)
- [4.1 配置登录凭证](https://blog.lazying.art/en/html/computer_internet/unix_linux/ubuntu/3087/%e4%bd%bf%e7%94%a8-davfs2-%e5%9c%a8-linux-%e4%b8%8a%e6%8c%82%e8%bd%bd-webdav-%e7%bd%91%e7%9b%98%ef%bc%88%e4%bb%a5%e5%9d%9a%e6%9e%9c%e4%ba%91%e4%b8%ba%e4%be%8b%ef%bc%89.html/#41_%E9%85%8D%E7%BD%AE%E7%99%BB%E5%BD%95%E5%87%AD%E8%AF%81)
- [4.2 修改 davfs2.conf(可选)](https://blog.lazying.art/en/html/computer_internet/unix_linux/ubuntu/3087/%e4%bd%bf%e7%94%a8-davfs2-%e5%9c%a8-linux-%e4%b8%8a%e6%8c%82%e8%bd%bd-webdav-%e7%bd%91%e7%9b%98%ef%bc%88%e4%bb%a5%e5%9d%9a%e6%9e%9c%e4%ba%91%e4%b8%ba%e4%be%8b%ef%bc%89.html/#42_%E4%BF%AE%E6%94%B9_davfs2conf%EF%BC%88%E5%8F%AF%E9%80%89%EF%BC%89)
- [五、手动挂载测试](https://blog.lazying.art/en/html/computer_internet/unix_linux/ubuntu/3087/%e4%bd%bf%e7%94%a8-davfs2-%e5%9c%a8-linux-%e4%b8%8a%e6%8c%82%e8%bd%bd-webdav-%e7%bd%91%e7%9b%98%ef%bc%88%e4%bb%a5%e5%9d%9a%e6%9e%9c%e4%ba%91%e4%b8%ba%e4%be%8b%ef%bc%89.html/#%E4%BA%94%E3%80%81%E6%89%8B%E5%8A%A8%E6%8C%82%E8%BD%BD%E6%B5%8B%E8%AF%95)
- [六、在 /etc/fstab 中自动挂载](https://blog.lazying.art/en/html/computer_internet/unix_linux/ubuntu/3087/%e4%bd%bf%e7%94%a8-davfs2-%e5%9c%a8-linux-%e4%b8%8a%e6%8c%82%e8%bd%bd-webdav-%e7%bd%91%e7%9b%98%ef%bc%88%e4%bb%a5%e5%9d%9a%e6%9e%9c%e4%ba%91%e4%b8%ba%e4%be%8b%ef%bc%89.html/#%E5%85%AD%E3%80%81%E5%9C%A8_etcfstab_%E4%B8%AD%E8%87%AA%E5%8A%A8%E6%8C%82%E8%BD%BD)
- [七、常见问题及解决方案](https://blog.lazying.art/en/html/computer_internet/unix_linux/ubuntu/3087/%e4%bd%bf%e7%94%a8-davfs2-%e5%9c%a8-linux-%e4%b8%8a%e6%8c%82%e8%bd%bd-webdav-%e7%bd%91%e7%9b%98%ef%bc%88%e4%bb%a5%e5%9d%9a%e6%9e%9c%e4%ba%91%e4%b8%ba%e4%be%8b%ef%bc%89.html/#%E4%B8%83%E3%80%81%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98%E5%8F%8A%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88)
- [八、总结](https://blog.lazying.art/en/html/computer_internet/unix_linux/ubuntu/3087/%e4%bd%bf%e7%94%a8-davfs2-%e5%9c%a8-linux-%e4%b8%8a%e6%8c%82%e8%bd%bd-webdav-%e7%bd%91%e7%9b%98%ef%bc%88%e4%bb%a5%e5%9d%9a%e6%9e%9c%e4%ba%91%e4%b8%ba%e4%be%8b%ef%bc%89.html/#%E5%85%AB%E3%80%81%E6%80%BB%E7%BB%93)
## 一、前言
坚果云(Nutstore)是一款常用的云存储服务,提供了 WebDAV 访问接口。通过使用 **davfs2**,我们可以在 Linux 系统中直接将坚果云的远程存储挂载到本地文件夹,实现与本地磁盘类似的管理方式。
---
## 二、安装 davfs2
### 1. Debian/Ubuntu 系列
sudo apt update
sudo apt install davfs2
在安装过程中,系统可能会提示你是否允许非 root 用户挂载 WebDAV 文件系统。如果你希望普通用户也可以挂载,选择 **Yes**(或相应的选项)。
### 2. RHEL/CentOS/Fedora 系列
sudo yum install davfs2
或在新版本的 Fedora / RHEL 上使用:
sudo dnf install davfs2
---
## 三、创建挂载点目录
在本地创建一个用于挂载坚果云的目录,例如:
sudo mkdir -p /mnt/nutstore
这个目录将作为本地与坚果云之间的“桥梁”。
---
## 四、配置 davfs2
### 4.1 配置登录凭证
如果坚果云的 WebDAV 访问需要用户名和密码,可以在 `/etc/davfs2/secrets` 文件中添加:
sudo nano /etc/davfs2/secrets
在文件末尾写入以下内容(将示例 URL 和用户名、密码替换为你的实际信息):
https://dav.jianguoyun.com/dav <你的用户名> <你的密码>
保存后,为了安全起见,确保只有 root 或相应用户可读该文件:
sudo chmod 600 /etc/davfs2/secrets
### 4.2 修改 davfs2.conf(可选)
部分服务器(或云服务)可能对 WebDAV 协议支持不完全,导致出现类似
mount.davfs: mounting failed; the server does not support WebDAV
的错误。这种情况下,你可以尝试在 `/etc/davfs2/davfs2.conf` 中添加:
ignore_dav_header 1
以忽略特定的协议头检查,从而兼容某些非标准 WebDAV 服务。
---
## 五、手动挂载测试
在配置好后,你可以先进行手动挂载测试。以下以坚果云的 WebDAV 地址为例(有时需要在末尾加 `/`):
sudo mount -t davfs https://dav.jianguoyun.com/dav /mnt/nutstore
如果配置正确,系统会提示输入凭据(或自动读取 `/etc/davfs2/secrets`),成功后你可以使用以下命令检查:
df -h | grep nutstore
ls /mnt/nutstore
若能列出远程文件,说明挂载成功。
---
## 六、在 /etc/fstab 中自动挂载
如果希望开机自动挂载或在执行 `sudo mount -a` 时自动挂载,可以在 `/etc/fstab` 中添加如下条目(示例):
https://dav.jianguoyun.com/dav /mnt/nutstore davfs rw,uid=1000,gid=1000,_netdev,users,credentials=/etc/davfs2/secrets 0 0
- **rw**:读写方式挂载
- **uid=1000,gid=1000**:指定挂载后文件的属主和属组(请根据实际用户 ID、组 ID 修改)
- **_netdev**:表示这是一个网络文件系统,系统会在网络启动后再尝试挂载
- **users**:允许非 root 用户执行挂载/卸载
- **credentials**:指定存储 WebDAV 登录凭据的文件
添加完毕后,使用:
sudo mount -a
来测试。如果无报错且能正常访问 `/mnt/nutstore`,说明自动挂载已配置成功。
---
## 七、常见问题及解决方案
1. **“the server does not support WebDAV”**
- 确认坚果云或其他服务端已开启 WebDAV 功能,并且 URL 正确(可能需要在末尾加 `/`)。
- 在 `/etc/davfs2/davfs2.conf` 中尝试添加 `ignore_dav_header 1`。
- 检查网络是否通畅,以及是否有防火墙阻止。
2. **需要频繁输入用户名/密码**
- 确保 `/etc/davfs2/secrets` 已正确配置并权限设置为 `600`。
- 若使用的是用户级配置,可以改在 `~/.davfs2/secrets` 中保存凭据。
3. **权限问题**
- 挂载后若无法读写文件,需检查 fstab 中的 `uid`、`gid` 选项,或将用户添加到 `davfs2` 组。
- 也可使用 `chown` 或 `chmod` 来调整访问权限。
4. **网络启动顺序**
- 使用 `_netdev` 选项可确保系统在网络就绪后再挂载。
- 若仍有启动顺序问题,可考虑使用 systemd 的 `After=network-online.target` 等机制。
5. **替代方案**
- 若坚果云的 WebDAV 不兼容或不稳定,可以使用 **rclone** 等工具,通过其对坚果云的支持进行挂载或同步。
---
## 八、总结
通过 **davfs2**,你可以轻松地将坚果云(Nutstore)等支持 WebDAV 的云盘服务挂载到 Linux 本地,享受与本地磁盘类似的文件操作体验。若遇到不标准的 WebDAV 实现或连接问题,可尝试 `ignore_dav_header 1` 或使用其他工具(如 rclone)来辅助挂载。
在正确配置后,每次系统启动都会自动加载远程存储,你可以随时访问、编辑和管理云端文件,无需手动登录网页或使用额外的同步客户端。这为多平台文件管理、服务器远程办公等场景带来了极大的便利。
---
**进一步阅读与参考:**
- [davfs2 官方文档](http://savannah.nongnu.org/projects/davfs2/)
- [坚果云官方文档](https://help.jianguoyun.com/)
- [rclone 文档](https://rclone.org/)
希望本教程能帮助你更好地将坚果云等 WebDAV 服务整合到 Linux 系统中,若有疑问或需要更多配置示例,欢迎在评论区留言或参考官方文档。祝你使用愉快!
