Личный кабинет    
Назад К началу Вперед Карта сайта Телефонные коды стран и городов Мира Анализатор тарифов Служб IP-Телефонии и Рейтинг

Разделы
Введение
Литература
Операторы
Оборудование
Анализатор
Сотрудничество
Печать карт
Новости
Опросник
Коды
Справка
Работа
Каталог
Хостинг
Личный кабинет

Реклама

Perl для IP-Телефонии (38 – сервер с правами суперпользователя, часть 4)

предыдущая часть ««»» следующая часть

Дочерние процессы устанавливают значение реального UID равным действующему UID перед обработкой соединений. Это наиболее важное изменение. После приема входящего соединения, например, обращение к коду страницы со списком лучших смартфонов http://www.fly-phone.ru/notes/smartphones/luchshij_smartfon/ и выполнения ветвления, но перед чтением каких-либо данных из подключенного сокета, дочерний процесс устанавливает свой реальный UID равным действующему UID, тем самым навсегда отказываясь от своей способности снова приобретать привилегии суперпользователя.

При попытке запустить откорректированный сценарий от имени непривилегированного пользователя сервер аварийно завершает работу с сообщением об ошибке, в котором говорится, что невозможно открыть зарезервированный порт. Поел регистрации в качестве суперпользователя и запуска сервер успешно открывает порт и создает файл PID (принадлежащий пользователю и группе root). Выполнив команду после запуска сервера, можно видеть, что главный сервер и его дочерние процессы работают под именем пользователя nobody.

nobody 2279 1.0 6.6 5320 4172 S 10:07 0:00 /usr/bin/perl eliza_root:pl
nobody 2284 0 . 5 6.7 5368 4212 S 10:07 0:00. /usr/bin/perl eliza_root.pl
nobody 2297 1.0 6.7 5372 4220 S 10:08 0:00 /usr/bin/perl eliza root.pl

Теперь риск непреднамеренного повреждения сервером системы в процессе его работы под именем пользователя root ограничен только теми файлами, каталогами и командами, к которым имеет доступ пользователь nobody.

Режим проверки потенциально опасных данных

Рассмотрим гипотетический сетевой сервер, задача которого состоит в автоматиче­ской рассылке электронной почты указанным получателям. Такой сервер может при­нимать адреса электронной почты из сокета и передавать их программе Sendmail UNIX. Фрагмент кода для выполнения этой задачи может выглядеть примерно так:

chomp($email = <$sock>);

system "/bin/mail $email <Mail_Message.txt”;

После чтения адреса электронной почты из сокета вызывается функция system () для выполнения программы /usr/lib/sendmail с адресом указанного получателя в качестве параметра. Стандартный ввод в программу sendmail перенаправлен из заранее подготовленного файла почтового сообщения.



2014-11-01 13:48:01

предыдущая часть ««»» следующая часть


ДОКУМЕНТАЦИЯ VoIP


НОВОСТИ СВЯЗИ


РЕКОМЕНДУЕМ

 
[ стандарты | обзор | оборудование | анализатор | коды | новости | карта | партнерам | Мы ВКонтаке ]
Запрещается копировать материалы сайта без уведомления авторов.
С вопросами и предложениями обращайтесь со страницы контактов
Copyright c 1999-2024 IPTop.Net
 
IP-Телефония, Интернет Телефония, Компьютерная телефония