Skip to content

Taildrive(alpha):直接掛載 tailnet 上的資料夾

用 Taildrive 在 tailnet 上長期分享資料夾:nodeAttrs 與 grants 的最小權限寫法、各平台怎麼分享與掛載、與 Taildrop 和 SMB 的比較

Updated View as Markdown

Taildrop 是「把檔案傳給另一台自己的裝置」,傳完就結束。Taildrive 則是把某個資料夾持續掛在 tailnet 上,讓有權限的人隨時讀寫——像是放在自己 tailnet 裡的雲端硬碟,不必另外架檔案伺服器、也不必管理另一套帳號密碼。

本文依 2026 年 10 月的 Tailscale 官方文件與 v1.104 原始碼整理。Taildrive 目前仍是 alpha 功能,各平台的行為與 policy 寫法可能變動;本文未實機驗證,屬文件整理。

Taildrive 是什麼

Taildrive 在 Tailscale 用戶端裡內建一個 WebDAV 伺服器。只要 Tailscale 連線中,它就跑在 100.100.100.100:8080,把你在裝置上分享出去的資料夾,用 WebDAV 讓 tailnet 裡的其他裝置掛載。

每個分享都有一個全域唯一的路徑,格式是 /<tailnet>/<裝置名稱>/<分享名稱>。例如在 example.com 這個 tailnet、名為 nas-device 的機器上,把某個資料夾以 docs 這個名稱分享,路徑就是:

/example.com/nas-device/docs

和一般檔案伺服器最大的差別是:誰能看什麼、能讀還是能寫,都寫在 tailnet 的 policy file 裡。不用在檔案伺服器上另外建立帳號、設定資料夾權限,一切跟著 tailnet 身分走。

幾個重要的限制先講:

  • Taildrive 是 alpha 功能,自 Tailscale v1.64.0 起提供。
  • 分享(share)資料夾:只有 Linux、macOS、Windows、Synology(限 DSM 7)可以。iOS、Android 與 DSM 6 的 Synology 不能分享,只能存取別人分享的資料夾。
  • 分享進來的裝置:被分享進 tailnet 的裝置無法存取這個 tailnet 上的任何 Taildrive 資料夾;反過來,你分享到別的 tailnet 的裝置,也無法存取那個 tailnet 的資料夾。
  • 連線走 HTTP,但內容仍是 Tailscale 的 WireGuard 端對端加密,不是明文暴露在網際網路上。

與 Taildrop、SMB 的比較

三個都是「在 tailnet 裡碰檔案」,但用途不同:

Taildrop Taildrive SMB over Tailscale
用途 一次性的檔案傳送 長期掛載、持續讀寫的資料夾 掛載既有的 SMB 檔案伺服器
對象 只能傳給自己的裝置 tailnet 裡的任何使用者或 tag 裝置(依 policy) 有 SMB 帳號的人
權限控管 無(不受 ACL 限制) 用 nodeAttrs + grants 控管,可細分到單一分享與讀/寫 依 SMB 伺服器上的帳號與資料夾權限
tag 裝置 不能用 可以分享、也可以被指定為分享來源 由 SMB 伺服器決定
成熟度 alpha alpha 成熟
額外需求 無 無(內建在 Tailscale 用戶端) 一台跑 SMB 的伺服器

簡單的判斷方式:

開啟 Taildrive

開啟要兩步,都在 tailnet 的 policy file 裡完成,需要 Owner、Admin 或 Network admin 權限:

  1. 用 nodeAttrs 替裝置加上 drive 屬性。
  2. 用 grants 定義誰能存取哪些分享、能讀還是能寫。

1. 用 nodeAttrs 開啟裝置

nodeAttrs 有兩個相關屬性:

屬性 作用
drive:share 允許這台裝置分享資料夾
drive:access 允許這台裝置存取分享

要分享資料夾,只要 drive:share;只要存取別人的分享,只要 drive:access。例如讓所有成員都能分享也能存取:

"nodeAttrs": [
  {
    "target": ["autogroup:member"],
    "attr": ["drive:share", "drive:access"],
  }
]

