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 touch
im 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 uchg
erweiterten 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.
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:
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.png
listet 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 chmod
den a
Befehl von geändert. Der Befehl kann mit verschiedenen Modifikatoren verwendet werden (siehe unten).
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 chown
wird a funktionieren. Die +a# 0
Parameter 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.