У меня есть программа, работающая на C. Для этого нужно выполнить команду «iptables», используя system.
Я старался
setuid(0);
system("iptables .... ");
setuid и система не сосуществуют. со страницы системного руководства
Не используйте system() из программы с привилегиями set-user-ID или set-group-ID, потому что странные значения для некоторых переменных среды могут быть использованы для нарушения целостности системы. Вместо этого используйте семейство функций exec(3), но не execlp(3) или execvp(3). system() на самом деле не будет работать должным образом из программ с привилегиями set-user-ID или set-group-ID в системах, в которых /bin/sh является bash версии 2, поскольку bash 2 сбрасывает привилегии при запуске. (Debian использует модифицированный bash, который не делает этого при вызове как sh.)
как я могу победить свою проблему?
Спасибо