SELinux¶
本インターフェースは、システムの SELinux ルールに対する基本的な読み取りと一般的な書き込み操作を可能にし、一部のシステム制限の設定や回避を可能にします。関連するインターフェースはシステムの機能に影響を与える可能性があるため、注意して使用してください。ご自身で SELinux に関する知識を持っている必要があります。
操作インスタンスの取得¶
開始する前に、まず SELinux インスタンスを取得する必要があります。
selinux = d.stub("SELinuxPolicy")
SELinux 状態の取得¶
以下のインターフェース呼び出しを使用して、SELinux ルールが有効化されているかどうかを取得します。
selinux.is_enabled()
>>> selinux.is_enabled()
True
以下のインターフェース呼び出しを使用して、現在が enforcing 状態かどうかを取得します。
selinux.get_enforce()
>>> selinux.get_enforce()
1
SELinux 状態の設定¶
以下のインターフェース呼び出しを使用して、SELinux を enforcing または permissive に設定します。
selinux.set_enforce(enable)
以下のインターフェース呼び出しを使用して enforcing に設定します。
>>> selinux.set_enforce(True)
1
以下のインターフェース呼び出しを使用して permissive に設定します。
>>> selinux.set_enforce(False)
0
新しいドメインの作成¶
以下のインターフェース呼び出しを使用して、SELinux で新しいドメインを作成します。
selinux.create_domain(domain_name)
>>> selinux.create_domain("hello_selinux")
True
ドメインを permissive に設定¶
以下のインターフェース呼び出しを使用して、SELinux ドメインを permissive 状態に設定します。
selinux.permissive(domain_name)
>>> selinux.permissive("untrusted_app")
True
ドメインを enforcing に設定¶
以下のインターフェース呼び出しを使用して、SELinux ドメインを enforcing 状態に設定します。
selinux.enforce(domain_name)
>>> selinux.enforce("untrusted_app")
True
制御ルールの詳細化¶
以下のインターフェース呼び出しを使用して、より詳細に allow ルールと disallow ルールを記述できます。
selinux.disallow(source, target, tclass, action)
selinux.allow(source, target, tclass, action)
ここで、source と target はそれぞれ送信元と送信先のコンテキストを表し、tclass はターゲットクラス、action は具体的な操作を表します。action は *(すべてを表す)または具体的なアクションのみをサポートします。すべてのパラメーターは、{binder system_app} のような標準ルール記法のような複数のコンテキストやアクションはサポートされていません。ここでは単一の名前のみを指定できます。以下はサンプル操作です。
>>> selinux.allow("hal_camera_default", "camera_vendor_data_file", "dir", "*")
上記のルールは、hal_camera_default が camera_vendor_data_file ディレクトリ (dir) に対するすべての操作権限を許可することを表します。同様に、disallow メソッドに変更すると、これらの権限を拒否することを表します。
>>> selinux.allow("hal_camera_default", "camera_vendor_data_file", "dir", "search")
上記のように、search のような詳細なアクションを提供することもできます。