【问题标题】:Running process as another user in java在java中以另一个用户身份运行进程
【发布时间】:2016-05-25 03:06:24
【问题描述】:

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

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

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

【问题讨论】:

  • 我不知道有什么方法可以改变你的身份,而且这听起来很不安全。但是,您可能会使用该 exec 运行参数化脚本,该脚本使用 su 切换到该用户,然后执行您想要的操作?
  • This 线程(有点旧)可能会提供更多见解
  • 是的,这是一个很好的线程,但我正在 Windows 中寻找一种方法,实际上当我使用 runas 命令时,它会询问用户密码,我需要通过 jar 文件中的 java 代码来做到这一点。以便它自动使用 runas 并在后端插入密码。

标签: java process


【解决方案1】:

您需要调用一个命令来处理“以其他用户身份运行”功能。例如 Linux1 上的“su”或“sudo”。 JVM 不提供此功能,因为:

  • 它本质上是特定于平台的,并且
  • 在 JVM 中支持它会很危险2

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


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

2 - 首先,此功能需要 root 权限,而以 root 权限运行的 JVM 存在重大安全风险。

【讨论】:

  • 好的。谢谢。这是有道理的,但是如果我们忽略安全风险,我们如何实现通过 java 使用 runas 命令以及从 java .jar 文件中插入密码的功能?我在窗户上工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-10
  • 1970-01-01
  • 1970-01-01
  • 2014-12-24
  • 2019-09-29
  • 1970-01-01
  • 2011-03-19
相关资源
最近更新 更多