Come posso invocare "su" da un prompt del terminale?


7

Posso ottenere un prompt di root nel terminale eseguendo un exploit documentato altrove. (ad esempio qui: http://wiki.cyanogenmod.com/wiki/Motorola_Droid_2_Global:_Full_Update_Guide )

A questo punto, posso installare il binario "su" e assegnargli le autorizzazioni 4755. Ciò dovrebbe consentire a chiunque di eseguirlo, e poiché il proprietario del binario è "root" e il bit sticky è impostato, dovrei diventare root. Ma a quanto pare non ho modo di non diventare root dal terminale a corto di riavvio. Ma, dopo il riavvio, non riesco a diventare root usando 'su'.

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

Ok, i permessi sembrano a posto, dovrei essere in grado di eseguirlo per diventare root, ma solo in questa particolare invocazione del terminale.

$ /system/bin/su
Permission denied

Inoltre non riesce se si specifica il comando da eseguire come root o con qualsiasi altro argomento:

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

Perché? C'è qualche altro meccanismo al lavoro? Non voglio installare Superuser.apk, perché voglio solo un modo per ottenere temporaneamente una shell di root, se necessario, ad esempio per eliminare manualmente i file indesiderati. Inoltre, Superuser.apk si basa comunque sul binario su, quindi deve avere un modo per chiamarlo, quindi perché non posso replicarlo nel terminale?

Modifica: ho avuto un altro pensiero, quindi ho provato a copiare / bin / sh in un'altra posizione e l'ho fatto suid root. Ma mentre posso eseguire il nuovo binario, non mi dà il root. Android sta facendo qualcosa di complicato / diverso con un aiuto che Linux normale non fa?


1
Avere un 'su' non protetto sul dispositivo è piuttosto rischioso, poiché tutto ciò che tenta di usarlo lo otterrà senza alcuna conferma dell'utente che cose come quella app superutente provano ad aggiungere come gateway.
Chris Stratton,

Bene, beh ... stavo cercando di pianificare in anticipo. Non ero sicuro di come un successivo aggiornamento avrebbe provato a sbarazzarsi di su, quindi l'ho messo in un sacco di posti diversi con nomi diversi. Risulta che l'aggiornamento rimuove il bit appiccicoso e non posso eseguire il suid da luoghi diversi dal sistema. Ah bene.
Michael,

Risposte:


6

L'indizio è nell'ID proprietario / gruppo ...

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

Si noti che l'id del gruppo è impostato su 'app_101', che dovrebbe essere 'root', ma, di nuovo, è necessario il busyboxbinario (che fa parte del binario SuperUser.apk, quando installato, copia il relativo binario in /system/xbin) per per poterlo fare chown.


Sì, questo sarebbe un problema. Alla fine la casella di controllo non è necessaria poiché chown Android di riserva può cambiare anche il gruppo, usando chown user.group nomefile (almeno da Froyo-ICS)
Chris Stratton

1

Prova ad aggiungere l' -copzione. per esempio

su -c sh

o

 su -c 'echo bogus'

(per ulteriori argomenti)


0

Un po 'più di scavo e penso di aver alzato la risposta. Il motivo per cui non funziona è perché l'app Terminal non richiede l'autorizzazione da superutente nel suo manifest, ad esempio:

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

Questo ulteriore livello di sicurezza sembra essere dovuto al fatto che l'applicazione terminale è un'applicazione java, sebbene faccia un buon lavoro per nasconderla. Il Superutente sembra in qualche modo evitare le cose in modo che le app Java possano ottenere questa autorizzazione, anche se non sapevano di averne bisogno quando sono state create.


2
ACCESS_SUPERUSERl'autorizzazione non è connessa al tuo problema
janot
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.