ついに動かせました。めちゃくちゃ厄介です。
macOS 26.4 が黙って Time Machine の SMB バックアップを壊した—しかもネットの修正例はバグの半分しか直らない
TL;DR:バグは2つあります。 ネット上のスレッドはどれも最初のバグしか触れていません。だからどれも解決しません。
症状
- バックアップが即座に
BACKUP_FAILED_AUTHENTICATION_ERROR (29)/ エラー80 で失敗する - 同じ認証情報でFinderからその共有をマウントできる
smbutil view //USER@nas.localは問題なく動く- Tahoe導入前から追加していた古いSynology/NAS宛ては動き続けるが、新たに追加した先は失敗する
2つのバグ
バグA — “isKnownServer 0”: Tahoeは保存されたSMB認証情報をホワイトリスト plist で制御。この修正はネット上にも多数:
sudo /usr/libexec/PlistBuddy -c 'Add :nas.local bool true' \
'/private/var/root/Library/Group Containers/group.com.apple.NetworkAuthorization.ServerMarkers/serverMarkers.plist'
TMのURLに出てくる全てのホスト名形式(生の Bonjour FQDN+末尾のドット 例: NAS(TimeMachine)._smb._tcp.local. も含む)を追加すること。
バグB — キーチェーンACLのリグレッション(誰も触れない方):
- 26.4の
NetAuthSysAgentはrootでなくユーザーUID (501) で動作 /Library/Keychains/System.keychainの各項目 ACL が重要に- 新しいTM設定GUIは
partition_id=apple:ACLエントリ付きで項目を書き込むが、NetAuthSysAgentがこれを通せず →Unable to find matching items -25300→OpenSession failed 80 - 直感的なコマンドは効かない:
security add-internet-password -A(どんなアプリも許可)で作成されるapplications: <null>は「全て許可」ではなく「何も許可されない」扱い→まだ壊れたまま
完全な修正方法
バグBが出ているときのログシグネチャ:
isKnownServer 1
Unable to find matching items -25300 (x8-10)
OpenSession failed 80
キーチェーン項目を -A でなく明示的な -T 付きで再作成 します:
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つのエントリで、decryptするとAppleのヘルパーが列挙され、 partition_id は無し。decryptで partition_id → apple:(4つ)、または applications: <null> (3つ)なら、上記のコマンドを実行してください。
ハマりどころ
-Aは絶対使わず、常に-Tを使うこと。- 必ず
-w "$PASSWORD"をつける。 省略するとsecurityはstdinを読むが、スクリプト/非TTYでは空→exit 0→パスワード無しの項目が生成されてしまう -pの値はそのままのパス(例/Time Machine - Server)、URLエンコードなし-r 'smb 'のOSTypeは末尾スペースありの4文字NetAuthSysAgentのuid-501動作が、DiskStation(Tahoe導入前に登録・異なるACLになってる)が動き続け、新登録先だけ失敗する本当の理由- Redditで有名な
/etc/nsmb.conf signing_required=yesは別種のSMB問題の修正で、バグBには無関係
この手順でバックアップが一発成功しました。誰かの日々のログ追いに救いとなりますように。