Gra*_*ett 11 rpm packaging selinux
RHEL7 提供的 tomcat 包通过创建目录和符号链接支持多个实例。一旦创建了这样的多个实例并将其打包为 RPM,由于 selinux 故障,额外的实例将无法启动。
解决方案是在 RPM 包装中正确配置 selinux,但是我正在努力寻找有关如何执行此操作的规范描述。
RHEL7安装tomcat时,selinux的配置从何而来?
编辑:在 RPM .spec 中设置 SELinux 上下文的正确方法是什么?,有没有人真正读过它,提到过时的 RHEL4 和 RHEL5 发行版,并且已经 7 岁了。正如这个问题中明确指出的,这是指 2018 年的 RHEL7。 7 年前的问题的答案,和这个问题的答案截然不同。
SELinux 配置由selinux-policy-targeted
包提供,其中包含分发的默认策略配置,包括 tomcat 的 SELinux 配置。
我可以找到两个旧的 Fedora 打包草稿,描述了 RPM 打包中的 SELinux 配置。
PackagingDrafts/SELinux建议通过分别执行和并在之后运行/来在规范文件的%post
和%postun
部分中包含文件标签配置。semanage fcontext -a
semanage fcontext -d
restorecon
fixfiles
正如Graham Legett所指出的,需要注意的是,使用semanage
in%pre
或%post
部分规范将添加完整的 python 堆栈以及policycoreutils-python
安装时间依赖项。使用restorecon
将 add policycoreutils
,这又引入sed
,gawk
和grep
,作为安装时间依赖项。
提供所需文件标签规则的更好方法是使用 SELinux 策略模块。策略模块提供更清晰的界面来管理模块化策略(标签规则不与使用 完成的本地修改混合semanage
)。
对于带有文件标签规则的策略模块,您需要提供类型强制文件和文件上下文标签文件。即使您不对策略添加任何修改,也需要类型强制文件。一个示例虚拟类型强制文件mymodule.te
:
policy_module(mymodule, 1.0)
Run Code Online (Sandbox Code Playgroud)
文件标签规则在mymodule.fc
并遵循相同的:
/path/to/file -- gen_context(system_u:object_r:type_t,s0)
Run Code Online (Sandbox Code Playgroud)
用selinux-policy-devel
,模块包可以用[注1]编译:
make -f /usr/share/selinux/devel/Makefile
Run Code Online (Sandbox Code Playgroud)
关于打包策略模块,SELinux Policy Modules Packaging Draft
同样推荐使用规范文件的%post
和%postun
部分来安装策略,使用semodule
和restorecon
/ fixfiles
。还提供了一个示例规范文件。
[注 1]示例策略模块可以不selinux-policy-devel
使用checkmodule
和semodule_package
直接生成。它需要在没有宏的情况下编写策略文件。
归档时间: |
|
查看次数: |
2376 次 |
最近记录: |