Проверьте, является ли пользователь 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 для чтения вывода команды.

Ответ 6

Лучший способ - запустить

 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"));
    }
}

Просто "другое" измененное решение.