Попытка написать программу на Java, способную выполнять команду UNIX от имени другого пользователя UNIX. У меня есть пароль пользователя, и я знаю команду, которую хочу запустить, но команда должна быть запущена от имени этого пользователя, поэтому я должен сначала войти в систему как этот пользователь.
Например: скажем, у нас есть пользователь jim, который хочет посмотреть, что находится в домашнем каталоге bob, и (по какой-то причине) jim имеет доступ для выполнения ls, а bob — нет. В настоящее время мы вошли в систему как bob. Вот что мы (могли) сделать:
bob@host$ su jim && ls ~bob
Проблема в том, что нас просят ввести пароль Джима. Поскольку это запускается из программы Java, т.е.
Process p = Runtime.getRuntime().exec("su jim && ls ~bob");
нас просят ввести пароль Джима, и мы вешаем трубку. Мы знаем пароль Джима. Однако я не могу войти в него.
Кроме того, мы не можем использовать скрипт Expect (он не установлен) и не можем стать суперпользователем. Я также рассматривал возможность использования SSH, чтобы попробовать это, так как технически мы могли бы сделать
bob@host$ ssh jim@host "ls ~bob"
но это также не работает, так как у меня нет разрешения на настройку SSH без пароля.
Моя последняя попытка — попытаться использовать SSH-библиотеку для Java, поскольку пароль доступен для программы Java, и я смогу войти с ним (и выполнить соответствующую команду). Но поскольку я собираюсь работать на том же хосте, это кажется излишним.
Какие-либо предложения?
P.S: Java версии 1.4.2, обновить нельзя; AIX UNIX 5.3.