Есть ли способ получить UID пользователя на машине Linux с помощью Java?

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

  •  24-10-2019
  •  | 
  •  

Вопрос

Есть ли способ получить UID пользователя на машине Linux с помощью Java? Я знаю System.getProperty("user.name"); Метод, но он возвращает имя пользователя, и я ищу UID.

Это было полезно?

Решение

Вы можете выполнить id командовать и прочитать результат.

Например:

$ id -u jigar

выход:

1000

Вы можете выполнить команду

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

источник

Другие советы

Если вы можете повлиять на то, как начинается виртуальная машина Java, вы можете передавать uid Как свойство пользователя:

java -Duserid=$(id -u) CoolApp

В вашем CoolApp вы можете просто принести удостоверение личности:

System.getProperty("userid");

С уважением,

Мартин.

Просто откройте /etc/passwd файл и поиск строки, в которой пользователь будет равен System.getProperty("user.name").

Другим выбором будет вызов getUID () с использованием JNI.

На самом деле есть API для этого. Нет необходимости вызывать команду оболочки или использовать JNI, просто

def uid = new com.sun.security.auth.module.UnixSystem().getUid()
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top