Vous essayez d'écrire un programme Java capable d'exécuter une commande UNIX en tant qu'utilisateur UNIX différent. J'ai le mot de passe de l'utilisateur, et je connais la commande que je veux exécuter, mais la commande doit être exécutée en tant qu'utilisateur - donc je dois d'abord me connecter comme cet utilisateur. Par exemple: disons que nous avons un utilisateur, jim, qui veut voir ce qui se trouve dans le répertoire personnel de bob, et (pour une raison quelconque) jim a accès à ls alors que bob ne le fait pas. Nous sommes actuellement connectés en tant que bob. Voici ce que nous (pouvons) faire:Exécution de commandes UNIX en tant qu'utilisateur différent, à partir de Java
[email protected]$ su jim && ls ~bob
Le problème est que le mot de passe de jim nous est demandé. Étant donné que c'est exécuté à partir d'un programme Java, à savoir
Process p = Runtime.getRuntime().exec("su jim && ls ~bob");
nous sommes invités à saisir le mot de passe jim et a raccroché. Nous connaissons le mot de passe de jim. Cependant, je ne peux pas y entrer.
En outre, nous ne pouvons pas utiliser un script Expect (ne l'avez pas installé) et nous ne pouvons pas devenir le super-utilisateur. J'ai aussi regardé en utilisant SSH pour essayer cela, puisque nous pourrions techniquement faire
[email protected]$ ssh [email protected] "ls ~bob"
mais cela ne fonctionne pas non plus puisque je n'ai pas la permission d'installer SSH passwordless. Mon dernier effort est d'essayer d'utiliser une bibliothèque SSH pour Java, puisque le mot de passe est disponible pour le programme Java et je serais capable de me connecter avec ça (et d'exécuter la commande appropriée). Mais puisque je vais courir sur le même hôte, il semble que c'est trop.
Des suggestions?
P.S: version Java 1.4.2, impossible de mettre à niveau; AIX UNIX 5.3.
étiez-vous en mesure de trouver une solution de contournement sans utiliser une bibliothèque tierce, si oui pouvez-vous partager? – HyperioN