Befehl zum Entsperren "gesperrter" Dateien unter OS X

139988
Michael Prescott

Ich habe viele schreibgeschützte Dateien von einem Windows-System auf meinen Mac kopiert. Wenn Sie die Info für jede Datei mit "Get Info" anzeigen, sehe ich, dass sie gesperrt sind. Ich schreibe ein Bash-Skript, um einige Dateien zu kopieren, und es wird eine Fehlermeldung mit der Meldung "Vorgang nicht zulässig" angezeigt. Zuerst muss ich die Dateien entsperren. Da ich häufig Dateien aus dem Windows-System abrufe, möchte ich, dass mein Skript diese Dateien entsperrt.

Wie lautet der Terminalbefehl zum Entsperren "gesperrter" Dateien unter OSX?

83

3 Antworten auf die Frage

122
Chealion

Zum Entsperren von Dateien können Sie Folgendes verwenden:

chflags -R nouchg /PATH/TO/DIRECTORY/WITH/LOCKED/FILES/ 
  • chflags = Flags ändern für Dateien / Ordner wie "gesperrt"
  • -R = rekursiv oder für alles und folgen Sie den 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.
Sieht aus, als hätte ich die Lösung gefunden, als Sie geantwortet haben. Ich habe auch gelernt, dass -R für rekursiv ist.
Um alle Dateien im aktuellen Verzeichnis zu entsperren, verwenden Sie chflags nochg *
und nur eine Datei.
Chflags nouchg onefile.txt Siehe: http://www.mehtanirav.com/2009/04/16/recursively-unlock-files-on -Mac OS X Michael Prescott vor 14 Jahren 1
Es gibt ein weiteres relevantes Flag "schg", nämlich das System-unveränderliche Flag (siehe https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/chflags.1.html). Der Befehl zum Löschen ist ähnlich: `sudo chflags noschg PFAD / ZU / GESPERRT / DATEI ' Andy Madge vor 9 Jahren 1
Verwenden Sie `` / bin / ls -lO / path / to / file```, um die macOS-`` flags```-Dateien anzuzeigen. Beachten Sie den vollständigen Pfad zum macOS-Befehl `` `ls``` '. Dies ist erforderlich, wenn Sie GNU Coreutils installiert haben. Tony Barganski vor 5 Jahren 0
15
John T

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

SetFile -a l file.ext 

-a lsetzt 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 .

Dies ist die Methode, die bei macOS Sierra mit ein paar von einem Windows-Computer kopierten Dateien für mich funktioniert hat. Ich habe verwendet: SetFile -al ~ / Documents / Arduino / Samples / * callisto vor 6 Jahren 0
12
Mamie McCall

Dies ist hilfreich, wenn Sie ein gesamtes Verzeichnis durchsuchen und alle Dateien entsperren möchten.

Im Terminal cdzum Verzeichnis

Dieser Befehl findet eine Liste und druckt sie aus .

$ find . -flags uchg 

Dieser Befehl schaltet sie frei .

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

Sie können den ersten Befehl verwenden, um nach dem Ausführen des zweiten Befehls voilà! Zu überprüfen, ob alle Dateien entsperrt sind.

Während dies funktioniert, kann es bei einer großen Anzahl von Dateien extrem langsam sein, da für jede Datei ein neuer Prozess gestartet wird. Richard Waite vor 9 Jahren 1