Linux中备份和恢复ACL权限需先确认文件系统启用acl挂载选项,再用getfacl -R导出、setfacl --restore还原;恢复仅重置ACL字段,不改属主、普通权限等,mask掩码可能限制实际生效权限。

Linux 中备份和恢复 ACL 权限,核心是用 getfacl 和 setfacl --restore 配合实现,但前提是文件系统已启用 ACL 支持。
确认文件系统支持 ACL
ACL 不是默认全开的功能,需检查挂载选项是否含 acl:
- 运行
tune2fs -l /dev/sda1 | grep "Default mount options"(把/dev/sda1替换为实际设备); - 输出中必须看到
acl,否则需修改/etc/fstab,在对应挂载项的 options 字段加acl,例如:/dev/sda1 /data ext4 defaults,acl 0 2; - 改完后执行
sudo mount -o remount /data生效。
备份当前目录及子目录的 ACL 权限
进入目标目录(如 /project),执行:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
-
getfacl -R . > acl_backup.txt—— 递归导出所有文件和子目录的 ACL 规则; - 生成的
acl_backup.txt是纯文本,可查看、校验、版本管理或传输到其他机器; - 注意:该命令不备份普通权限(如 rwx)、属主属组、时间戳等,只存 ACL 条目。
恢复 ACL 权限
恢复操作必须在原备份路径下进行(即 acl_backup.txt 所在目录):
- 执行
setfacl --restore=acl_backup.txt; - 它会逐条还原 Access ACL 和 Default ACL(如果存在);
- 不会改动文件内容、属主、属组、普通权限位,只重置 ACL 相关字段;
- 若提示“Operation not supported”,说明目标路径所在文件系统未启用 ACL 或权限不足。
常见问题与注意事项
恢复后权限没生效?大概率是 mask 掩码限制了实际效果:
- 运行
getfacl 文件名查看是否有mask::r--这类低权限掩码; - 手动更新掩码:
setfacl --mask -m mask::rwx 目录名; - 清空所有 ACL(调试用):
setfacl -b 文件或目录; - 仅删默认 ACL(不影响已有文件):
setfacl -k 目录名。

















