Попытка написать программу на 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.