Setting Permissions
Problem
You want to set permissions in a secure manner.
Solution
If you need to set exact permissions for security reasons (or you are sure that you don’t care what is already there, you just need to change it), use chmod with 4-digit octal modes.
$ chmod 0755some_scriptIf you only want to add or remove permissions, but need to leave other existing permissions unchanged, use the + and - operations in symbolic mode.
$ chmod +xsome_scriptIf you try to recursively set permissions on all the files in a
directory structure using something like chmod
-R0644 some_directory then you’ll
regret it because you’ve now rendered any subdirectories non-executable,
which means you won’t be able to access their content,
cd into them, or traverse below them. Use
find and xargs with
chmod to set the files and directories
individually.
$ find some_directory -type f -print0 | xargs -0 chmod 0644 # File perms $ find some_directory -type d -print0 | xargs -0 chmod 0755 # Dir. perms
Of course, if you only want to set permissions on the files in a single directory (non-recursive), just cd in there and set them.
When creating a directory, use mkdir
-m mode new_directory since you not
only accomplish two tasks with one command, but you avoid any possible
race condition between creating the directory and setting the
permissions.
Discussion
Many people are in the habit of using three-digit octal modes, but we like to use all four possible digits to be explicit about what we mean to do with all attributes. ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access