0 votos

Permiso denegado cuando se trabaja con/sin "su -c" en /cache

Estoy tratando de emitir esta orden

adb shell "su -c echo 'boot-recovery' > /cache/recovery/command"
//OR//
adb shell "echo 'boot-recovery' > /cache/recovery/command"

produce lo mismo: /system/bin/sh: can't create /cache/recovery/command: Permission denied

Le di permiso a Root para adb y puedo ejecutar otros comandos con Root normalmente como touch por ejemplo

Intenté el comando en ambos sentidos cuando el archivo existía y no existía.

Intenté comprobar la existencia del archivo:

adb shell "if [ -f /cache/recovery/command ]; then echo "file found"; else echo "error"; fi"

regresó error aunque el archivo existe de hecho

El objetivo es para añadir unas pocas líneas a la cola de recuperación para que la próxima vez que el dispositivo se inicie en la recuperación

Por favor, corrígeme, no soy muy bueno en la línea de comandos de Android, ¿necesito usar un comando diferente para lograr este objetivo?

Más información: Android 8.1 (RR oreo) ... Magisk SU ... TWRP 3.2 (Pero necesita que sea compatible con tantas versiones de Android, recuperaciones, y sus binarios como sea posible.... Espero que lol )

0 votos

Es mejor hacer su pregunta en comunidad de superusuarios .

1voto

Para mí, esto funcionó:

adb shell "su -c 'boot-recovery > /cache/recovery/command'"

Se comienza con una comilla doble antes de su -c . Luego una comilla simple para el comando, una comilla simple después del comando y cerrar con una comilla doble.

0voto

Firelord Puntos 161
adb shell 'su -c "echo \"boot-recovery\" > /cache/recovery/command"'
adb shell 'su -c "'"echo "boot-recovery" > /cache/recovery/command"'"' #Alternative
adb shell "su -c \"echo 'boot-recovery' > /cache/recovery/command\"" #Another alternative
adb shell 'su -c "'"echo "'"boot-recovery"'" > /cache/recovery/command"'"' #yet another alternative

Eso debería funcionar. No estoy seguro de por qué. Esta respuesta de Codeforester podría ayudarte si buscas una razón.

Mi opinión es que, en:

adb shell "su -c echo 'boot-recovery' > /cache/recovery/command"

adb shell lanza un shell no interactivo, las comillas dobles se expanden, dejando

su -c echo 'boot-recovery' > /cache/recovery/command

Sin embargo, en esto, sólo el eco 'boot-recovery' se ejecuta con privilegios de root y la salida resultante recae en el usuario de shell (id=2000) que no tiene el privilegio de escribir en el directorio de caché, de ahí el error.

Citando todo después de -c pasa entero echo 'boot-recovery' > /cache/recovery/command instrucción para su ejecutable, y por lo tanto, eso funciona.

0 votos

Gracias por la información .. como evitar que llegue a las manos del usuario y mantenerlo en modo Root... ¿los 4 comandos que escribiste son una solución? porque salen lo mismo Permission denied

0 votos

No sé por qué sale el permiso denegado en tu caso. Aquí funciona. ¿Tiene el shell/adb permiso para cambiar al usuario Root en su aplicación de superusuario?

0 votos

En magisk su deja que las apps y adb tengan acceso Root... Intentaré jugar con otra opción relacionada con el propietario/usuario/algo de acceso Root

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