2011-01-25 15 views

Respuesta

11

puede ejecutar el comando id y leer el resultado.

por ejemplo:

$ id -u jigar

de salida:

puede ejecutar comandos 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) { 
} 

source

+0

Sería mucho más fácil de analizar si ejecutó "id -n" –

+1

'id -u ' solo imprimirá el UID. – dogbane

+0

@dogbane gracias revisa la actualización. –

2

Si puede influir en la forma en que se inicie la máquina virtual de Java, que podría traspaso del UID como una propiedad de usuario:

java -Duserid=$(id -u) CoolApp 

En su coolapp, simplemente puede buscar la identificación con:

System.getProperty("userid"); 

Saludos,

Martín.

1

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

+1

que no funciona en sistemas que utilizan otros métodos para mantener la base de datos de usuario, p. [NIS] (http://en.wikipedia.org/wiki/Network_Information_Service) o [LDAP] (http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol) etc. (normalmente se usa en clústeres) –

1

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

Cuestiones relacionadas