如何在C程序中运行 bash获得root权限?

How to run bash with root rights in C program?

我必须用 C 语言编写 运行 bash 具有 root 权限的程序。 我尝试使用 exec 执行此操作,但我不知道如何登录。这是个好主意吗?

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

您的可执行文件需要设置为 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);
}