Gibt es eine Möglichkeit, die UID des Benutzers mit Java auf Linux -Maschine zu bringen?
Frage
Gibt es eine Möglichkeit, die UID des Benutzers mit Java auf Linux -Maschine zu bringen? Ich bin mir bewusst über System.getProperty("user.name");
Methode, aber es gibt den Benutzernamen von es zurück und ich suche nach UID.
Lösung
Sie können ausführen id
Befehl und lesen Ergebnis.
zum Beispiel:
$ id -u jigar
Ausgang:
1000
Sie können den Befehl durch ausführen
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) {
}
Andere Tipps
Wenn Sie beeinflussen können, wie die Java -VM begonnen wird, können Sie das übergeben uid Als Benutzereigenschaft:
java -Duserid=$(id -u) CoolApp
In Ihrem Coolapp können Sie einfach die ID mit:
System.getProperty("userid");
Grüße,
Martin.
Öffne einfach die /etc/passwd
Datei und suchen Sie nach der Zeile, die einen Benutzer entspricht System.getProperty("user.name")
.
Eine andere Wahl würde Getuid () mit JNI anrufen.
Dafür gibt es tatsächlich eine API. Es ist nicht erforderlich, einen Shell -Befehl anzurufen oder JNI zu verwenden, nur
def uid = new com.sun.security.auth.module.UnixSystem().getUid()