Java 如何设置特定用户以运行processBuilder?

Java 如何设置特定用户以运行processBuilder?,java,linux,processbuilder,Java,Linux,Processbuilder,如何设置特定用户以运行processBuilder ProcessBuilder processBuilder = new ProcessBuilder(); String[] cmdStr = {"su", "-s", "/bin/bash", "myUser", "-c", "/home/myUser/sch.sh", &qu

如何设置特定用户以运行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();

当我尝试时,这不起作用

始终指定路径,因此请使用
/bin/su
。然而,更一般地说,
su
不能使用,除非你有一个完整的交互式终端,因为它会要求密码,而你不能提供密码,因为这充满了安全问题,因此su通常不允许

建议这样做的策略是使用
sudo
,并将要运行的特定脚本标记为root所有,特别是在sudoers文件中标记为“运行java进程的用户可以在不使用密码的情况下sudo这个特定的shell脚本,但除此之外没有其他”。或者,在本例中,不是root,而是
myUser