4.14. ファイル名の推移
file name transition 機能を使用すると、ポリシーの移行ルールを作成する際に、ポリシーの作成者がファイル名を指定できます。以下のようなルールを作成できます。
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")
注記
ファイル名の変更機能は主にポリシー作成者に影響を及ぼしますが、ユーザーは、ほぼ常に含まれるディレクトリーのデフォルトラベルで作成されるファイルオブジェクトの代わりに、ポリシーで指定されているように、一部のファイルオブジェクトには異なるラベルがあることに注意してください。