如何设置特定用户来运行ProcessBuilder?

3
如何设置特定用户运行ProcessBuilder?
ProcessBuilder processBuilder = new ProcessBuilder();
                        String[] cmdStr = {"su", "-s", "/bin/bash", "myUser", "-c", "/home/myUser/sch.sh", "argumen"};
                        processBuilder.command(cmdStr);
                        Process process = processBuilder.start();

当我尝试时,这并没有起作用。

1个回答

1

始终指定路径,因此请使用/bin/su。然而,更普遍的情况是,除非您拥有完整的交互式终端,否则无法使用su,因为它会要求输入密码,而您无法提供密码,因为这存在安全问题,因此su通常不允许。

建议的策略是改用sudo,并将您想要运行的特定脚本标记为由root拥有,并在sudoers文件中特别标记为“运行java进程的用户可以无需密码sudo此特定shell脚本,但不能运行其他任何东西”。或者,在这种情况下,不是root,而是myUser


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接