Leer y escribir reglas de Selinux¶
Esta interfaz le permite realizar operaciones básicas de lectura y escritura convencional en las reglas de Selinux del sistema, permitiéndole configurar o eludir algunas restricciones del sistema. Las interfaces relacionadas pueden afectar la funcionalidad del sistema, por favor, úselas con precaución. Es necesario que usted tenga conocimientos sobre Selinux.
Obtener una instancia de operación¶
Antes de comenzar, necesita obtener una instancia de selinux.
selinux = d.stub("SelinuxPolicy")
Obtener el estado de Selinux¶
Utilice la siguiente llamada de interfaz para obtener si las reglas de Selinux están habilitadas.
selinux.enabled()
>>> selinux.is_enabled( )
True
Utilice la siguiente llamada de interfaz para obtener si el estado actual es enforce.
selinux.get_enforce()
>>> selinux.get_enforce()
1
Establecer el estado de Selinux¶
Utilice la siguiente llamada de interfaz para establecer Selinux en modo enforce o permissive.
selinux.set_enforce(enable)
Utilice la siguiente llamada de interfaz para establecerlo en modo enforce.
>>> selinux.set_enforce(True)
1
Utilice la siguiente llamada de interfaz para establecerlo en modo permissive.
>>> selinux.set_enforce( False)
0
Crear un nuevo dominio¶
Utilice la siguiente llamada de interfaz para crear un nuevo dominio en Selinux.
selinux.create_domain(domain_name)
>>> selinux.create_domain("hello_selinux")
True
Establecer un dominio como permissive¶
Utilice la siguiente llamada de interfaz para establecer un dominio de Selinux en estado permissive.
selinux.permissive(domain_name)
>>> selinux.permissive("untrusted_app")
True
Establecer un dominio como enforce¶
Utilice la siguiente llamada de interfaz para establecer un dominio de Selinux en estado enforce.
selinux.enforce(domain_name)
>>> selinux.enforce("untrusted_app")
True
Refinar las reglas de control¶
Mediante las siguientes llamadas de interfaz, puede escribir reglas de allow y disallow de manera más detallada.
selinux.disallow(source, target, tclass, action)
selinux.allow(source, target, tclass, action)
Donde source y target representan los contextos de origen y destino respectivamente, tclass representa la clase de destino, y action representa la operación específica. action solo admite * (que representa todo) o una acción específica. Ninguno de los parámetros admite múltiples contextos o acciones como en la sintaxis de reglas estándar {binder system_app}; aquí solo puede proporcionar un único nombre. A continuación se muestra una operación de ejemplo.
>>> selinux.allow("hal_camera_default", "camera_vendor_data_file", "dir", "*")
La regla anterior significa permitir a hal_camera_default todos los permisos de operación sobre el directorio (dir) camera_vendor_data_file. De manera similar, cambiar al método disallow significaría denegar estos permisos.
>>> selinux.allow("hal_camera_default", "camera_vendor_data_file", "dir", "search")
También puede proporcionar una acción más detallada como search, como se muestra arriba.