Lesen und Schreiben von Selinux-Regeln¶
Diese Schnittstelle ermöglicht es Ihnen, grundlegende Lese- und reguläre Schreiboperationen auf den Selinux-Regeln des Systems durchzuführen, sodass Sie einige Systemeinschränkungen festlegen oder umgehen können. Die zugehörigen Schnittstellen können die Systemfunktionalität beeinträchtigen, bitte verwenden Sie sie mit Vorsicht. Sie müssen selbst über Kenntnisse von Selinux verfügen.
Abrufen einer Operationsinstanz¶
Bevor Sie beginnen, müssen Sie zuerst eine Selinux-Instanz abrufen.
selinux = d.stub("SelinuxPolicy")
Abrufen des Selinux-Status¶
Verwenden Sie den folgenden Schnittstellenaufruf, um zu überprüfen, ob Selinux-Regeln aktiviert sind.
selinux.enabled()
>>> selinux.is_enabled( )
True
Verwenden Sie den folgenden Schnittstellenaufruf, um zu überprüfen, ob der aktuelle Status "enforce" ist.
selinux.get_enforce()
>>> selinux.get_enforce()
1
Festlegen des Selinux-Status¶
Verwenden Sie den folgenden Schnittstellenaufruf, um Selinux auf "enforce" oder "permissive" zu setzen.
selinux.set_enforce(enable)
Verwenden Sie den folgenden Schnittstellenaufruf, um den Status auf "enforce" zu setzen.
>>> selinux.set_enforce(True)
1
Verwenden Sie den folgenden Schnittstellenaufruf, um den Status auf "permissive" zu setzen.
>>> selinux.set_enforce( False)
0
Erstellen einer neuen Domäne¶
Verwenden Sie den folgenden Schnittstellenaufruf, um eine neue Domäne in Selinux zu erstellen.
selinux.create_domain(domain_name)
>>> selinux.create_domain("hello_selinux")
True
Festlegen einer Domäne auf Permissive¶
Verwenden Sie den folgenden Schnittstellenaufruf, um eine Selinux-Domäne auf den Status "permissive" zu setzen.
selinux.permissive(domain_name)
>>> selinux.permissive("untrusted_app")
True
Festlegen einer Domäne auf Enforce¶
Verwenden Sie den folgenden Schnittstellenaufruf, um eine Selinux-Domäne auf den Status "enforce" zu setzen.
selinux.enforce(domain_name)
>>> selinux.enforce("untrusted_app")
True
Verfeinern von Kontrollregeln¶
Mit den folgenden Schnittstellenaufrufen können Sie allow- und disallow-Regeln detaillierter schreiben.
selinux.disallow(source, target, tclass, action)
selinux.allow(source, target, tclass, action)
Dabei stehen source und target jeweils für den Quell- und Zielkontext, tclass für die Zielklasse und action für die spezifische Aktion. action unterstützt nur * (steht für alle) oder eine spezifische Aktion. Keiner der Parameter unterstützt mehrere Kontexte oder Aktionen wie die Standardregelsyntax {binder system_app}. Hier können Sie nur einen einzelnen Namen angeben. Unten finden Sie ein Beispiel.
>>> selinux.allow("hal_camera_default", "camera_vendor_data_file", "dir", "*")
Die obige Regel bedeutet, dass hal_camera_default alle Operationsberechtigungen für das Verzeichnis camera_vendor_data_file (dir) erhält. Entsprechend bedeutet die Änderung zur disallow-Methode, dass diese Berechtigungen verweigert werden.
>>> selinux.allow("hal_camera_default", "camera_vendor_data_file", "dir", "search")
Sie können auch, wie oben gezeigt, eine detaillierte Aktion wie search angeben.