Exécution de commandes UNIX en tant qu'utilisateur différent, à partir de Java

Essayer d'écrire un programme Java capable d'exécuter une commande UNIX en tant qu'un autre utilisateur UNIX. J'ai de l'utilisateur, mot de passe, et je sais que la commande j'ai envie de courir, mais la commande doit être exécuté en tant qu'utilisateur, j'ai donc de vous connecter en tant qu'utilisateur en premier.

Par exemple: disons que nous avons un utilisateur, jim, qui veut voir ce que bob le répertoire home de l', et (pour quelque raison que ce soit), jim a accès à exécuter ls alors que bob ne veut pas. Nous sommes actuellement connecté en tant que bob. Voici ce qu'on peut (pourrait) faire:

bob@host$ su jim && ls ~bob

Problème, nous obtenons invité de jim mot de passe. Depuis cette est exécuté à partir d'un programme Java, c'est à dire

Process p = Runtime.getRuntime().exec("su jim && ls ~bob");

nous avons demandé de jim mot de passe et a raccroché. Nous savons que jim mot de passe. Cependant, je ne peux pas 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é dans l'aide de SSH pour essayer cela, car on peut techniquement le faire

bob@host$ ssh jim@host "ls ~bob"

mais cela ne marche pas puisque je n'ai pas l'autorisation pour l'installation de SSH sans mot de passe.

Mon ultime effort est d'essayer et d'utiliser SSH bibliothèque Java, puisque le mot de passe est disponible pour le programme Java et je voudrais être en mesure de se connecter avec qui (et exécuter le bon de commande). Mais depuis que je vais être en cours d'exécution sur le même ordinateur hôte, il semble exagéré.

Des suggestions?

P. S: la version Java 1.4.2, ne peut pas le mettre à jour; AIX UNIX 5.3.

source d'informationauteur Glen Balliet | 2009-06-18