acl权限可通过getfacl和setfacl直接备份与恢复:先确认文件系统挂载含acl选项,再用getfacl -r . > permissions.acl备份,最后在原路径执行setfacl --restore=permissions.acl恢复,不涉及文件内容修改。

直接用 getfacl 和 setfacl 就能完成 ACL 权限的备份与恢复,不需要动文件内容本身,也不依赖完整备份工具。
确认系统已启用 ACL 支持
大多数现代 Linux 发行版默认启用 ACL,但需确认文件系统挂载时带 acl 选项:
- 运行
mount | grep " $(df . | tail -1 | awk '{print $1}') ",查看输出中是否含acl - 若无,临时启用:
sudo mount -o remount,acl /mount/point - 要永久生效,编辑
/etc/fstab,在对应分区的挂载选项里加上acl(如defaults,acl),再执行sudo mount -o remount /mount/point
备份当前目录及子目录的 ACL 权限
进入目标目录后,执行:
getfacl -R . > permissions.acl-
-R表示递归处理所有子目录和文件 - 输出文件名可自定义,推荐用
.acl后缀便于识别 - 该文件是纯文本,可安全查看、传输或存档,不包含文件内容
恢复 ACL 权限
必须回到当初备份时所在的目录(路径需一致),再运行:
setfacl --restore=permissions.acl- 命令会严格按文件路径逐条还原 owner/group/other 及所有 ACL 条目(包括用户、组的额外权限)
- 如果部分文件已被删除或路径变动,
setfacl会跳过并报错,不影响其余文件 - 恢复后可用
ls -l观察权限列末尾是否有+,再用getfacl 文件名验证细节
常见注意事项
ACL 备份不是万能的,注意这几条边界:
- 只备份权限,不备份属主(UID/GID)、时间戳、SELinux 上下文等其它元数据
- 若原文件被删后重建,即使名字相同,ACL 也不会自动附上——得靠
--restore显式恢复 - 普通用户只能备份自己有读取权限的文件;root 用户才能完整备份整个目录树
-
chmod修改基础权限(ugo)不会影响已设的 ACL 条目,但setfacl -b会清空全部 ACL