2. 用 grants 設定權限

nodeAttrs 只決定「誰的裝置能用 Taildrive」,真正的「能看哪個分享、能不能寫」由 grants 控管,capability 名稱是 tailscale.com/cap/drive:

"grants": [
  {
    "src": ["autogroup:member"],
    "dst": ["tag:fileserver"],
    "app": {
      "tailscale.com/cap/drive": [{
        "shares": ["company-docs"],
        "access": "ro"
      }]
    }
  }
]
  • src:誰可以存取(使用者、群組、tag、autogroup:*)。
  • dst:分享來源裝置(這裡是掛著 tag:fileserver 的檔案伺服器)。
  • shares:開放哪些分享名稱,可用 * 表示全部。
  • access:ro(唯讀)或 rw(可讀可寫)。

最小權限範例

把上面兩步合成一個完整範例:只有檔案伺服器(tag:fileserver)能分享,成員只能唯讀存取它分享的 company-docs,其他分享一律看不到:

{
  "tagOwners": {
    "tag:fileserver": ["autogroup:admin"]
  },
  "nodeAttrs": [
    {
      // 只有檔案伺服器能分享資料夾(drive:access 只有在它自己也要掛載時才需要)
      "target": ["tag:fileserver"],
      "attr": ["drive:share"]
    },
    {
      // 其他成員只能存取,不能分享
      "target": ["autogroup:member"],
      "attr": ["drive:access"]
    }
  ],
  "grants": [
    {
      // 成員只能唯讀存取 company-docs,其他分享都看不到
      "src": ["autogroup:member"],
      "dst": ["tag:fileserver"],
      "app": {
        "tailscale.com/cap/drive": [
          {
            "shares": ["company-docs"],
            "access": "ro"
          }
        ]
      }
    }
  ]
}

policy file 的寫法見 ACL / Grants 入門。

分享資料夾

平台 分享方式
Linux tailscale drive share <名稱> <路徑>
Windows tailscale drive share <名稱> <路徑>(PowerShell)
Synology tailscale drive share <名稱> <路徑>(限 DSM 7)
macOS 設定 → File Sharing,圖形介面
iOS/Android 不支援分享

Linux/Windows/Synology:tailscale drive

tailscale drive share docs /srv/docs
  • 分享名稱:只用來組路徑,不一定要等於資料夾名稱。名稱強制轉小寫,只能含小寫字母 a-z、底線 _、小括號 () 或空格,前後空格會被去掉。強制小寫是為了避開不支援大小寫區分的用戶端。
  • 路徑:要分享的資料夾在檔案系統上的路徑。

其他常用指令:

指令 作用
tailscale drive list 列出本機目前的分享
tailscale drive rename <舊> <新> 重新命名分享
tailscale drive unshare <名稱> 移除分享

tailscale drive list 的輸出會多一欄 as,代表「這個分享是以哪個本機使用者身分分享的」。別人連進來時,讀寫是以這個使用者的身分進行:他讀得到這個使用者讀得到的檔案,他建立的檔案也歸這個使用者所有。Linux/Synology 上常見是 root;Windows 上這欄是空白。想改用特定使用者身分分享,Linux 上可以用 sudo -u <使用者> tailscale drive share ...。

Synology 在分享前要多做兩件事:

  1. 確認 NAS 跑的是 DSM 7。DSM 6 只能存取別人分享的資料夾,不能自己分享。
  2. 在 控制台 → 共用資料夾 對要分享的上層共用資料夾(top-level Shared Folder)選 編輯 → 權限,把下拉選單切成 系統內部使用者,替 tailscale 這個系統帳號勾選 讀取/寫入,儲存。權限設在上層共用資料夾即可,它底下的任何子目錄之後都能用 Taildrive 分享。同時要開啟 SSH/終端機才能在命令列執行 tailscale 指令。

macOS:設定裡的 File Sharing

macOS 用圖形介面管理,但因為是 alpha,File Sharing 分頁預設被隱藏。先在終端機執行下列其中一則(視安裝來源),再重開 Tailscale App:

