How would I change all files to 644 and all folders to 755 using chmod from the linux command prompt? (Terminal)
问题:
回答1:
One approach could be using find:
for directories
find . -type d -print0 | xargs -0 chmod 0755 for files
find . -type f -print0 | xargs -0 chmod 0644 回答2:
The easiest way is to do:
chmod -R u+rwX,go+rX,go-w /foo which basically means:
to change file modes -Recursively by giving:
user:read,write and eXecute permissions,group andother users:read and eXecute permissions, but not-write permission.
Please note that X will make a directory executable, but not a file, unless it's already searchable/executable.
+X- make a directory or file searchable/executable by everyone if it is already searchable/executable by anyone.
Please check man chmod for more details.
See also: How to chmod all directories except files (recursively)? at SU
回答3:
The shortest one I could come up with is:
chmod -R a=r,u+w,a+X /foo which works on GNU/Linux, and I believe on Posix in general (from my reading of: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/chmod.html).
What this does is:
- Set file/directory to r__r__r__ (0444)
- Add w for owner, to get rw_r__r__ (0644)
- Set execute for all if a directory (0755 for dir, 0644 for file).
Importantly, the step 1 permission clears all execute bits, so step 3 only adds back execute bits for directories (never files). In addition, all three steps happen before a directory is recursed into (so this is not equivalent to e.g.
chmod -R a=r /foo chmod -R u+w /foo chmod -R a+X /foo since the a=r removes x from directories, so then chmod can't recurse into them.)
回答4:
This worked for me:
find /A -type d -exec chmod 0755 {} \; find /A -type f -exec chmod 0644 {} \; 回答5:
Do both in a single pass with:
find -type f ... -o -type d ... As in, find type f OR type d, and do the first ... for files and the second ... for dirs. Specifically:
find -type f -exec chmod --changes 644 {} + -o -type d -exec chmod --changes 755 {} + Leave off the --changes if you want it to work silently.
回答6:
Easiest for me to remember is two operations:
chmod -R 644 dirName chmod -R +X dirName The +X only affects directories.
回答7:
This can work too:
chmod -R 755 * // All files and folders to 755. chmod -R 644 *.* // All files will be 644.