【发布时间】:2010-11-04 00:14:07
【问题描述】:
试图编写一个能够以其他 UNIX 用户身份运行 UNIX 命令的 Java 程序。我有用户的密码,并且知道要运行的命令,但是该命令必须以该用户身份运行 - 所以我必须先以该用户身份登录。
例如:假设我们有一个用户 jim,他想查看 bob 的主目录中的内容,并且(无论出于何种原因)jim 有权执行 ls 而 bob 没有。 我们目前以 bob 身份登录。这是我们(可以)做的:
bob@host$ su jim && ls ~bob
问题是,系统提示我们输入 jim 的密码。由于这是从 Java 程序运行的,即
Process p = Runtime.getRuntime().exec("su jim && ls ~bob");
系统提示我们输入 jim 的密码并挂断了电话。 我们知道吉姆的密码。但是,我进不去。
此外,我们不能使用 Expect 脚本(没有安装它),我们也不能成为超级用户。我还研究过使用 SSH 来尝试这个,因为我们在技术上可以做到
bob@host$ ssh jim@host "ls ~bob"
但这也不起作用,因为我没有设置无密码 SSH 的权限。
我最后的努力是尝试使用 Java 的 SSH 库,因为 Java 程序可以使用密码,并且我可以使用该密码登录(并执行正确的命令)。但是由于我要在同一台主机上运行,这似乎有点矫枉过正。
有什么建议吗?
P.S:Java版本1.4.2,无法升级; AIX UNIX 5.3。
【问题讨论】:
-
您是否能够在不使用第三方库的情况下找到解决方法,如果可以,请分享一下?
标签: java unix ssh passwords aix