3

我需要从 Java 运行 sudo 并且我尝试了以下选项:

  • Runtime.exec(每种形式的“回显密码 | sudo -S”)。尽管正确指定了程序的路径,但每种形式的命令都可以直接从终端成功执行,但不能从 java 执行
  • ThreadExecutor 中的 ProcessBuilder,如此处所示

编辑 sudoers 和以 root 身份运行 Java 进程的选项对我来说是不可行的。这真的是我唯一的选择因为我真的想避免使用任何非标准库吗?

编辑:似乎除了要求用户专门下载 SUDO GUI(kdesudo、gksu、cocoasudo 等)然后提供 java 的路径之外没有其他办法。

4

3 回答 3

1

将您的 root 密码存储在您的 java 应用程序中是一个非常可怕的坏主意。我建议您以不同的方式解决这个问题,例如使用不同的 sudo 配置(因此它不需要来自任何帐户的密码)、SUID 二进制包装器或类似的东西。

于 2012-11-14T21:27:26.097 回答
0

您可以使用Process获得的对象来访问连接到进程的标准输出、输入和错误的输入、输出和错误流。

这样,您可以将输入发送到子进程并读回其输出。

于 2012-11-14T21:29:35.777 回答
0

“每种形式”是否包括“bash -c 'echo password | sudo -S'”?

于 2012-11-14T21:18:39.387 回答