【发布时间】:2013-10-03 14:08:04
【问题描述】:
我有一个以 root 身份运行的程序。我希望程序以普通用户的身份执行另一个应用程序。我尝试了setgid(),它可以工作,但我不能再回到 root 或其他用户。程序暂时很简单;
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main(int argc, char *argv[] )
{
if ( argc != 2) {
printf("usage: %s command\n",argv[0]);
exit(1);
}
setgid(100);
setuid(1000);
putenv("HOME=/home/caroline");
putenv("DISPLAY=:0");
system(argv[1]);
seteuid(1001);
putenv("HOME=/home/john");
putenv("DISPLAY=:1");
system(argv[1]);
return 0;
}
我该怎么做?就像命令su $user-c $command的动作
【问题讨论】: