Возможно, вопрос тупой, и я где-то проглядел ответ, но всё же.
Нужно выполнить команду из java-кода. Как выполнить от того же пользователя, который запустил программу - понятно.
Сначала получаю Runtime.getRuntime(), потом у этого runtime вызываю метод exec(), на выходе получаю экземпляр класса Process.
У этого экземпляра класса Process есть три метода - для стандартных потоков - ввода, вывода и ошибок. Допустим, получаю поток ввода - вывожу его на экран - фактически вывод на консоль. Например, если запустить hostname - я таким образом увижу имя хоста, всё правильно. :)
А вот как получить права другого пользователя? Если вызвать, например, su - то есть нюанс. Нюанс в том, что нужно ещё пароль ввести... притом после ввода. А потом хотелось бы получить оболочку, в которой вводить команды от другого пользователя... ведь от текущего runtime вводить бесполезно - это будет тот же пользователь.
Или, может, мне этот su вообще не нужен? Объясните, как мне правильно поступить в данной ситуации? :) Необязательно на примере java - можно другой ЯП, мне понять сам принцип.
Пароль от пользователя я типа знаю, пароль в коде задаётся (например)... Считаем, что нужный пользователь есть в группе wheel и имеет права su запускать (или можно вообще заменить на sudo).