Ich habe ein Programm, das ich als root ausführen. Ich möchte, dass das Programm eine andere Anwendung als normaler Benutzer ausführt. Ich habe versucht setgid()
und es funktioniert, aber ich kann dann nicht zurück zu root oder einem anderen Benutzer. Das Programm ist vorerst sehr einfach;Linux C-Programmierung als Benutzer ausführen
#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;
}
Wie kann ich das tun? Es ist wie die Aktion des Befehls su $user-c $command