Проверьте, является ли пользователь root в приложении Java - PullRequest
10 голосов
/ 25 февраля 2011

Как я могу проверить, является ли пользователь root в приложении Java?

Спасибо

Ответы [ 7 ]

8 голосов
/ 25 февраля 2011
Process p = Runtime.getRuntime().exec("id -u")

Имейте в виду, что «системный» пользователь в системе может не называться root (хотя его редко можно изменить), и также возможно присвоить ему псевдоним другому имени пользователя.Если текущий пользователь похож на пользователя root, вывод будет 0.

6 голосов
/ 16 сентября 2013

Легко.Просто используйте

System.getProperty("user.name")
2 голосов
/ 25 февраля 2011

Вы можете позвонить

  Process p = Runtime.getRuntime.exec("whoami")

метод. Затем вы можете обработать стандартный вывод p для чтения вывода команды.

2 голосов
/ 25 февраля 2011

запустить нативную команду? как whoami

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

Проверьте это: получите логин в java .

0 голосов
/ 27 апреля 2016
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"));
    }
}

Просто «другое» модифицированное решение.

0 голосов
/ 25 февраля 2011

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

 Process p = Runtime.getRuntime.exec("groups `whoaim`"); 

и попробуйте разобрать строку, чтобы получить групповой вызов root. Ваш процесс JVM может быть запущен пользователем, не вызывающим root, а то есть модератором, но этот пользователь может быть в корневой группе, и у вас есть права root.

...