¿Hay alguna forma de obtener el UID del usuario en la máquina Linux usando Java?
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.
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) {
}
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()