RHEL7提供のTomcatパッケージは、ディレクトリとシンボリックリンクの作成を通じて複数のインスタンスをサポートします。このような複数のインスタンスが作成されてRPMとしてパッケージ化されると、selinuxの障害のために、追加のインスタンスが起動に失敗します。
解決策はRPMパッケージでselinuxを正しく設定することですが、これを行う方法の正規の説明を見つけるのに苦労しています。
TomcatがRHEL7にインストールされている場合、selinux構成はどこから取得されますか?
編集: RPM .specでSELinuxコンテキストを設定する適切な方法は何ですか? の質問は、実際にそれを読んだり、廃止されたRHEL4およびRHEL5ディストリビューションを参照したりして、7歳です。この質問で明確に述べたように、これは2018年のRHEL7を指します。7年前の質問に対する答えと、この質問に対する答えは、非常に異なります。
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
が追加されます。これにより、sed
、gawk
、grep
がインストール時の依存関係として取り込まれます。
必要なファイルラベル付けルールを提供するより良い方法は、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
なしで生成できます。マクロなしでポリシーファイルを作成する必要があります。