Sign up ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I copied a lot of read-only files from a Windows system to my Mac. When viewing the Info for each file using "Get Info", I can see they are Locked. I'm writing a bash script to copy over some files and I'm getting an error that says "Operation not permitted" So, first I need to unlock the files. Since I'll be pulling files from the Windows system often, I want my script to unlock these files.

What is the terminal command to unlock "Locked" files on OSX?

share|improve this question

3 Answers 3

up vote 59 down vote accepted

To unlock files you can use:

  • chflags = change flags on files/folders such as "locked"
  • -R = recursive or for everything and follow directories within the specified directory
  • nouchg = means the file can be changed
  • /PATH/ = of course is the path to the files you want to change. Something like: ~/Sites/mysite/directory/with/locked/files/ works as well.
share|improve this answer
Looks like I found the solution just as you were responding. I also learned that the -R is for recursive. So, to unlock all files in the current directory use<br/> chflags nochg *<br/> and to change just one file<br/> chflags nouchg onefile.txt See: – Michael Prescott Sep 14 '09 at 2:37
There's another relevant flag schg which is the system immutable flag (see…) The command to clear it is similar: sudo chflags noschg PATH/TO/LOCKED/FILE – Andy Madge Jan 12 at 20:22
thank you.. worked like a charm. – bragboy Apr 5 at 9:35

You can also use SetFile -a l, even though it does the same thing as chflags nouchg:

SetFile -a l file.ext

-a l unsets the bit for the locked attribute. You can install SetFile by downloading the Command Line Tools package from Xcode's preferences or from

share|improve this answer

This is helpful if you want to search an entire directory and unlock all files.

In the terminal cd to the directory

This command finds and will print a list of them.

$ find . -flags uchg

This command unlocks them.

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

You can use the first command to double check that all the files are unlocked after running the second command, voilà !

share|improve this answer
While this works, it can be extremely slow for large numbers of files because it starts a new process for each file. – Richard Waite Aug 23 '14 at 23:52

protected by slhck Jul 24 '13 at 7:36

Thank you for your interest in this question. Because it has attracted low-quality answers, posting an answer now requires 10 reputation on this site.

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.