必须用acl实现三层防护:对备份目录设强访问控制、启用默认acl使新文件自动继承策略、配合chattr +a防篡改,缺一不可。

要防止非特权用户横向越权访问备份目录里的敏感数据,不能只靠传统 chmod,必须用 ACL 实现“精准封控+默认继承+权限隔离”三层防护。核心是:对备份目录本身设强访问控制,同时启用默认 ACL(default ACL),让所有新生成的备份文件自动继承严格策略,再配合隐藏权限(chattr)防篡改,形成纵深防御。
一、启用并验证文件系统ACL支持
ACL 不是默认总生效——必须确认底层文件系统挂载时启用了 acl 选项:
- 运行
mount | grep "$(df . | tail -1 | awk '{print $1}')" | grep acl,输出含acl才表示已启用 - 若无,临时启用:
sudo mount -o remount,acl /backup(假设备份挂载点为/backup) - 永久生效:编辑
/etc/fstab,在对应分区行的挂载选项中加入acl,如defaults,acl,再执行sudo mount -o remount /backup
二、配置备份目录的隐藏ACL策略
目标是:仅允许备份服务账户(如 backupuser)读写,运维审计员(如 auditor)只读,其他任何人(含同组成员)完全不可见;且所有新备份文件自动继承该策略。
- 先清空旧ACL干扰:
sudo setfacl -b /backup - 设基础UGO权限(兜底):
sudo chmod 750 /backup(属主全权、属组可读执行、其他无权) - 赋专属用户权限:
sudo setfacl -m u:backupuser:rwx /backup,sudo setfacl -m u:auditor:r-x /backup - 设默认ACL(关键!):
sudo setfacl -d -m u:backupuser:rwx /backup,sudo setfacl -d -m u:auditor:r-x /backup,sudo setfacl -d -m o::--- /backup - 强制 mask 限制最大权限:
sudo setfacl -m m::r-x /backup(确保即使误配 rwx,实际也只生效 r-x)
此时 ls -ld /backup 显示权限末尾为 +,getfacl /backup 可见 default: 开头的规则——这些就是未来所有新建备份文件自动继承的“隐藏ACL模板”。
三、加固备份文件自身,防覆盖与误删
ACL 控制访问,但无法阻止 root 或高权用户 rm 或 echo > file 覆盖。需叠加文件系统级隐藏权限:
- 对已生成的备份文件(如
/backup/full_20260528.tar.gz)加不可修改标记:sudo chattr +a /backup/full_20260528.tar.gz(仅允许追加,禁止覆盖/删除) - 对整个备份目录加只追加属性(谨慎!适用于日志型备份):
sudo chattr +a /backup;若需彻底防删,可用+i(但会阻断备份脚本写入,一般不推荐) - 检查是否生效:
lsattr /backup/full_20260528.tar.gz应显示-----a---------
四、验证与持续防护
配置不是终点,必须验证真实效果:
- 切换到普通用户:
sudo -u nobody ls /backup→ 应报 “Permission denied” - 切换到
auditor:sudo -u auditor ls /backup→ 可见列表,但sudo -u auditor rm /backup/*应失败 - 手动创建测试文件:
sudo -u backupuser touch /backup/test_new,再getfacl /backup/test_new→ 必须包含与父目录一致的user:auditor:r-x和mask,证明默认ACL生效 - 定期审计:
find /backup -type f -exec getfacl {} \; 2>/dev/null | grep -E "user:|group:|mask:" | head -20,抽查权限一致性
不复杂但容易忽略:默认ACL只对目录有效,且仅影响“新创建”的文件;已有备份文件需单独设置 ACL 或靠父目录基础权限兜底。把默认ACL和 chattr +a 配合使用,才能真正堵住横向越权和静默覆盖两条路径。











