Проверьте, является ли пользователь root в Java-приложении
Как я могу проверить, является ли пользователь root в Java-приложении?
Спасибо
Ответ 1
Process p = Runtime.getRuntime().exec("id -u")
Имейте в виду, что "root" пользователь в системе не может называться root (хотя редко его можно изменить), и он также может быть псевдоним для другого имени пользователя. Если текущий пользователь является корневым, выход будет 0.
Ответ 2
Легко. Просто используйте
System.getProperty("user.name")
Ответ 3
запустить собственную команду?
как whoami
Ответ 4
Вы можете позвонить
Process p = Runtime.getRuntime.exec("whoami")
метод. Затем вы можете обрабатывать p stdout для чтения вывода команды.
Process p = Runtime.getRuntime.exec("groups `whoaim`");
и попытайтесь разобрать строку, чтобы получить корень группового вызова. Ваш JVM-процесс может запускаться пользователем, а не root, но, тем не менее, модератором, но этот пользователь может быть в корневой группе, и у вас есть права root.
Ответ 7
String userName = System.getProperty("user.name");
Process p = Runtime.getRuntime().exec("groups " + userName);
String output = read(p.getInputStream());
String error = read(p.getErrorStream());
И вот функция чтения:
public static String read(InputStream input) throws IOException {
try (BufferedReader buffer = new BufferedReader(new InputStreamReader(input))) {
return buffer.lines().collect(Collectors.joining("\n"));
}
}