将目录的所有文件和文件夹权限更改为644/755

问题描述 投票:0回答:7

如何使用

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

terminal command-prompt chmod
7个回答
415
投票

一种方法可以使用 find:

对于目录

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

对于文件

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

132
投票

最简单的方法是:

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

这基本上意味着:

通过给出递归方式

ch
ange文件
mod
es
-R

  • u
    服务:
    r
    ead、
    w
    rite 和 e
    X
    ecute 权限,
  • g
    group 和
    o
    其他用户:
    r
    ead 和 e
    X
    ecute 权限,但没有
    -w
    rite 权限。

请注意,

X
将使目录可执行,但不是文件,除非它已经可搜索/可执行。

+X
- 如果目录或文件已经可供任何人搜索/执行,则使其可供每个人搜索/执行。

请检查

man chmod
了解更多详情。

另请参阅:如何 chmod 除文件之外的所有目录(递归地)?位于 SU


77
投票

我能想到的最短的是:

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

它适用于 GNU/Linux,我相信一般情况下也适用于 Posix(根据我的阅读:http://pubs.opengroup.org/onlinepubs/9699919799/utilities/chmod.html)。

它的作用是:

  1. 将文件/目录设置为 r__r__r__ (0444)
  2. 为所有者添加 w,得到 rw_r__r__ (0644)
  3. 设置执行所有目录(目录为 0755,文件为 0644)。

重要的是,步骤 1 权限会清除所有执行位,因此步骤 3 仅添加回目录(而不是文件)的执行位。此外,所有三个步骤都发生在目录递归之前(因此这不等于例如

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

由于 a=r 从目录中删除 x,因此 chmod 无法递归到它们。)


53
投票

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

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

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

我测试过并且......它有效!


27
投票

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

chmod -R 644 dirName
chmod -R +X dirName

+X 仅影响目录。


10
投票

这对我有用:

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

注意: 要包含名称中带有空格的文件/文件夹,您需要在 {} 周围添加 ''。


6
投票

通过以下方式一次性完成这两项操作:

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

如所示,找到类型 f 或类型 d,然后对文件执行第一个 ...,对目录执行第二个 ...。 具体来说:

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

如果您希望它安静地工作,请不要使用

--changes

© www.soinside.com 2019 - 2024. All rights reserved.