0 votos

Los comandos root en el emulador de terminal no funcionan en todo el sistema

Quiero ejecutar el siguiente comando como root en el Android Emulador terminal .

mount -o bind /storage/extSdCard /data/media

He probado esto en un Samsung Galaxy S3 con CyanogenMod 11 y funciona como se esperaba. Cuando entre /data/media usando otra aplicación como Explorador de archivos ES el administrador de archivos, llego al contenido de la tarjeta SD externa en lugar de la memoria interna.

El problema es que esto no funciona en otro S3 que tengo, este que ejecuta la versión 4.3 de la ROM de TouchWiz y está rooteado con CF-Auto-Root . También he intentado usar El de Adán Núcleo personalizado y tampoco funciona.

Cuando ejecute el comando en la terminal y luego escriba ls /data/media como Root, muestra el contenido de la tarjeta SD externa, pero si lanzo otra terminal como un usuario normal (no Root) y escribo el mismo comando, obtengo el contenido de la memoria interna. Lo mismo ocurre si intento acceder /data/media usando Explorador de archivos ES gestor de archivos

Así que parece que los comandos de root sólo tienen efecto para el usuario de root, no para otros usuarios en todo el sistema. ¿Cuál podría ser la causa de este comportamiento?

ACTUALIZACIÓN: OK, mi error, no me expresé correctamente. Es cierto que un usuario normal no puede acceder /data/media . Pero /data/media es la verdadera ubicación de los archivos en la memoria interna. Hay muchas rutas donde Android pone esta memoria a disposición de los usuarios normales, como /sdcard o /storage/sdcard0 ambos de los cuales apuntan a /data/media/0 a través de un sistema de archivos FUSE.

Mi idea es que si creo una carpeta llamada 0 en el sd externo y luego se unen /storage/extSdCard a /data/media cuando el sistema intenta acceder /sdcard o /storage/sdcard0 obtendrá el contenido de /storage/extSdCard/0 como /data/media ya no apunta a la memoria interna, sino a la SD externa.

Esto funciona como se espera en el CM11 cuando corro como root

mount -o bind /storage/extSdCard /data/media

Entonces si accedo /sdcard en la terminal, ya sea como root y como usuario normal, llego al contenido de /storage/extSdCard/0 . Lo mismo ocurre si uso el Explorador de Archivos ES en los modos normal o root.

Pero cuando hago lo mismo en el firmware de la acción 4.3 no funciona. Sólo Root en la terminal puede ver los cambios, el usuario normal en la terminal y normal y el usuario Root en el Explorador de Archivos ES no verá ningún cambio

0 votos

I get the contents of the internal memory.) -- No entiendo cómo un usuario normal es capaz de ver cualquier contenido en /data/media en absoluto sin privilegios elevados. Debería aparecer un error en el terminal, algo así como "Operación no permitida". Sobre tu segundo caso con ES, como usuario normal ES no debería mostrar nada en /data directorio y no sé cómo ir a una determinada ubicación directamente usando ES (no parece tener barra de localización). Dicho esto, /data/media todavía puede ser accedido por un usuario normal usando la Terminal. Lo he comprobado, funciona bien.

0 votos

Sí, tienes razón, no me expresé bien. He editado la pregunta proporcionando información adicional

1voto

Guillermo Gomez Puntos 423

En mi caso, supongo que es la misma razón para ti.

Ve a tu aplicación de gestión de superusuario, supongo que es SuperSU.

Vaya a la configuración y busque "Montar separación de espacios de nombres" y compruebe si está marcada. Desmarca la opción y reinicia.

SuperSU proporcionó esta opción para hacer su sistema más seguro al ocultar el espacio de nombres de montaje de una aplicación de las demás, por lo que si usted monta o desmonta algo, sólo es visible para la aplicación (UID) que está utilizando y nada más.

Alternativamente, cuando se ejecuta su puede añadir una opción -m para que tu shell tenga el control del espacio de nombres del montaje maestro. Entonces tus montajes funcionarán globalmente.

0voto

jrodatus Puntos 141

Aparentemente, esto es ahora una característica de seguridad de Android SELinux - los montajes iniciados desde la mayoría de los procesos no son visibles para otros procesos. Ver esta respuesta .

Un relacionado Hilo de desarrollo del núcleo del Android sugiere reemplazar un servicio del sistema que no se necesita (por ejemplo. /system/bin/debuggerd ) con un shell script que ejecuta el comando de montaje deseado. Esto lo lanzarías con start debuggerd .

Actualizar: Esto funcionó para mí, después de un reinicio.

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