Eine Datei im TimeMachine-Sicherungsverzeichnis kann nicht chmod oder chown werden

Beim Versuch, ein bestimmtes Verzeichnis von TimeMachine (TM) wiederherzustellen, erhalte ich die Fehlermeldung Der Vorgang kann nicht abgeschlossen werden, weil Sie keine Berechtigung zum Zugriff auf problem_group_file.png haben . Wenn Sie sich die Dateien im TM-Verzeichnis genauer ansehen, scheint es, dass eine Datei ständig den falschen Gruppenbesitz erhalten hat und möglicherweise weiterhin erhält. Möglicherweise sind auch andere Dateiberechtigungen beschädigt, wodurch der Wiederherstellungsvorgang nicht abgeschlossen werden kann.

Mein nächster Schritt bestand darin, zu versuchen, den Besitz so zu ändern, dass er der gleiche wie bei den Geschwisterdateien ist. Dies ist etwas, was ich zuvor getan habe, um gelegentlich, wenn ähnliche Probleme auftraten, erfolgreich von TM wiederherzustellen. In diesem Fall, egal was ich versucht habe, bekam ich den gleichen Fehler, Operation nicht erlaubt . Nicht einmal sudo touchim Verzeichnis erlaubt. Vielleicht ist dies beabsichtigt.

Nachfolgend finden Sie eine Auflistung einiger Dateien im betreffenden TM-Verzeichnis mit angezeigten erweiterten Attributen und ACLs. Unten befindet sich die Problemdatei namens problem_group_file.png.

$ ls -aehlO@
total 26184
drwxr-xr-x@ 134 seron  staff  -  4,4K 12 Mar 09:41 ./
com.apple.metadata:_kTimeMachineNewestSnapshot    50B 
com.apple.metadata:_kTimeMachineOldestSnapshot    50B 
 0: group:everyone deny add_file,delete,add_subdirectory,delete_child,writeattr,writeextattr,chown
drwxr-xr-x@   4 seron  staff  -  136B 29 Jul  2013 ../
com.apple.metadata:_kTimeMachineNewestSnapshot    50B 
com.apple.metadata:_kTimeMachineOldestSnapshot    50B 
 0: group:everyone deny

...

-rw-r--r--@ 6 seron  staff  -  4,8K 10 Okt 14:37 good_group_file.png
    com.apple.metadata:_kTimeMachineNewestSnapshot    50B 
    com.apple.metadata:_kTimeMachineOldestSnapshot    50B 
 0: group:everyone deny write,delete,append,writeattr,writeextattr,chown
add_file,delete,add_subdirectory,delete_child,writeattr,writeextattr,chown
-rw-r--r--@ 4 seron  wheel  -  3,2K 10 Okt 13:29 problem_group_file.png
com.apple.metadata:_kTimeMachineNewestSnapshot    50B 
com.apple.metadata:_kTimeMachineOldestSnapshot    50B 
 0: group:everyone deny write,delete,append,writeattr,writeextattr,chown

Ich habe gelesen[ 1 ], dass die Datei möglicherweise mit dem uchgerweiterten Attribut gesperrt ist, aber das scheint in diesem Fall nicht so zu sein.

Am Ende jeder Dateiattributliste befindet sich die ACL. Ich habe diese noch nie benutzt und verstehe nicht, wie sie funktionieren. Vielleicht ist es die Ursache für diese Probleme.

Die TM-Festplatte wurde im Festplatten-Dienstprogramm ohne Fehler überprüft. Dieses Problem tritt auf mehr als einer TM-Disk auf, was mich zu der Annahme veranlasst, dass es sich nicht um einen TM-Disk-Fehler handelt. Das Problem tritt auf mehreren TM-Datenträgern und Sicherungen auf. Auf der Quellseite haben sie alle dieselben (und korrekten) Attribute und Eigentumsrechte ohne ACLs. Das Festplattendienstprogramm hat Attributfehler auf der Quellfestplatte gefunden, aber nur bei Dateien, die zu OS X gehören, und nicht bei dieser Datei. Alle Partitionen sind hfs+-Journaled.

Antworten (2)

Beim Lesen von ACLs[ 1 ] habe ich festgestellt, dass ich den Besitz ändern kann, indem ich zuerst die Datei-ACL mit den folgenden Befehlen entferne:

sudo chmod -a "everyone deny write,delete,append,writeattr,writeextattr,chown" problem_group_file.png
sudo chown :staff problem_group_file.png

Danach konnte das Verzeichnis fehlerfrei aus der TimeMachine-Sicherung wiederhergestellt werden. Dies erklärt jedoch nicht, warum das Problem überhaupt aufgetreten ist.

Basierend auf der Antwort von Seron konnte ich folgende Lösung finden:

Hintergrund

ACLs sind regelbasiert und die erste Regel, die zutrifft, ist die Regel, die definiert, wie eine Chown-Anforderung behandelt wird. Es kann mehr als eine Regel geben und die Regeln sind geordnet. ls -le problem_group_file.pnglistet alle ACL-Regeln für diese Datei auf. In TimeMachine scheint jede Datei eine ACL-Regel wie diese zu haben:

 0: group:everyone deny write,delete,append,writeattr,writeextattr,chown

Das heißt, sobald ein Benutzer, der in der Gruppe ist everyone, versucht, die Datei in irgendeiner Weise zu ändern, verhindert der ACL-Mechanismus dies.

Die ACL-Regeln werden alle über chmodden aBefehl von geändert. Der Befehl kann mit verschiedenen Modifikatoren verwendet werden (siehe unten).

Lösung

Um chown für den Administrator (oder einen anderen speziell benannten Benutzer) zuzulassen, kann der folgende Befehl verwendet werden:

chmod +a# 0 "admin allow chown" problem_group_file.png

Danach (im Falle von admin) sudo chownwird a funktionieren. Die +a# 0Parameter weisen chmod an , die Regel (über +) vor (über # 0) der ersten Regel einzufügen . Regel 0 wird dann Regel 1 und die neue Regel Regel 0.

Nachdem chmod ausgeführt wurde, ist es sicher (und einfach), diese Regel zu entfernen über:

chmod -a# 0 problem_group_file.png

Dadurch wird (über -) die Regel bei Index 0 entfernt.