1 votos

¿Cómo se editan los archivos Root en /sys (Permiso denegado)?

He estado tratando de cambiar los archivos Root de mi teléfono a través de una aplicación que estoy desarrollando. El teléfono que tengo es un Moto G6, totalmente rooteado. Estoy usando emuladores de terminal para ejecutar comandos en mi teléfono. He probado las aplicaciones "Emulador de terminal para Android" y "Emulador de terminal de Shell" para intentar que mis archivos sean modificables.

Los comandos que he intentado ejecutar son los siguientes:

su
mount -o rw,remount /system

En el emulador de terminal para Android esto parece funcionar porque no ofrece ningún mensaje de error, pero en el emulador de terminal de Shell me ocurre lo siguiente:

"...whatever.../system not user mountable in fstab"

Así que fui a comprobar si funcionaba de todos modos e intenté modificar un archivo en el Navegador root. El archivo:

/sys/devices/virtual/android_usb/android0/power/control

El archivo actualmente tiene los permisos establecidos como "rw-r--r--" y llenado con el texto "auto" y después de tratar de guardar el archivo con el contenido "0" en su lugar se me proporciona este gran y feo mensaje de error:

Error when saving file
=====Description=====
java.io.FileNotFoundException: "...file name..." and then (permission denied)

Lo que quiero saber es por qué no tengo permiso para editar estos archivos, después de todo mi teléfono está completamente rooteado y he concedido a Root acceso al editor de texto.

Cualquier solución o paso en la dirección correcta es muy apreciado.

0 votos

FileNotFoundException es una excepción de Java que indica que estás intentando escribir un archivo desde una aplicación sin permisos de superusuario. Todas las APIs de acceso a archivos de java no pueden ser usadas si necesitas permisos de Root. Sólo puedes ejecutar ejecutables de línea de comandos a través de su. Por lo tanto, si quieres sobreescribir un archivo del sistema guárdalo en algún lugar donde tengas acceso y luego copia el archivo con su y un comando de línea de comandos a su destino.

0 votos

Tenga en cuenta que las preguntas sobre el desarrollo de aplicaciones son un foo-topic aquí. Utilice stackoverflow.com en su lugar.

0 votos

@Robert Esta no es necesariamente una pregunta de desarrollo de aplicaciones, resulta que estoy aplicando estos conocimientos en el desarrollo de una aplicación pero hice esta pregunta para entender mejor el sistema Android.

1voto

Jack Wade Puntos 231

en la aplicación Shell Terminal Emulator, me ha llamado la atención lo siguiente:
"...whatever.../system not user mountable in fstab"

toybox mount devuelve que error cuando el UID no es 0, es decir, no eres Root.

trató de modificar un archivo en el Navegador root. El archivo:
/sys/devices/virtual/android_usb/android0/power/control

/system y /sys son dos sistemas de archivos diferentes. Montar un R/W no te permitirá el acceso R/W al otro. /system es el punto de montaje de una partición que contiene el sistema operativo Android. No se puede montar R/W sin conseguir el acceso a root y sin desactivando la versión dm-verity . sysfs es el pseudo sistema de archivos del núcleo de Linux que proporciona información relacionada con el hardware y expone algunas interfaces al espacio de usuario para la configuración y ajuste del núcleo.

sysfs está montado R/W por defecto pero no todos los archivos de este sistema de archivos pueden ser modificados. Sólo algunos valores específicos pueden ser escritos en archivos específicos. El archivo que está tratando de escribir está relacionado con la administración de la energía del controlador del kernel del USB Gadget, que es dejar que el dispositivo esté en algún tipo de rol esclavo (modo dispositivo), no en rol de host USB. Los posibles valores de control archivo son auto y on según documentación .

después de tratar de guardar el archivo con el contenido "0" en su lugar se me proporciona este gran y feo mensaje de error

No estoy seguro de ese error relacionado con Java, puedes obtener mejor ayuda en stackoverflow . Sin embargo, puedes conseguir una cáscara de root y hacer:

~# echo -n on >/sys/devices/virtual/android_usb/android0/power/control

Esto debe funcionar, también lo he intentado en el editor de texto GUI. Probablemente el valor 0 que intentas escribir no es un valor válido para el kernel, excepto si estás cambiando algo a nivel del conductor.

Si el propósito es sólo editar los archivos para la prueba que no se puede acceder / modificar sin Root, crear / editar / eliminar un archivo en /data/local . /data no necesita ser remontada.

1 votos

Gracias compañero, una respuesta realmente útil y bien explicada, probaré algunas de las cosas que has mencionado pronto

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