2015-12-02 59 views
0

我必須在C中編寫運行bash和root權限的程序。 我試圖用exec來做到這一點,但我不知道如何登錄。這是一個好主意嗎?如何在C程序中使用root權限運行bash?

int main() { 
    char *name[2]; 
    name[0] = "bash"; 
    name[1] = NULL; 
    execvp("/bin/bash", name); 
} 
+2

(1)您期望此程序執行什麼操作,而它做了什麼?要詳細。 (2)如果您認爲您必須使用setuid程序來執行X,*對於X的任何值,*很可能* X是一個壞主意。您爲什麼需要這樣做? (3)如果你不知道「setuid」這個詞是什麼意思,或者爲什麼我提出這個詞,你需要的幫助比我們能給你的更多。 – zwol

+0

將標記從C更改爲POSIX。與C無關,你可以使用任何主要的編程語言編寫,但所有的操作系​​統。 –

回答

2

您的可執行文件需要setuid-root才能正常工作。

sudo chown root:root myprog 
sudo chmod 4755 myprog 

即使你這樣做,如果只有有效的用戶ID是root,shell可能不會給你root權限。您還需要設置真實的用戶ID:

int main() { 
    char *name[2]; 
    name[0] = "bash"; 
    name[1] = NULL; 
    setuid(0);  // sets the real user ID to 0 i.e. root 
    execvp("/bin/bash", name); 
} 
相關問題