如何在C程序中使用root权限运行bash?
问题描述:
我必须在C中编写运行bash和root权限的程序。 我试图用exec来做到这一点,但我不知道如何登录。这是一个好主意吗?如何在C程序中使用root权限运行bash?
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);
}
(1)您期望此程序执行什么操作,而它做了什么?要详细。 (2)如果您认为您必须使用setuid程序来执行X,*对于X的任何值,*很可能* X是一个坏主意。您为什么需要这样做? (3)如果你不知道“setuid”这个词是什么意思,或者为什么我提出这个词,你需要的帮助比我们能给你的更多。 – zwol
将标记从C更改为POSIX。与C无关,你可以使用任何主要的编程语言编写,但所有的操作系统。 –