Ho un programma che eseguo come root. Vorrei che il programma eseguisse un'altra applicazione come utente normale. Ho provato setgid()
e funziona, ma non posso quindi tornare a root o un altro utente. Il programma per il momento è molto semplice;Programmazione Linux C eseguita come utente
#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;
}
Come posso fare questo? È come l'azione di comando su $user-c $command