如何在C程序中运行具有root权限的bash?

时间:2015-12-02 20:10:18

标签: posix

我必须在C中编写程序,以root权限运行bash。 我尝试用exec做这个,但我不知道如何登录。这是个好主意吗?

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

1 个答案:

答案 0 :(得分: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);
}