--reference 参数使 chmod 直接复制模板文件权限,无需记忆数字或符号规则;支持单文件、通配符、多目标及递归应用,自动保留特殊位且不受 umask 影响。

--reference 参数是 chmod 命令中一个高效、安全的权限同步方式:它不依赖记忆数字或符号规则,而是直接把目标文件的权限设为和某个“模板文件”完全一致。
这个方法特别适合批量操作、避免误配,也常用于部署脚本或权限标准化场景。
用法格式很简洁
chmod --reference=模板文件 目标文件
也可以写成更明确的形式:
chmod --reference=ref.txt target.txt
执行后,target.txt 的权限(包括读、写、执行,以及特殊位如 t、s)会完全复制 ref.txt 的权限,连 ls -l 显示的 10 个字符都一模一样。
实际操作步骤
- 确保你有读取模板文件元数据的权限(即能
ls -l ref.txt) - 模板文件本身不需要可读/可执行内容,只要它的权限设置是你想要的目标即可
- 目标文件可以是多个,支持通配符或列表:
chmod --reference=config.sample *.conf chmod --reference=/etc/passwd /tmp/testfile /var/log/myapp.log
- 若需递归应用到目录及内部所有项,加
-R:
chmod -R --reference=template_dir/ target_dir/
⚠️ 注意:-R 对软链接默认不穿透;若要处理链接指向的目标,可加 -L(但通常不建议对系统关键路径随意递归)。
为什么比数字或符号模式更可靠?
- 避免手算错误(比如把
755写成775,或漏掉粘滞位t) - 自动保留特殊权限位(如
SUID、SGID、sticky bit),这些在数字模式里容易被忽略或误设 - 不受 umask 干扰,也不依赖当前用户身份(只要对目标文件有权限修改即可)
- 可复用已验证安全的配置文件作为“权威模板”,例如用
/etc/shadow的权限去设新密钥文件(当然要确保合理)
小技巧:快速检查是否同步成功
ls -l ref.txt target.txt
对比两行输出的权限字段(第1列,共10字符),应完全一致。例如:
-rw-r----- 1 alice dev 123 Jan 1 10:00 ref.txt -rw-r----- 1 alice dev 456 Jan 1 10:01 target.txt
只要前10个字符相同,说明 --reference 已生效。

















