概述作为另一个用户加载进程?
所以,我有一个根进程(以root身份运行),我希望它加载另一个非root用户进程。
目前,我正在调用seteuID , setegID ,然后在创build进程后重新设置为root。 我发现这个过程仍然以root用户身份加载。 我应该用什么来做到这一点?
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 + \”,but we were NOT able to re-escalate!\”); return false; } return true; }
以编程方式清除Microsoft IMEinput历史logging
使用从源代码构build的bzip2提升iostream
QApplication:在windows上没有Qt5和qtsingleapplication这样的文件或目录
铿锵 – “无法执行命令:程序不可执行”
C ++访问主外部的命令行参数?
在kernel_fpu_end之前调用kernel_fpu_begin两次
在windows Compact 2013中标记存储卷
获取任务栏中的应用程序数量
C ++ windows32 GDI填充三angular形
来自Win32的Cortana
我做了什么布赖恩建议,并使用另一个过程setuID,然后刚刚执行我的东西。
总结
以上是内存溢出为你收集整理的作为另一个用户加载进程?全部内容,希望文章能够帮你解决作为另一个用户加载进程?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
请登录后查看评论内容