我有一个以根用户身份运行的程序,在执行过程中,这个程序会以不同的用户身份执行一些操作,所以我想使用一系列setuid()s。但是,我发现,在setuid(user1)之后,我成为user1,因此没有权限执行setuid(user2)。
如何返回到根以便执行setuid(user2)?
谢谢。
最佳答案
使用fork
,让孩子setuid
作为第二个用户执行任何需要执行的操作。根父级等待子级,并在子级完成执行后继续。
childpid = fork();
if (childpid < 0) {
// fork failed
}
if (childpid == 0) {
// Child
setuid(user1);
prepareUser1(); // Do some stuff as user1.
exit(0); // Done as user1
} else {
// parent: wait for child to finish
waitpid(childpid);
}
// Parent continues as root...
关于c - setuid()之后如何恢复到原始状态/用户?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22320809/