C'è un modo per ottenere UID dell'utente su una macchina Linux con Java?
Domanda
C'è un modo per ottenere UID dell'utente su una macchina Linux con Java? Sono consapevole di metodo System.getProperty("user.name");
, ma il ritorno di nome utente e sto cercando UID.
Soluzione
è possibile eseguire il comando id
lettura del risultato.
Ad esempio:
$ id -u jigar
uscita:
1000
è possibile eseguire il comando da
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) {
}
Altri suggerimenti
Se si riesce a influenzare il modo in Java VM è avviato, si potrebbe passaggio di consegne il uid come una proprietà utente:
java -Duserid=$(id -u) CoolApp
Nel vostro coolapp, si può semplicemente prendere l'ID con:
System.getProperty("userid");
Saluti,
Martin.
Basta aprire il file /etc/passwd
e cercare la linea che ha un utente pari a System.getProperty("user.name")
.
Un'altra scelta sarebbe chiamando getuid () utilizzando JNI.
V'è in realtà un'API per questo. Non c'è bisogno di chiamare un comando di shell o utilizzare JNI, solo
def uid = new com.sun.security.auth.module.UnixSystem().getUid()