Как выполнять команды оболочки как 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).

Другие вопросы по тегам