以不同用户身份运行 UNIX 命令,从 Java 开始

2022-09-04 21:50:02

尝试编写能够以不同的 UNIX 用户身份运行 UNIX 命令的 Java 程序。我有用户的密码,并且我知道要运行的命令,但该命令必须以该用户身份运行 - 因此我必须首先以该用户身份登录。

例如:假设我们有一个用户 jim,他想查看 bob 的主目录中的内容,并且(无论出于何种原因)jim 有权执行 ls,而 bob 则没有。我们当前以 bob 的身份登录。以下是我们(可以)做的事情:

bob@host$ su jim && ls ~bob

问题是,我们收到提示输入吉姆的密码。由于这是从Java程序运行的,即

Process p = Runtime.getRuntime().exec("su jim && ls ~bob");

我们收到提示输入吉姆的密码并挂断了电话。我们知道吉姆的密码。但是,我无法输入它。

此外,我们不能使用期望脚本(没有安装它),我们不能成为超级用户。我还研究了使用SSH来尝试这一点,因为从技术上讲,我们可以做到

bob@host$ ssh jim@host "ls ~bob"

但这也不起作用,因为我没有设置无密码SSH的权限。

我的最后一个努力是尝试使用Java的SSH库,因为密码可用于Java程序,并且我可以使用该密码登录(并执行正确的命令)。但是由于我将在同一台主机上运行,因此这似乎有些过分。

有什么建议吗?

附言:Java版本1.4.2,无法升级;AIX UNIX 5.3.


答案 1

安装了 sudo,让运行 Java 程序的用户在 /etc/sudoers 中输入有问题的命令,然后使用 .sudo -u jim ls ~bob


答案 2

问题解决了。使用JSch(http://www.jcraft.com/jsch/)以已知的用户名和密码SSH进入服务器,并执行命令。谢谢大家的建议!


推荐