私のCコードはpopenのが失敗した(0)
seteuid (euid);
popen("/root/bin/iptables ....", "r");
を行い、それは私が(0)のseteuidを呼び出しても、失敗します。 (実行ファイルにはsetuidが設定されています)。
seteuidとpopenは一緒に動作しないようです。
popenのは、言い換えれば、それは標準エラー出力に出力し、次のMSG
iptables v1.4.6: can't initialize iptables table : Permission denied (you must be root)
と呼ばれる「成功」が、新しいシェルが作成されるため、権限が維持され、ユースケースが失敗していないはpopen。
どうすれば問題を解決できますか?
エラーは何ですか?どのように失敗するのですか? –
@BasileStarynkevitchが質問を編集しました。 – cateof
seteuidの戻りコードはチェックしないので、** popen( "/ usr/bin/who am i"、 "r"); **あなたは? –