我需要以 root 身份运行 bash 脚本(无密码 sudo 或 su 不可行),并且由于您无法在 Linux 中设置脚本,因此我考虑从可执行文件中调用它并将其设置为setuid:
$ cat wrapper.c
int main(void)
{
system("/bin/bash ./should_run_as_root.sh");
}
$ gcc -o wrapper wrapper.c
$ sudo chown root wrapper
$ sudo chmod ug+s wrapper
$ ll wrapper
-rwsr-sr-x 1 root users 6667 2009-02-17 11:11 wrapper
$
这有效 - 就像正确运行脚本一样 - 但脚本以执行“./wrapper”的用户身份运行。
为什么?以及如何正确实现这一点?
谢谢!