Есть ли способ получить UID пользователя на компьютере с Linux, используя Java? - PullRequest
10 голосов
/ 25 января 2011

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

Ответы [ 5 ]

12 голосов
/ 25 января 2011

вы можете выполнить 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) {
}

источник

3 голосов
/ 25 января 2011

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

java -Duserid=$(id -u) CoolApp

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

System.getProperty("userid");

С уважением,

Martin.

1 голос
/ 25 января 2011

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

1 голос
/ 25 января 2011

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

0 голосов
/ 11 марта 2019

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

def uid = new com.sun.security.auth.module.UnixSystem().getUid()
...