나는 루트로 실행되는 프로그램이 있습니다. 나는 프로그램이 일반 사용자로서 다른 응용 프로그램을 실행하기를 원합니다. 내가 setgid()
시도하고 작동하지만 루트 또는 다른 사용자에게 다시 갈 수 없습니다. 당분간 프로그램은 매우 간단합니다.리눅스 C 프로그래밍을 사용자로 실행
#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