Есть ли способ получить UID пользователя на машине Linux с помощью Java?
Вопрос
Есть ли способ получить 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()