RHEL7.4 Kickstart安装配置Tailoring文件后OSCAP插件无法修复的问题咨询
我之前在RHEL7.4环境下折腾OSCAP插件搭配Kickstart的时候,刚好碰到过和你一模一样的问题——找不到合适的时机提前把Tailoring文件复制到位,导致OSCAP修复直接失败。给你几个经过验证的解决方案,你可以根据自己的环境选:
方案1:用Kickstart的%pre脚本提前部署文件
%pre是Kickstart安装流程中最早执行的脚本阶段,此时目标系统已经被挂载到/mnt/sysimage,我们可以直接在这里把Tailoring文件复制到目标路径。
操作步骤:
- 把你的Tailoring文件(比如
my-tailoring.xml)放到和Kickstart文件同目录的HTTP服务器,或者嵌入到安装镜像中 - 在Kickstart文件里添加
%pre段:
%pre # 创建目标目录(防止不存在) mkdir -p /mnt/sysimage/root/openscap_data # 从HTTP服务器下载Tailoring文件到目标系统 curl -o /mnt/sysimage/root/openscap_data/my-tailoring.xml http://your-server-ip/path/to/my-tailoring.xml # 如果是镜像内的文件,用cp命令:cp /run/install/repo/my-tailoring.xml /mnt/sysimage/root/openscap_data/ %end
划重点:
/mnt/sysimage是Kickstart安装时目标系统的根目录挂载点,所有对目标系统的文件操作都必须基于这个路径。
方案2:调整%post脚本的执行顺序
如果你的OSCAP修复是通过%post脚本触发的,那可以把复制Tailoring文件的逻辑放在不带chroot的%post阶段,这个阶段会在OSCAP插件执行前完成。
示例代码:
# 先执行不带chroot的%post,直接操作目标系统挂载点 %post --nochroot # 复制Tailoring文件到目标系统的指定路径 cp /path/to/my-tailoring.xml /mnt/sysimage/root/openscap_data/ %end # 再执行OSCAP修复的%post脚本 %post # 执行OSCAP修复命令,此时Tailoring文件已经存在 oscap xccdf eval --remediate --profile xccdf_org.ssgproject.content_profile_stig-rhel7-disa --tailoring-file /root/openscap_data/my-tailoring.xml /usr/share/xml/scap/ssg/content/ssg-rhel7-ds.xml %end
方案3:把Tailoring文件打包进自定义RPM
既然你已经用scap-workbench创建了自定义RPM,最省心的方式就是直接把Tailoring文件打包到这个RPM里,这样安装RPM时文件会自动部署到指定路径,完全不需要额外复制步骤。
操作步骤:
- 在你构建自定义RPM的目录结构中,创建
root/openscap_data目录,并把Tailoring文件放进去 - 修改RPM的spec文件,添加文件安装规则:
%files # 新增Tailoring文件的安装路径 /root/openscap_data/my-tailoring.xml # 保留你原来自定义RPM的其他文件规则...
- 重新构建RPM,然后在Kickstart里安装这个RPM即可——OSCAP插件执行时就能直接找到Tailoring文件了。
内容的提问来源于stack exchange,提问作者zachlowry
相关产品推荐
相关产品推荐

