The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Создание олимпиадного сервера"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Создание олимпиадного сервера"
Сообщение от pasha_golub emailИскать по авторуВ закладки on 01-Окт-03, 20:17  (MSK)
Проблема такова. Требуется создать сервер работающий по такой схеме.

1. Пользователь, используя веб-интерфейс передает текст программы
2. На серверной стороне запускается процесс, который
а) компилирует
б) создает новый процесс дочерний (fork)
в) родитель ждет окончания дочернего
в) дочерний процесс переходит в chroot(path)
г) дочерний процесс  меняет uid(6000)
д) запускает откомпилированную программу execl и завершается
е) родитель проверяет выходной файл
ж) данные через веб интерфейс возвращаются пользователю
3. Запись в БД

Проблема в следующем. Я всю сознательную писал на Паскале, но во FreePascal нет функции chroot. Вообщем какие ваши предложения? Хотелось бы услышать о безопасности такого метода. Спасибо

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Создание олимпиадного сервера"
Сообщение от XMan Искать по авторуВ закладки on 02-Окт-03, 00:33  (MSK)
Я в свое время под DOS тоже писал в основном на паскале, периодически втыкая ассемблерный код. И получалось не в пример лучше, чем то же самое на сях. По одной простой причине - что Boralnd C - глюкалово редкостное. Особенно BC 3.1 :)
Под линухом переполз на C/C++, чего и вам советую. Или на perl какой-нибудь можно - для этой задачи с головой, а то и удобнее будет.

Касательно безопасности. Смена корня и uid-а - это, конечно, хорошо. Но еще неплохо было бы компилить не под рутом. А то эксплоиты разные бывают :)

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Создание олимпиадного сервера"
Сообщение от pasha_golub emailИскать по авторуВ закладки on 02-Окт-03, 10:59  (MSK)
>Под линухом переполз на C/C++, чего и вам советую. Или на perl
>какой-нибудь можно - для этой задачи с головой, а то и
>удобнее будет.

Сделать это желательно побыстрее, а с Перлом я ваще не знаком. Спасибо за посказку

>Касательно безопасности. Смена корня и uid-а - это, конечно, хорошо. Но еще
>неплохо было бы компилить не под рутом. А то эксплоиты разные
>бывают :)

За совет спасибо. То есть сначала меняем uid, компилим, а потом меняем корень?


  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Создание олимпиадного сервера"
Сообщение от NewComer emailИскать по авторуВ закладки on 02-Окт-03, 11:32  (MSK)
>Проблема такова. Требуется создать сервер работающий по такой схеме.

Да, и не забудьте поставить квоты на ресурсы (CPU usage, memory, max number of processes).

А то не ровен час, кто-нить форк-бомбу бросит. Например, так:

8<-------------------
int main(int,char**)
{
for(;;)
{
fork();
}
return 0;
}
8<-------------------
;))

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Создание олимпиадного сервера"
Сообщение от pasha_golub emailИскать по авторуВ закладки on 02-Окт-03, 13:47  (MSK)

>А то не ровен час, кто-нить форк-бомбу бросит. Например, так:

Я так понимаю в этом примере постоянно создаются дочерние процессы?

Вот за это спасибо, в таком случае подскажите плиз как это осуществить?


  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру