Selinux ルールの読み書き

このインターフェースを使用すると、システムの Selinux ルールに対して基本的な読み取りおよび通常の書き込み操作を行うことができ、一部のシステム制限を設定または回避できます。関連するインターフェースはシステムの機能に影響を与える可能性があるため、慎重に使用してください。Selinux に関する知識が必要です。

操作インスタンスの取得

開始する前に、まず selinux インスタンスを取得する必要があります。

selinux = d.stub("SelinuxPolicy")

Selinux ステータスの取得

以下のインターフェース呼び出しで、Selinux ルールが有効になっているかどうかを取得します。

selinux.enabled()
>>> selinux.is_enabled( )
True

以下のインターフェース呼び出しで、現在が enforce 状態であるかどうかを取得します。

selinux.get_enforce()
>>> selinux.get_enforce()
1

Selinux ステータスの設定

以下のインターフェース呼び出しで、Selinux を enforce または permissive に設定します。

selinux.set_enforce(enable)

以下のインターフェース呼び出しで、enforce に設定します。

>>> 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

ドメインを enforce に設定

以下のインターフェース呼び出しで、Selinux ドメインを enforce 状態に設定します。

selinux.enforce(domain_name)
>>> selinux.enforce("untrusted_app")
True

制御ルールの詳細化

以下のインターフェース呼び出しで、allow と disallow ルールをより詳細に書き込むことができます。

selinux.disallow(source, target, tclass, action)
selinux.allow(source, target, tclass, action)

ここで、sourcetarget はそれぞれソースコンテキストとターゲットコンテキストを表し、tclass はターゲットクラスを、action は具体的な操作を表します。action* (すべてを意味する) または具体的なアクションのみをサポートします。すべてのパラメータは、{binder system_app} のような標準的なルール記述における複数のコンテキストやアクションをサポートしていません。ここでは単一の名前のみを提供できます。以下は操作例です。

>>> selinux.allow("hal_camera_default", "camera_vendor_data_file", "dir", "*")

上記のルールは、hal_camera_defaultcamera_vendor_data_file ディレクトリ (dir) に対するすべての操作権限を許可することを意味します。同様に、disallow メソッドに変更すると、これらの権限を拒否することを意味します。

>>> selinux.allow("hal_camera_default", "camera_vendor_data_file", "dir", "search")

上記のように search のような詳細なアクションを提供することもできます。