chmod -r 会无差别递归设置文件和目录权限,导致普通文件被误赋执行权限(x),存在安全风险;应使用 find 分别对目录(-type d)设755、文件(-type f)设644。

chmod -R 会把文件和文件夹都设成同一权限,这通常不对
直接用 chmod -R 755 dir/ 看似省事,但实际会让目录和里面的普通文件都获得执行权限(x),而绝大多数文本、配置、图片等文件根本不需要、也不该有 x 权限。一旦被 Web 服务或脚本误执行,可能引发安全风险或解析错误。
真正合理的做法是:目录设 755(需 x 才能 cd 和遍历),普通文件设 644(仅读写,不执行)。-R 本身不区分类型,必须配合 find 按文件类型分别处理。
用 find 分别设置目录和文件权限(推荐方案)
这是生产环境最稳妥的做法,避免“一刀切”导致的权限混乱:
-
find /path/to/dir -type d -exec chmod 755 {} +:只匹配目录(-type d),批量设为755 -
find /path/to/dir -type f -exec chmod 644 {} +:只匹配普通文件(-type f),批量设为644
注意:{} 是占位符,+ 表示尽可能合并多条路径传给单次 chmod,比 \; 更高效;路径末尾不加斜杠不影响匹配结果。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
什么时候可以用 chmod -R?真需要时的注意事项
chmod -R 并非完全不能用,但仅适用于明确知道所有内容都该统一权限的极少数场景,比如:
- 刚解压的静态构建产物(如
dist/),且确认里面全是可执行脚本或二进制 —— 此时chmod -R 755 dist/才合理 - 临时调试环境,你清楚后果并会快速还原
即便如此,也要先确认当前用户有足够权限(常需 sudo),并留意 umask 可能影响新建文件的默认权限。执行前建议先用 ls -l 快速扫一眼典型文件和目录的当前权限结构。
chown -R 和 chmod -R 的行为差异容易被忽略
chown -R user:group dir/ 是安全的递归操作 —— 它天然按对象类型分别处理:对目录改属主属组,对文件也改属主属组,逻辑一致。但 chmod -R 没有这种语义区分,它只是机械地把同一串数字权限覆写到每一个 inode 上。
所以不要因为 chown -R 好用,就默认 chmod -R 也能照搬。权限的本质是“访问控制”,不是“批量覆盖”。文件是否可执行,得看它是不是真的要被当程序跑。










