【发布时间】:2011-09-10 06:07:39
【问题描述】:
我有一个用 C 语言运行的程序。这需要使用系统执行“iptables”命令。
我试过了
setuid(0);
system("iptables .... ");
setuid 和 system 不能共存。从系统手册页
不要在程序中使用 system() 使用 set-user-ID 或 set-group-ID 特权,因为奇怪的价值观 对于一些 环境变量可能用于破坏系统完整性。 使用 exec(3) 系列函数 反而, 但不是 execlp(3) 或 execvp(3)。 system() 实际上不会工作 正确地从程序中 设置用户 ID 或设置 /bin/sh 为 bash 的系统上的组 ID 权限 版本 2,因为 bash 2 下降 启动时的特权。 (Debian 使用修改后的 bash,它在调用时不会这样做 嘘)
我该如何克服我的问题?
谢谢
【问题讨论】: