2015-12-02 60 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); 
} 
相关问题