在RPM .spec中设置SELinux上下文的正确方法是什么?


14

我正在尝试构建一个针对RHEL4和5的RPM。现在,我打来电话chcon%post但是有多个Google条目说“这不是您应该做的”,在正确方法的帮助下非常有限。我还注意到fixfiles -R mypackage check说正确的文件是错误的(正如预期的那样; RPM DB没有意识到我想要的)。

  • 我说具体RHEL4,因为它并没有具备semanage这似乎是正确的方式去做一个。(添加新策略,然后restorecon在中的目录上运行%post。)

    • 我也不需要我自己的上下文,只需httpd_cache_t在非标准目录上即可。
  • 我还看到了“让它cpio来照顾它”-但是然后我遇到了一个新问题,即非root RPM构建用户无法chcon在构建目录上运行。我作弊并sudo进入了规范文件,但这似乎并不重要。

Answers:


9

Fedora包装指南》中有一份草稿文档,解释了如何处理包装中的SELinux,并且使用semanage。没有semanage,似乎支持RHEL 4会很困难,而且没有办法解决。

根据rpm 4.9.0发行说明,rpm中直接支持一些用于管理SELinux策略的支持,但是从历史上看,它已被破坏:

  • 较早版本的RPM在规范中支持%policy指令,用于将SELinux策略附加到程序包头中,但这从来没有真正适用于任何东西。规范中对%policy指令的任何使用都应删除,因为此未使用的指令会阻止使用RPM 4.9.0及更高版本进行构建,而对于较旧的版本则不执行任何操作。
  • 从RPM 4.9.0开始,通过规范中的新%sepolicy部分支持SELinux策略打包。不能构建此类软件包,但也可以将其安装在较旧的RPM版本上(但不会以任何方式使用随附的策略)。

我在那里没有提到文件上下文,也没有找到任何直接文件上下文支持的提法(如%attr%files节所述)。无论如何,RHEL 6似乎仅在rpm 4.8.0上运行,因此(除非我错过了一些东西),semanage路由是一样好的,因为我们至少可以在RHEL 7之前使用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.