Linux中递归设置目录权限应避免chmod -R,而用find配合-type d/f精准区分目录与文件:先find -type d设755,再find -type f设644,并预览结果防误操作。

Linux 中对目录权限做递归处理,核心是区分“目录”和“文件”两类对象,并分别设置合理权限。直接用 chmod -R 简单粗暴,容易导致文件获得执行权限(如 .txt 被设成 755),存在安全与功能隐患。推荐用 find 配合 chmod 精准控制。
只改目录权限(保持文件不动)
用 -type d 筛出所有目录,再统一赋予权限:
-
find /path/to/dir -type d -exec chmod 755 {} \;—— 给所有子目录设为 755(可进入、可列内容) - 若需加
sudo才能修改(如系统目录或属主非当前用户),在find前加:sudo find ... - 注意:不加
-depth时,父目录会先被处理;若后续操作依赖父目录权限(如写入子目录),顺序通常不影响结果
只改文件权限(跳过目录)
用 -type f 锁定普通文件,避免误操作目录:
-
find /path/to/dir -type f -exec chmod 644 {} \;—— 文件设为 644(可读、不可执行,适合文本、配置、日志等) - 若含可执行脚本(如 .sh),建议单独处理:
find /path/to/dir -name "*.sh" -type f -exec chmod 755 {} \; - 不推荐对整个树用
chmod -R 644,否则目录失去执行位(x),将无法cd进入
一步完成目录+文件的差异化赋权
两个命令组合使用,确保结构清晰、语义明确:
- 先设目录:
find /var/www/html -type d -exec chmod 755 {} \; - 再设文件:
find /var/www/html -type f -exec chmod 644 {} \; - 顺序不能颠倒——若先改文件,再改目录,不会影响已设好的文件权限;但若先用
chmod -R错设,就得重来
权限设置前的安全确认
执行修改前,建议先预览匹配结果,防止路径写错或条件过宽:
- 查有哪些目录:
find /path -type d | head -10 - 查有哪些普通文件:
find /path -type f | head -10 - 加
-print显式输出(虽默认就有):find /path -type d -print - 特别注意排除系统关键路径(如
/etc、/bin),避免误操作引发服务异常


















