我有一个在 C 中运行的程序。这需要使用 system.iptables 执行“iptables”命令。
我试过
setuid(0);
system("iptables .... ");
setuid 和 system 不能共存。从系统手册页
不要在具有 set-user-ID 或 set-group-ID 权限的程序中使用 system(),因为某些环境变量的奇怪值可能会被用来破坏系统完整性。请改用 exec(3) 系列函数,但不要使用 execlp(3) 或 execvp(3)。事实上,system() 在 /bin/sh 是 bash 版本 2 的系统上无法从具有 set-user-ID 或 set-group-ID 特权的程序正常工作,因为 bash 2 在启动时会放弃特权。(Debian 使用修改后的 bash,它在作为 sh 调用时不会这样做。)
我怎样才能克服我的问题?
谢谢