Intentando escribir un programa Java capaz de ejecutar un comando UNIX como un usuario diferente de UNIX. Tengo la contraseña del usuario y sé el comando que quiero ejecutar, pero el comando debe ejecutarse como ese usuario, así que primero tengo que iniciar sesión como ese usuario.Ejecución de comandos UNIX como usuario diferente, desde Java
Por ejemplo: supongamos que tenemos un usuario, jim, que quiere ver lo que está en el directorio de inicio de bob, y (por alguna razón) jim tiene acceso para ejecutar ls mientras que bob no lo tiene. Actualmente estamos conectados como bob. Esto es lo que (podríamos) hacer:
[email protected]$ su jim && ls ~bob
El problema es que nos piden la contraseña de jim. Dado que este se ejecuta desde un programa Java, es decir
Process p = Runtime.getRuntime().exec("su jim && ls ~bob");
consigue Nos le pregunte la contraseña de Jim y colgó. Conocemos la contraseña de jim. Sin embargo, no puedo ingresar.
Además, no podemos usar un script Expect (no lo tenemos instalado) y no podemos convertirnos en el superusuario. También he mirado en el uso de SSH para probar esto, ya que podíamos hacer técnicamente
[email protected]$ ssh [email protected] "ls ~bob"
pero esto tampoco funciona, ya que no tengo permiso para SSH sin contraseña de configuración.
Mi último esfuerzo es intentar usar una biblioteca SSH para Java, ya que la contraseña está disponible para el programa Java y podría iniciar sesión con eso (y ejecutar el comando correcto). Pero dado que voy a ejecutar en el mismo host, parece excesivo.
¿Alguna sugerencia?
P.S: Java versión 1.4.2, no se puede actualizar; AIX UNIX 5.3.
¿fue capaz de encontrar una solución sin usar una biblioteca de terceros? Si es así, ¿puede compartirla? – HyperioN