温馨提示×

centos selinux如何备份和还原

小樊
37
2025-12-11 11:41:25
栏目: 智能运维

CentOS SELinux 备份与还原实用指南

一、备份清单与命令

  • 建议按以下清单逐项备份,覆盖策略配置、布尔值、文件上下文、自定义模块与审计线索,便于完整还原。
  • 操作前准备:安装管理工具(如未安装)并确认 SELinux 状态。
备份项 关键命令 保存内容说明
配置文件 sudo cp /etc/selinux/config /backup/selinux-config-$(date +%F).bak 模式与策略类型(如 SELINUX=enforcing/permissive/disabledSELINUXTYPE=targeted
布尔值 getsebool -a > /backup/selinux-booleans-$(date +%F).txt 各服务的布尔开关状态,便于逐条恢复
文件上下文规则 semanage fcontext -l > /backup/selinux-fcontext-$(date +%F).txt 路径到类型的映射规则(如 /var/www(/.*)? → httpd_sys_content_t
当前文件上下文快照 find / -xdev -type f -exec ls -Z {} ; > /backup/file-contexts-f-$(date +%F).txt && find / -xdev -type d -exec ls -Zd {} ; >> /backup/file-contexts-d-$(date +%F).txt 现有文件/目录的实际 安全上下文,用于核对与排查
自定义策略模块 semodule -l grep -v ^Module
审计线索 sudo ausearch -m avc -ts recent > /backup/selinux-avc-recent-$(date +%F).log 便于用 audit2allow 生成最小权限模块
策略包清单 rpm -ql selinux-policy-targeted > /backup/selinux-policy-files-$(date +%F).txt 参考:确认策略包安装文件清单(包名因版本可能为 selinux-policy-targeted 等)
  • 安装工具提示(如命令不存在):yum/dnf 安装 policycoreutils-python-utils(提供 semanage、semodule 等)。以上命令覆盖配置、布尔值、fcontext、模块与审计日志等关键项,适合迁移与灾备。

二、还原步骤

  • 还原顺序建议:先恢复配置与策略,再恢复文件上下文,最后处理自定义模块与审计线索。
    1. 恢复配置文件
    • sudo cp /backup/selinux-config-*.bak /etc/selinux/config
    • 如需变更生效:setenforce 0/1 临时切换模式;或重启系统(涉及 disabled ↔ enforcing 切换时必须重启)。
    1. 恢复布尔值
    • 逐行读取备份并恢复:while read b; do setsebool “${b%=}" "${b#=}”; done < /backup/selinux-booleans-*.txt
    1. 恢复文件上下文规则
    • 逐条恢复 fcontext:while read line; do [[ “$line” =~ ^/ ]] && semanage fcontext -a -t “${line##* }” "${line%% }"; done < /backup/selinux-fcontext-.txt
    • 应用上下文:restorecon -Rv /(或仅对变更路径执行)
    1. 恢复自定义策略模块
    • semodule -i /backup/module-*.pp
    1. 核对与排查
    • sestatus 查看模式与策略;ausearch -m avc -ts recent 检查是否仍有拒绝;必要时用 audit2allow 生成最小模块再导入。
    1. 系统无法启动或大量文件上下文异常
    • 进入救援/单用户模式,创建 /.autorelabel 并重启,触发全量重新标记(仅在必要时使用)。

三、整系统迁移与镜像场景

  • 使用 tar 打包并保留 SELinux 属性
    • 排除虚拟/临时文件系统:tar --numeric-owner --selinux --xattrs -czvpPf /backup/full-$(date +%F).tar.gz -X /root/exclude.txt /
    • 恢复:tar --numeric-owner --selinux --xattrs -xzvpPf /backup/full-*.tar.gz -C /
    • 如做过全量重标记或迁移后首次启动异常,可 touch /.autorelabel 并重启。
  • 使用镜像/克隆工具
    • 部分工具/流程在导出镜像时会要求将 SELINUX=disabled 才能正常制作或启动镜像;完成迁移后再改回 enforcing 并重启。务必在恢复后执行一次上下文校验与必要的重标记。

四、注意事项与常见问题

  • 模式切换要点
    • setenforce 0/1 仅切换 Enforcing/Permissive,不修改配置文件;从/到 Disabled 必须编辑 /etc/selinux/config 并重启。
  • 何时需要全量重标记
    • 大量文件被误标或系统迁移后上下文不一致,创建 /.autorelabel 并重启;避免频繁全量重标记以免影响业务。
  • 备份一致性
    • 备份与还原期间尽量避免大规模文件变更;对数据库等关键负载,先停写或置于维护窗口。
  • 策略与模块
    • 自定义模块优先用 semodule -E 导出 .pp;不建议直接拷贝 /var/lib/selinux 目录,恢复时以配置、规则与模块为主,必要时再参考系统策略包清单。
  • 审计与最小权限
    • 出现 AVC denied 时先查 /var/log/audit/audit.log,用 audit2allow 生成最小模块,避免粗放放宽策略。

0