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


182

我怎么会使用到644的所有文件和所有文件夹变成755 chmodlinux命令提示符?(终奌站)


6
如果有人(@animuson)这么乐于向我解释,为什么这个chmod问题是题外话,而其他所有问题(14,438个结果)都不是...
hugo der hungrige 2014年

来晚了,但是这条命令也可以
一口气

好问题,不值得关闭。应该将它们移到stackoverflow子站点,而不是关闭。
埃里克·弗里森

1
@hugoderhungrige意味着它可以在服务器站点上查询它http://superuser.com::P,但是这个问题对我有帮助,谢谢。
情绪化,2015年

Answers:


343

一种方法是使用find:

用于目录

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

用于文件

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

21
只是对像我这样的人来说,这行不通,而是尝试sudo find /your/location -type f -exec chmod 644 {} \;文件和sudo find /your/location -type d -exec chmod 755 {} \;目录
NineCattoRules

我运行了原始的解决方案,它弄乱了我对文件和目录的权限。小心!评论上的解决方案有效,谢谢!
Mahsa Mortazavi

3
为什么(?)更好chmod -R a=r,u+w,a+X /foo
彼得·克劳斯

失败unable to execute /bin/chmod: Argument list too long
vladkras 18/12/28

如果在指定desirable_location时仅希望子文件夹为chmod 755怎么办?因为这也会使父文件夹755
MaXi32

105

最简单的方法是:

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

这基本上意味着:

ch安格文件mod上课-R给予ecursively:

  • user:read,write和Xeecute权限,
  • group和other用户:read和e Xecute权限,但不是-write权限。

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

+X -如果任何人已经可以搜索/执行目录或文件,则该目录或文件可以被所有人搜索/执行。

请检查man chmod更多详细信息。

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


7
chmod -R a = r,u + w,a + X / foo
John Allsup 2016年

9
这个答案虽然很简洁,但是确实存在一个问题:在运行命令之前可执行的文件之后将可以执行。请参阅@JohnAllsup的答案以获取没有此缺陷的命令。
mzuther

4
@mzuther,除非此问题实际上是您要解决的
RiaD

37

我能想到的最短的是:

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,对于文件,目录为6444)。

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

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

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


辉煌!对我帮助很大
Jannie将托伊尼森

13

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

chmod -R 644 dirName
chmod -R +X dirName

+ X仅影响目录。


1
最简单,更安全
Marco Marsala

12

他们在 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 {} \;

我进行了测试,...有效!


救生员!感谢您提出的干净解决方案!需要修复WordPress安装的权限问题时为我工作!
twknab

可以很好地在目录中进行调整。
Christian Berendt

8

这对我有用:

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

3
请注意:这些命令将不会处理名称中带有空格的文件或目录。接受的答案中的命令将会。
乍得Nouis 2015年

1
仅当{}不被引号引起来时才适用此警告…因此,没有理由使用print0和xargs -0满足以下条件:find /A -type X -exec chmod Y '{}' \;
Michael Stumpfl

6

一次完成两个操作:

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

如图所示,找到类型f或类型d,然后对文件执行第一个...,对目录执行第二个...。特别:

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

--changes如果您希望它静默运行,请不要使用它。


2

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

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

另外,如果您知道PHP以用户身份而不是以“ apache”身份运行,则可以将PHP文件设置为600,以提高安全性,例如:

find . -type f -name '*.php' -exec chmod 600 {} \;

您可以在这里找到此资源:https ://help.directadmin.com/item.php ? id = 589


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.