Autore Topic: copiare un file con i permessi di root  (Letto 511 volte)

Offline giupardeb

  • Utente junior
  • **
  • Post: 115
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Glaxy Note 4
copiare un file con i permessi di root
« il: 19 Agosto 2014, 09:55:34 CEST »
0
Buon pomeriggio ragazzi, vado al dunque, avrei bisogno di poter copiare un file che si trova in una cartella accessibile solo se si ha il root. Come posso fare ciò? Ho provato a usare tale codice:

Codice: [Seleziona]
private void runRoot(String command) {       
        Process process = null;
        DataOutputStream os = null;
        try {
            process = Runtime.getRuntime().exec("su");
            os = new DataOutputStream(process.getOutputStream());
            os.writeBytes(command + " \n");
            os.writeBytes("exit\n");
            os.flush();
            process.waitFor();
        } catch (Exception e) {
            AlertDialog.Builder miaAlert = new AlertDialog.Builder(my);
            miaAlert.setTitle("Attenzione");
            miaAlert.setMessage("File non copiato");
            AlertDialog alert = miaAlert.create();
            alert.show();
        } finally {
            try {
                if (os != null) {
                    os.close();
                }
                process.destroy();
            } catch (Exception e) {
            }
        }


        AlertDialog.Builder miaAlert = new AlertDialog.Builder(my);
        miaAlert.setTitle("Attenzione");
        miaAlert.setMessage("File copiato");
        AlertDialog alert = miaAlert.create();
        alert.show();


    }

command è una stringa con il comando linux "cp" per copiare un file con la sua sintassi. ho provato a copiare lo stesso file con lo stesso comando attraverso un emulatore terminale per android, e il comando funziona, di fatto mi ritrovo il file copiato, ma con il codice non funziona. Spero di essere stato chiaro. Grazie mille ragazzi anticipatamente

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:copiare un file con i permessi di root
« Risposta #1 il: 19 Agosto 2014, 13:46:14 CEST »
0
Il sistema operativo usato da Android è Linux, un sistema operativo Posix con regole di protezione rigidissime, se un file può accedere solo l'utente root, solo root può accedere senza eccezioni (se fosse possibile sarebbe un gravissimo baco di sistema). Emulatore ha l'utente root abilitato per questo motivo funziona.
adb logcat | tee /tmp/logcat | grep TAG

Offline giupardeb

  • Utente junior
  • **
  • Post: 115
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Glaxy Note 4
Re:copiare un file con i permessi di root
« Risposta #2 il: 19 Agosto 2014, 16:57:47 CEST »
0
L'emulatore di terminale è un applicazione che ha i permessi di root..perché io con la mia applicazione non posso usare i permessi di root per eseguire lo stesso comando che eseguo sull emulatore??

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:copiare un file con i permessi di root
« Risposta #3 il: 19 Agosto 2014, 17:46:29 CEST »
0
Perché l'applicazione non gira come utente root, ma gira con i permessi molto limitati di un utente creato durante installazione dell'app.

Una applicazione può eseguire dei comandi da root solo se l'utente root è abilitato e ha il permesso di cambiare il proprio utente in root.
adb logcat | tee /tmp/logcat | grep TAG

Offline giupardeb

  • Utente junior
  • **
  • Post: 115
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Glaxy Note 4
Re:copiare un file con i permessi di root
« Risposta #4 il: 19 Agosto 2014, 19:29:09 CEST »
0
Ok..ho capito..ma non posso fare lo stesso con la mia applicazione? Altrimenti che senso ha permettere agli sviluppatori di usare i permessi di root del telefono con le loro app?

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:copiare un file con i permessi di root
« Risposta #5 il: 19 Agosto 2014, 19:45:36 CEST »
0
Scusa ma hai letto bene la mia risposta, soprattutto la seconda parte?

Inviato con il mio Nexus 5

adb logcat | tee /tmp/logcat | grep TAG

Offline giupardeb

  • Utente junior
  • **
  • Post: 115
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Glaxy Note 4
Re:copiare un file con i permessi di root
« Risposta #6 il: 19 Agosto 2014, 19:57:38 CEST »
0
Si scusa non ciò fatto caso xD..comunque adesso leggendo meglio, io ho il telefono con i permessi di root, oltre al pezzo di codice che ti ho postato al primo post..cosa devo fare?

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:copiare un file con i permessi di root
« Risposta #7 il: 19 Agosto 2014, 21:20:36 CEST »
0
Se hai il telefono con root attivo allora il comando da eceguire per primo "su" (che sta per superuser) cambia l'utente corrente in root.

Sei sicuro che il codice che hai allegato venga eseguito correttamente. Il comando "su" viene dato per primo ma dopo ci potrebbe essere un errore nei comandi successivi. Tieni anche conto che la directory corrente di un applicativo è diversa rispetto a quella della shell di comando via adb.
adb logcat | tee /tmp/logcat | grep TAG

Offline giupardeb

  • Utente junior
  • **
  • Post: 115
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Glaxy Note 4
Re:copiare un file con i permessi di root
« Risposta #8 il: 20 Agosto 2014, 00:14:56 CEST »
0
Allora, il codice che ho postato l'ho preso in una guida qui su anddev a meno degli alertDialog che ho aggiunto io..quindi credo che funziona..

Offline CrotaNexus

  • Utente normale
  • ***
  • Post: 156
  • Vuolsi così colà dove si puote ciò che si vuole
  • Respect: +25
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    SimoneDev
  • Sistema operativo:
    Windows 8.1
Re:copiare un file con i permessi di root
« Risposta #9 il: 20 Agosto 2014, 08:52:31 CEST »
0
Io nelle mie applicazioni ho creato questo metodo per eseguire i comandi root e sono certo che funziona.

Codice (Java): [Seleziona]
    public static void eseguiComando(String comando) {
        try {
            Process processo = Runtime.getRuntime().exec("su");
            OutputStream stream = processo.getOutputStream();
            stream.write(comando.getBytes());
            stream.flush();
            stream.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

Ad ogni modo, in una mia app utilizzo il comando cp per copiare gli apk dalla partizione /data a /sdcard e semplicemente uso questo comando

Codice (Java): [Seleziona]
 processo = Runtime.getRuntime().exec("cp "+percorso+" "+destinazione);
Funziona anche su dispositivi non rootati.
SimoneDev @ Google Play Store

Offline giupardeb

  • Utente junior
  • **
  • Post: 115
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Glaxy Note 4
Re:copiare un file con i permessi di root
« Risposta #10 il: 20 Agosto 2014, 11:56:36 CEST »
0
Grazie mille, il tuo codice funge perfettamente Graziee :)