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

Modified on: Wed, 11 Jul 2018 15:40:30 +0800

我正在尝试构建一个针对RHEL4和5的RPM。现在我从chcon调用%post但是多个Google条目说“这不是你应该怎么做的“在正确的方式上提供非常有限的帮助”。我还注意到fixfiles -R mypackage check表示文件错误(正如预期的那样; RPM DB没有意识到我想要的东西)..

  • 我特别说RHEL4,因为 semanage,这似乎是正确的方法之一。 (添加新策略,然后在restorecon中的目录上运行%post。)


    • 我也不需要我自己的上下文,只需要在非标准目录上的httpd_cache_t
  • 我也看过“让cpio处理它” - 但后来我遇到一个新问题,即非root RPM构建用户无法运行chcon在构建目录上。我在规范文件中作弊并有sudo,但这似乎无关紧要。

最佳答案

Fedora打包指南有一份草案文档,解释了如何在包中处理SELinux,并使用semanage。如果没有semanage,看起来支持RHEL 4将会成为一个黑客,并且没有办法解决这个问题。

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

  

      
  • 较早版本的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。


相关问答

添加新评论