我必须在C中编写程序,以root权限运行bash。 我尝试用exec做这个,但我不知道如何登录。这是个好主意吗?
int main() {
char *name[2];
name[0] = "bash";
name[1] = NULL;
execvp("/bin/bash", name);
}
答案 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);
}