java - 如何设置特定用户运行processBuilder?

标签 java linux processbuilder

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

关于java - 如何设置特定用户运行processBuilder?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66502257/

相关文章:

java - 在 Process Builder 中切换用户

java - 如何使用 Jersey 上传文件

java - Java 中的 getInputStream + BufferedReader + FileReader

java - 在不知道类型的情况下在Java中创建集合?

linux - 如何从 lxterminal 中将输出和错误重定向到外部文件?

linux - 使用 sed、grep 或 cut 查找并打印两个逗号之间的匹配词

c++ - 如何从 C/C++ 控制全局 OpenMP 设置?

Java 子进程额外输出到控制台

java - 更改 .java 文件后出错(由 : java. lang.NullPointerException 引起)

java - java 中的 menu.add 不会将 NONE 作为有效整数