Добрый всем день!Пишу следующую конструкцию:
есть скриптик на перл, работает из под непривилегированного юзера.
он должен в свою очередь вызвать скрипт с параметром, изменяющим правило в ipfw.
нашел по сайту, что это можно реализовать при помощи дополнительной проги на С.
вот что вышло:
#include <unistd.h>
main(int argc, char *argv[])
{
setuid(0);
setgid(0);
execl("/usr/local/etc/scripts/firewall/change_pop.sh","",argv[1],NULL);
return 0;
}
#change_pop.sh
#!/bin/sh
NEW_IP_ADR=$1
/usr/bin/sed "s|IP_ADR=0.0.0.0|IP_ADR=$NEW_IP_ADR|g" /usr/local/etc/scripts/firewall/ipfw-default.conf > /usr/local/etc/scripts/firewall/ipfw.conf
/usr/sbin/chown root:wheel /usr/local/etc/scripts/firewall/ipfw.conf
/bin/chmod 755 /usr/local/etc/scripts/firewall/ipfw.conf
/usr/local/etc/scripts/firewall/ipfw.conf > /dev/null 2>&1
(из заготовки делаю файлик с новыми правилами для фаервола и пытаюсь его выполнить), однако получаю
$ ./change_pop 10.10.10.10
chown: /usr/local/etc/scripts/firewall/ipfw.conf: Operation not permitted
тоесть, не выдались мне права рутовые...