当我们运行Runtime.exec(cmd)时,将从哪个用户运行它?例如,user1(在Unix上)运行java -jar Test.jar。在这个程序中,我们有Runtime.exec("whoami")。我们会收到哪个用户的身份证?
我有屏幕终端,在那里运行chrootuid,运行java程序。不知怎的,这条公共关系的命令。返回与chrootuid的所有者不同的用户id,其名称为J.p。跑了。有人能解释一下吗?
发布于 2014-11-09 00:00:30
正如@SLaks所说,脚本将作为启动JVM的同一个用户运行。
精疲力竭:
因此,您可以看到:“分叉”进程将以与JVM相同的凭据运行。
现在,关于运行单独进程的更多信息.
在Java中,您确实希望使用ProcessBuilder而不是Runtime.exec(),原因如下:
.start())。但它显然不允许您对共享资源进行细粒度控制,也不像本机API所能做的那样允许特权修改。尽管如此,ProcessBuilder在很大程度上优于Runtime.exec(),但在流程处理方面还没有发生根本性的变化,因为新的java.nio.file就是File:一场革命。
发布于 2014-11-08 23:54:27
所有子进程都作为父进程的同一个用户运行。
https://stackoverflow.com/questions/26823343
复制相似问题