Ubuntu中SELinux的备份与恢复指南
Ubuntu并非原生支持SELinux(默认使用AppArmor),若已手动安装启用SELinux,可通过以下步骤完成备份与恢复。
SELinux的核心配置文件(如策略定义、模式设置)位于/etc/selinux/目录,需优先备份:
sudo cp -r /etc/selinux /etc/selinux.bak # 复制整个目录到备份路径
或使用rsync(更高效,仅同步变化文件):
sudo rsync -a /etc/selinux/ ~/selinux-backup/ # 备份到用户家目录下的selinux-backup文件夹
安全上下文(Security Context)定义了文件/目录的访问权限,需通过ls -Z查看并记录关键路径(如/home、/var)的上下文。若需完整备份,可直接备份/var/lib/selinux/目录(存储上下文信息):
sudo cp -r /var/lib/selinux /var/lib/selinux.bak # 备份上下文数据库
若通过audit2allow生成过自定义策略模块(.pp文件),需备份模块存储路径(通常为/root/或/etc/selinux/):
sudo cp /root/mypol.pp ~/selinux-policy-backup/ # 示例:备份名为mypol的自定义模块
将备份的/etc/selinux/目录复制回原路径,覆盖现有文件:
sudo rsync -a ~/selinux-backup/ /etc/selinux/ # 从备份路径恢复配置
恢复后需检查/etc/selinux/config文件中的关键参数(如SELINUX=enforcing),确保模式符合需求。
使用restorecon命令递归恢复文件/目录的默认安全上下文(需指定路径,如根目录/或/home):
sudo restorecon -Rv / # 递归恢复根目录下所有文件/目录的默认上下文
若仅需恢复特定路径(如/home/user),可将/替换为目标路径。
若之前备份了自定义策略模块(.pp文件),需重新加载模块以应用策略:
sudo semodule -i /root/mypol.pp # 加载名为mypol的自定义模块
加载后建议重启系统(sudo reboot)使策略生效。
若SELinux处于disabled状态,需先修改/etc/selinux/config文件(将SELINUX=disabled改为SELINUX=enforcing),再重启系统激活SELinux:
sudo nano /etc/selinux/config # 编辑配置文件,修改SELINUX模式
sudo reboot # 重启系统
重启后通过sestatus命令验证状态(应显示SELinux status: enabled、Current mode: enforcing)。
/home目录存在),否则可能导致权限错误。semodule -l命令确认模块已加载,并测试相关功能是否正常。/home、/etc),避免误操作导致数据丢失。