ZioCrick ha scritto:
Certo.
Per quanto posso ricordarmi,
sudo richiede la password utilizzando l'input a "basso" livello dalla console (non è dal flusso standard-input). Quindi serve avere una "vera" console per inserire manualmente la password.
ZioCrick ha scritto:
Però ricordo di aver letto che si poteva eseguire un'applicazione da utente root senza farsi chiedere la password, o forse passandogliela come argomento, ma non riesco più a trovare il riferimento.
Riesci a darmi una dritta?
Dal man page di sudo che ho trovato, parla di:
The -S (stdin) option causes sudo to read the password from the standard input instead of the terminal device. The password must be followed by a newline character.
Da prompt dei comandi sarebbe qualcosa del tipo:
echo "lapassword" | sudo -S comandoblabla
La questione è che il "piping" (esattamente come la redirezione degli stream) è una cosa che interpreta e fa la shell, NON la fa Java. Non puoi mettere quel "|" nel exec() che lanci da Java.
Dovresti lanciare:
Runtime.getRuntime().exec(new String[] { "sudo", "-S", "comandoblabla" })
Poi ottieni subito il Process, prendi il OutputStream (relativo allo standard-input del processo sudo lanciato) e su questo ci
scrivi la password seguita dal newline.
Nota: credo che esista sicuramente il modo per dire a sudo di "privilegiare" un comando evitando la password, bisognerebbe vedere bene il/i file di configurazione di sudo. Ma non sono la persona adatta per dirti come fare ....