当前位置: 首页 > 面试题库 >

从Java以不同的用户身份运行UNIX命令

管弘
2023-03-14
问题内容

尝试编写一个能够以其他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");

我们被提示输入吉姆的密码并挂断。 我们知道吉姆的密码 。但是,我无法输入。

此外,我们无法使用Expect脚本(未安装该脚本),也无法成为超级用户。我还研究了使用SSH尝试这种情况,因为从技术上讲我们可以

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

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

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

有什么建议?

PS:Java版本1.4.2,无法升级;AIX UNIX 5.3。


问题答案:

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



 类似资料:
  • 正在尝试在本地集群中运行Service Fabric应用程序,以作为其他用户运行。用例是试图连接到我的on prem数据库,但是由于N/W服务帐户没有访问权限,我需要以登录用户的身份运行我的SF。我以管理员用户和域用户的身份完全遵循了下面的网址,但没有运气。 https://docs.microsoft.com/en-us/Azure/service-fabric/service-fabric-a

  • 问题内容: 因此,我试图使用子进程从python脚本中以超级用户身份运行一个进程。在ipython shell中,类似 工作正常,但是一旦将其粘贴到脚本中,我就会开始获得:。 我猜这是由于sudo处理ubuntu上的环境的方式。(我也尝试和与无济于事) 所以我的问题基本上是,如果我想以超级用户身份运行,并在需要时提示用户输入超级用户密码,我该怎么做?我无意在脚本中存储密码。 编辑: 我尝试将命令既

  • 问题内容: 我在本地主机上运行Apache。通过以www- user用户身份运行的PHP脚本,我想控制我的机器上Rhythmbox的播放。到目前为止,我的PHP脚本中有一个简单的命令: 当我像我一样从命令行运行它时,它的效果很好,但是如果它以www-user身份运行,我想不知道/无法访问我的Rhythmbox实例。 有没有一种简单的方法可以让该PHP脚本以我的用户而不是www-user的身份运行,

  • 我最近开始使用Jenkins进行集成。在没有shell命令的情况下在主节点上运行作业之前,一切都很好,但我必须在主节点和从节点上运行作业,从节点包含要运行的shell命令。我无法以root用户身份运行这些shell命令。我试过了 使用 在shell命令中设置用户名 使用 每次使用上述任何一种方法时,我都会遇到错误。

  • 问题内容: 我最近开始使用Jenkins进行集成。一切都很好,直到我在没有shell命令的情况下在主节点上运行作业,但是我必须在包含shell命令的主节点和从属节点上运行作业。我无法以root用户身份运行这些Shell命令。我努力了 使用。 在shell命令中设置用户名。 使用。 我得到我每次使用任何上述方法时错误。 问题答案: 您需要修改用户的权限,以便您可以运行shell命令。您可以将jenk

  • 我使用Ansible安装了Nginx。要在Centos7上安装,我使用了yum软件包,因此默认情况下它是以root用户身份运行的。我希望它在Centos中以不同的用户(前nginx用户)身份启动和运行。当我尝试与其他用户一起运行时,会出现以下错误: nginx的工作。服务失败,因为控制进程已退出,错误代码为。有关详细信息,请参阅“systemctl status nginx.service”和“j