当前位置:  开发笔记 > 编程语言 > 正文

从Java运行UNIX命令作为不同的用户

如何解决《从Java运行UNIX命令作为不同的用户》经验,为你挑选了2个好方法。

尝试编写能够以不同的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密码的提示并挂断了.我们知道jim的密码.但是,我不能输入它.

此外,我们不能使用Expect脚本(没有安装它),我们不能成为超级用户.我也考虑使用SSH来尝试这个,因为我们可以在技术上做到这一点

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

但由于我没有设置无密码SSH的权限,这也行不通.

我最后的努力是尝试使用SSH库来实现Java,因为密码可供Java程序使用,我可以用它登录(并执行正确的命令).但是因为我要在同一台主机上运行,​​所以看起来有点矫枉过正.

有什么建议?

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



1> DevSolar..:

安装了sudo,让用户运行在/ etc/sudoers中输入的Java程序用于相关命令,并使用sudo -u jim ls ~bob.


然后你需要切换主机.

2> Glen Balliet..:

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

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有