Есть ли способ получить UID пользователя на компьютере с Linux, используя Java? Мне известен метод System.getProperty("user.name");, но он возвращает имя пользователя и я ищу UID.
System.getProperty("user.name");
вы можете выполнить id команду и прочитать результат.
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 VM, вы можете передать uid как пользовательское свойство:
java -Duserid=$(id -u) CoolApp
В вашем CoolApp вы можете просто получить идентификатор с помощью:
System.getProperty("userid");
С уважением,
Martin.
Другим вариантом будет вызов getuid () с использованием JNI.
Просто откройте файл /etc/passwd и найдите строку с пользователем, равным System.getProperty("user.name").
/etc/passwd
System.getProperty("user.name")
На самом деле есть API для этого. Нет необходимости вызывать команду оболочки или использовать JNI, просто
def uid = new com.sun.security.auth.module.UnixSystem().getUid()