50.2.2. ファイルシステムの再ラベル付け
ファイルシステム全体の再ラベル付けが必要になることはありません。これは通常、SELinux のファイルシステムに初めてラベルを付けるか、ターゲットから strict ポリシーに変更するなど、異なるタイプのポリシー間で切り替える場合にのみ発生します。
init を使用したファイルシステムの再ラベル付け
ファイルシステムの再ラベル付けに推奨される方法は、マシンを再起動することです。これにより、init
プロセスが再ラベル付けを実行し、アプリケーションの起動時に正しいラベルがあり、それらのラベルが適切な順序で開始されるようになります。再起動せずにファイルシステムに再ラベル付けすると、一部のプロセスが、誤ったコンテキストで実行し続ける可能性があります。すべてのデーモンが再起動し、正しいコンテキストで実行されていることを手作業で確認することは難しい場合があります。
この方法を使用してファイルシステムの再ラベル付けを行うには、以下の手順に従います。
touch /.autorelabel reboot
起動時に
init.rc
は /.autorelabel
の存在をチェックします。このファイルが存在する場合は、SELinux が完全なファイルシステムの再ラベル付けを実行し( /sbin/fixfiles -f -F relabel コマンドを使用して)、/.autorelabel
を削除します。
修正ファイルを使用したファイルシステムの再ラベル付け
fixfiles コマンドを使用してファイルシステムの再ラベル付けをしたり、RPM データベースに基づいて再ラベル付けしたりできます。
次のコマンドを使用して、fixfiles コマンドのみを使用してファイルシステムの再ラベル付けを行います。
fixfiles relabel
以下のコマンドを使用して、RPM データベースに基づいてファイルシステムの再ラベル付けを行います。
fixfiles -R <packagename> restore
fixfiles を使用してパッケージからコンテキストを復元する方が安全で、より高速です。
注意
再起動せずにファイルシステム全体で fixfiles を実行すると、システムが不安定になる可能性があります。
再ラベル付け操作が、システムの起動時に実施されていたポリシーとは異なる新しいポリシーを適用する場合、既存のプロセスが不正確で安全でないドメインで実行されている可能性があります。たとえば、新しいポリシーでそのプロセスの移行が許可されないドメインにプロセスが配置され、そのプロセスだけに予期しないパーミッションを付与する可能性があります。
さらに、fixfiles の再 ラベルの 1 つは、
/tmp/
を確実に再ラベル付けできないため、空の /tmp/
に対する承認を要求します。fixfiles は root として実行されるため、アプリケーションが依存している一時ファイルは消去されます。これにより、システムが不安定になったり、予期せず動作したりする可能性があります。