7 votos

¿Cómo te invoco "su" desde un terminal del sistema?

Puedo obtener un indicador del usuario root en el terminal ejecutando uno explota documentado en otros lugares. (por ejemplo, aquí: http://wiki.cyanogenmod.com/wiki/Motorola_Droid_2_Global:_Full_Update_Guide)

En este punto, puedo instalar el "su" binario y darle permisos 4755. Esto debería permitir que alguien a ejecutar, y dado que el propietario de la binaria es "root" y el sticky bit es establecido, debería convertirse en root. Pero al parecer no tiene ninguna manera de la onu-se convierten en la root de la terminal de corto de reiniciar. Pero, después de reiniciar, entonces me parece que no puede convertirse en root el uso de 'su'.

$ ls -l /system/bin/su
-rwsr-xr-x root    app_101    26234 2012-07-09 15:00 su

Ok, los permisos de buen aspecto, debo debería ser capaz de correr a convertirse en root, pero solo en este particular, la invocación de la terminal.

$ /system/bin/su
Permission denied

También falla si puedo especificar el comando para que se ejecute como root, o con cualquier otro de los argumentos:

$ /system/bin/su /system/bin/sh
Permission denied

Por qué? ¿Hay algún otro mecanismo en el trabajo? No quiero instalar Superusuario.apk, porque yo sólo quiero una manera de que me puede llegar a obtener una shell de root si necesita, por ejemplo, eliminar los archivos no deseados de forma manual. Además, De Superusuario.apk se basa en el su binario de todos modos, por lo que debe tener alguna manera de llamar, así que ¿por qué no puedo replicar que en la terminal?

Editar: Yo tenía otro pensamiento, así que traté de copiar /bin/sh a otro locattion y lo hizo suid root. Pero mientras yo pueda ejecutar el nuevo binario, que no me de la root. Es Android haciendo algo complicado/diferentes con suid que regular Linux no?

6voto

Nick Pierpoint Puntos 7976

La pista está en la identificación del propietario/grupo...

$ ls -l /system/bin/su
-rwsr-xr-x root    app_101    26234 2012-07-09 15:00 su

Fíjate que el id del grupo está puesto en 'app_101', que debería ser 'Root', pero de nuevo, necesitas el busybox (que forma parte del binario SuperUser.apk, cuando se instala, copia dicho binario en /system/xbin ) para poder chown lo.

1voto

d14b0ll0s Puntos 11

Pruebe a añadir el -c opción. Por ejemplo

su -c sh

o

 su -c 'echo bogus'

(para más argumentos)

0voto

Michael Puntos 356

Un poco más de investigación y creo que he encontrado la respuesta. La razón por la que no funciona es porque la aplicación Terminal no solicita permiso de superusuario en su manifiesto, por ejemplo:

<uses-permission android:name="android.permission.ACCESS_SUPERUSER"/>

Esta capa extra de seguridad parece deberse a que la aplicación de la terminal es una aplicación java, aunque hace un buen trabajo ocultándola. El superusuario parece calzar las cosas de alguna manera para que las aplicaciones java puedan obtener este permiso, incluso si no sabían que lo necesitaban cuando fueron creadas.

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