在 Ubuntu 上,需要说明一点:
Ubuntu 默认并没有启用 SELinux,而是使用 AppArmor 作为默认 MAC(强制访问控制)安全模块。
只有当你 手动安装并启用了 SELinux(如 selinux-basics、selinux-policy-*)时,才需要备份 SELinux 规则。
下面分情况说明。
getenforce
Disabled / Permissive / Enforcingcommand not found,说明 SELinux 未安装查看当前模式:
sestatus
SELinux 规则主要来自以下几部分:
.pp 文件)getsebool -a > selinux_booleans.txt
恢复:
setsebool -P <name> <on|off>
(可写脚本批量恢复)
列出模块:
semodule -l
备份所有自定义模块(推荐):
mkdir selinux_backup
semodule -l | awk '{print $1}' | while read m; do
semodule -E "$m" -o "selinux_backup/$m.pp"
done
恢复模块:
semodule -i selinux_backup/*.pp
semanage fcontext -l > selinux_fcontexts.txt
恢复:
while read line; do
semanage fcontext $line
done < selinux_fcontexts.txt
restorecon -Rv /
mkdir -p /backup/selinux
getsebool -a > /backup/selinux/booleans.txt
semanage fcontext -l > /backup/selinux/fcontexts.txt
semodule -l | awk '{print $1}' | while read m; do
semodule -E "$m" -o "/backup/selinux/$m.pp"
done
如果你 其实是想备份 Ubuntu 的安全规则,你可能真正需要的是:
sudo tar czf apparmor_backup.tar.gz /etc/apparmor.d
查看状态:
sudo aa-status
| 系统 | 安全模块 | 备份方式 |
|---|---|---|
| Ubuntu 默认 | AppArmor | /etc/apparmor.d |
| 手动启用 SELinux | SELinux | 布尔值 + 模块 + 上下文 |
如果你愿意,可以告诉我:
我可以给你一套 精确可执行的备份脚本。