Linux批量修改文件权限的核心是结合find精准筛选与chmod权限控制:先用find按类型(-type d/f)、名称(-name)、权限(-perm)等条件定位目标,再用-exec或xargs调用chmod分步设置,如目录755、文件644,避免chmod -R误伤。

Linux批量修改文件权限,核心是把 find 的精准定位能力 和 chmod 的权限控制能力结合起来。单用 chmod -R 容易误伤目录或文件,而 find 可按类型、名称、时间、权限等条件筛选,再逐个或分批调用 chmod,安全又灵活。
按文件类型区分设置权限
Web 项目中常见需求:目录要能进入(需执行权限),文件只需读取(不需要执行)。直接递归设统一权限会出问题,必须分开处理。
- 把所有子目录设为 755(rwxr-xr-x):
find /var/www/html -type d -exec chmod 755 {} \; - 把所有普通文件设为 644(rw-r--r--):
find /var/www/html -type f -exec chmod 644 {} \;
注意 -type d 只匹配目录,-type f 只匹配普通文件,跳过符号链接、设备文件等,避免误操作。
按文件名或扩展名批量赋权
脚本类文件常需执行权限,日志或配置文件则通常只需读写。用 -name 可快速锁定目标。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 给当前目录及子目录下所有
.sh文件添加执行权限:
find . -name "*.sh" -exec chmod +x {} \; - 将所有
.conf文件设为仅所有者可读写(600):
find /etc -name "*.conf" -exec chmod 600 {} \; - 不区分大小写匹配(比如
.LOG或.log):
find /var/log -iname "*.log" -exec chmod 640 {} \;
按现有权限或异常状态筛选修改
安全运维中常需修复隐患,比如清理世界可写的文件,或重置被误改的 SUID 权限。
- 查找并移除所有用户都可写的普通文件(危险项):
find /home -type f -perm -222 -exec chmod o-w {} \; - 找出所有设置了 SUID 的可执行文件(需审计):
find /usr/bin -type f -perm /4000 - 把权限为
777的文件统一改为755(仅限目录):
find /tmp -type d -perm 777 -exec chmod 755 {} \;
-perm /4000 表示“任意一位有 SUID”,-perm 777 是精确匹配,-perm -222 表示“其他用户至少有写权限”,不同写法用途明确。
提升效率:用 xargs 替代 -exec(大文件量时推荐)
当匹配到成千上万个文件时,-exec ... \; 每次启动一个 chmod 进程,开销大。xargs 能合并参数、减少进程数,还能并发加速。
- 安全传递含空格/换行的文件名:
find . -name "*.py" -print0 | xargs -0 chmod 644 - 并行处理(8 个进程同时改权限):
find /data -type f -name "*.txt" | xargs -P 8 -I {} chmod 600 {}
-print0 和 -0 配合使用,靠空字符分隔,彻底规避路径特殊字符导致的命令解析错误。

















