RPM .specでSELinuxコンテキストを設定する正しい方法は何ですか? (2018年RHEL7)

RPM .specでSELinuxコンテキストを設定する正しい方法は何ですか? (2018年RHEL7)

RHEL7 が提供する tomcat パッケージは、ディレクトリとシンボリックリンクを生成して複数のインスタンスをサポートします。これらの複数のインスタンスが作成され、RPM にパッケージ化されると、selinux エラーのために追加インスタンスが起動しません。

解決策はRPMパッケージでselinuxを適切に設定することですが、これを行う方法の標準的な説明を見つけるのが困難です。

RHEL7にtomcatをインストールするときのselinux設定はどこから来ますか?

編集:問題はRPM .specでSELinuxコンテキストを設定する正しい方法は何ですか?実際に読んでみたい人がいれば、RHEL4とRHEL5ディストリビューションが昔ながらで7年になったと言います。この質問に明確に示されているように、これは2018年のRHEL7を意味します。 7年前の質問に対する答えとこの質問に対する答えは非常に異なります。

答え1

selinux-policy-targetedSELinux設定は、TomcatのSELinux設定を含むディストリビューションのデフォルトポリシー設定を含むパッケージで提供されます。

RPMパッケージングのSELinux構成を説明する2つの古いFedoraパッケージングドラフトを見つけることができました。

パッケージングドラフト/SELinuxとを別々に実行し、後で/を実行してspecファイルのセクションに%postファイルタグ設定を含めることをお勧めします。%postunsemanage fcontext -asemanage fcontext -drestoreconfixfiles

指摘したように注目する価値があります。グラハム・レゲット、仕様、semanageまたは%preセクションを使用すると、Pythonスタック全体とインストール時間の依存関係が追加されます。を使用すると、addがインストール時間の依存関係として、およびが導入されます。%postpolicycoreutils-pythonrestoreconpolicycoreutilssedgawkgrep

必要なファイルラベル付け規則を提供するより良い方法は、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ポリシーモジュールのパッケージングドラフト 同様に、仕様ファイルの and セクションを活用した%postand/インストールポリシーを使用することをお勧めします。%postunサンプル仕様ファイルも提供されます。semodulerestoreconfixfiles


[注1]selinux-policy-develサンプル戦略モジュールは、checkmodule使用せずに直接作成できますsemodule_package。これを行うには、マクロなしでポリシーファイルを作成する必要があります。

関連情報