Как выполнять команды оболочки от имени пользователя root в Java

Я работаю над кроссплатформенной утилитой установки, написанной на Java. Я хотел бы иметь возможность выполнять команды оболочки, например "apt-get..." в Linux. Для этой цели я использую API ProcessBuilder.

К сожалению, для некоторых команд требуются привилегии root. Я хотел бы выполнить следующую команду оболочки от имени пользователя root:

bash -c apt-get install -y [какой-то пакет]

Если я попытаюсь добавить «sudo» перед «apt-get», ничего не получится, потому что нет терминала, с которого «sudo» может получить пароль.

Что я должен сделать, чтобы запросить у пользователя пароль, а затем выполнить вышеупомянутую команду оболочки?

Фрагмент кода был бы очень признателен! Заранее спасибо! Максимум


person Max Pole    schedule 02.08.2013    source источник
comment
Запустите установщик с привилегиями root, это то, что требуется.   -  person Boris the Spider    schedule 02.08.2013
comment
Я планирую использовать этот установщик из Java Web Start. Не рекомендуется получать слишком много привилегий JavaWS. Более того, я хотел бы выполнять корневые команды только в случае необходимости. Мой установщик сначала проверяет, нужна ли какая-либо установка или нет...   -  person Max Pole    schedule 02.08.2013


Ответы (2)


Вы можете запустить gksudo <your command>, но это привязывает ваше приложение к определенному пользовательскому интерфейсу, например. гном, кде и т.д.

person Marc-Christian Schulze    schedule 02.08.2013
comment
Благодарю вас! Теперь это работает. Привязка к пользовательскому интерфейсу для меня не проблема, потому что мой проект ориентирован в первую очередь на графические среды. - person Max Pole; 02.08.2013
comment
@ user1815381: Обычно мы принимаем ответы, если они помогают. Я надеюсь, что вы делаете то же самое, это помогло. Спасибо! - person SSaikia_JtheRocker; 02.08.2013
comment
Извиняюсь! Я этого не знал. Спасибо за подсказку! - person Max Pole; 03.08.2013

Вы можете записать все корневые задачи в файл сценария и попросить пользователя выполнить его с привилегиями root. Я знаю, что это звучит неуклюже, но это делается довольно многими поставщиками программного обеспечения «уровня предприятия» (например, (Java-) установщик Oracle RDBMS, по крайней мере, до 11g).

person marderh    schedule 02.08.2013