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

后端 未结 8 951
孤街浪徒
孤街浪徒 2020-12-04 04:20

How would I change all files to 644 and all folders to 755 using chmod from the linux command prompt? (Terminal)

相关标签:
8条回答
  • 2020-12-04 04:49

    The easiest way is to do:

    chmod -R u+rwX,go+rX,go-w /path/to/dir
    

    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

    0 讨论(0)
  • 2020-12-04 04:53

    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.

    0 讨论(0)
  • 2020-12-04 04:56

    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.)

    0 讨论(0)
  • 2020-12-04 05:03

    This can work too:

    chmod -R 755 *  // All files and folders to 755.
    
    chmod -R 644 *.*  // All files will be 644.
    
    0 讨论(0)
  • 2020-12-04 05:09

    On https://help.directadmin.com/item.php?id=589 they write:

    If you need a quick way to reset your public_html data to 755 for directories and 644 for files, then you can use something like this:

    cd /home/user/domains/domain.com/public_html
    find . -type d -exec chmod 0755 {} \;
    find . -type f -exec chmod 0644 {} \;
    

    I tested and ... it works!

    0 讨论(0)
  • 2020-12-04 05:10

    One approach could be using find:

    for directories

    find /desired_location -type d -print0 | xargs -0 chmod 0755
    

    for files

    find /desired_location -type f -print0 | xargs -0 chmod 0644
    
    0 讨论(0)
提交回复
热议问题