将目录的所有文件和文件夹权限更改为 644/755
Posted
技术标签:
【中文标题】将目录的所有文件和文件夹权限更改为 644/755【英文标题】:Change all files and folders permissions of a directory to 644/755 【发布时间】:2013-09-19 23:55:02 【问题描述】:如何使用linux
命令提示符下的chmod
将所有文件更改为 644 并将所有文件夹更改为 755? (终端)
【问题讨论】:
如果有人 (@animuson) 愿意向我解释,为什么这个 chmod 问题是题外话,而这里的所有其他问题(14,438 个结果)都不是...... 有点晚了,但是这个命令也可以一次性完成接受的答案:chmod -R a=r,a+X,u+w /your/path 好问题,不值得关闭。与其关闭,不如将它们移至 *** 子站点。 @hugoderhungrige 这意味着去服务器站点上询问它,例如:http://superuser.com
:P 但这个问题在这里帮助了我,谢谢。
简答:chmod -R u+rwX,go+rX,go-w /foo
【参考方案1】:
一种方法可能是使用 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【参考方案2】:
最简单的方法是:
chmod -R u+rwX,go+rX,go-w /path/to/dir
这基本上意味着:
到ch
ange 文件mod
es -R
ecursively 通过给予:
u
ser:r
ead、w
rite 和 eX
ecute 权限,
g
roup 和 o
其他用户:r
ead 和 eX
ecute 权限,但没有 -w
rite 权限。
请注意X
将使目录可执行,但不是文件,除非它已经可搜索/可执行。
+X
- 如果目录或文件已经可以被任何人搜索/执行,则让每个人都可以搜索/执行该目录或文件。
详情请查看man chmod
。
另请参阅:How to chmod all directories except files (recursively)? 在 SU
【讨论】:
chmod -R a=r,u+w,a+X /foo 这个答案虽然简洁,但确实存在一个问题:在运行命令之前可执行的文件将在之后可执行。请参阅@JohnAllsup 的答案以获取不存在此缺陷的命令。 @mzuther 除非这个问题确实适合你【参考方案3】:我能想到的最短的是:
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 不能递归到它们。)
【讨论】:
太棒了!帮了我很多【参考方案4】:开启 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 安装的权限问题时为我工作! 非常适合在目录中进行调整。【参考方案5】:对我来说最容易记住的是两个操作:
chmod -R 644 dirName
chmod -R +X dirName
+X 只影响目录。
【讨论】:
最简单更安全【参考方案6】:这对我有用:
find /A -type d -exec chmod 0755 \;
find /A -type f -exec chmod 0644 \;
【讨论】:
注意:这些命令不会处理名称中带有空格的文件或目录。接受答案中的命令将。 此警告仅适用于,如果 没有被引号包围……因此,没有理由使用 print0 和 xargs -0,以下就足够了:find /A -type X -exec chmod Y '' \;
【参考方案7】:
一次性完成这两项操作:
find -type f ... -o -type d ...
如中,找到类型 f 或类型 d,然后对文件执行第一个 ...,对目录执行第二个 ...。具体来说:
find -type f -exec chmod --changes 644 + -o -type d -exec chmod --changes 755 +
如果您希望它静默工作,请不要使用 --changes
。
【讨论】:
【参考方案8】:这也可以:
chmod -R 755 * // All files and folders to 755.
chmod -R 644 *.* // All files will be 644.
【讨论】:
不要这样做!它会影响整个服务器!以上是关于将目录的所有文件和文件夹权限更改为 644/755的主要内容,如果未能解决你的问题,请参考以下文章