Gibt es eine Möglichkeit, die UID des Benutzers mit Java auf Linux -Maschine zu bringen?

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

  •  24-10-2019
  •  | 
  •  

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.

War es hilfreich?

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) {
}

Quelle

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()
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top