Lire et écrire les règles Selinux¶
Cette interface vous permet d'effectuer des opérations de lecture de base et d'écriture standard sur les règles Selinux du système, vous autorisant à définir ou contourner certaines restrictions du système. Les interfaces associées peuvent affecter les fonctionnalités du système, veuillez les utiliser avec prudence. Vous devez avoir une connaissance de Selinux.
Obtenir une instance d'opération¶
Avant de commencer, vous devez d'abord obtenir une instance de selinux.
selinux = d.stub("SelinuxPolicy")
Obtenir l'état de Selinux¶
Utilisez l'appel d'interface suivant pour savoir si les règles Selinux sont activées.
selinux.enabled()
>>> selinux.is_enabled( )
True
Utilisez l'appel d'interface suivant pour savoir si l'état actuel est enforce.
selinux.get_enforce()
>>> selinux.get_enforce()
1
Définir l'état de Selinux¶
Utilisez l'appel d'interface suivant pour définir Selinux en mode enforce ou permissive.
selinux.set_enforce(enable)
Utilisez l'appel d'interface suivant pour le définir en mode enforce.
>>> selinux.set_enforce(True)
1
Utilisez l'appel d'interface suivant pour le définir en mode permissive.
>>> selinux.set_enforce( False)
0
Créer un nouveau domaine¶
Utilisez l'appel d'interface suivant pour créer un nouveau domaine dans Selinux.
selinux.create_domain(domain_name)
>>> selinux.create_domain("hello_selinux")
True
Mettre un domaine en mode permissif¶
Utilisez l'appel d'interface suivant pour définir un domaine Selinux en mode permissive.
selinux.permissive(domain_name)
>>> selinux.permissive("untrusted_app")
True
Mettre un domaine en mode enforce¶
Utilisez l'appel d'interface suivant pour définir un domaine Selinux en mode enforce.
selinux.enforce(domain_name)
>>> selinux.enforce("untrusted_app")
True
Affiner les règles de contrôle¶
Les appels d'interface suivants permettent d'écrire des règles allow et disallow de manière plus détaillée.
selinux.disallow(source, target, tclass, action)
selinux.allow(source, target, tclass, action)
Ici, source et target représentent respectivement les contextes source et cible, tclass représente la classe cible, et action représente l'opération spécifique. action ne prend en charge que * (représentant toutes les actions) ou une action spécifique. Aucun des paramètres ne prend en charge plusieurs contextes ou actions comme dans la syntaxe de règle standard {binder system_app}. Ici, vous ne pouvez fournir qu'un seul nom. Voici un exemple d'opération.
>>> selinux.allow("hal_camera_default", "camera_vendor_data_file", "dir", "*")
La règle ci-dessus signifie autoriser hal_camera_default à avoir toutes les permissions d'opération sur le répertoire camera_vendor_data_file (dir). De même, en utilisant la méthode disallow, cela signifie refuser ces permissions.
>>> selinux.allow("hal_camera_default", "camera_vendor_data_file", "dir", "search")
Vous pouvez également fournir une action détaillée comme search, comme indiqué ci-dessus.