Time Machine 備份在 TBS-h574TX 上因驗證錯誤 80 失敗

我終於搞定了。而且這解法真的很髒。


macOS 26.4 悄悄搞壞了 SMB 的 Time Machine —— 網路上的修法都只解了一半

TL;DR:這裡其實有兩個 bug,網路上的討論都只講到第一個,所以大多數解法都沒用。

症狀

  • 備份一開始就失敗,出現 BACKUP_FAILED_AUTHENTICATION_ERROR (29)/錯誤 80
  • 用 Finder 以相同帳密掛載同一個分享沒問題
  • smbutil view //USER@nas.local 也可正常運作
  • 舊款 Synology/NAS 備份目標(Tahoe 之前設定的)還是正常,只有新加的目標失敗

兩個 bug

Bug A —「isKnownServer 0」: Tahoe 會利用 whitelist plist 限定哪些 SMB 憑證有效。這是網路上都在解決的部分:

sudo /usr/libexec/PlistBuddy -c 'Add :nas.local bool true' \
  '/private/var/root/Library/Group Containers/group.com.apple.NetworkAuthorization.ServerMarkers/serverMarkers.plist'

你要加入 Time Machine URL 會出現的所有 host 名,包含有結尾點的原始 Bonjour FQDN,像是 NAS(TimeMachine)._smb._tcp.local.

Bug B — 鑰匙圈 ACL 回歸問題(沒人在講的那個):

  • NetAuthSysAgent 在 26.4 以你自己的 uid(501)執行,不是 root
  • 所以 /Library/Keychains/System.keychain 單筆 ACL 真的有影響。
  • 新的 TM-Settings 介面會用 partition_id=apple: 寫入密碼,NetAuthSysAgent 看不到 → Unable to find matching items -25300OpenSession failed 80
  • 直觀本能失效: security add-internet-password -A(允許任何 App)其實寫進去的 applications: <null>,Agent 解讀成「不給任何 App 用」,而不是「任何 App 都行」。還是壞的。

完整修法

有 Bug B 時的 log 長這樣:

isKnownServer 1
Unable to find matching items -25300   (x8-10)
OpenSession failed 80

要用明確 -T 授權重新建立鑰匙圈條目,不能用 -A

read -r -s "TMPW?SMB password: " && echo

for S in 'NAS(TimeMachine)._smb._tcp.local.' 'nas.local'; do
  sudo security delete-internet-password -a USER -s "$S" /Library/Keychains/System.keychain 2>/dev/null
  sudo security add-internet-password \
    -a USER -s "$S" -p /YourShare -r 'smb ' \
    -D 'Time Machine Network Password' \
    -T /System/Library/CoreServices/NetAuthAgent.app \
    -T /System/Library/CoreServices/NetAuthAgent.app/Contents/MacOS/NetAuthSysAgent \
    -T /System/Library/PrivateFrameworks/SystemAdministration.framework/XPCServices/writeconfig.xpc \
    -T /System/Library/CoreServices/TimeMachine/backupd \
    -T /System/Library/CoreServices/TimeMachine/backupd-helper \
    -w "$TMPW" \
    /Library/Keychains/System.keychain
done
unset TMPW

USER、主機名稱、/YourShare(要有前導斜線,不要 URL 編碼)都換成你的實際資料。

檢查

sudo security dump-keychain -a /Library/Keychains/System.keychain | less

找到你新增的條目。正常 ACL 會有3 個授權,decript 下會列出 Apple helper app,沒有 partition_id。如果有 4 個授權結果出現 partition_id → apple:,或者 3 個授權結果有 applications: <null>,就還是有問題 —— 請照上面指令重建。

注意點

  • **千萬別用 -A。**只用 -T
  • **一定要加 -w "$PASSWORD"。**沒加的話,security 默認讀 stdin,在 script 或 non-TTY 下會是空的 → exit 0 → 結果你建立了沒有密碼的項目。
  • -p 那個 share 值要給目標目錄的實際路徑(/Time Machine - Server),不是 URL 編碼。
  • 協定 -r 'smb ' 要有結尾空白(四碼 OSType)。
  • NetAuthSysAgent 以 uid=501 行為才是 Synology(Tahoe 前加的,ACL 不一樣)會正常,但新加目標失敗的真正原因。
  • Reddit 流傳的 /etc/nsmb.conf signing_required=yes 修的是另一個 SMB 問題,跟 Bug B 無關。

我這樣一做備份就一次成功。希望能救大家不要再狂翻 log 追 bug 了。