Provare a scrivere un programma Java in grado di eseguire un comando UNIX come un utente UNIX diverso. Ho la password dell'utente e conosco il comando che voglio eseguire, ma il comando deve essere eseguito come tale utente, quindi devo prima effettuare il login come utente.Esecuzione di comandi UNIX come utente diverso, da Java
Ad esempio: diciamo che abbiamo un utente, jim, che vuole vedere cosa c'è nella home directory di bob e (per qualsiasi motivo) jim ha accesso per eseguire ls mentre bob no. Attualmente siamo registrati come bob. Ecco cosa (potremmo) fare:
Il problema è che viene richiesta la password di jim. Dal momento che questo è gestito da un programma Java, vale a dire
Process p = Runtime.getRuntime().exec("su jim && ls ~bob");
veniamo richiesta la password di Jim e riattaccò. Sappiamo la password di jim. Tuttavia, non posso inserirlo.
Inoltre, non è possibile utilizzare uno script Expect (non installarlo) e non è possibile diventare superutente. Ho anche guardato in usando SSH di provare questo, dato che abbiamo potuto tecnicamente fare
[email protected]$ ssh [email protected] "ls ~bob"
ma anche questo non funziona dal momento che non ho il permesso di messa a punto senza password SSH.
Il mio ultimo tentativo è di provare e utilizzare una libreria SSH per Java, dal momento che la password è disponibile per il programma Java e sarei in grado di accedere con quello (ed eseguire il comando corretto). Ma dal momento che sto per essere in esecuzione sullo stesso host, sembra eccessivo.
Qualche suggerimento?
P.S: versione 1.4.2 di Java, non è possibile eseguire l'aggiornamento; AIX UNIX 5.3.
Sei riuscito a trovare una soluzione alternativa senza utilizzare una libreria di terze parti, in caso affermativo puoi condividere? – HyperioN