0
我的C代码做了POPEN失败个seteuid(0)
seteuid (euid);
popen("/root/bin/iptables ....", "r");
后,当调用,它失败,即使我有个seteuid拨打电话(0)。 (可执行文件有setuid)。
看来seteuid和popen不能一起工作。
当POPEN称它在标准错误打印以下味精
iptables v1.4.6: can't initialize iptables table : Permission denied (you must be root)
换句话说popen方法“成功”,但由于新的外壳创建权限不维护和使用的情况下失败。
我该如何解决问题?
什么是错误?它如何失败? – 2012-02-15 20:29:24
@BasileStarynkevitch编辑了这个问题。 – cateof 2012-02-15 20:38:48
你不检查seteuid的返回码,所以给** popen(“/ usr/bin /我是谁”,“r”); **你? – 2012-02-15 20:42:08