Собственно сабж. Нужно запустить перловый скрипт, который будет вызывать ipchains от рута соответственно. Как это сделать? Апач упорно сопротивляется вызовам с SUID, su, sudo...
>который будет вызывать ipchains от
>рута соответственно. Как это сделать?Так делать нельзя, бери и создавай временный файл с командой, напирмер, формата "операция:ip:порты"
DENY:192.168.1.1:
ALLOW:192.168.1.1:80
Затем раз в минуту запускай из под рута скрипт, который проверяет наличие командного файла, дополнительно проверяет и исполняет заданные параметры, очищает командный файл.
>Собственно сабж. Нужно запустить перловый скрипт, который будет вызывать ipchains от рута
>соответственно. Как это сделать? Апач упорно сопротивляется вызовам с SUID, su,
>sudo...а chmod +s не пробовал?
как вариант - стартуй второй апач от рута. хотя это и не шибко секьюрно.
>как вариант - стартуй второй апач от рута. хотя это и не
>шибко секьюрно.
Есть мысль,что безопасней будет запускать от рута прогу из inetd
например так
usersc stream tcp nowait root /usr/local/sbin/mbox.pl mbox.plusersc прописываешь в /etc/services
usersc 9966/tcp
вызываешь из скрипта кусочек
#!/usr/bin/perl
use Net::Telnet ();
$t = new Net::Telnet (Timeout => 30,
Port => 9966 );
$t->open("you.host.ru");
@lines = $t->getlines(Timeout => 35);Вопрос только в том, как передать параметры.Удобнее всего использовать для
этой цели SQL базу.print @lines;
Aпач должен быть скомпилирован с поддержкой su-exec. Заголовок перлового скрипта должен включать параметр -U (разрешить небезопасные операции). Что-то еще? А, ну да, еще раз напомню, что это плохое решение. Я сам в нескольких своих программах, писаных на заре юниксоидной деятельности, перешел к передаче параметров специальному суид-демону...
мне больше понравился способ одног парня на opennet.ru
чтобы поменять правила firewall, а это доступно только руту,
делаем следующее.В памяти висит демон от рута. Слушает сокет.
откликается на посылку ему номера компа и типа действия up / downЭтому демону шлет сообщение скрипт с низким уровнем привилегий например nobody.
И все дела,если надо пиши вышлю вариант.
Максим.