0 votos

execve permiso denegado en / datos

He conocido a un extraño problema en un Samsung Galaxy Note 2, con Android 4.3, con un origen de forgetton rooteado rom.

  1. getenforce devuelve "Permisivo", por lo que selinux Permisivo.
  2. cat /proc/self/estado devuelve CapBnd/CapEff/CapPrm ffffffffffffffff después de la ub, así que todas las prestaciones que se otorgan.
  3. su es de chainfire del SuperSU.

El síndrome de down es, después de la ub cualquier ejecutable en /datos de llamada execve() falla con EACCES. PERO, execve() en /de datos es permitido por un usuario normal.

Para demostrar, todos los siguientes experimentos se llevan a cabo después de la ub. Compilar el siguiente programa en una estática vinculado binario, decir execve.

# gcc -static execve.c -o execve

/* execve.c */

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int
main(int argc, char *argv[])
{
  char *newargv[] = { NULL, "hello", "world", NULL };
  char *newenviron[] = { NULL };

  if (argc != 2) {
    fprintf(stderr, "Usage: %s <file-to-exec>\n", argv[0]);
    exit(EXIT_FAILURE);
  }

  newargv[0] = argv[1];

  execve(argv[1], newargv, newenviron);
  perror("execve");   /* execve() only returns on error */
  exit(EXIT_FAILURE);
}

La ejecución de "execve /system/bin/ls" debe ser equivalente a "ls hola mundo".

Pero si execve se pone bajo cualquier subdirectorio de /data, "execve /system/bin/ls", "Permiso Denegado".

  1. Si execve es puesto en cualquiera de /, /system, /cache, /mnt/obb. execve() funciona.
  2. Volver a montar /data con exactamente las mismas opciones de montaje como /cache no ayuda.
  3. Crear enlace simbólico para un subdirectorio de /cache /datos que contiene execve obras.

    ln -s /cache/test /datos/prueba # /datos/test/execve obras

    Y a la inversa, execve no funciona.

    ln -s /cache/prueba1 /datos/prueba1 # /cache/prueba1/execve Permiso Denegado

  4. Se unen mount /data /bind. /bind/execve obras, pero en /data/execve no.

    mount-o bind /datos /bind

Conclusión: Hay soming la prevención de los ejecutables en /datos a partir de hacer execve() syscall. El mecanismo no tiene nada que ver con el sistema de ficheros atributos, y un enlace simbólico se eliminan las referencias antes de que el mecanismo se aplica.

Pregunta: ¿Qué mecanismo en Android podría dar a este extraño comportamiento?

Referencia:

0voto

Wessel Kranenborg Puntos 111

Samsung tiene algunas restricciones codificado directamente en el núcleo. Estas cosas son diferentes por dispositivo, por kernel / firmware, y son un verdadero lastre para trabajar con, o alrededor. Pruebe con un firmware diferente.

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