关于终端:将目录的所有文件和文件夹权限更改为644/755

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

如何使用linux命令提示符中的chmod将所有文件更改为644,将所有文件夹更改为755?(终端)


一种方法是使用查找:

对于目录

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

对于文件

1
find /desired_location -type f -print0 | xargs -0 chmod 0644


最简单的方法是:

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

这基本上意味着:

change文件modes -R安全地给出:

  • user:read,write和eXecute权限,
  • g组和o其他用户:read和eX执行权限,而不是-w仪式权限。

请注意,X将使目录可执行,而不是文件,除非它已经是可搜索/可执行的。

+X - make a directory or file searchable/executable by everyone if it is already searchable/executable by anyone.

请查看man chmod了解更多详细信息。

另请参见:如何对除文件以外的所有目录进行chmod(递归)?在SU


我能想到的最短的是:

1
chmod -R a=r,u+w,a+X /foo

它在GNU/Linux上工作,我一般相信POSIX(从我的阅读:http://pubs.opengroup.org/onlinepubs/9699919799/utilities/chmod.html)。

它的作用是:

  • 将文件/目录设置为r_uu r_u r_uuu(0444)
  • 为所有者添加w,获得rw_uuu r_uuu(0644)
  • 如果是一个目录,则设置"全部执行"(对于dir为0755,对于file为0644)。
  • 重要的是,步骤1权限清除所有执行位,因此步骤3只为目录(从不添加文件)添加回执行位。此外,这三个步骤都发生在目录递归到之前(因此这不等同于

    1
    2
    3
    chmod -R a=r /foo
    chmod -R u+w /foo
    chmod -R a+X /foo

    因为a=r从目录中删除了x,所以chmod不能递归到目录中。)


    这对我很有用:

    1
    2
    find /A -type d -exec chmod 0755 {} \;
    find /A -type f -exec chmod 0644 {} \;


    我最容易记住的是两个操作:

    1
    2
    chmod -R 644 dirName
    chmod -R +X dirName

    +X只影响目录。


    一次通过两个步骤:

    1
    find -type f ... -o -type d ...

    如中所示,找到F或D类型,然后第一个…对于文件和第二个…为了讽刺。明确地:

    1
    find -type f -exec chmod --changes 644 {} + -o -type d -exec chmod --changes 755 {} +

    如果你想让它安静地工作,就不要使用--changes


    论https://help.directadmin.com/item.php?ID=589他们写道:

    如果您需要一种快速的方法将您的公共HTML数据重置为755(目录)和644(文件),那么您可以使用如下方法:

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

    我测试过…它起作用了!


    这也可以工作:

    1
    2
    3
    chmod -R 755 *  // All files and folders to 755.

    chmod -R 644 *.*  // All files will be 644.