我有一個程序運行在C.這需要執行一個「iptables」命令使用系統。setuid(0)和系統失敗
我試圖
setuid(0);
system("iptables .... ");
setuid和系統互不共存。從系統手冊頁
不要從一個程序 使用system()與設置用戶ID或設置組ID 特權,因爲對於一些 環境變量奇怪值 可以用來顛覆系統完整性。 使用exec(3)系列函數 而不是 而不是execlp(3)或execvp(3)。實際上,系統()不會正確地從 set-user-ID或set- 的程序中正確地工作 ,因爲/ bash/sh是bash 版本2的系統上的group-ID特權,因爲bash 2將 權限啓動。 (Debian使用改進的慶典時作爲 sh的時候它並沒有這樣做。)
我怎麼能解決我的問題?
感謝
@downvoter我會感謝一些反饋,這將有助於我改進這個答案:-) – cnicutar 2014-05-10 19:15:09