如何使用Find-Type-D命令在Linux中批量调整目录权限,同时保留子文件权限不变?

2026-05-08 01:521阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计541个文字,预计阅读时间需要3分钟。

如何使用Find-Type-D命令在Linux中批量调整目录权限,同时保留子文件权限不变?

使用 `find` 和 `chmod` 命令配合,可以精确地更改指定目录的权限,而不影响文件内容。以下是具体操作步骤:

只匹配目录,不碰任何文件

-type d 是 find 的核心过滤条件,它严格匹配“目录”类型(即 ls -l 显示开头为 d 的条目),自动排除普通文件、符号链接、设备文件等。这意味着后续 chmod 操作只作用于目录本身,文件权限毫发无损。

  • /var/www/html 下所有子目录设为标准 Web 目录权限(755):
    find /var/www/html -type d -exec chmod 755 {} \;
  • 仅修改当前目录及下级目录(不含文件),设为属主全权、组可进入、其他不可访问(750):
    find . -type d -exec chmod 750 {} \;

常见误操作避坑点

很多人混淆 -type d-type f,或漏掉 -type 导致 chmod -R 被误触发。关键区别:

  • ✅ 正确:命令中明确含 -type d → 只找目录 → chmod 只跑在目录上
  • ❌ 错误:chmod -R 755 /path → 强制递归,目录和文件全被设成 755,文件多出执行位(x),存在安全风险
  • ❌ 错误:find /path -exec chmod 755 {} \; → 没加 -type d,会把所有匹配项(含文件)都改成 755

进阶:排除特定目录不修改

若想跳过缓存、日志等动态目录(如 cache/logs/),可用 -not -path 精确排除,不影响其余目录:

  • 给所有目录设 755,但跳过 /var/www/html/cache 及其子目录:
    find /var/www/html -type d -not -path "/var/www/html/cache" -exec chmod 755 {} \;
  • 同理,排除多个路径需重复使用 -not -path,中间用 -a 连接(也可省略)
标签:Linux

本文共计541个文字,预计阅读时间需要3分钟。

如何使用Find-Type-D命令在Linux中批量调整目录权限,同时保留子文件权限不变?

使用 `find` 和 `chmod` 命令配合,可以精确地更改指定目录的权限,而不影响文件内容。以下是具体操作步骤:

只匹配目录,不碰任何文件

-type d 是 find 的核心过滤条件,它严格匹配“目录”类型(即 ls -l 显示开头为 d 的条目),自动排除普通文件、符号链接、设备文件等。这意味着后续 chmod 操作只作用于目录本身,文件权限毫发无损。

  • /var/www/html 下所有子目录设为标准 Web 目录权限(755):
    find /var/www/html -type d -exec chmod 755 {} \;
  • 仅修改当前目录及下级目录(不含文件),设为属主全权、组可进入、其他不可访问(750):
    find . -type d -exec chmod 750 {} \;

常见误操作避坑点

很多人混淆 -type d-type f,或漏掉 -type 导致 chmod -R 被误触发。关键区别:

  • ✅ 正确:命令中明确含 -type d → 只找目录 → chmod 只跑在目录上
  • ❌ 错误:chmod -R 755 /path → 强制递归,目录和文件全被设成 755,文件多出执行位(x),存在安全风险
  • ❌ 错误:find /path -exec chmod 755 {} \; → 没加 -type d,会把所有匹配项(含文件)都改成 755

进阶:排除特定目录不修改

若想跳过缓存、日志等动态目录(如 cache/logs/),可用 -not -path 精确排除,不影响其余目录:

  • 给所有目录设 755,但跳过 /var/www/html/cache 及其子目录:
    find /var/www/html -type d -not -path "/var/www/html/cache" -exec chmod 755 {} \;
  • 同理,排除多个路径需重复使用 -not -path,中间用 -a 连接(也可省略)
标签:Linux