2009-09-14 02:15:23 +0000 2009-09-14 02:15:23 +0000
102
102

Befehl zum Entsperren von "gesperrten" Dateien unter OS X

Ich habe eine Reihe von schreibgeschützten Dateien von einem Windows-System auf meinen Mac kopiert. Wenn ich die Informationen für jede Datei mit “Get Info” anzeige, sehe ich, dass sie gesperrt sind. Ich schreibe gerade ein Bash-Skript, um einige Dateien zu kopieren, und erhalte die Fehlermeldung “Operation not permitted”. Da ich häufig Dateien aus dem Windows-System ziehen werde, möchte ich, dass mein Skript diese Dateien entsperrt.

Wie lautet der Terminalbefehl zum Entsperren von “gesperrten” Dateien unter OSX?

Antworten (4)

144
144
144
2009-09-14 02:26:55 +0000

Zum Entsperren von Dateien können Sie verwenden:

chflags -R nouchg /PATH/TO/DIRECTORY/WITH/LOCKED/FILES/
  • chflags = Flags an Dateien/Ordnern ändern, wie z. B. “locked”
  • -R = rekursiv oder für alles und folgen Verzeichnissen innerhalb des angegebenen Verzeichnisses
  • nouchg = bedeutet, dass die Datei geändert werden kann
  • /PATH/ = ist natürlich der Pfad zu den Dateien, die Sie ändern möchten. Etwas wie: ~/Sites/mysite/directory/with/locked/files/ funktioniert auch.
15
15
15
2013-09-20 03:23:10 +0000

Dies ist hilfreich, wenn Sie ein ganzes Verzeichnis durchsuchen und alle Dateien freischalten wollen.

Im Terminal cd zum Verzeichnis

Dieser Befehl findet und druckt eine Liste davon.

$ find . -flags uchg

Dieser Befehl entsperrt sie.

$ find . -flags uchg -exec chflags nouchg {} \;

Sie können den ersten Befehl verwenden, um zu überprüfen, ob alle Dateien entsperrt sind, nachdem Sie den zweiten Befehl ausgeführt haben, voilà!

15
15
15
2009-09-14 02:30:00 +0000

Sie können auch SetFile -a l verwenden, obwohl es das Gleiche tut wie chflags nouchg:

SetFile -a l file.ext

-a l setzt das Bit für das gesperrte Attribut zurück. Sie können SetFile installieren, indem Sie das Command Line Tools-Paket aus den Voreinstellungen von Xcode oder von developer.apple.com/downloads herunterladen.

2
2
2
2019-05-15 08:32:33 +0000

Es gibt eigentlich zwei Sperrflags, die für eine Datei gesetzt werden können: uchg und schg. Eine Datei, für die das Flag uchg gesetzt ist, ist für normale Benutzer unveränderlich, aber für das System veränderbar. Eine Datei, bei der das Flag schg gesetzt ist, ist für jeden unveränderbar. Beide Flaggen können gleichzeitig gesetzt sein.

Um zu sehen, welche Flags in einer Datei gesetzt sind, verwenden Sie

ls -lO FILE

Das ist ein großes o, keine Null.

Um eine Datei definitiv zu entsperren, müssten Sie

chflags nouchg,noschg FILE

ausführen, denn wenn beide Flags gesetzt waren und Sie nur eines davon entfernen, ist sie immer noch gesperrt.