Ich hab’s endlich zum Laufen gebracht. Und es ist wirklich fies.
macOS 26.4 hat Time Machine über SMB still und heimlich zerstört – und jede Online-Lösung deckt nur die HÄLFTE des Bugs ab
TL;DR: Es gibt zwei Bugs. Jeder Thread im Internet behandelt nur den ersten. Deshalb funktioniert nichts.
Symptome
- Backup schlägt sofort fehl mit
BACKUP_FAILED_AUTHENTICATION_ERROR (29) / Fehler 80
- Du kannst mit denselben Zugangsdaten das gleiche Share problemlos im Finder mounten
smbutil view //USER@nas.local funktioniert ohne Probleme
- Ein älteres Synology/NAS-Ziel, das vor Tahoe hinzugefügt wurde, läuft weiter. Nur neu hinzugefügte Ziele schlagen fehl.
Die zwei Bugs
Bug A — „isKnownServer 0“: Tahoe prüft gespeicherte SMB-Credentials auf einer Whitelist-Plist. Jeder Fix im Internet setzt hier an:
sudo /usr/libexec/PlistBuddy -c 'Add :nas.local bool true' \
'/private/var/root/Library/Group Containers/group.com.apple.NetworkAuthorization.ServerMarkers/serverMarkers.plist'
Füge jede Hostnamen-Variante hinzu, die in deiner TM-URL vorkommt, einschließlich des rohen Bonjour-FQDN mit abschließendem Punkt wie NAS(TimeMachine)._smb._tcp.local..
Bug B — Keychain-ACL-Regression (über die niemand spricht):
NetAuthSysAgent läuft in 26.4 mit deiner User-UID (501), nicht als root.
- Daher zählen per-Item-ACLs auf
/Library/Keychains/System.keychain.
- Das neue TM-Settings-GUI schreibt Items mit einem
partition_id=apple:-ACL-Eintrag, den NetAuthSysAgent nicht validieren kann → Unable to find matching items -25300 → OpenSession failed 80.
- Intuitive Lösung schlägt fehl:
security add-internet-password -A (jede App zulassen) schreibt applications: <null>, was der Agent als „keine Apps erlaubt“, nicht „alle Apps erlaubt“ liest. Bleibt also broken.
Der vollständige Fix
Log-Signatur, die Bug B bestätigt:
isKnownServer 1
Unable to find matching items -25300 (x8-10)
OpenSession failed 80
Erstelle den Keychain-Eintrag mit expliziten -T-Berechtigungen, NICHT -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
Ersetze USER, Hostnamen, /YourShare (führender Slash, NICHT URL-encoded).
Verifikation
sudo security dump-keychain -a /Library/Keychains/System.keychain | less
Finde deinen Eintrag. Ein funktionierendes ACL hat 3 Einträge, decrypt listet die Apple-Programme, KEIN partition_id. Falls du 4 Einträge mit partition_id → apple: siehst, oder 3 Einträge mit applications: <null> beim decrypt — du brauchst den Befehl oben.
Fallstricke
- Nie
-A verwenden. Immer -T nutzen.
- Immer
-w "$PASSWORD" übergeben. Ohne -w liest security stillschweigend von stdin; in Skripten/non-TTY ist das leer → exit 0 → du hast gerade einen Eintrag ohne Passwort angelegt.
- Der Share-Parameter
-p ist der echte Pfad (/Time Machine - Server), NICHT url-encoded.
- Das Protokoll
-r 'smb ' hat ein nachgestelltes Leerzeichen (4-stelliger OSType).
- Das uid-501-Verhalten von
NetAuthSysAgent ist der wahre Grund, warum DiskStation (vor Tahoe mit anderer ACL eingetragen) noch funktioniert, während neue Ziele scheitern.
- Der Reddit-berühmte Fix
/etc/nsmb.conf signing_required=yes löst ein anderes SMB-Problem. Hat mit Bug B nichts zu tun.
Backup lief danach beim ersten Versuch durch. Hoffe, es erspart jemandem tagelanges Log-Chasing.