2016-02-14 35 views
0

对不起,我没有明确提到,我在使用Windows系统,所以到Linux 相关的解决方案,有没有办法通过其他用户使用Java(通过提供用户名和密码来执行的过程在代码中)?运行过程中的java另一个用户

目前我使用过程p = Runtime.getRuntime().exec("cmd")但我需要运行这是一个不同的用户。有没有支持这个功能的功能?或在Java中的任何其他方法?

编辑:对不起,我没有以前提到它,我在Windows上运行。所以与linux os相关的解决方案不适用。

+0

我不知道的方式来改变你是谁,这听起来很安全不友好。但是,您可能会使用该exec来运行使用su切换到该用户的参数化脚本,然后执行您想要的操作? – billjamesdev

+1

[这](http://stackoverflow.com/questions/1012792/running-unix-commands-as-different-user-from-java)线程(一个年纪大一点)可能会提供更多的见解 – Alfiyum

+0

是的,这是一个很好的线程但我在Windows中寻找一种方式,实际上当我使用runas命令时,它要求输入用户密码,我需要通过jar文件中的java代码来执行此操作。以便它自动使用runas并在后端插入密码。 – jahanzaib91

回答

1

您需要调用了一个的“运行其他用户”功能保健的命令。例如Linux上的“su”或“sudo”。此功能不是从JVM因为可用性:

  • 它本质上是特定于平台的,并且
  • 那将是危险的,以支持它在JVM 。

还有一个问题是,如果编写(或使用)代表它们处理用户密码的程序是有风险的。特别是对于不理解并遵循“最佳实践”管理密码的用户。


1 - ...虽然 “命令” 都有不同的访问控制模型。

2 - 首先,此功能需要root权限,而以root用户权限运行的JVM是一个主要的安全风险。

+0

好的。谢谢。这很有道理,但如果我们忽略了安全风险,我们如何实现通过java使用runas命令的功能以及从java .jar文件插入密码?我正在研究windows – jahanzaib91