Страница 1 из 1

Выполнение shell команды через веб

Добавлено: 2009-10-26 11:39:33
HEDG_SS
Задача : Требуется получать данные из ipfw и в зависимости от этого выводить нужную страницу. Для этого отрабатывает cgi скрипт.

На паре серверов работает такая схема (поднималось раньше), потребовалось поднять на еще одном серваке,а я уже и забыл, как это делал :( . Насколько помню просто не хватает прав для доступа к ipfw, поэтому команда не выполняется.
Знаю, что есть варианты :
1. sudo
2. perlsuid + выставление бита suid
Юмор в том, что сделано было каким то другим способом, причем более простым...

Платформа :
FreeBSD 7.0
Apache 2.2

Подскажите, какие еще есть варианты?
Заранее спасибо!

Re: Выполнение shell команды через веб

Добавлено: 2009-10-26 16:17:48
hizel
pipe, cron

Re: Выполнение shell команды через веб

Добавлено: 2009-10-26 16:27:06
HEDG_SS
Насчет pipe не понял.. причем он тут ?
Cron - точно не то.
Скрипт простой: пользователь заходит на страницу, и в зависимости входит ли этот ип в разные таблицы, выводятся разные сообщения...

Re: Выполнение shell команды через веб

Добавлено: 2009-10-26 16:30:09
hizel
если скрипт простой то только через suid

Re: Выполнение shell команды через веб

Добавлено: 2009-10-27 13:03:35
HEDG_SS
Все, всем СПАСИБО!
2hizel Отдельное спасибо за активную помощь на форуме!
Обсуждение этой же темы на Opennet.ru.
Подробный ответ от туда :

Код: Выделить всё

# cp /sbin/ipfw .
# chmod u+s ipfw

=== begin cmd.cgi ===
#!/bin/sh

echo Content-type: text/html
echo
echo '<pre>'
./ipfw list
=== end cmd.cgi ===

http://server/path/cmd.cgi - выдает список правил, проверено

Имейте ввиду, что этой потенциальная дыра. Я собирал для этого спец бинарник ipfw, где работала только команда show.

Re: Выполнение shell команды через веб

Добавлено: 2009-10-27 20:14:38
reLax
Ммм...Помню такого плана команды, как ipfw list и т.п. выводил в web через MySQL - в кроне просто раз минуту в таблицу заносился результат от такой команды.
Более серьезные можно через sudo с явным указанием команды, типа того:

Код: Выделить всё

root    ALL=(ALL) ALL
alex    ALL=NOPASSWD: /sbin/pfctl -q -t NETAMS_INET -T add -f /home/alex/KP_ANOTHER_HOST, /sbin/pfctl -q -t NETAMS_INET -T delete -f /home/alex/KP_ANOTHER_HOST

Re: Выполнение shell команды через веб

Добавлено: 2009-10-27 22:37:28
hizel
навесить на ipfw suid - epic fail :]
через sudo надежнее, да