RHEL7 提供的 tomcat 软件包通过创建目录和符号链接来支持多个实例。一旦创建了这样的多实例并将其打包为 RPM,多余的实例就会因 selinux 故障而无法启动。
解决方案是在 RPM 包中正确配置 selinux,但是我正在努力寻找如何执行此操作的规范描述。
RHEL7安装tomcat时selinux配置从何而来?
编辑:问题在在 RPM .spec 中设置 SELinux 上下文的正确方法是什么?,是否有人愿意真正阅读它,提到过时的 RHEL4 和 RHEL5 发行版,并且已经有 7 年历史了。正如这个问题中明确指出的,这是指 2018 年的 RHEL7。7 年前的问题的答案和这个问题的答案彼此非常不同。
答案1
SELinux配置由package提供selinux-policy-targeted
,其中包含发行版的默认策略配置,包括tomcat的SELinux配置。
我可以找到两个旧的 Fedora 打包草稿,描述 RPM 打包中的 SELinux 配置。
打包草案/SELinux建议通过分别执行和并在之后运行/来将文件标签配置包含在规范文件的%post
和部分中。%postun
semanage fcontext -a
semanage fcontext -d
restorecon
fixfiles
值得注意的是,正如指出的那样格雷厄姆·莱吉特,使用规范semanage
中%pre
或部分将添加完整的 python 堆栈以及安装时依赖项。使用will add ,这又会引入、和,作为安装时依赖项。%post
policycoreutils-python
restorecon
policycoreutils
sed
gawk
grep
提供所需文件标签规则的更好方法是通过 SELinux 策略模块。策略模块提供更清晰的界面来管理模块化策略(标签规则不与使用 完成的本地修改混合semanage
)。
对于具有文件标签规则的策略模块,您需要提供类型强制文件和文件上下文标签文件。即使您没有对策略添加任何修改,也需要类型强制文件。虚拟类型强制文件示例mymodule.te
:
policy_module(mymodule, 1.0)
文件标签规则如下mymodule.fc
:
/path/to/file -- gen_context(system_u:object_r:type_t,s0)
使用,可以使用[注1]selinux-policy-devel
编译模块包:
make -f /usr/share/selinux/devel/Makefile
关于打包政策模块,SELinux 策略模块打包草案
同样,建议使用规范文件的%post
和部分来使用和/%postun
安装策略。还提供了示例规范文件。semodule
restorecon
fixfiles
[注1]selinux-policy-devel
示例策略模块可以不使用checkmodule
和直接生成semodule_package
。这需要在没有宏的情况下编写策略文件。