在java中作为另一个用户运行进程

时间:2016-02-14 04:49:00

标签: java process

抱歉,我没有明确提到我正在使用Windows,所以解决方案与linux有关 有没有办法通过另一个使用java的用户执行进程(通过在代码中提供用户名和密码)?

目前我正在使用进程p = Runtime.getRuntime().exec("cmd"),但我需要以不同的用户身份运行它。有没有支持这个的功能?或者java中的任何其他方法?

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

1 个答案:

答案 0 :(得分:1)

您需要调用一个命令来处理"以其他用户身份运行"功能。例如" su"或" sudo"在Linux 1 上。此功能不是JVM的可用性,因为:

  • 它本身就是特定于平台的,
  • 在JVM 2 中支持它是危险的。

还有一个问题是,如果编写(或使用)处理用户的程序存在风险。代表他们的密码。特别是对于那些不了解并遵循"最佳实践的用户而言。管理他们的密码。

1 - ...虽然" sudo"有一个不同的访问控制模型。

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