Как выполнять команды оболочки как root в Java
Я работаю над утилитой кроссплатформенной установки, написанной на Java. Я хотел бы иметь возможность выполнять команды оболочки, например, "apt-get ..." в Linux. Я использую API-интерфейс ProcessBuilder для этой цели.
К сожалению, некоторые команды требуют привилегий root. Я хотел бы выполнить следующую команду оболочки от имени root:
bash -c apt-get install -y [некоторый пакет]
Если я пытаюсь добавить "sudo" до того, как "apt-get" ничего не работает, потому что нет терминала "sudo", с которого можно получить пароль.
Что я должен сделать, чтобы попросить пользователя ввести пароль и затем выполнить вышеупомянутую команду оболочки?
Короткий фрагмент кода был бы очень признателен! Заранее спасибо! Максимум
2 ответа
Вы могли бы бежать gksudo <your command>
но это связывает ваше приложение с определенным пользовательским интерфейсом, например, gnome, kde и т. д.
Вы можете записать все root-задачи в файл сценария и попросить пользователя выполнить его с правами root. Я знаю, что это звучит неуклюже, но так делают многие поставщики программного обеспечения "уровня предприятия" (например, (Java-) установщик Oracle RDBMS, по крайней мере, до 11g).