Menu Close

Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

4.14. ファイル名の移行

ファイル名の 遷移 機能により、ポリシーライターはポリシー移行ルールを書き込む際にファイル名を指定できます。以下のような状態となっているルールを作成することができます。A_t というラベルが付いたプロセスによって B_t というラベルが付いたオブジェクトクラスが作成され、指定されたオブジェクトクラスの名前が objectname の場合、ラベル C_t が取得されます。このメカニズムにより、システムのプロセスをより詳細に制御できます。
ファイル名の移行がない場合、オブジェクトにラベルを付ける方法は 3 つあります。
  • デフォルトでは、オブジェクトは親ディレクトリーからラベルを継承します。たとえば、ユーザーが etc _t というラベルが付いたディレクトリーにファイルを作成した場合には、ファイルに etc_t というラベルが付けられます。ただし、この方法は、ラベルが異なるディレクトリー内に複数のファイルを持つことが望ましい場合に便利です。
  • ポリシー作成者は、以下を示すポリシーにルールを作成できます。A_t タイプのプロセスが B_t というラベルが付いたディレクトリーに指定されたオブジェクトクラスを作成する場合、 オブジェクトは新しい C_t ラベルを取得します。このプラクティスは、1 つのプログラムが同じディレクトリーに複数のオブジェクトを作成する場合に問題があり、各オブジェクトには別個のラベルが必要です。さらに、作成されたオブジェクトの名前が指定されていないため、これらのルールは部分的な制御のみを提供します。
  • 特定のアプリケーションでは、このようなアプリケーションが、特定のパスのラベルがあるのかをシステムに要求できるようにする SELinux 認識があります。次に、これらのアプリケーションはカーネルを要求し、必要なラベルの付いたオブジェクトを作成します。SELinux 認識のあるアプリケーションの例は、rpm パッケージマネージャー、restorecon ユーティリティー、または udev デバイスマネージャーです。ただし、SELinux 認識でファイルまたはディレクトリーを作成するすべてのアプリケーションに指示することはできません。作成後に、正しいラベルでオブジェクトの再ラベル付けが必要になることがよくあります。それ以外の場合は、制限のあるドメインがオブジェクトの使用を試みると、AVC メッセージが返されます。
ファイル名の移行機能は、誤ったラベルに関連する問題を減らし、システムをよりセキュアに強化します。ポリシー作成者は、特定のアプリケーションが、指定されたディレクトリーにある名前が指定された名前のファイルしか作成できないと適切に記述できます。ルールはファイルパスではなく、ファイル名を考慮に入れます。これはファイルパスのベース名です。ファイル名の遷移は、strcmp() 関数で行われる完全一致を使用することに注意してください。正規表現またはワイルドカード文字の使用は考慮されません。
注記
ファイルパスは、カーネルとファイル名の移行によって異なるため、ラベルの判別にパスを使用しません。その結果、この機能は初期ファイル作成にのみ影響し、すでに作成されるオブジェクトの正しくないラベルを修正しません。

例4.2 ファイル名の移行に関するポリシールールの例

以下の例では、ファイル名の移行が含まれるポリシールールを示しています。
filetrans_pattern(unconfined_t, admin_home_t, ssh_home_t, dir, ".ssh")
このルールは、unconfined_t タイプのプロセスが admin_home_t というディレクトリーに ~/.ssh/ ディレクトリーを作成すると、~/.ssh / ディレクトリーはラベル ssh_home_t を取得します
ファイル名の移行で作成されたポリシールールの例を以下に示します。
filetrans_pattern(staff_t, user_home_dir_t, httpd_user_content_t, dir, "public_html")
filetrans_pattern(thumb_t, user_home_dir_t, thumb_home_t, file, "missfont.log")
filetrans_pattern(kernel_t, device_t, xserver_misc_device_t, chr_file, "nvidia0")
filetrans_pattern(puppet_t, etc_t, krb5_conf_t, file, "krb5.conf")
注記
ファイル名の移行機能は主にポリシー作成者に影響しますが、ユーザーは、含まれるディレクトリーのデフォルトラベルでほぼ常に作成されるファイルオブジェクトではなく、一部のファイルオブジェクトはポリシーで指定されるものとは異なるラベルを持つことに注意してください。