Change all files and folders permissions of a directory to 644/755

匿名 (未验证) 提交于 2019-12-03 02:38:01

问题:

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 and other 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:

  1. Set file/directory to r__r__r__ (0444)
  2. Add w for owner, to get rw_r__r__ (0644)
  3. 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. 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!