3.15. Software Collection SELinux サポート
Software Collection は、別のディレクトリーに Software Collection パッケージをインストールするように設計されているため、SELinux が代替ディレクトリーを認識できるように、必要な SELinux ラベルを設定します。
Software Collection パッケージのファイルシステム階層が、対応する従来のパッケージのファイルシステム階層を省略した場合は、semanage fcontext および restorecon コマンドを実行して SELinux ラベルを設定できます。
たとえば、Software Collection パッケージの
/opt/provider/software_collection_1/root/usr/
ディレクトリーが従来のパッケージの /usr/
ディレクトリーを省略する場合は、以下のように SELinux ラベルを設定します。
semanage fcontext -a -e /usr /opt/provider/software_collection_1/root/usr
restorecon -R -v /opt/provider/software_collection_1/root/usr
上記のコマンドは、
/usr/
ディレクトリー内のディレクトリーとファイルがすべて、/opt/provider/software_collection_1/root/usr/
ディレクトリーにあるかのように SELinux によってラベル付けされるようにします。
3.15.1. Red Hat Enterprise Linux 7 での SELinux サポート
Red Hat Enterprise Linux 7 の Software Collection をパッケージ化する際に、以下を Software Collection メタパッケージの
%post
セクションに追加し、SELinux ラベルを設定します。
semanage fcontext -a -e /usr /opt/provider/software_collection_1/root/usr
restorecon -R -v /opt/provider/software_collection_1/root/usr
selinuxenabled && load_policy || :
最後のコマンドは、新たに作成された SELinux ポリシーが適切に読み込まれ、Software Collection のパッケージによりインストールされたファイルが、正しい SELinux コンテキストで作成されるようにします。メタパッケージでこのコマンドを使用すると、Software Collection のすべてのパッケージに restorecon コマンドを含める必要がありません。
この semanage fcontext コマンドは policycoreutils-python パッケージにより提供されるため、Software Collection メタパッケージの
Requires
に policycoreutils-python
を追加することが重要です。
注記
Red Hat Enterprise Linux 7 では、サービスを起動する SELinux の機能が大幅に 変更 になりました。最も重要な点として、systemd サービスファイルで scl enable ... ラッパーを使用すると、
unconfined_service_t
コンテキストを使用してサービスが 制限のないプロセス として実行されます。このコンテキストには設計による移行ルールがないため、SELinux ポリシーにより示されるターゲットの SELinux コンテキストに移行することができません。つまり、scl enable ... は、開始するサービスが SELinux を使用して制限される場合は、Red Hat Enterprise Linux 7 では使用できません。