如何使用
chmod
命令提示符中的 linux
将所有文件更改为 644,将所有文件夹更改为 755? (终端)
一种方法可以使用 find:
find /desired_location -type d -print0 | xargs -0 chmod 0755
find /desired_location -type f -print0 | xargs -0 chmod 0644
最简单的方法是:
chmod -R u+rwX,go+rX,go-w /path/to/dir
这基本上意味着:
通过给出递归方式
ch
ange文件mod
es -R
:
u
服务:r
ead、w
rite 和 eX
ecute 权限,g
group 和 o
其他用户:r
ead 和 eX
ecute 权限,但没有 -w
rite 权限。请注意,
X
将使目录可执行,但不是文件,除非它已经可搜索/可执行。
- 如果目录或文件已经可供任何人搜索/执行,则使其可供每个人搜索/执行。+X
请检查
man chmod
了解更多详情。
另请参阅:如何 chmod 除文件之外的所有目录(递归地)?位于 SU
我能想到的最短的是:
chmod -R a=r,u+w,a+X /foo
它适用于 GNU/Linux,我相信一般情况下也适用于 Posix(根据我的阅读:http://pubs.opengroup.org/onlinepubs/9699919799/utilities/chmod.html)。
它的作用是:
重要的是,步骤 1 权限会清除所有执行位,因此步骤 3 仅添加回目录(而不是文件)的执行位。此外,所有三个步骤都发生在目录递归之前(因此这不等于例如
chmod -R a=r /foo
chmod -R u+w /foo
chmod -R a+X /foo
由于 a=r 从目录中删除 x,因此 chmod 无法递归到它们。)
开 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 {} \;
我测试过并且......它有效!
对我来说最容易记住的是两个操作:
chmod -R 644 dirName
chmod -R +X dirName
+X 仅影响目录。
这对我有用:
find /A -type d -exec chmod 0755 '{}' \;
find /A -type f -exec chmod 0644 '{}' \;
注意: 要包含名称中带有空格的文件/文件夹,您需要在 {} 周围添加 ''。
通过以下方式一次性完成这两项操作:
find -type f ... -o -type d ...
如所示,找到类型 f 或类型 d,然后对文件执行第一个 ...,对目录执行第二个 ...。 具体来说:
find -type f -exec chmod --changes 644 {} + -o -type d -exec chmod --changes 755 {} +
如果您希望它安静地工作,请不要使用
--changes
。