¿Hay alguna forma de obtener el UID del usuario en la máquina Linux usando Java?

StackOverflow https://stackoverflow.com/questions/4796172

  •  24-10-2019
  •  | 
  •  

Pregunta

¿Hay alguna forma de obtener el UID del usuario en la máquina Linux usando Java? Soy consciente de System.getProperty("user.name"); Método, pero devuelve el nombre de usuario y estoy buscando uid.

¿Fue útil?

Solución

puedes ejecutar id Resultado de comando y lectura.

por ejemplo:

$ id -u jigar

producción:

1000

puede ejecutar el comando por

try {
    String userName = System.getProperty("user.name");
    String command = "id -u "+userName;
    Process child = Runtime.getRuntime().exec(command);

    // Get the input stream and read from it
    InputStream in = child.getInputStream();
    int c;
    while ((c = in.read()) != -1) {
        process((char)c);
    }
    in.close();
} catch (IOException e) {
}

fuente

Otros consejos

Si puede influir en cómo se inicia la VM Java, podría entregar el uid Como propiedad de usuario:

java -Duserid=$(id -u) CoolApp

En tu CoolApp, simplemente puedes obtener la identificación con:

System.getProperty("userid");

Saludos,

Martín.

Solo abre el /etc/passwd archivo y busque la línea que tenga un usuario igual a System.getProperty("user.name").

Otra opción sería llamar a getuid () usando JNI.

En realidad, hay una API para esto. No hay necesidad de llamar a un comando shell o usar JNI, solo

def uid = new com.sun.security.auth.module.UnixSystem().getUid()
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top