在 Ubuntu 上“迁移 SELinux 策略”通常有以下几种场景,我按常见需求分别说明,你可以对号入座。
selinux / selinux-basics确认是否启用 SELinux:
getenforce
sestatus
直接复制策略文件
SELinux 策略一般在:
/etc/selinux/
/etc/selinux/targeted/
迁移步骤:
# 原机器
tar czf selinux-policy.tar.gz /etc/selinux
# 目标机器
scp selinux-policy.tar.gz user@target:/tmp
tar xzf /tmp/selinux-policy.tar.gz -C /
然后:
restorecon -Rv /
⚠️ 注意:
targeted 策略如果你自己写过的策略模块:
# 导出模块
semodule -l | grep your_module
semodule -E your_module
# 会生成
your_module.pp
迁移:
scp your_module.pp target:/tmp
semodule -i /tmp/your_module.pp
查看:
semodule -l | grep your_module
不推荐直接复制
原因:
推荐方式:
.te 文件)步骤:
# 在源系统
semodule -E myapp
# 得到 myapp.te
# 在 Ubuntu
apt install selinux-policy-dev
make -f /usr/share/selinux/devel/Makefile myapp.pp
semodule -i myapp.pp
这是策略重写,不是文件复制。
思路:
/etc/apparmor.d/.te 策略示例:
policy_module(myapp, 1.0)
type myapp_t;
type myapp_exec_t;
init_daemon_domain(myapp_t, myapp_exec_t)
# 重置文件标签
restorecon -Rv /
# 检查拒绝日志
ausearch -m AVC -ts recent
如果你能告诉我:
我可以给你更精确的迁移命令。