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?
4 Answers
To unlock files you can use:
chflags -R nouchg /PATH/TO/DIRECTORY/WITH/LOCKED/FILES/chflags= change flags on files/folders such as "locked"-R= recursive or for everything and follow directories within the specified directorynouchg= 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.
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 uchgThis 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Ă !
2You 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 .
There are actually two lock flags that can be set on a file: uchg and schg. A file that has the uchg flag set is immutable by normal users but it is mutable by the system. A file that has the schg flag set is immutable by anyone. Both flags can be set at the same time.
To see which flags are set on a file, use
ls -lO FILEThat is a capital letter o, not zero.
To definitely unlock a file, you would have to execute
chflags nouchg,noschg FILEas if both flags were set and you remove only one of them, it will still be locked.