Compiling

在 RPM .spec 中設置 SELinux 上下文的正確方法是什麼?

  • July 28, 2011

我正在嘗試建構一個以 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 發行說明,在 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 之前我們將能夠做到。

引用自:https://unix.stackexchange.com/questions/16458