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

Opdracht om "Vergrendelde" bestanden te ontgrendelen op OS X

Ik heb een heleboel alleen-lezen bestanden gekopieerd van een Windows systeem naar mijn Mac. Wanneer ik de Info voor elk bestand bekijk met “Get Info”, kan ik zien dat ze vergrendeld zijn. Ik ben een bash script aan het schrijven om sommige bestanden te kopiëren en ik krijg een foutmelding die zegt “Operation not permitted” Dus, eerst moet ik de bestanden ontgrendelen. Omdat ik vaak bestanden van het Windows systeem zal halen, wil ik dat mijn script deze bestanden ontgrendeld.

Wat is het terminal commando om “Vergrendelde” bestanden te ontgrendelen op OSX?

Antwoorden (4)

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

Om bestanden te ontgrendelen kunt u gebruik maken van:

chflags -R nouchg /PATH/TO/DIRECTORY/WITH/LOCKED/FILES/
  • chflags = wijzig vlaggen op bestanden/mappen zoals “locked”
  • -R = recursief of voor alles en volg directories binnen de opgegeven directory
  • nouchg = betekent dat het bestand gewijzigd kan worden
  • /PATH/ = is natuurlijk het pad naar de bestanden die je wilt wijzigen. Iets als: ~/Sites/mysite/directory/with/locked/files/ werkt ook.
15
15
15
2013-09-20 03:23:10 +0000

Dit is handig als je een hele directory wilt doorzoeken en alle bestanden wilt ontsluiten.

In de terminal cd naar de directory

Dit commando vindt en zal een lijst van ze afdrukken.

$ find . -flags uchg

Dit commando deblokkeert ze.

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

U kunt het eerste commando gebruiken om te controleren of alle bestanden ontgrendeld zijn nadat u het tweede commando hebt uitgevoerd, voilà!

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

Je kunt ook SetFile -a l gebruiken, ook al doet dat hetzelfde als chflags nouchg:

SetFile -a l file.ext

-a l maakt het bit voor het vergrendelde attribuut ongedaan. Je kunt SetFile installeren door het pakket Command Line Tools te downloaden uit de voorkeuren van Xcode of van developer.apple.com/downloads .

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

Er zijn eigenlijk twee “lock”-vlaggen die op een bestand gezet kunnen worden: uchg en schg. Een bestand met de vlag uchg is onveranderlijk voor normale gebruikers, maar het is wijzigbaar door het systeem. Een bestand met de vlag schg is voor iedereen onveranderbaar. Beide vlaggen kunnen tegelijk gezet worden.

Om te zien welke vlaggen in een bestand zijn gezet, gebruik je

ls -lO FILE

Dat is een hoofdletter o, geen nul.

Om een bestand definitief te deblokkeren, zou je

chflags nouchg,noschg FILE

moeten uitvoeren, want als beide vlaggen zijn ingesteld en je verwijdert er maar een, dan is het bestand nog steeds geblokkeerd.