Для начала, процедура отличается для Windows и Ubuntu, поэтому я остановлюсь на Ubuntu.Если ожидается, что ваше приложение будет работать на кроссплатформенном уровне, вам может потребоваться сначала выполнить какую-то идентификацию системы.Затем вы можете применить StrategyPattern в коде для обработки различных способов, позволяющих вашему приложению получить права root или права администратора
Как я понимаю, ваша конечная цель - выполнить команду как root, и в этом случае есть несколько способов.с этой целью
1) Вы можете запустить свое Java-приложение от имени root .Это будет означать, что Приложение может быть выполнено только пользователем root.Это особенно полезно, потому что пользователь root может быть недоступен по той или иной причине, и вы можете позволить пользователю справиться с этой проблемой.Это должно быть примерно так:
sudo java -jar myapp.jar
2) Используйте 'sudo' с ключом '-S' и введите passпароль пользователя к процессу stdin .Это требует, чтобы пользователь был зарегистрирован в файле конфигурации sudoers с разрешениями, установленными для выполнения выполняемой команды.Это может означать, что вы передаете пароль в качестве аргумента приложению во время запуска.
3) Используйте «gksudo», который автоматически вызывает диалоговое окно с паролем .Это также требует, чтобы пользователь был зарегистрирован в файле конфигурации sudoers и, конечно же, доступно «gksudo».Для этого метода это будет выглядеть примерно так:
String[] command = {"gksudo", "systemctl restart networking"};
Process p = Runtime.getRuntime().exec(command);