App Store 版:

defaults write io.tailscale.ipn.macos FileSharingConfiguration -string show

從 tailscale.com 下載的版本:

defaults write /Users/$(whoami)/Library/Preferences/io.tailscale.ipn.macsys.plist FileSharingConfiguration show

接著在 Tailscale 的 Settings 會出現 File Sharing 分頁,選 Choose Shared Folders、按 + 加入資料夾。分享名稱預設取自資料夾名稱,點兩下名稱可改名,按 - 移除。

存取資料夾

所有平台的共通點:Tailscale 必須連線中,然後連到 100.100.100.100:8080 這個 WebDAV 伺服器。

平台 掛載方式
macOS Finder → 前往 → 連接伺服器(Cmd + K),網址填 http://100.100.100.100:8080,以「訪客」連線
Windows 檔案總管對「本機」按右鍵 → 連線網路磁碟機 → 選擇自訂的網路位置,網址同上
Linux 用 davfs2 掛載
iOS 「檔案」App → 瀏覽 → 位置裡的 Tailscale
Android 用支援 WebDAV 的檔案瀏覽器(例如 Material Files)
Synology File Station → 工具 → 遠端連線 → 連線設定 → WebDAV

幾個平台要注意的細節:

  • macOS:連線時會跳出「不安全的連線」提示,選 繼續 即可——連線雖然是 HTTP,但內容仍走 Tailscale 的 WireGuard 加密。接著以 Guest 連線。連上後 Finder 會顯示你的 tailnet 名稱資料夾,裡面依裝置列出各分享。
  • Windows:Windows 預設限制 WebDAV 檔案 50MB,超過會傳不上去。要到登錄編輯器 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters 的 FileSizeLimitInBytes,改成 4294967295(約 4GB,最大值)。
  • Android:Tailscale 不提供檔案瀏覽器,要另外裝 WebDAV App。官方文件以 Material Files 為例:側邊選單 → + Add storage… → WebDAV server,主機填 100.100.100.100、連接埠 8080、Path 留空、Name 自取(例如 Tailscale)、通訊協定選 HTTP、驗證選 None,最後按 Connect and add。注意有些 WebDAV App 只吃 https,但 Taildrive 只跑 http,這種 App 不能用。若 App 硬要帳號密碼,隨便填一組即可,Taildrive 不看它,而是用你的 Tailscale 身分決定權限。
  • iOS:在「檔案」App 的位置列表選 Tailscale,第一次會要求開啟 Tailscale 的檔案提供者,允許後就能從任何整合「檔案」App 的程式讀寫分享(實際能不能寫由 grants 的 access 決定)。
  • Synology:在 File Station 的連線設定裡,帳號名稱與密碼留空即可——Taildrive 不看帳密,而是用你的 Tailscale 身分決定權限;Codepage 要選 Unicode (UTF-8)。連上後左側會出現 WebDAV 連線,點進去就會看到你的 tailnet 名稱資料夾。

常見問題

  • 連不上 100.100.100.100:8080? 先確認 Tailscale 連線中,且這台裝置的 nodeAttrs 有 drive:access。
  • 看得到裝置資料夾,但裡面沒有我要的分享? grants 的 shares 只開了你名單上的分享,沒列到的分享對你隱藏。要存取別人的分享,src 也要涵蓋到你。
  • 改了 grants 沒生效? 先確認 policy 已存檔且沒有語法錯誤,然後重新掛載(或重新連線)一次再看。
  • 別人建立的檔案算誰的? 算分享者的本機使用者(tailscale drive list 的 as 欄)。這是 Taildrive 目前的設計,per-user 的權限對應不是它提供的東西。
  • 能用 rclone 連 Taildrive 嗎? 可以,但用戶端 1.64.2 或更早要加 --inplace,建議用 1.65.75 以後的版本。
  • 我想傳的只是幾個檔案、不是長期掛資料夾? 用 Taildrop 比較直接。

參考資料

Navigation

Type to search…

↑↓ navigate↵ selectEsc close