CentOS SELinux迁移配置步骤
在迁移前,需完整备份源系统的SELinux配置文件、策略及安全上下文,避免数据丢失。
sudo cp -r /etc/selinux /etc/selinux.baksudo cp -r /var/lib/selinux /var/lib/selinux.baksudo cp /etc/selinux/policy/*.pp /etc/selinux.policies.bak若源系统存在自定义策略模块(如通过audit2allow生成的模块),需导出以便迁移到目标系统。
sudo yum install policycoreutils-python-utils -yaudit.log提取AVC拒绝事件并生成模块(示例):sudo grep avc /var/log/audit/audit.log | audit2allow -M my_custom_policymy_custom_policy.pp(二进制策略文件)和my_custom_policy.te(源码文件)将备份的SELinux文件和策略模块复制到目标CentOS系统的对应目录:
sudo scp -r /etc/selinux.bak/* user@target_host:/etc/selinux/sudo scp -r /var/lib/selinux.bak/* user@target_host:/var/lib/selinux/sudo scp /etc/selinux.policies.bak/*.pp user@target_host:/etc/selinux/policy/确保目标系统的SELinux状态与源系统一致(如Enforcing),并加载迁移的策略模块。
sudo vi /etc/selinux/config,确认SELINUX=enforcing(若源系统为Enforcing模式);若需临时切换模式,可使用sudo setenforce 1(Enforcing)或sudo setenforce 0(Permissive)。sudo semodule -i /etc/selinux/policy/my_custom_policy.pp(替换为实际模块名)通过以下命令确认SELinux状态、策略及上下文是否正确应用:
sudo sestatus(需显示SELinux status: enabled、Current mode: enforcing及正确的Loaded policy name)。ls -lZ /path/to/migrated/file(对比源系统文件的安全上下文是否一致)。sudo semodule -l(确认自定义策略模块已加载)若迁移后文件的安全上下文异常(如ls -lZ显示unconfined_u:object_r:default_t:s0),可使用以下命令恢复:
sudo restorecon -Rv /path/to/migrated_directorysudo restorecon -v /path/to/migrated_file/var/www/html、/home等)需与源系统一致,否则安全上下文可能无法正确应用。