【发布时间】:2018-05-09 03:50:42
【问题描述】:
我想用 C 编写程序,它会以 root 身份打开 bash,但没有任何用户的密码。
#include <unistd.h>
#include <stdio.h>
int main(void)
{
char *argv[] = { "/bin/bash","-c","sudo /bin/bash",0 };
execve(argv[0], &argv[0],0);
return 0;
}
我的系统是 Linux Mint 18.2 Sonya,我设置了这两个命令
chown root:root a.out
chmod u=srwx,go=xr a.out
但当我尝试执行此操作时,它仍然要求输入密码。如果有其他选项,我不想编辑 /etc/sudoers。
【问题讨论】:
-
允许以 root 身份运行程序而无需指定 root 的密码(并且无需通过 sudoers 或其他方式给予明确许可)听起来像是一个安全漏洞,你不觉得吗?跨度>
-
是的,在某些特定情况下不是。在我们知道整个数字之前,我们可以判断吗? OP 必须被警告风险,或者解释一下整体情况。请注意,许多程序(尤其是守护进程)都有一个 setuid 位并以 root 身份运行,通常执行一些初始化,然后以普通用户身份执行 setuid()。
-
@DanielKamilKozar OP 可以将所有者设置为 root 并设置
SETUID。 -
我意识到风险。这是我学习任务的一部分,不会在其他任何地方使用。
标签: c linux bash root linux-mint