ChatGPT解决这个技术问题 Extra ChatGPT

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

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

如果有人(@animuson)愿意向我解释,为什么这个 chmod 问题是题外话,而这里的所有其他问题(14,438 个结果)都不是......
有点晚了,但是这个命令也可以一次性完成接受的答案: chmod -R a=r,a+X,u+w /your/path
好问题,不值得结束。这些应该被移动到 stackoverflow 子站点而不是关闭。
@hugoderhungrige 这意味着去服务器站点上询问它:http://superuser.com :P 但这个问题在这里帮助了我,谢谢。

T
T.Todua

一种方法可能是使用 find:

对于目录

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

对于文件

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

只是对于像我这样的其他人,这不起作用,而是尝试 sudo find /your/location -type f -exec chmod 644 {} \; 用于文件和 sudo find /your/location -type d -exec chmod 755 {} \; 用于目录
我运行了原始解决方案,它弄乱了我对文件和目录的权限。小心!评论的解决方案有效,谢谢!
为什么(?)比chmod -R a=r,u+w,a+X /foo更好?
unable to execute /bin/chmod: Argument list too long 失败
如果我在指定 desired_location 时只希望子文件夹为 chmod 755 怎么办?因为这也会使父文件夹 755
T
T.Todua

最简单的方法是:

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

这基本上意味着:

以递归方式ch调整文件mod-R

用户:读、写和执行权限,

组和其他用户:读取和执行权限,但没有 -write 权限。

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

+X - 如果任何人都可以搜索/可执行目录或文件,则每个人都可以搜索/可执行该目录或文件。

请查看man chmod了解更多详情。

另请参阅:SU 的 How to chmod all directories except files (recursively)?


chmod -R a=r,u+w,a+X /foo
这个答案虽然简洁,但确实存在一个问题:在运行命令之前可执行的文件将在之后可执行。有关没有此缺陷的命令,请参阅@JohnAllsup 的答案。
@mzuther 除非这个问题实际上是你的功能
J
John Allsup

我能想到的最短的是:

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

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

这是做什么的:

将文件/目录设置为 r__r__r__ (0444) 为所有者添加 w,以获取 rw_r__r__ (0644) 为所有目录设置执行(目录为 0755,文件为 0644)。

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

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

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


杰出的!帮了我很多
C
Christian Michael

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 安装的权限问题时为我工作!
可以很好地在目录中进行调整。
M
Mark D

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

chmod -R 644 dirName
chmod -R +X dirName

+X 只影响目录。


最简单更安全
J
Jair Reina

这对我有用:

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

注意:这些命令不会处理名称中带有空格的文件或目录。接受的答案中的命令将。
此警告仅适用于,如果 {} 没有被引号包围......因此,没有理由使用 print0 和 xargs -0,以下就足够了:find /A -type X -exec chmod Y '{}' \;
m
mza

一次性完成这两项操作:

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

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

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

如果您希望它静默工作,请不要使用 --changes


I
IAmInPLS

这也可以工作:

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

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

不要任何人那样做!它会影响整个服务器!