2 votos

Exploración de opciones para personalizar la política de SeLinux ( SePolicy para habilitar bind-mounting ) , incluyendo la recompilación del kernel.

Como me di cuenta selinux for Android es más que un poco diferente criatura de lo que puedo hacer en Linux . Necesito SeLinux política a modificar para que pueda bind mount mis carpetas. A menos que eso suceda no quiero Root mi teléfono. El siguiente fue cuando me temp magisk rooted mi Samsing M20 en permissive
Estos son los problemas que he encontrado al intentar conseguir lo anterior.
-- AVC denials no están registrados en mi Logcat . ¿Por qué? y ¿debería buscar en algún otro archivo para obtenerlos? Si están desactivados, ¿cómo se puede revertir? Este es un Samsung Exynos Chipset.

    root@m20lte:/ # logcat -d | grep -i AVC
06-23 03:38:03.046  4392 19898 I OMXMaster: makeComponentInstance(OMX.Exynos.AVC.Encoder) in android.hardwar process
06-23 03:38:03.112 12145 12164 I ACodec  : [OMX.Exynos.AVC.Encoder] Now Loaded
06-23 03:38:03.128 12145 12164 I ACodec  : setupAVCEncoderParame

--- ¿Puedo modificar el archivo Sepolicy o es necesario `recompilar` todo el `kernel`?

/sys/fs/selinux/policy

. Cuántos archivos hay que cambiar para modificar un custom SePolicy en vigor

-- Si cambia Sepolicy no es tan sencillo y hay que recompile el Sepolicy en kernel . ¿Cómo lo hago y antes de volver a compilar cómo pruebo que funciona para mi objetivo?

Esto es lo que hice.

--- Saqué el SePolicy que estaba en binary y lo ejecuté a través del comando sepolicy en linux . No ha habido suerte.

mnt/sda2 # sepolicy -P policy
Traceback (most recent call last):
  File "/usr/bin/sepolicy", line 692, in <module>
    args.func(args)
AttributeError: 'Namespace' object has no attribute 'func'

-- antes de que, obviamente, he intentado una fruta colgando bajo dado por esta guía donde intenté usar bindfs con varios userids and grouoids incluyendo los exemplied en el poste pero todavía conseguí errores. AVC errors no se registra puedo averiguar nuestra lo que causó estos

1voto

Tim Bodeit Puntos 101

--- ¿Puedo modificar el archivo Sepolicy en o entero kernel necesita ser recompiled

/sys/fs/selinux/policy

. ¿Cuántos archivos deben cambiar para que una SePolicy personalizada modificada entre en vigor?

En primer lugar, si su dispositivo está rooteado con Magisk, puede utilizar la función de Magisk supolicy para añadir reglas SELinux a tu dispositivo.

Si su dispositivo no está rooteado con Magisk, todavía es posible 'simplemente' modificar el archivo sepolicy para añadir nuevas reglas SELinux que serán cargadas por init al arrancar el dispositivo.

El archivo que tendrá que modificar para conseguirlo es /vendor/etc/selinux/precompiled_sepolicy (o /odm/etc/selinux/precompiled_sepolicy si existe).

Puede utilizar herramientas como sepolicy-inject para añadir sus reglas SELinux personalizadas al archivo.

Tenga en cuenta que como el archivo se encuentra en el /vendor tendrá que tener acceso de lectura-escritura a la misma. Esto se puede conseguir volviendo a montarla si tu dispositivo está rooteado, o a través de recovery con una imagen de recovery personalizada (como TWRP).

Otra opción, si no necesita que las pólizas sean permanentes, es cargar directamente sus pólizas con sepolicy-inject . Ten en cuenta que para esta opción, necesitas tener un dispositivo rooteado, o tener un contexto SELinux que te permita cargar políticas (esto normalmente requeriría que añadieras reglas personalizadas en primer lugar).

Si quieres más detalles sobre cómo se cargan las políticas de SELinux y cómo modificarlas, echa un vistazo a esta respuesta .

Después de eso, todo lo que necesitas es averiguar qué reglas SELinux serían necesarias para tu caso, que puedes encontrar buscando errores avc en logcat. Me temo, sin embargo, que no sé por qué esos errores avc no aparecen en tus logs.

Espero que le sirva de ayuda.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X