web-dev-qa-db-ja.com

RPM .specでSELinuxコンテキストを設定する適切な方法は何ですか? (2018年のRHEL7)

RHEL7提供のTomcatパッケージは、ディレクトリとシンボリックリンクの作成を通じて複数のインスタンスをサポートします。このような複数のインスタンスが作成されてRPMとしてパッケージ化されると、selinuxの障害のために、追加のインスタンスが起動に失敗します。

解決策はRPMパッケージでselinuxを正しく設定することですが、これを行う方法の正規の説明を見つけるのに苦労しています。

TomcatがRHEL7にインストールされている場合、selinux構成はどこから取得されますか?

編集: RPM .specでSELinuxコンテキストを設定する適切な方法は何ですか? の質問は、実際にそれを読んだり、廃止されたRHEL4およびRHEL5ディストリビューションを参照したりして、7歳です。この質問で明確に述べたように、これは2018年のRHEL7を指します。7年前の質問に対する答えと、この質問に対する答えは、非常に異なります。

7
Graham Leggett

SELinux構成は、TomcatのSELinux構成を含む、ディストリビューションのデフォルトのポリシー構成を含むselinux-policy-targetedパッケージによって提供されます。

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

PackagingDrafts/SELinux は、それぞれ%postおよび%postunを実行し、restoreconを実行することにより、スペックファイルのsemanage fcontext -aおよびsemanage fcontext -dセクションにファイルのラベル付け構成を含めることを推奨します/ fixfiles

Graham Legett で指摘されているように、仕様の%preまたは%postセクションでsemanageを使用すると、完全なpythonスタックが追加されることに注意してください。 policycoreutils-pythonとともに、インストール時の依存関係として。 restoreconを使用すると、policycoreutilsが追加されます。これにより、sedgawkgrepがインストール時の依存関係として取り込まれます。

必要なファイルラベル付けルールを提供するより良い方法は、SELinuxポリシーモジュールによるものです。ポリシーモジュールは、モジュラーポリシーを管理するためのより明確なインターフェイスを提供します(ラベル付けルールは、semanageで行われたローカル変更と混合されません)。

ファイルラベル付けルールを含むポリシーモジュールの場合、タイプ強制ファイルとファイルコンテキストラベル付けファイルを提供する必要があります。ポリシーに変更を追加しない場合でも、タイプ施行ファイルが必要です。ダミー型施行ファイルの例mymodule.te

policy_module(mymodule, 1.0)

ファイルのラベル付け規則はmymodule.fcにあり、同じに従います。

/path/to/file   --  gen_context(system_u:object_r:type_t,s0)

selinux-policy-develを使用すると、モジュールパッケージを【注1】

make -f /usr/share/selinux/devel/Makefile

ポリシーモジュールのパッケージ化については、 SELinuxポリシーモジュールパッケージ化ドラフト でも、仕様ファイルの%postおよび%postunセクションを使用して、semoduleおよびrestorecon/fixfilesを使用してポリシーをインストールすることをお勧めします。サンプルスペックファイルも提供されています。


【注1】 サンプルのポリシーモジュールは、checkmoduleおよびselinux-policy-develを直接使用することにより、semodule_packageなしで生成できます。マクロなしでポリシーファイルを作成する必要があります。

4
sebasth