29
我看到函數中,有setuid, seteuid, setruid, seteruid幾個~
我不知道差別在哪邊,但是我想基本上要執行外部程式前,使用setuid,之後再把set回原本的uid。
我目前還是無法執行,以下是我的code,請各位幫我看看。
我寫的是CGI,有利用CGIC套件。程式執行後,會出現無法設定uid的
訊息,但是我不知道為何不能轉換uid,謝謝各位。
#include <stdio.h>
#include "cgic.h"
#include "cgic.c"
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
int cgiMain()
{
static uid_t uid=0; //將轉換成root的UID
int status;
cgiHeaderContentType ("text/plain");
fprintf (cgiOut, "<html><head>\n");
fprintf (cgiOut, "<title>Button Test</title></head>\n");
fprintf (cgiOut, "<body><h1>Button Test</h1>\n");
//按下按鈕後,啟動slapd Daemon。
if (cgiFormSubmitClicked("start") == cgiFormSuccess)
{
status = setuid (uid);
if (status < 0)
fprintf (cgiOut, "Set uid fail\n");
else
{
fprintf (cgiOut, "Success\n");
system ("slapd");
}
}
fprintf (cgiOut, "</body></html>");
return 0;
}