gpt4 book ai didi

java - 以另一个用户身份加载进程?

转载 作者:IT王子 更新时间:2023-10-29 00:43:31 25 4
gpt4 key购买 nike

所以,我有一个根进程(以 root 身份运行),我希望它加载另一个具有非 root uid 的进程。

目前,我正在调用 seteuidsetegid,然后在创建进程后重新设置为 root。我发现该进程仍然加载了 root 的 uid。我应该使用什么来执行此操作?

Java代码(JNA):

public boolean loadVHost(String java, File sockfile) throws IOException {
if (CLib.INSTANCE.setegid(suid) != 0) {
log("setegid C call failed! @ " + id);
return false;
}
if (CLib.INSTANCE.seteuid(suid) != 0) {
log("seteuid C call failed! @ " + id);
return false;
}
if (CLib.INSTANCE.getegid() != suid || CLib.INSTANCE.geteuid() != suid) {
log("geteuid/egid C call returned unwanted value! @ " + id + " (returned " + CLib.INSTANCE.getuid() + ":" + CLib.INSTANCE.getgid() + ")");
return false;
}
File hp = new File(homepath);
hp.mkdirs();
File avuna = new File(hp, "avuna.jar");
File main = new File(hp, "main.cfg"); // TODO: add linux user-based RAM/HDD/bandwidth caps
File hosts = new File(hp, "hosts.cfg");
if (!avuna.exists() || !main.exists() || !hosts.exists()) {
log("VHost corrupted, avuna.jar/main.cfg/hosts.cfg is missing! Reinstalling...");
// if (createVHost(java, sockfile.getAbsolutePath())) {
// log("Reinstallation completed, vhost loading...");
// }else {
// log("Reinstallation failed, vhost NOT loading.");
// return false;
// }
}
ProcessBuilder builder = new ProcessBuilder(java, "-Xmx" + maxram + "M", "-Xms16M", "-jar", avuna.getAbsolutePath(), main.getAbsolutePath());
// TODO: if we want to be able to pass std input/output/err, this would be the place
builder.redirectErrorStream(true);
this.process = builder.start();
if (CLib.INSTANCE.seteuid(0) != 0) {
log("[CRITICAL] setuid C call failed! @ " + id + ", the VHost was loaded, but we were NOT able to re-escalate!");
return false;
}
if (CLib.INSTANCE.setegid(0) != 0) {
log("[CRITICAL] setgid C call failed! @ " + id + ", the VHost was loaded, but we were NOT able to re-escalate!");
return false;
}
return true;
}

最佳答案

我按照 Brian 的建议做了,并使用另一个进程来设置 uid,然后就执行了我的东西。

关于java - 以另一个用户身份加载进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30265339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com