मेरे पास एक प्रोग्राम है जिसे मैं रूट के रूप में चलाता हूं। मैं प्रोग्राम को सामान्य उपयोगकर्ता के रूप में किसी अन्य एप्लिकेशन को निष्पादित करना चाहता हूं। मैंने setgid()
की कोशिश की और यह काम करता है, लेकिन मैं फिर रूट या किसी अन्य उपयोगकर्ता पर वापस नहीं जा सकता। समय के लिए कार्यक्रम बहुत आसान है;लिनक्स सी प्रोग्रामिंग उपयोगकर्ता के रूप में निष्पादित
#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