СЬ
www.samag.ru
ЛИ
Почему MS SQL медленно работает?
Ищем причины
ЛИ
ТЯ Е
Ж ПИ
Строим защищенную беспроводную сеть:
ЗА ДНИ
РА КУ
Настраиваем UPS под Linux
ЛЫ ГО
ТИ РАС
Как восстановить
удаленные файлы под BSD
К У ВО
О
танавливаем Symantec Antivirus 9.0
НИ НО
ТР
в корпоративной сети
Эффективно управляем
С
подписной индекс 20780
полями пользователей в AD
БЫ
Контролируем безопасность сети
с помощью OSSIM
КА
ИС НН
ЕН
о программе Sendmail
УС
БО
НА ТПУ
ИЛ ДА
ТП
НЧ ЖИ
ВО
РА Е О
в истории IT-журналистики!
КО НЕО
АВ СЛ
Л
Л
ХА
ПО
УЕ
ЗА
Настраиваем эффективную
систему сетевой защиты Zorp
Так видит журнал читатель, оформивший подписку:
Windows SharePoint Services:
№5(30) май 2005
подписной индекс 81655
www.samag.ru
3 ТЕНДЕНЦИИ БЕЗОПАСНОСТЬ
4 РЕПОРТАЖ 52 Настраиваем эффективную
систему сетевой защиты Zorp
АДМИНИСТРИРОВАНИЕ ModSecurity – Open Source firewall седьмого уровня –
позволяет защититься от угроз, типичных для веб-сер-
6 Box Backup – горячие резервные копии вера. Но в обычной сети встречаются и другие серви-
Резервное копирование – это то, без чего невозможно сы, нуждающиеся в защите. Сергей Яремчук
представить ни одну информационную структуру. Су- grinder@ua.fm
ществует необычный способ создания резервных ко-
пий, а именно – метод online-бэкапирования. 58 Генная инженерия на службе
Алексей Коршунов распаковки PE-файлов
akeeper@samag.ru Алгоритм универсального распаковщика, «снимающе-
го» даже сложные полиморфные протекторы.
12 Как работает Sendmail? Крис Касперски
Полезные подробности kk@sendmail.ru
Ещё лет десять назад само понятие «электронная поч-
та» прочно ассоциировалось с программой Sendmail. 70 Используем средства библиотеки OpenSSL
Сейчас ситуация несколько изменилась, но проект для криптографической защиты данных
Sendmail по-прежнему остаётся одним из лидеров. Часть 2
Сергей Супрунов Благодаря своим уникальным свойствам ассиметрич-
amsand@rambler.ru ные алгоритмы шифрования применяются для защи-
ты информации в тех областях, где использование сим-
20 Возможности технологии метричных алгоритмов затруднительно. Самый попу-
MS Windows SharePoint Services лярный представитель семейства ассиметричных ал-
Развитие IT-отдела связано с переходом от обслужи- горитмов – алгоритм RSA. Владимир Мешков
вания базовой IT-инфраструктуры к созданию интра- ubob@mail.ru
нет-порталов и автоматизации бизнес-процессов. Эф-
фективный инструмент для решения подобных задач – IMHO
MS SharePoint. Иван Хрипунов
i-ivank@microsoft.com 76 Лицензию? Вам какую?
Артем Черневский Как часто мы слышим, что открытых лицензий на про-
achern@microsoft.com граммное обеспечение развелось слишком много. BSD,
Apache, CDDL, GPL2/3, LGPL… Даже для юристов это
28 Узнай секреты WMI: события и провайдеры настоящий кошмар. А что же тогда говорить о нас, про-
Часть 2 стых (хотя и системных) администраторах?
Ключ к управлению системой и приложениями. Сергей Супрунов
Константин Леонтьев amsand@rambler.ru
klеоnt@miсrоsоft.соm
WEB
36 Отказоустойчивый кластер
с минимальным бюджетом 80 Возможности поискового движка
Строим эффективный кластер и используем его в ка- DataparkSearch
честве платформы для критически важных приложений Как организовать поиск информации на файловом сер-
на примере СУБД Oracle 9i. Сергей Довганюк вере не только по названию и типу документа, но и по его
dovganuk_sergey@mail.ru контенту? Возможно ли создать подходящий инструмент,
доступный и прозрачный для пользователей?
42 Arch Linux: руководство к быстрому старту Иван Максимов
Обзор дистрибутива Arch Linux. admin@ksanf.spb.ru
Валентин Синицын
val@linuxcenter.ru РЕТРОСПЕКТИВА
ЧЕЛОВЕК НОМЕРА 86 Надежда умирает последней:
история компании SGI. Часть 2
48 Прихоти судьбы. Уход основателя Silicon Graphics Джима Кларка изна-
Биография IT-просветителя чально не был воспринят всерьёз. «Подумаешь, ушёл
Когда-то, протестуя против навязанных жизнью ролей один человек, когда в компании таких, как он, – тысячи».
Алексей Сальников, директор крупнейшего в России Однако поломка даже единственной шестерёнки мо-
IT-портала «ЦИТ Форум», вступил с судьбой в перего- жет стать причиной выхода из строя всего механизма.
воры. Мол, ты дай мне другой вариант самореализации, Дмитрий Мороз
а я обещаю не ныть на крутых поворотах. Договор всту- akuji@list.ru
пил в силу. Оксана Родионова
rodion@dol.ru 92 КНИЖНАЯ ПОЛКА
41, 69, 85 BUGTRAQ
К
онференция для разработчи- щедоступной кодовой базе, распро- можно увидеть изменения в последней
ков Solaris Day прошла 19 апре- страняемой под лицензией CDDL. версии Solaris?» – разработчики ука-
ля в один день с NetBeans Day. Выступление Каррэна заверши- зывают на значительно уменьшенное
Эти два мероприятия стали отправ- лось курьезным случаем, вызванным время загрузки системы (благодаря
ной точкой для впервые проводившей- вопросом слушателя о поддержке про- асинхронному запуску сервисов в SMF
ся в России акции Sun Tech Days (20-21 цессоров Itanium в Solaris. Он снача- с учетом их зависимостей).
апреля). И несмотря на то что на Tech ла не мог понять (сделал вид, что не Питер Карлсон продолжил рас-
Days приехал с докладом легендарный мог?), о чем его спрашивают, а после крытие темы для разработчиков. Его
Джеймс Гослинг, меня во всем этом того как несколько раз повторили сло- доклад был посвящен общим вопро-
3-дневном празднике, организован- во «Itanium», он ответил отчетливым сам миграции ПО с Linux на Solaris.
ном Sun, заинтересовало именно пер- смешком в адрес этой разработки Intel, Иногда он почти в сатирической ма-
вое событие, полностью посвященное что изрядно повеселило весь зал. Пос- нере пытался показать достоинства
операционной системе компании. ле чего Фрэнк шутливо раскритиковал ОС от Sun, провоцируя слушателей
На третьем этаже московской гос- процессор, «с которым теперь никто не вопросами в стиле «неужели вам еще
тиницы «Альфа» всех гостей встреча- знает, что делать». что-то нужно?» и просьбами «назвать
ли девушки, которые выдавали бей- Затем на продолжительное время программу, которой не хватает в этом
джи, программки для двух грядущих место докладчиков заняли наши со- списке!». (В это время за его спиной
мероприятий (Solaris Day и NetBeans отечественники. «Рубрику» для раз- демонстрировались перечни привыч-
Day) и анкеты. Никакого столпотворе- работчиков открыл обзор Sun Studio 11, ных для Linux-пользователей приложе-
ния и суеты не было. Оживление воз- сообщение о котором разбили на две ний, доступных и для Solaris.) В общем,
никло к началу конференции, когда части. В первой рассказывалось о том, такой красноречивый тезис из докла-
всех пригласили пройти в зал. что из себя представляет данный про- да Карлсона, как «Solaris is better Linux
дукт, из чего состоит и на что спосо- than Linux», очень точно отображает
Какие доклады бен, а во второй – о способах оптими- суть всего того, что он пытался донес-
Из иностранных докладчиков Sun зации, используемых в Sun Studio для ти до публики.
на конференцию прибыли два «техно- повышения производительности со- А вот уже следующее сообщение,
логических евангелиста»: Фрэнк Кар- здаваемого ПО. посвященное контейнерам Solaris, по-
рэн и Питер Карлсон. Первому и выпа- Последовавший кофе-брейк (стоит казало, что в этой операционной систе-
ла честь открывать Solaris Day в Моск- отметить, что как перерывы на кофе, ме пока не все идеально, как того хо-
ве. Каррэна рассказал о том, что и как так и обед оставили исключительно телось бы Карлсону (разумеется, пов-
поменялось в процессе разработки ОС положительные впечатления об орга- семестно, а не только в процессе пе-
компании после открытия исходно- низации конференции) перешел в до- реноса приложений с Linux). Некото-
го кода, запуска проекта OpenSolaris, клад о разработке многопоточных при- рые вопросы, адресованные Андрею
а также попутно в лаконичной форме ложений в среде ОС Solaris, существу- Дорофееву по поводу использования
сообщил общие сведения о новшест- ющих для этого API и утилит. По «уров- зон в Solaris, показали, что данной
вах Solaris 10. ню технической информации» (оценку технологии еще не хватает некоторых
Фрэнк акцентировал всеобщее вни- под таким заголовком предлагали ста- ожидаемых заказчиками возможнос-
мание на том, что OpenSolaris не явля- вить каждому докладу в раздававших- тей. Хотя, конечно, нужно учитывать,
ется дистрибутивом – это лишь кодовая ся анкетах) это было, пожалуй, самое что зоны в Solaris появились не так
база, на основе которой любой желаю- серьезное выступление. давно и ведется активная работа над
щий может создать свою систему. Сре- Однако наибольший резонанс вы- их совершенствованием.
ди существующих на сегодняшний день звал доклад Андрея Дорофеева о но- Завершать Solaris Day доверили
подобных решений он выделил Nexenta вой системе управления сервисами Карлсону с самым продолжительным
OS, SchilliX и Belenix. Пример использо- в Solaris (Service Management Facility, докладом из всех, что были представ-
вания OpenSolaris для построения пол- SMF), во время которого появилась не- лены на конференции. Питеру предсто-
ноценной ОС уже с ближайшим рели- бывалая оживленность. Инновацион- яло подробно рассказать о DTrace. Еще
зом, естественно, покажет и сама Sun: ный подход Sun к работе с сервисами в своем вступлении его коллега подго-
Solaris 11 (и дальнейшие версии флаг- вызвал существенный интерес у слу- товил аудиторию, отметив, что DTrace
манской ОС) будет основываться на об- шателей. На вопрос: «Как наглядно по праву считается одной из самых
4
репортаж
выдающихся инновационных техноло- рерывов. Попутно я сослался на то, его главных достоинствах и новшест-
гий последнего времени, поэтому ни- что даже Мартин Финк, один из глав- вах, – у Sun прибавилась острая необ-
чего удивительного в таком распоряд- ных Linux-специалистов HP, не так дав- ходимость в продвижeнии OpenSolaris.
ке докладов нет. Карлсон начал с об- но на одной из конференций заметил, Этот решительный шаг, что предприня-
зора данного инструмента и простых, что лицензий на открытое ПО стало ла компания в недавнее время, и те-
но наглядных демонстраций того, как слишком много. Через некоторое вре- перь в Sun не без оснований делают
он работает на своем ноутбуке, а за- мя в дискуссию ввязался и стоявший ставку на дальнейшее развитие идеи
тем перешел к языку D. Затянувше- рядом Питер Карлсон, который про- использования модели Open Source.
еся описание многочисленных конс- явил себя убедительным адвокатом Чем больше им удастся заинтере-
трукций средства создания программ CDDL. В общих чертах их идеология совать в этом сообщество, тем луч-
(предназначенных в первую очередь (защиты новой лицензии) сводится к шую они получат отдачу, необходи-
для мониторинга и отслеживания ис- тому, что разработчик должен иметь мую для продуктов, лежащих в осно-
точников возникающих в системе про- возможность самостоятельно решать, ве их бизнеса, – это обычное правило,
блем) на базе DTrace, возможно, бы- под какой лицензией ему опубликовы- работающее для всех компаний, при-
ло не самым удачным завершением вать продукт, но при этом есть потреб- меняющих данную стратегию в отно-
конференции. Слушателей уже оста- ность в том, чтобы все модификации шении ПО с открытым кодом.
валось не так много, да и сам Питер, были доступны другим. В этом отно- Бытует мнение, что OpenSolaris –
ощущая «настроение масс», постарал- шении Sun приглянулась MPL, однако последняя отчаянная попытка Sun со-
ся по возможности быстро завершить и здесь потребовались некоторые поп- хранить свои позиции на рынке сервер-
свое сообщение. равки для того, чтобы сделать лицен- ных операционных систем, где GNU/
зию более универсальной (убрать при- Linux-системы теснят UNIX-конкурен-
Почему CDDL? вязку к Mozilla и к США). тов. Если модель Open Source так по-
Упоминание CDDL в первом докла- могла Linux, то почему она не возымеет
де Каррэна вкупе со словами, что это Вместо заключения подобного эффекта для UNIX? Мнения
«истинное ПО с открытым кодом», по- Участники конференции, не поле- на этот счет среди членов сообщест-
будило меня к достаточно распростра- нившиеся заполнить анкеты, получи- ва, журналистов и аналитиков расхо-
ненному в сообществе вопросу. Зачем ли в подарок футболку с символикой дятся – причем обычно не в пользу Sun.
Sun было придумывать очередную ли- OpenSolaris и лицензионную коробку А вот в компании думают иначе. Кто
цензию Open Source, когда их и так су- Solaris с двумя DVD: редакциями этой был прав, как обычно, покажет время.
ществует изрядное множество? С та- ОС для x86 и для SPARC. Учитывая, что на OpenSolaris будет ос-
ким вопросом, предварительно осве- Вполне естественно, что к обыч- нован уже следующий релиз Solaris, –
домив ответчика о том, что собираюсь ным задачам, возлагаемым на подоб- это будущее вполне обозримо.
говорить на «религиозные» темы, я по- ные мероприятия: рассказать о самом
дошел к Фрэнку во время одного из пе- продукте (применительно к Solaris), Дмитрий Шурупов
Алексей Коршунов
Вопросы резервного копирования никогда не утратят свою актуальность. Это то, без чего
невозможно представить ни одну информационную структуру. Существует необычный способ
создания резервных копий, а именно – метод online-бэкапирования.
Как делают «обычное» или иным причинам. Как правило, не- Раз в две недели копируются все
резервировное обходимость инкрементного резерв- изменённые за этот период фай-
копирование ного копирования объясняется огром- лы или же объединяются архивы
Когда говорят о создании бэкапов су- ными объёмами той информации, ко- за две недели.
ществующей информационной струк- торая постоянно меняется и нуждает- Схема повторяется до тех пор, по-
туры, на ум сразу приходят скрип- ся в резервировании. ка не наступит новый месяц.
ты из cron, инкрементальные архивы, Вы берёте за основу одну из схем
мощный сервер с огромным дисковым резервировного копирования, добав- Вы можете хранить по две поне-
массивом, стример и другие устройства ляете необходимую, на ваш взгляд, дельные копии или по одной, в зави-
записи на внешние носители. Без все- избыточность и вводите получен- симости от ваших предпочтений или
го этого довольно сложно представить ное решение в эксплуатацию. Не са- принятых в вашей компании стандар-
себе полноценную систему резервного мым плохим вариантом будет следу- тов. Процедура восстановления фай-
копирования, хотя многие до сих пор ка- ющая схема: лов обратна процедуре их занесения
ким-то образом работают вообще без Раз в месяц делается полное ре- в архив.
бэкапов. Не стану доказывать необхо- зервное копирование всех нужда- Восстановление последней месяч-
димость иметь «крепкие тылы», пото- ющихся в этом файлов. ной копии.
му что это известно всем. Ежедневно происходит копирова- Восстановление двухнедельной ко-
Вышеперечисленные программные ние изменённых за текущий день пии.
и аппаратные составляющие призваны данных. Восстановление недельной копии.
обеспечить возможность восстановле- Еженедельно копируются все из- Восстановление копий по дням
ния файлов в случае их утраты по тем менённые за неделю данные. в обратном порядке.
6
администрирование
Схемы, подобные описанной, ис- вышедшего из строя блока питания пии они лишь помечаются как удалён-
пользуются во многих компаниях. сервера без его выключения. (Думаю, ные. Пользователь (да-да, пользова-
Применяя их, можно быть уверенным вы сталкивались с такими компьюте- тель, а не системный администратор,
в том, что все файлы будут восста- рами или хотя бы слышали о них.) Со- но об этом позже) в любое время может
новлены на момент создания послед- здание резервной копии файлов поль- спокойно попросить систему вернуть
ней «дневной» копии. При достаточ- зователя происходит в интерактивном удалённый по ошибке файл. Из архи-
но больших объёмах данных (что ра- режиме по мере их изменения. Схема ва промаркированные данные исчез-
зумеется не редкость) вы вынуждены работы проста: нут только тогда, когда допустимый
использовать внешние носители для При первоначальном запуске, сис- объём, отведённый под резервирова-
хранения и иметь необходимое коли- тема сканирует указанные ей ди- ние, приблизится к той отметке, за ко-
чество пространства на жёстких дис- ректории и переносит их в архив. торой выбора нет – либо вычищать по-
ках для создания хотя бы одной пол- После чего следит за происходя- меченные файлы, либо будет некуда
ноценной копии. (Условие не обяза- щим в файловой системе. копировать новые.
тельное, но значительно упрощающее По мере обнаружения изменивших-
жизнь.) Однако подобные схемы рабо- ся файлов она переносит их в ар- Требовательность к ресурсам
ты имеют ряд существенных недостат- хив. Большую сетевую нагрузку, как и сле-
ков. Среди которых: довало ожидать, можно наблюдать
Известные проблемы при резерв- Другими словами, в резервной ко- только при создании первоначально-
ном копировании «внешних» поль- пии всегда находятся самые послед- го бэкапа, когда системе необходимо
зователей. Вы не можете заста- ние версии файлов. В случае потери единовременно перенести большое
вить пользователей ноутбуков еже- данных на исходной системе вы мо- количество данных. Однако приори-
дневно оставлять свои компьютеры жете безболезненно и быстро восста- тет процесса (по умолчанию) клиента
в офисе включёнными. новить их в полном объёме. Заманчи- Box Backup довольно низок и рассчи-
Проблемы обеспечения безопас- во, не правда ли? тан так, чтобы не мешать общей ра-
ности резервных копий. Система Box Backup может рабо- боте компьютера. Он работает в фо-
Громоздкость системы с большим тать в довольно внушительном спис- новом режиме и не вносит ощущения
количеством этапов. ке OS: дискомфорта от «задумчивости» сис-
Сравнительно большое количес- OpenBSD; темы в целом. Впоследствии системе
тво времени для восстановления, Linux; потребуется переносить только новые
как единичных утраченных фай- NetBSD; или изменённые файлы, а это не такой
лов, так и больших массивов. FreeBSD; большой трафик.
Неудобство работы с архивами – Darwin / Mac OS X 10.5;
время поиска по базе резервных Cygwin (Windows) (только клиент); Безопасность резервного
копий может оказаться весьма про- Native Windows (только клиент); копирования
должительным. Solaris. Обеспечению безопасности уделено
Требуется помощь системного ад- немало внимания.
министратора для работы с архи- Несколько вполне закономерных Авторизация клиента на сервере
вами. вопросов, которые возникают при пер- бэкапов.
вом ознакомлении с этой системой го- Безопасность передачи данных.
Перечислены далеко не все сущес- рячего резервного копирования: Шифрование данных.
твующие проблемы, а только те, с ко- Если пользователь удалил файлы, Защита структуры данных.
торыми приходилось мне сталкивать- что будет с резервной копией? Безопасность хранения данных.
ся. Возможно, решение, которое ис- Постоянное копирование файлов
пользуется вами, лишено этих недо- подразумевает огромный сетевой Для авторизации клиента на сер-
статков. Возможно, вы приобрели го- трафик и большую загрузку серве- верной стороне системы Box Backup
товый программный комплекс резер- ра бэкапов. Как решить эту прою- используется SSL. На каждом ком-
вирования и он отвечает всем вашим лему? пьютере, данные которого нуждают-
требованиям. И тем не менее обрати- Чем обеспечивается безопасность ся в резервировании, создаётся SSL-
те внимание на еще один принцип со- копий? сертификат, подписываемый на сер-
здания бэкапов. Если файлов очень много, то сколь- вере.
ко ресурсов для своей работы пот- Для обеспечения безопасной сре-
Online-бэкапирование ребуется программе для проверки ды передачи данных используется TLS-
Box Backup изменений? шифрование. Любые операции меж-
Система относится к так называемому ду клиентом и сервером происходят
online-резервному копированию. Поче- Процедура удаления по шифрованому каналу. Это позво-
му оно носит такое название? Файлы, которые были удалены из сис- ляет использовать систему резервно-
В отличие от описаной выше схе- темы, на самом деле никуда не исче- го копирования даже в небезопасной
мы, «горячее» резервное копирование зают. (Я говорю, разумеется, не о кли- среде без опасений, что данные могут
делается... постоянно. Это как замена ентском компьютере.) В резервной ко- быть перехвачены.
Обратите внимание, что по умолчанию вам будет пред- Если вы собирали пакет самостоятельно в другой сис-
ложено установить более старую версию системы – 0.09. теме – для конфигурационных файлов используйте ди-
Я бы рекомендовал проследовать по дереву портов до нуж- ректорию /etc/box. Выполнение этой команды создаст ос-
ной ветки и установить более новую версию, так как в неё новной конфигурационный файл системы Box Backup
внесли множество исправлений. /etc/boxbackup/bbstored.conf, в котором прописываются
основные параметры. Присвоим нашему пользователю
#cd /usr/portage/app-backup/boxbackup _bbstored права на директорию:
#emerge -av boxbackup-0.10.ebuild
8
администрирование
Здесь возможны два варианта: BackupLocations
{
lazy – в этом режиме демон резервного копирования home-directory
bbackupd постоянно следит за изменениями файлов, {
Path = /home
и как только изменённый файл закрывается, – перено- ExcludeDir = /home/ftp
сит его в резервную копию. ExcludeFilesRegex = *.(avi|AVI)$
}
snapshot – работа этого режима понятна по его на- etc
званию. Один раз в установленный вами промежуток {
Path = /etc
времени запускается команда bbackupctl sync, полу- }
чив которую демон bbackupd начинает сканировать }
все указанные в конфигурационном файле директо-
рии. В случае обнаружения несовпадений даты пос- Где:
леднего изменения файл переносится на сервер ре- home-directory и etc – в данном случае это условные
зервных копий. описания директорий для системы Box Backup. Именно
под этими названиями они будут отображаться при за-
Какой режим предпочесть зависит напрямую от коли- просе в резервную копию.
чества файлов, нуждающихся в резервировании, загружен- Path – собственно путь до директорий и файлов, нужда-
ности компьютера и сетевого трафика. Думаю, зависимос- ющихся в резервном копировании. При указании путей
ти вполне очевидны. Скажу только, что если вы устанав- следует учитывать, что резервное копирование будет про-
ливаете систему Box Backup на ноутбук, который часто ра- изводиться рекурсивно, то есть со всеми подпапками.
ботает вне локальной сети, где находится сервер бэкапов, ExcludeDir – это, как несложно догадаться, опция ис-
то, наверное, стоит предпочесть режим snapshot. ключения из резервирования некоторой подпапки.
Разумеется, никто не мешает вам установить сервер ExcludeFilesRegex – маска, указывающая расширения
Box Backup так, чтобы он был доступен извне. Но в та- файлов, которые следует игнорировать и не переносить
ком случае следует учитывать количество трафика, кото- в резервную копию.
рое будет создаваться компьютерами при резервном ко-
пировании. Остальные опции не менее понятны и в отдельном опи-
Запустим команду, которой создадим основной конфи- сании не нуждаются.
гурационный файл, ключ системы и SSL-сертификат для ав- Режимы lazy и snapshot в конфигурационных файлах
торизации на удалённом сервере. отличаются только параметрами:
10
администрирование
Однако на данный момент использование Boxi невоз-
можно. Причина в том, что эта утилита может работать толь-
ко с версией Box Backup 0.09, а как я уже писал выше, вер-
сия 0.10 претерпела множество изменений и рекомендо-
вана к уставновке. По словам разработчика этой утилиты,
следующей версии Boxi, готовой к работе с Box Buckup 0.10,
следует ожидать не ранее чем через три месяца.
Но если удобство для вас важнее, то, может быть, имеет
смысл установить более старую версию, чтобы иметь воз-
можность работать с графической утилитой.
Следует так же отметить, что для работы Boxi нуждает-
ся во всех конфигурационных файлах Box Backup-системы.
Поэтому при её использовании многие запускают процесс Рисунок 1. Вывод справки утилитой bbackupquery
bbackupd не от системы, а от своего пользователя.
Сергей Супрунов
Современная жизнь немыслима без электронной почты. Ещё лет десять назад само понятие
«электронная почта» прочно ассоциировалось с программой Sendmail. Сейчас ситуация
несколько изменилась, но проект Sendmail по-прежнему остаётся одним из лидеров, и вполне
заслуженно.
С
реди системных администра- будут помнить червя Морриса, потряс- эффективной, появилось более чёт-
торов, особенно начинающих, шего мир в 1988 году) серьёзно подор- кое разделение на задачи, причём уже
бытует мнение, что Sendmail – вали доверие к Sendmail в плане защи- не все из них требуют наличия прав су-
чрезвычайно сложная, неуклюжая, не- щённости системы. перпользователя. Говоря же о безопас-
эффективная и небезопасная програм- Однако идёт время, меняется ситу- ности, надо признать, что последняя
ма. Конечно, дыма без огня не бывает, ация. Кое-что из сказанного выше не- критическая уязвимость была обнару-
и причины для подобных мнений есть. сколько улучшилось, что-то вообще жена сравнительно недавно – 22 марта
Достаточно взглянуть на основной стало неправдой. Скажем, конфигу- 2006 года (к чести разработчиков, бы-
конфигурационный файл – sendmail.cf, рационный файл по-прежнему остал- ла она исправлена достаточно быстро).
чтобы согласиться с первым утвержде- ся пугающе непонятным. Но ведь ник- Но вот предпоследняя датируется аж
нием. Монолитная архитектура, когда то вас и не заставляет его править! 18 сентября 2003 года.
практически все функции выполняют- Для этого существуют более удобные Конечно, если сравнивать Sendmail
ся одним двоичным файлом, навевает и простые инструменты. Монолитность с такими альтернативами, как Postfix,
мысли о втором и третьем. Нередкие сохранилась, но работа этого единс- Exim, Qmail, то по некоторым пара-
взломы в прошлом (долго ещё люди твенного «бинарника» стала более метрам он проигрывает своим конку-
12
администрирование
рентам. Но только не в плане функциональности. Так что
вряд ли стоит так просто сбрасывать его со счетов. Тем бо- Как всё начиналось
лее что Sendmail по-прежнему остаётся почтовой програм- В конце семидесятых Эрик Олман (Eric Allman), работая в Универ-
мой, устанавливаемой по умолчанию во FreeBSD, OpenBSD, ситете Беркли, бился над одной проблемой – как обмениваться
Solaris и ряде других систем. электронной почтой в университетской сети, объединяющей не-
Впрочем, я не ставлю своей целью поднять очередную сколько машин, взаимодействующих между собой по разным про-
волну религиозных войн среди приверженцев того или токолам. Существовали, конечно, отдельные программы, обеспе-
иного MTA. Каждый вправе пользоваться тем инструмен- чивающие взаимодействие каждой пары машин, но Эрику хоте-
том, какой ему ближе по духу и лучше подходит для тех лось создать именно универсальную программу.
или иных задач. Надеюсь, что аргумент «я не понимаю эту И вот в 1983 году появилась первая версия программы
программу» не является для вас основным критерием вы- Sendmail, основанной на менее универсальной delivermail (раз-
бора, что ставить и использовать. И после прочтения дан- работанной для сети ARPANET). Первоначально созданная
ной серии вы сможете более осознанно подходить к вы- для BSD 4.1c, она постоянно развивалась, переносилась на дру-
бору почтовой программы, руководствуясь исключитель- гие системы. Многие компании брали Sendmail за основу для пос-
но объективными данными. троения собственных почтовых программ.
Всё, о чём будет идти речь сегодня, относится к вер- В настоящее время наиболее известной и распространён-
сии Sendmail 8.13.4 с последним патчем, работающей ной версией Sendmail является открытая программа, разрабаты-
во FreeBSD 6.0 (используется дистрибутивная установка). ваемая Sendmail Consortium при спонсорской помощи компании
Применимость утверждений, примеров конфигурации, пу- Sendmail Inc. Последняя выпущенная версия – 8.13.6.
тей к файлам и т. д. к другим системам и версиям не про-
верялась, но в большинстве случаев всё должно работать Чем же они занимаются? Два верхних (с PID 596 и 600
аналогично. соответственно) запускаются при старте системы и посто-
Учитывая, что на системах Linux в последнее время бо- янно присутствуют в памяти. Первый, как следует из опи-
лее распространён Postfix (за исключением некоторых дис- сания, обслуживает входящие соединения, поступающие
трибутивов), отвлекаться на особенности Sendmail в этих на порты, выделенные для SMTP-соединений:
системах я не буду.
serg$ sockstat | grep 596
Архитектура и основы root sendmail 596 3 tcp4 1.2.3.4:25 *:*
функционирования root
root
sendmail
sendmail
596
596
4
5
dgram
tcp4
-> /var/run/logpriv
127.0.0.1:25 *:*
Как уже упоминалось, Sendmail является монолитной root sendmail 596 6 tcp4 10.0.0.254:25 *:*
программой. Единственный двоичный файл – /usr/sbin/ root sendmail 596 7 tcp4 *:587 *:*
mailwrapper – отвечает за все функции, но вручную его обыч-
но не запускают. Все же программы, которыми мы обычно Как видите, помимо стандартного 25-го порта на обслу-
пользуемся, являются не более чем простыми символьны- живаемых интерфейсах (рассматриваемая система име-
ми ссылками на этот «бинарник»: ет две сетевые карты – внешнюю, с условным IP-адресом
1.2.3.4, и внутреннюю – 10.0.0.254, а также непременный
serg$ ls -l /usr/sbin | grep mailwrapper loopback-интерфейс 127.0.0.1) процесс 596 прослушивает
lrwxr-xr-x 1 root wheel 21 11 ноя 10:01 hoststat -> /usr/sbin/mailwrapper порт 587. Этот порт (в /etc/services определён как «submission
-r-xr-xr-x 1 root wheel 5236 11 ноя 10:01 mailwrapper
lrwxr-xr-x 1 root wheel 21 11 ноя 10:01 purgestat -> /usr/sbin/mailwrapper 587/tcp») предназначен согласно RFC 2476 для приёма но-
lrwxr-xr-x 1 root wheel 21 11 ноя 10:01 sendmail -> /usr/sbin/mailwrapper вых писем от клиентов, чтобы не перегружать данной ра-
serg$ ls -l /usr/bin | grep mailwrapper ботой основной, 25-й порт, служащий для пересылки сооб-
lrwxr-xr-x 1 root wheel 21 11 ноя 10:01 mailq -> /usr/sbin/mailwrapper
щений между серверами. (То есть более правильно в на-
lrwxr-xr-x 1 root wheel 21 11 ноя 10:01 newaliases -> /usr/sbin/mailwrapper стройках почтовых клиентов – The Bat, Thunderbird, Outlook
и проч. – указывать для исходящих соединений 587-й порт.)
Если говорить точнее, то собственно работа выполня- В настоящее время протокол Submission используется не
ется файлом /usr/libexec/sendmail/sendmail, а mailwrapper, слишком широко, и клиенты для отправки электронной поч-
как следует из его названия, является «обёрткой» к этому ты задействуют тот же 25-й порт, но ничего плохого в том,
файлу. Система, как правило, пользуется ссылкой sendmail, что данный порт открыт, в принципе нет. Тем более что дан-
остальные же запускаются администратором для решения ная рекомендация (я про RFC 2476) рано или поздно должна
конкретных задач. стать популярной. UNIX-сокет на /var/run/logpriv (с дескрип-
Посмотрим, какие задачи возлагаются на программу тором 4) используется для записи журнальной информации
Sendmail. Если посмотреть на вывод команды ps, то мож- с помощью syslog (обратите внимание, что поскольку этот
но увидеть, что в системе активны сразу несколько про- процесс sendmail работает с правами суперпользователя,
цессов sendmail: то используется привилегированный сокет).
Думаю, задача этого процесса понятна – получив запрос
serg$ ps awxo pid,user,command | grep sendmail | grep -v grep на соединение, он порождает дочерний процесс (в нашем
596 root sendmail: accepting connections (sendmail) выводе команды ps вы можете наблюдать два экземпляра
600 smmsp sendmail: Queue runner@00:30:00 for /var/spool/clientmqueue (sendmail) оных – с PID 83329 и 83670), который и занимается обслу-
83329 root sendmail: k35B3pRn083329 [59.42.1.71]: DATA (sendmail)
83670 root sendmail: server N023143.ppp.ne.jp [61.20.23.14] cmd read (sendmail) живанием данного соединения согласно протоколу SMTP.
14
администрирование
вого ящика пользователя и т. п.), то письмо остаётся в оче- Таблица 1. Ключи sendmail и специальные ссылки
реди и обрабатывается уже отвечающим за это процессом, Команда sendmail Ссылка-аналог Назначение
пока сообщение не будет доставлено или безнадёжность sendmail -bi newaliases Пересоздаёт базу псевдонимов
попыток не станет очевидной. Если письмо так и не удалось sendmail -bp mailq Работа с очередью сообщений
доставить, оно возвращается отправителю.
sendmail -bh hoststat Статистическая информация
16
администрирование
зывает этот сценарий с нужными параметрами. Обратите
внимание, что в рассматриваемой версии FreeBSD запуск Что такое UUCP?
sendmail при загрузке системы может выполняться дру- Unix to Unix Copy Program (UUCP) – некогда очень популярный
гим сценарием – /etc/rc.d/sendmail. Это более соответству- протокол взаимодействия между удалёнными хостами. Пере-
ет принятому начиная с 5-й ветви порядку инициализации сылка электронной почты не была его единственной обязаннос-
(он был позаимствован из NetBSD), но подобное «двоев- тью, но эта услуга была наиболее востребована. Sendmail, будучи
ластие» может в некоторых случаях привести к путанице разработанным как универсальный почтовый сервер, призванный
и ошибкам (например, если вам нужно внести в эти файлы объединить разнородные сети, обладает поддержкой этого про-
какие-то специфические изменения, то приходится особо токола (правда, реализация осуществляется сторонней програм-
следить за их синхронизацией). мой – во FreeBSD это Taylor UUCP, установить её можно из кол-
Раз уж мы заговорили о сценариях инициализа- лекции портов: /usr/ports/net/freebsd-uucp).
ции, рассмотрим параметры rc.conf, определяющие ра- В настоящее время необходимости использовать этот прото-
боту Sendmail. Основные настройки сосредоточены кол уже нет, но в редких случаях (например, в условиях коммути-
в файле /etc/defaults/rc.conf. По умолчанию переменная руемого доступа) он может оказаться полезен.
sendmail_enable установлена в значение «NO», что под-
разумевает работу Sendmail только для отправки сообще- строки. Если вы хотите закомментировать какую-то дирек-
ний локальных пользователей. MTA, обслуживающий вне- тиву, перенесите dnl в начало строки.
шние соединения, запускаться не будет. Чтобы разрешить
работу Sendmail в режиме MTA, следует установить значе- OSTYPE(freebsd6)dnl
ние этой переменной в «YES». Кстати, если вы хотите пол-
ностью запретить работу Sendmail, используйте значение Тип операционной системы. Согласно данному пара-
«NONE», а не «NO». метру m4 будет выбирать необходимые для работы шаб-
Обратите внимание на одну важную переменную: лоны (из /usr/share/sendmail/cf/ostype/), поэтому очень важ-
но следить здесь за актуальностью информации (особен-
mta_start_script="/etc/rc.sendmail" но когда выполняется обновление системы на другую «вет-
ку»). В первую очередь от этого параметра зависят приня-
Именно она определяет, какой из сценариев – /etc/ тые в той или иной системе полные имена агентов достав-
rc.sendmail или /etc/rc.d/sendmail – будет использоваться ки (LDA), используемые флаги и т. д.
при загрузке системы. По соображениям «однозначности»
лучше оставить использование rc.sendmail, как это и пре- DOMAIN(generic)dnl
дусмотрено по умолчанию.
Подробнее узнать об опциях, которые вы можете изме- Ещё один параметр, влияющий на выбор шаблонов.
нить, можно в самом файле /etc/defaults/rc.conf – он доста- Шаблоны можно найти в /usr/share/sendmail/cf/domain/,
точно хорошо прокомментирован. Ну и при необходимос- в большинстве случаев следует использовать домен
ти что-то переопределить внесите соответствующие стро- «generic». Впрочем, если вам нужны специфические пара-
ки в /etc/rc.conf (надеюсь, вы даже спросонья без запинки метры, которые по тем или иным причинам вам не хотелось
скажете, почему не рекомендуется делать изменения не- бы выносить в конфигурационный файл, можно создать
посредственно в default-скриптах). здесь свой «доменный» шаблон (посмотрите здесь же при-
меры для доменов Berkley.EDU) и использовать его.
Пример файла конфигурации
Рассмотрим небольшой пример mc-файла, для того чтобы dnl DAEMON_OPTIONS('Name=IPv4, Family=inet')dnl
DAEMON_OPTIONS('Port=smtp,Addr=1.2.3.4,Name=MTA')dnl
в общих чертах познакомиться с синтаксисом и наиболее DAEMON_OPTIONS('Port=smtp,Addr=127.0.0.1,Name=MTA')dnl
типичными директивами (подробно конфигурация будет DAEMON_OPTIONS('Port=smtp,Addr=10.0.0.254,Name=MTA')dnl
рассматриваться во второй части статьи). Он представляет
собой набор команд макропроцессору m4, который исполь- Подобным образом указывается, на каких адресах и пор-
зуется для сборки cf-файла. Подробнее о m4 мы поговорим тах следует прослушивать входящие соединения. Первая
в следующий раз, пока же просто рассмотрим некоторые строка из приведённых (закомментированная) указывает ожи-
опции, не вдаваясь в подробности. Поскольку комментарии дать входящие соединения на всех IPv4-интерфейсах. Если
в m4 выглядят не совсем привычно, то вместо пояснений прослушивать нужно только конкретные интерфейсы, можно
в самом файле разобьём его на отдельные строки: поступить так, как показано в последующих двух строках.
divert(-1)dnl FEATURE(use_cw_file)dnl
. . . . . define('confCW_FILE', '-o /etc/mail/local-host-names')dnl
divert(0)dnl
Эти строки задают использование файла local-host-
Директива divert() служит для переключения режимов names и указывают путь к нему.
макропроцессора. Собственно, сама конфигурация начи-
нается после divert(0), поэтому между указанными строка- dnl FEATURE('accept_unqualified_senders')dnl
dnl FEATURE('accept_unresolvable_domains')dnl
ми часто помещают комментарии к файлу. Буквы dnl, при-
сутствующие в конце каждой строки, в m4 означают конец Данные две директивы (сейчас они закомментированы)
18
администрирование
Возможности технологии
MS Windows SharePoint Services
Иван Хрипунов,
Артем Черневский
Развитие современного отдела информационных технологий неизбежно связано с переходом
от обслуживания базовой IT-инфраструктуры компании к созданию интранет-порталов
и автоматизации бизнес-процессов. Один из эффективных инструментов для решения
подобных задач – Microsoft SharePoint.
M
icrosoft Windows SharePoint ный справочник организации. Соста- справочник» и http://server01/phones
Ser vices (WSS), входящие вим список возможностей, которыми соответственно. После ввода требу-
в состав Windows Server 2003, должен обладать справочник: емых параметров обязательным ша-
простой в применении инструмент Предоставление полных данных гом является выбор шаблона сайта.
для совместного создания, редакти- о сотруднике. Все стандартно поставляемые шаб-
рования, публикации и поиска инфор- Персональные – имя, фамилия, лоны описаны на странице выбора.
мации сотрудниками компании. Удоб- фотография. Отдельно стоит упомянуть шаблоны
ный графический интерфейс и мно- Рабочие – место работы (отдел) для создания рабочих областей. Все
жество встроенных шаблонов позво- и должность. рабочие области представляют собой
лят быстро получить «осязаемый» ре- Контактная информация – но- веб-узлы, ориентированные на конк-
зультат. Являясь платформой-конс- мера телефонов, адрес элект- ретную задачу. Вследствие этого у них
труктором, Microsoft SharePoint име- ронной почты и т. д. немного изменена стандартная фун-
ет тысячи примеров реализации раз- Возможность экспорта данных кциональность. Например, для рабо-
личных задач из области маркетин- на локальные компьютеры пользо- чих областей собраний WSS пред-
га, оказания сервисных услуг, рабо- вателей для работы в режиме оф- ставляют более тесную интеграцию
ты с персоналом, сбора отчетности флайн с поддержкой синхрониза- с Outlook 2003 и немного ограничен-
и других. А расширенные возможнос- ции данных по запросу. ные возможности веб-узла.
ти по настройке и добавлению ново- Для нашего веб-сайта подойдет
го функционала с помощью Microsoft Кроме того, справочник можно бу- шаблон «Пустой узел». После создания
FrontPage и Microsoft Visual Studio поз- дет просматривать и управлять им, ис- мы автоматически попадаем на глав-
волят модернизировать любое реше- пользуя браузер. ную страницу узла (см. рис. 1), ее ад-
ние на базе WSS соответственно за- рес: http://server01/phones/default.aspx.
дачам компании. Создаем веб-узел
Большинство возможностей WSS Это первое, что необходимо сделать. Создаем список контактов
вы сможете оценить на примере узла, При создании сайта нужно задать имя Самый простой путь реализовать теле-
на котором располагается телефон- узла и его URL-адрес: «Телефонный фонный справочник на узле WSS – со-
20
администрирование
На странице представления также
Преимущества SharePoint перед «традицонными» средствами присутствует панель ссылок или па-
работы с данными – почтой и файловыми серверами нель инструментов, она содержит сле-
Возможность представления информа- Даже когда вы находитесь вне сети. дующие команды:
ции в читаемом виде так, как на обыч- Возможность задания дополнительных Создать элемент – создает новую
ных веб-сайтах. свойств документов в списке. запись в списке;
Доступ через интернет-браузер. Блокировка файлов определенных ти- Фильтр – позволяет задать фильтр
Версионность документов. пов от публикации. по любому из представленных по-
Удобная настройка прав на доступ са- Быстрый контекстный поиск информа- лей;
мими пользователями. ции с удаленного компьютера по индек- Изменить в таблице данных – по-
Оповещение пользователей об изме- су SQL-сервера во внутренних и вне- казывает информацию в виде таб-
нениях содержимого списков и библи- шних источниках. По названию, опи- лицы, по аналогии с листом Excel;
отек файлов. санию или содержимому файла. Связать с Outlook – открывает
Возможность заблокировать файл от ре- Статистика доступа к файлам и дан- в приложении Outlook папку кон-
дактирования другими пользователями. ным. тактов, связанную с данным спис-
ком. Эта команда доступна толь-
здать список на основе шаблона «Кон- Заполнив все поля, нажимаем ко в списках, созданных с исполь-
такты». Для создания списка на глав- кнопку «Создать». Попадаем на стра- зованием шаблона «Контакты»
ной странице узла: http://server01/ ницу представления «Все контакты» или «События»;
phones/default.aspx в верхней панели (AllItems.aspx) вновь созданного спис- Импортировать контакты – позво-
ссылок выбираем «Создать». ка, его адрес – http://server01/phones/ ляет импортировать контакты, ис-
На странице создания находим Lists/Employees/AllItems.aspx – легко пользуя адресную книгу. Команда
раздел «Списки» и выбираем нужный читается и воспроизводится: сервер доступна только в списках на осно-
нам шаблон – «Контакты». Открывает- (server01); сайт телефонного справоч- ве шаблона «Контакты».
ся страница создания нового списка. ника (phones); списки (lists); сотрудни-
При заполнении полей обратите вни- ки (employees). Названия полей представлены ги-
мание на следующие моменты: Имя файла представления можно перссылками для осуществления сор-
В поле «Имя» введите название не указывать – в этом случае откроет- тировки.
списка по-английски – Employees ся представление по умолчанию.
(сотрудники). При создании спис- На странице представления отобра- Изменяем общие
ка или библиотеки документов жаются поля «Вложения», «Фамилия», параметры
SharePoint использует значение «Имя», «Организация», «Рабочий теле- Переходим по ссылке «Изменить на-
этого поля для создания адреса фон», «Домашний телефон» и «Адрес стройки и столбцы». Открывается
URL. Если это поле целиком состо- электронной почты». Обратите внима- страница настройки списка. Первый
ит из национальных символов, ад- ние, что помимо контактной информа- раздел – «Общие параметры» содер-
рес будет сформирован из стан- ции в списке присутствует поле «Вло- жит ссылки на изменение общих на-
дартной строки: List, List1, DocLib жение». Каждый элемент списка может строек списка, сохранение в качестве
и т. д. При наличии в этом поле сме- содержать вложения, то есть некоторое шаблона, удаление, настройку разре-
шанного набора символов (латинс- количество файлов, связанных с дан- шений на данный список. Перейдем по
ких, национальных и спецсимволов ным элементом. При просмотре эле- ссылке «Изменить общие параметры»
«&, *» и т. д.) в URL попадут только мента списка в поле «Вложения» отоб- и на открывшейся странице парамет-
латинские. Пробелы будут замене- ражаются ссылки на вложенные фай- ров изменим в поле «Имя» название
ны кодами «%20». Если получив- лы. Сами файлы хранятся в отдельной «Employees» на «Сотрудники».
шийся адрес уже существует, в ко- папке на веб-узле. Поддержку вложе- Раздел «Утверждение содержимо-
нец будет добавлена цифра. Исхо- ний в списке можно отключить на стра- го» позволяет настроить утверждение
дя из этого, рекомендуется при со- нице изменения параметров. каждого элемента списка. Это озна-
здании задавать имена латински-
ми символами, заменяя пробелы
знаками подчеркивания. Это обес-
печит более удобное чтение и вос-
произведение адреса URL. Впос-
ледствии имя можно будет изме-
нить, но адрес URL не изменится.
Выберите, будет ли список отобра-
жаться на панели быстрого запус-
ка. Для облегчения доступа к спис-
ку с главной страницы отметим
«Отображать этот список на пане-
ли быстрого запуска? : Да». Рисунок 1. Вид веб-узла после создания
22
администрирование
ку «Другие столбцы…». Интересным
моментом здесь является использова-
ние в качестве условия значений «[Се-
годня]» для полей с датами и «[Я]» для
полей «Создатель» и «Автор измене-
ний». Например, при указании условия
«[Сегодня]» для поля «Создано» в пред-
ставлении будут показаны все элемен-
ты списка, созданные сегодня. А усло-
вие «[Я]» для поля «Создатель» позво-
лит отображать в представлении все
элементы списка, созданные текущим
пользователем. Нам не требуется ука-
зание каких-либо фильтров для наше-
го списка. Поэтому оставим этот раздел
без изменений, то есть должен быть от-
мечен пункт «Отображать в этом пред-
ставлении все элементы».
В разделе «Группировка» можно
указать поля для группировки данных.
Например, элементы нашего справоч-
ника можно сгруппировать по органи-
зации или отделу. Для этих целей мож-
но создать новое представление и на-
звать его, например, «По отделам».
При этом вывод данных будет произ-
водиться группами, содержимое ко-
торых можно будет сворачивать или Рисунок 2. Ввод данных о сотруднике
разворачивать так же, как это сдела-
но с разделами на данной странице. воде группами есть возможность про- лаем в качестве примера. На странице
Указание группировки более чем для листывать группы. Такие ограничения представления «Все контакты» на па-
двух полей не имеет смысла, так как полезны при наличии в списке большо- нели инструментов нажимаем кнопку
вывод информации будет переполнен го количества элементов. При выводе «Создать элемент» (см. рис. 2).
названиями групп и замедлен их фор- группами или ограничении числа эле- Открывается страница ввода ново-
мированием, поэтому для группиров- ментов значительно ускоряется про- го элемента со всеми полями для ввода.
ки, как и для фильтров, доступно ука- цесс формирования и загрузки страни- Красными звездочками отмечены те
зание только двух полей. цы. Это имеет и свой минус – для того, поля, заполнение которых обязатель-
По любому полю, отображаемому чтобы добраться до конца списка, не- но. В нашем случае – это поле «Фами-
в представлении, есть возможность обходимо перейти по ссылкам некото- лия». Вводим данные во все поля и на-
подводить итоги – подсчитывать сред- рое количество раз. жимаем кнопку «Сохранить и закрыть»
нее, максимум, минимум и т. д. для чис- Мы рассмотрели все разделы пред- на панели инструментов. Возвраща-
ловых элементов и количество значе- ставления и внесли необходимые прав- емся в представление «Все контакты»
ний – для текстовых. Настроить расчет ки. Нажимаем на кнопку «Ок» для со- и видим, что запись добавлена.
итогов можно в разделе «Итоги». Такая хранения результатов и вновь попада- Второй способ – использование
функциональность вряд ли необходи- ем на страницу «Настройка». для ввода файла Excel или таблично-
ма для телефонного справочника. го представления данных, связанно-
Раздел «Стиль» предоставляет Ввод данных в список го со списком. Для ввода информа-
возможность настройки вида (распо- Остался еще один немаловажный мо- ции придется создать дополнитель-
ложение полей, цветовое выделение мент: откуда в списке появятся дан- ное представление, содержащее все
и т. д.) выводимой информации. Вы мо- ные? Можно дать возможность сотруд- поля, кроме служебных, и экспортиро-
жете поэкспериментировать с различ- никам вводить данные самостоятель- вать данные в Excel. После чего с дан-
ными стилями, но для нашего примера но, используя разрешения на уровне ными можно работать, как с обычным
изменять мы ничего не будем, оставим элемента списка. Но тогда не избе- файлом Excel, только список необходи-
стиль по умолчанию. жать беспорядка. мо синхронизировать для отражения
В разделе «Максимальное коли- Можно рассмотреть централизо- изменений. Для ввода данных созда-
чество элементов» можно задать ли- ванные варианты попадания данных в дим представление типа «Таблица дан-
бо вывод группами с определенным список. Первый, самый простой – до- ных», в котором выведем все необходи-
числом элементов, либо вывод огра- бавление данных вручную на сайте те- мые для заполнения поля. Назовем его
ниченного числа элементов. При вы- лефонного справочника, что мы и сде- «Таблица данных». Создавая представ-
24
администрирование
ке, созданном на основе шаблона «Кон-
такты». Мы не зря переименовали поле Взаимодействие с почтовым сервером
«Организация» в «Отдел» – иначе мы При указании в настройках WSS сервера пользования почтового сервера является
бы не смогли выгружать в Outlook све- исходящей почты SMTP предоставляется функциональность оповещений об измене-
дения об отделе, а они нам более важ- возможность использовать запросы на до- ниях. При просмотре списка библиотеки до-
ны, раз речь идет о справочнике одной ступ и оповещения об изменениях. кументов на панели «Действия» есть ссыл-
компании. Обратите внимание, что по- Если на веб-узел пытается зайти поль- ка «Оповещать меня». При просмотре эле-
ле «Организация» в карточке контакта зователь, не имеющий должных разреше- мента списка или свойств файла в библио-
Outlook содержит сведения об отделе. ний, он видит веб-страницу с формой за- теке документов такая же ссылка «Опове-
Получился достаточно функцио- проса на доступ. Эта же страница появ- щать меня» есть на панели инструментов.
нальный телефонный справочник, в ко- ляется, когда пользователь пытается пре- При использовании этой ссылки пользова-
тором пока не хватает фотографий. высить свои разрешения. В форме запро- тель задает свой адрес электронной почты,
са на доступ указывается текущий логин тип изменений и частоту оповещений. Типы
Добавляем фотографии пользователя, и есть возможность указать изменений включают все изменения, добав-
сотрудников причины запроса. После нажатия на кноп- ление элементов, изменение элементов,
Для крупных компаний наличие фо- ку отправить запрос администратор сай- удаление элементов. Сообщения могут от-
тографий в телефонном справочни- та получит по электронной почте сообще- правляться немедленно, раз в день или раз
ке особенно актуально. Для реализа- ние. В нем будет указан пользователь, ад- в неделю. После сохранения пользователь
ции нам необходимо место для хра- рес узла и ссылки для администрирования при каждом изменении в списке, библиоте-
нения фотографий. Это может быть разрешений. ке или их элементе будет получать уведом-
библиотека документов или библи- Запросы на доступ можно отключить ления о совершенных действиях по элек-
отека рисунков. Ее можно располо- в пределах всего сайта, или отдельно взято- тронной почте. В сообщение будет указы-
жить на нашем сайте или на любом го списка, или библиотеки документов. ваться тип изменения и будут даны гиперс-
другом. А в списке контактов сотруд- Еще одним интересным моментом ис- сылки для просмотра изменений.
ников мы будем хранить лишь ссыл-
ки на файлы. кциональность полезна при совмест- Помимо представления «Все ри-
Создадим библиотеку рисунков. ной работе над документами, но тре- сунки» в списке присутствует еще од-
Как уже было сказано, это модифи- бует дополнительного дискового про- но. «Проводник» является стандарт-
цированная библиотека документов, странства. ным для всех библиотек документов
в которой добавлена функциональ- Заполняем поля на странице: и позволяет отображать файлы так,
ность для просмотра изображений. В поле «Имя» вводим название по- как если бы вы открыли папку в про-
Для создания библиотеки на вер- английски – photos (фотографии). воднике Windows. Кстати, доступ
хней панели ссылок нашего узла В поле «Описание» вводим «Фото- к серверу SharePoint через провод-
http://server01/phones выбираем «Со- графии сотрудников». ник возможен – достаточно лишь ука-
здать». На странице создания идем Выбираем, будет ли библиотека зать UNC-адрес. Для нашего сервера
по ссылке «Библиотека рисунков». отображаться на панели быстрого http://server01/phones/ путь будет вы-
Открывается страница создания но- запуска. глядеть как \\server01\phones. При этом
вой библиотеки. Как видите, стра- В данной библиотеке поддержка все компоненты веб-узла отображают-
ница аналогична странице создания версионности не нужна, поэтому ся в виде папок и файлов. При работе
списка. Добавлен лишь раздел «Вер- отключаем ее. с сайтом через проводник будьте вни-
сии рисунков». В этом разделе любой мательны – не удалите случайно слу-
библиотеки (рисунков, форм или до- Нажимаем кнопку «Создать». По- жебные папки или файлы!
кументов) можно включить поддержку падаем в библиотеку рисунков, в пред- Переименуем созданную библи-
версионности, то есть возможность ставление по умолчанию «Все рисун- отеку на «Фотографии сотрудников».
сохранения и восстановления пре- ки». Страница похожа на представле- На панели «Действия» выберем «Из-
дыдущих версий файла. Данная фун- ние списка. менить настройки и столбцы», далее –
«Изменить общие параметры» и в поле
«Имя» введем новое название библио-
теки. Сохраним изменения и вернем-
ся в библиотеку.
У нас уже есть несколько записей
в телефонном справочнике. Загрузим
для них фотографии. На панели инс-
трументов выберем «Добавить рису-
нок». Здесь возможно указать один
файл для загрузки в поле «Имя» или,
перейдя по ссылке «Отправить не-
сколько файлов», указать файлы в от-
Рисунок 3. Библиотека рисунков крывшемся окне проводника.
26
администрирование
те заполнять столбец с адресом элект- Теперь необходимо настроить вне- пает в роли поставщика данных, дру-
ронной почты, в столбце с фото будетшний вид веб-части – она не отобража- гая – в качестве приемника. Веб-часть-
обновляться ссылка. ет некоторых полей. Справа в заголовке приемник может на основе получен-
Сохраняем новый столбец. Теперь веб-части нажмем кнопку со стрелкой ных данных изменять (фильтровать)
можно его переименовать, например, вниз. Откроется меню веб-части. Его отображаемую информацию. Соеди-
пусть его названием будет «Фото». первые три пункта позволяют управ- нения актуальны для веб-частей спис-
Следующим шагом по улучшению лять отображением веб-части на стра- ков, библиотек документов, рисунков,
справочника будет отображение дан- нице. Пункт «Свернуть» позволяет по- представления данных и т. д.
ных на первой странице веб-узла. казывать только заголовок. Пункт «За- Добавим отображение фотогра-
П е р ехо д и м н а гл а в н у ю с т р а -
крыть» сделает веб-часть невидимой. фии сотрудника на нашей странице.
ницу сайта, в нашем примере это Чтобы вновь ее отобразить, придет- Для этого соединим веб-часть списка
ся открывать страницу во FrontPage контактов с присутствующей на стра-
http://server01/phones. Заходим в вы-
падающее меню «Изменить общую или другом редакторе, совместимом нице веб-частью рисунка. При этом
страницу». Если такого меню нет или с WSS. Для удаления веб-части со стра- в качестве передаваемой информации
оно называется «Изменить мою стра- ницы выберите «Удалить». будем использовать ссылку на фото-
ницу», возможно, у вас нет соответс- Для изменения настроек веб-час- графию сотрудника.
твующих прав. Краткое назначение ти выберем пункт «Изменить общую Открываем страницу в конструкто-
пунктов меню: веб-часть». В правой части окна от- ре. В меню веб-части «Сотрудники» по-
Добавить веб-части. Открыва- кроется страница с параметрами веб- явился пункт «Соединения». Выбира-
части. Разделы «Вид», «Макет» и «До- ем его и далее «Предоставить строку».
ет страницу в конструкторе и окно
со списком веб-частей. Кроме то-полнительно» присутствуют для всех Затем выбираем веб-часть, которой
го, есть возможность поиска или веб-частей. В этих разделах можно мы будем передавать данные, «Рису-
импорта веб-части. задать название веб-части, разме- нок узла». В открывшемся окне выби-
Изменить эту страницу в конструк-ры и отображения веб-части и ее ме- раем поле, которое содержит путь к ри-
торе. Отображает страницу в виденю. Самый верхний раздел управляет сунку, в нашем случае это поле «Фото»,
конструктора, с веб-зонами и воз-
текущим представлением списка для и нажимаем кнопку «Готово».
можностью изменять местоположе- веб-части. Выберем в списке «Выбран- Заметьте, что слева в каждой стро-
ние веб-частей. ное представление» пункт «Все кон- ке списка сотрудников появился эле-
Изменить общие веб-части. От- такты» и укажем, что нам не нужна мент со ссылкой. При нажатии на него
крывает окно свойств выбранной панель инструментов. Заметьте, спи- в правой части страницы загружается
веб-части для изменения ее на- сок отображается с использованием фотография сотрудника. Если не вы-
строек. представления «Все контакты». Неко- брано ничего, то есть когда мы пер-
Общее представление. Переклю- торые поля этого представления мож- вый раз заходим на страницу, вместо
чается в представление для всех но скрыть. Переходим по ссылке «Из- рисунка отобразится текст, сообщаю-
пользователей. Данный пункт до- менить текущее представление». От- щий о необходимости выбора сотруд-
ступен при наличии соответству- крывается окно редактирования пред- ника (см. рис. 4).
ющих разрешений на изменения ставления. Все изменения, которые бу-
страниц на узле. дут сделаны на этой странице, будут Заключение
Личное представление. Позво- касаться только одной веб-части. Сни- Созданный в примере телефонный
ляет настроить внешний вид стра-маем отметки напротив поля «Изме- справочник вы можете модерни-
ницы и веб-частей по своему вку-нить». Сохраняем представление на- зировать, расширив функциональ-
су для конкретного пользователя.жатием кнопки «Ок». ность и улучшив внешний вид. Для
Одна из возможностей веб-час- этого можно использовать редак-
Выберем пункт «Добавить веб-час- тей – поддержка соединения между тор, совместимый с технологиями
ти → Обзор». Перетащим мышкой веб- ними. Две веб-части могут быть со- SharePoint, например Microsoft Office
часть списка «Сотрудники» из правой единены в пределах страницы или уз- FrontPage 2003. Но это – тема для сле-
части окна в левую. ла. При этом одна веб-часть высту- дующих статей.
Константин Леонтьев
Технология управления системами через WMI позволяет решать ваши задачи гораздо
эффективнее, если вы знаете потенциальные возможности WMI-провайдеров.
В
предыдущей части статьи [1] ностей WMI нам осталось рассмотреть позволяет разработчикам добавлять
мы подробно рассмотрели спо- только специфику работы с различны- к единому пространству классов WMI
собы, которые предоставляет ми провайдерами. Как вы помните из новые классы, отвечающие за мони-
WMI системным администраторам для предыдущей статьи [2], WMI на ниж- торинг и управление их программно-
отслеживания и реакции на системные нем уровне имеет модульную расширя- го обеспечения. Такие модули в WMI
события. Из всех основных возмож- емую архитектуру. Такая архитектура имеют название провайдеров и обыч-
28
администрирование
но оформлены в виде DLL-библиотеки, взаимодействую- dtmInstallDate = strOS.InstallDate
Wscript.Echo WMIDateStringToDate(dtmInstallDate)
щей с WMI через COM+. Next
Замечу, что есть ряд провайдеров WMI, которые яв-
Function WMIDateStringToDate(dtmInstallDate)
ляются посредниками между WMI и другими широко рас- WMIDateStringToDate = CDate(Mid(dtmInstallDate, ↵
пространенными системами управления. К таким провай- 5, 2) & "/" & Mid(dtmInstallDate, 7, 2) & "/" & ↵
Left(dtmInstallDate, 4) & " " & ↵
дерам в частности относятся: WMI SNMP Provider и WMI Mid (dtmInstallDate, 9, 2) & ":" & ↵
Performance provider. Конечно же, в задачу системного ад- Mid(dtmInstallDate, 11, 2) & ":" & ↵
Mid(dtmInstallDate, 13, 2))
министратора не входит разработка провайдеров WMI – это End Function
удел программистов, однако весьма полезно иметь пред-
ставление об основных провайдерах и их функциях. Возникает вопрос, почему дата и время в WMI пред-
В операционной системе Windows XP существует бо- ставлены столь странным образом. Ответ на самом де-
лее 20 различных провайдеров WMI, каждый из которых ле прост. Вспомните, что одним из важнейших элемен-
решает свой собственный узкий набор задач. Кроме того, тов WMI является язык WQL. Для удобства обработки да-
устанавливая драйверы, а также системное и прикладное ты и времени в WMI с помощью языка WQL (внутренней
программное обеспечение, вы можете обнаружить, что их сортировки и группировки) все даты представлены так,
разработчики включили в состав своего продукта допол- что в самых старших разрядах идет год, затем месяц, по-
нительные WMI-провайдеры и классы. Из наиболее широ- том – день, потом часы, минуты и секунды. Соответствен-
ко известных программных продуктов, устанавливающих но для того, чтобы отсортировать массив данных, получен-
свои WMI-провайдеры, можно отметить следующие: Intel ных из WMI по дате времени, не нужно делать никаких до-
ProSet II, Citrix Metaframe и Presentation Server, Symantec полнительных усилий.
Antivirus, Dell Open Manage, IBM DB2, HP Open View, Altiris Некоторые усилия потребуются при отображении этих
Software Virtualization Solution, а также большинство продук- данных пользователю или сохранении их в отчете. С вы-
тов и сервисов Microsoft. Замечу, что это далеко не полный ходом Windows XP эта задача стала решаться еще легче.
список, а лишь то, что наиболее часто встречается в кор- В наборе объектов для сценариев WMI появился специаль-
поративных сетях. ный класс объекта SWbemDateTime. Он отвечает за пред-
Поскольку все провайдеры нацелены на предостав- ставление даты и времени в удобном для чтения виде.
ление различных функций и решение различных задач, То есть фактически проделывает ту же работу, что и фун-
то всё описание и примеры будут строиться не от одной об- кция WMIDateStringToDate из листинга 1. Пример исполь-
щей задачи, как это было в предыдущей части, а от функ- зования этого класса дан в листинге 2.
ций провайдера.
Листинг 2. Использование объекта SWbemDateTime.
Работает только на Windows XP и новее.
Обработка даты и времени
в сценариях WMI Set dtmInstallDate = ↵
CreateObject("WbemScripting.SWbemDateTime")
Разберём простой пример по обработке даты и времени
в сценариях WMI. Многие провайдеры WMI возвращают strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & ↵
обратившейся к ним программе различные характеристи- strComputer & "\root\cimv2")
ки операционной системы и приложений, которые содер-
Set objOS = objWMIService.ExecQuery("Select * ↵
жат даты и время. Эти данные представлены в специаль- from Win32_OperatingSystem")
ном формате и нуждаются в предварительной обработке,
For Each strOS in objOS
прежде чем принять удобный для чиения вид. dtmInstallDate.Value = strOS.InstallDate
До выхода Windows XP эта задача оставалась на со- Wscript.Echo dtmInstallDate.GetVarDate
Next
вести вызывающей программы и требовала от админис-
тратора написания подпрограммы преобразования фор- В дополнение к этим новым возможностям в самом ре-
матов. Несмотря на то что алгоритм этой подпрограммы позитории WMI появились классы, представляющие ло-
довольно прост – это требовало дополнительных усилий. кальное время и часовой пояс не во внутреннем форма-
Пример такой подпрограммы представлен в листинге 1. те WMI, а в удобном для пользователя виде. Эти классы:
Если взглянуть внимательно, то эта подпрограмма всего Win32_LocalTime и Win32_TimeZone – удобное дополне-
лишь разбирает дату и время, которые вернула система ние для работы с датами и временем. Кроме того, класс
WMI, на составляющие и представляет в более удобном Win32_LocalTime рекомендуется использовать для отслежи-
для чтения виде. вания интервалов времени с помошью обработчиков собы-
тий WMI, которым была посвящена предыдущая часть ста-
Листинг 1. Работа с датой и временем в WMI-сценариях. тьи. Обратите внимане, что минимальный интервал време-
Работает на всех версиях ОС
ни, который позволяет отслеживать класс Win32_LocalTime,
strComputer = "." равен 1 секунде.
Set objWMIService = GetObject("winmgmts:\\" & ↵
strComputer & "\root\cimv2") Сканирование хостов сети
Set objOS = objWMIService.ExecQuery("Select * ↵ и провайдер Ping
from Win32_OperatingSystem") Провайдер Ping предоставляет в репозиторий WMI всего
For Each strOS in objOS один класс Win32_PingStatus. Они позволяют из сценариев
30
администрирование
Case 11010 strComputer & "\root\CIMV2")
WScript.Echo "Превышен интервал ожидания" ↵
& ". Buffer Size is: " & varBuffSize Set objEvents = objWMIService.ExecNotificationQuery _
varBuffSize = varBuffSize - 8 ("SELECT * FROM __InstanceCreationEvent WHERE ↵
Case 11011 TargetInstance ISA 'Win32_NTLogEvent'")
WScript.Echo "Неверный запрос" & ↵
". Buffer Size is: " & varBuffSize Wscript.Echo "Ожидаем записи в системные журналы событий ..."
Case 11012 Do While(True)
WScript.Echo "Неверный маршрут" & ↵ Set objReceivedEvent = objEvents.NextEvent
". Buffer Size is: " & varBuffSize
Case 11013 Select Case ↵
WScript.Echo "Достигнут максимальный ↵ CInt(objReceivedEvent.TargetInstance.EventType)
TimeToLive" & ". Buffer Size is: " & ↵ Case 1
varBuffSize strType = "Ошибка"
Case 11014 case 2
WScript.Echo "Достигнут максимальный ↵ strType = "Предупреждение"
TimeToLive при сборке" & ↵ case 3
". Buffer Size is: " & varBuffSize strType = "Информация"
Case 11015 case 4
WScript.Echo "Ошибка параметра" & ↵ strType = "Успешный аудит"
". Buffer Size is: " & varBuffSize case 5
Case 11016 strType = "Аудит отказа"
WScript.Echo "Требование снизить скорость ↵ End Select
передачи" & ". Buffer Size is: " & ↵
varBuffSize WScript.Echo "----- Новое Событие -----"
Case 11017 Wscript.Echo "Event ID: " & ↵
WScript.Echo "Переполнение опции IP" & ↵ objReceivedEvent.TargetInstance.EventCode & ↵
". Buffer Size is: " & varBuffSize " Значимость: " & strType & " Log: " & ↵
Case 11018 objReceivedEvent.TargetInstance.LogFile
WScript.Echo "Неверное назначение" & ↵ WScript.Echo "Сообщение: " & ↵
". Buffer Size is: " & varBuffSize objReceivedEvent.TargetInstance.Message
Case 11032
WScript.Echo "Установление соединения ↵ Loop
по IPSEC" & ". Buffer Size is: " & ↵
varBuffSize
Case 11050 Как видно из примера, код WQL-запроса достаточ-
WScript.Echo "Общий сбой" & ↵ но простой, поэтому, я полагаю, детально пояснять его
". Buffer Size is: " & varBuffSize
End Select не нужно. Обращу внимание лишь на одно существен-
Next ное обстоятельство: при работе с журналами необходи-
Next мо использовать привилегию Security. В противном слу-
чае многие из запросов будут отклонены системой безо-
WScript.Echo "Удалось определить MTU трассы: " & ↵
CStr(varMaxPacket + 28) пасности Windows.
Следующий пример, приведенный на листинге 6, пока-
Алгоритм работы этого сценария прост: мы посыла- зывает, как произвести очистку журнала приложений (хотя
ем от нашего хоста до указанного целевого хоста пакеты, это может быть любой системный журнал аудита), исполь-
с каждым шагом увеличивая их размер на 8 байт, устано- зуя метод ClearEventlog класса Win32_NTEventlogFile. Поми-
вив специальный IP-флаг, запрещающий фрагментировать мо того, что нам необходимо указать привилегию Security,
пакет. При этом мы следим за результатом, и как только нам также необходимо открыть конкретный экземпляр объ-
нам вернется диагностический пакет, сообщающий о том, екта класса Win32_NTEventlogFile соответствующего жур-
что размер нашего исходного пакета больше допустимого, налу приложений.
мы запоминаем размер последнего успешно прошедшего
по трассе пакета. Листинг 6. Очистка системного журнала приложений
(Application Event Log)
32
администрирование
каталогов практически не отличается от работы с други- В этом примере сценарий выводит показания счетчи-
ми классами WMI. ков производительности для процессора. Для того чтобы
понять, чем отличаются классы нормированных счетчиков
Работа со счетчиками производительности от ненормированных, я привел в лис-
производительности тинге 10 почти тот же пример, но использующий класс
Следующий интересный провайдер – провайдер доступа с нормированными счетчиками производительности.
к счетчикам производительности. Эти же самые счетчи-
ки вы можете увидеть, когда используете утилиту System Листинг 10. Использование форматированных и нормированных
счетчиков (все значения соответствуют System Monitor)
Monitor (Performance Monitor). Этот провайдер предостав-
ляет две группы классов, олицетворяющих счетчики про- strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & ↵
изводительности системы. К первой группе относятся клас- strComputer & "\root\CIMV2")
сы, представляющие ненормированные системные показа- Set colItems = objWMIService.ExecQuery( _
"SELECT * FROM ↵
тели. Эта группа классов имеет общую часть в их назва- Win32_PerfFormattedData_PerfOS_Processor",,48)
нии – Win32_PerfRawData_, и наследуют все свои свойс-
For Each objItem in colItems
тва от класса Win32_PerfRawData. Ко второй группе отно- Wscript.Echo "-----------------------------------"
сятся классы, предоставляющие нормированные и форма- Wscript.Echo ↵
"Win32_PerfFormattedData_PerfOS_Processor instance"
тированные данные. В их названии также имеется общая Wscript.Echo "-----------------------------------"
часть: Win32_PerfFormattedData_, а их свойства выведены Wscript.Echo "C1TransitionsPersec: " & ↵
objItem.C1TransitionsPersec
из класса Win32_PerfFormattedData. Wscript.Echo "C2TransitionsPersec: " & ↵
Пример работы с ненормированными счетчиками про- objItem.C2TransitionsPersec
Wscript.Echo "C3TransitionsPersec: " & ↵
изводительности смотрите в листинге 9. objItem.C3TransitionsPersec
Wscript.Echo "DPCRate: " & objItem.DPCRate
Листинг 9. Использование неформатированных счетчиков Wscript.Echo "DPCsQueuedPersec: " & ↵
(более быстрый доступ к данным) objItem.DPCsQueuedPersec
Wscript.Echo "Frequency_Object: " & ↵
strComputer = "." objItem.Frequency_Object
Wscript.Echo "Frequency_PerfTime: " & ↵
Set objWMIService = GetObject("winmgmts:\\" & ↵ objItem.Frequency_PerfTime
strComputer & "\root\CIMV2") Wscript.Echo "Frequency_Sys100NS: " & ↵
Set colItems = objWMIService.ExecQuery( _ objItem.Frequency_Sys100NS
"SELECT * FROM ↵ Wscript.Echo "InterruptsPersec: " & ↵
Win32_PerfRawData_PerfOS_Processor",,48) objItem.InterruptsPersec
Wscript.Echo "Name: " & objItem.Name
For Each objItem in colItems Wscript.Echo "PercentC1Time: " & objItem.PercentC1Time
Wscript.Echo "-----------------------------------" Wscript.Echo "PercentC2Time: " & objItem.PercentC2Time
Wscript.Echo ↵ Wscript.Echo "PercentC3Time: " & objItem.PercentC3Time
"Win32_PerfRawData_PerfOS_Processor instance" Wscript.Echo "PercentDPCTime: " & ↵
Wscript.Echo "-----------------------------------" objItem.PercentDPCTime
Wscript.Echo "C1TransitionsPersec: " & ↵ Wscript.Echo "PercentIdleTime: " & ↵
objItem.C1TransitionsPersec objItem.PercentIdleTime
Wscript.Echo "C2TransitionsPersec: " & ↵ Wscript.Echo "PercentInterruptTime: " & ↵
objItem.C2TransitionsPersec objItem.PercentInterruptTime
Wscript.Echo "C3TransitionsPersec: " & ↵ Wscript.Echo "PercentPrivilegedTime: " & ↵
objItem.C3TransitionsPersec objItem.PercentPrivilegedTime
Wscript.Echo "DPCRate: " & objItem.DPCRate Wscript.Echo "PercentProcessorTime: " & ↵
Wscript.Echo "DPCsQueuedPersec: " & ↵ objItem.PercentProcessorTime
objItem.DPCsQueuedPersec Wscript.Echo "PercentUserTime: " & ↵
Wscript.Echo "Frequency_Object: " & ↵ objItem.PercentUserTime
objItem.Frequency_Object Wscript.Echo "Timestamp_Object: " & ↵
Wscript.Echo "Frequency_PerfTime: " & ↵ objItem.Timestamp_Object
objItem.Frequency_PerfTime Wscript.Echo "Timestamp_PerfTime: " & ↵
Wscript.Echo "Frequency_Sys100NS: " & ↵ objItem.Timestamp_PerfTime
objItem.Frequency_Sys100NS Wscript.Echo "Timestamp_Sys100NS: " & ↵
Wscript.Echo "InterruptsPersec: " & ↵ objItem.Timestamp_Sys100NS
objItem.InterruptsPersec Next
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "PercentC1Time: " & objItem.PercentC1Time
Wscript.Echo "PercentC2Time: " & objItem.PercentC2Time Видите – сам по себе исходный код сценария в лис-
Wscript.Echo "PercentC3Time: " & objItem.PercentC3Time тинге 10 отличается от примера в листинге 9 только од-
Wscript.Echo "PercentDPCTime: " & objItem.PercentDPCTime
Wscript.Echo "PercentIdleTime: " & ↵ ной строкой. Эта строка – WQL-запрос: «SELECT * FROM
objItem.PercentIdleTime Win32_PerfFormattedData_PerfOS_Processor». В сущности,
Wscript.Echo "PercentInterruptTime: " & ↵
objItem.PercentInterruptTime отличается только имя класса, набор его свойств в точности
Wscript.Echo "PercentPrivilegedTime: " & ↵ совпадает, однако сами значения свойств будут отличаться.
objItem.PercentPrivilegedTime
Wscript.Echo "PercentProcessorTime: " & ↵ Для каждого свойства существует специальная формула
objItem.PercentProcessorTime перевода из ненормированного значения в нормированное.
Wscript.Echo "PercentUserTime: " & ↵
objItem.PercentUserTime Узнать эту формулу можно из файла Winperf.h.
Wscript.Echo "Timestamp_Object: " & ↵
objItem.Timestamp_Object
Wscript.Echo "Timestamp_PerfTime: " & ↵ WMI SNMP-провайдер
objItem.Timestamp_PerfTime Подробно рассмотреть здесь провайдер WMI SNMP не по-
Wscript.Echo "Timestamp_Sys100NS: " & ↵
objItem.Timestamp_Sys100NS лучится, тем не менее упомянуть об этом провайдере стоит.
Next Этот провайдер фактически является мостом между SNMP-
34
администрирование
Отказоустойчивый кластер
с минимальным бюджетом
Сергей Довганюк
Как с минимальным бюджетом эффективно построить отказоустойчивый кластер
и использовать его в качестве платформы для критически важных приложений на примере
СУБД Oracle 9i.
К
огда работа предприятия зави- ности, то варианты из нижнего ряда ется другой пакет, менеджер класте-
сит от функционирования сер- второй таблицы отвергаем сразу. Рас- ра – Heartbeat.
веров, всегда хочется быть уве- смотрим оставшиеся варианты с уче- Свежую версию DRBD, на момент
ренным в их надежности. И надежность том требуемого бюджета. Выбираем написания статьи, можно было взять
эту даже можно измерить. DRBD + Heartbeat. по ссылке http://oss.linbit.com/drbd/0.7/
Применительно к серверам эта ве- Перевод статьи, посвященной бюд- drbd-0.7.17.tar.gz, а версию Heartbeat –
личина называется «доступность» или жетным системам высокой готовности, http://linux-ha.org/download/heartbeat-
«готовность», измеряется в процентах в которой рассматривается выбран- 2.0.2.tar.gz.
и означает, сколько времени в году ное нами решение, находится по ад- В нашем кластере два узла, один
сервер исправно функционирует. Иде- ресу: http://www.opennet.ru/docs/RUS/ из них является ведущим (основным),
альное ее значение – 100%. ha_cluster. второй ведомым (вторичным).
В таблице 1 приведены типичные
значения готовности и расчетное вре- Назначение DRBD Конфигурация системы
мя простоя для каждой из них. и Heartbeat За основу берем однодисковый ва-
Что делать, чтобы увеличить этот DRBD – это блочное устройство, кото- риант дистрибутива ALT Linux Master
показатель? Оптимальное решение – рое позволяет организовывать зерка- 2.4.
это дублирование всех узлов (т.е. сер- лирование (RAID1-массив) через сеть. В качестве узлов кластера ис-
веров). Это решение позволит допи- На каждом из узлов DRBD связыва- пользуются две системы. Одна (ос-
сать к показателю готовности еще од- ет виртуальное устройство /dev/drbdX новная) – это 2 х Xeon 2.8 ГГц, 1 Гб,
ну «9». А два функционально идентич- (Х – номер) и локальный раздел дис- 2 x RAID1 (/dev/sda и /dev/sdb; 4 дис-
ных сервера, работающих как один, – ка, далее не доступный напрямую. За- ка Seagate SCSI 73 Гб, 10000 rpm).
это уже кластер. пись информации осуществляется на Вторая проще – Athlon 1700+, 256 Мб,
Варианты построения кластера вы- первичном узле (DRBD разрешает за- ATA WD 80 Гб (/dev/hda) + RAID1 (/dev/
бираются в каждом конкретном случае. пись только на первичном узле) на ус- sda; 2 х ATA WD 80 Гб). На обоих уз-
Я хочу привести пример построения тройство /dev/drbdX, которое переда- лах по две сетевые карты, одна бу-
кластера на примере СУБД Oracle 9i. ет эти данные для записи на связан- дет использоваться для выхода в кор-
Как я и писал выше, есть несколько ный локальный раздел диска и отсы- поративную сеть, вторая (желательно
вариантов решений. Их можно разде- лает по сети на другие узлы кластера. gigabit ethernet)– используется DRBD
лить по нескольким критериям: стои- Чтение данных происходит с локаль- для синхронизации дисков. Скорость
мость решения, оперативность восста- ного раздела. работы этого сетевого RAID-масси-
новления системы после сбоя (см. таб- Для управления кластером и пе- ва не будет выше, чем скорость ва-
лицу 2). реключения с одного узла класте- шей сети. Еще соединим оба узла че-
Поскольку основное требование ра на другой (запуск/останов необ- рез COM-порты (нуль модем) для то-
к кластеру – высокая степень доступ- ходимых сервисов и т. д.) использу- го, чтобы Heartbeat мог с большей ве-
36
администрирование
роятностью определить, «умер» один из узлов кластера Таблица 1. Типичные значения готовности
или нет. Может так случиться, что между узлами пропадет Готовность, % Время простоя в год
связь через Ethernet и тогда получится, что каждый узел бу- 99 3.5 дня
дет считать себя главным, справедливо полагая, что дру-
99.9 9 часов
гие узлы «мертвы» (т.н. split-brain или раздвоение личнос-
ти), чего стоит всячески избегать. 99.99 52.5 минуты
На каждом из узлов должен быть выделен раздел 99.999 5 минут
для использования с DRBD. Выделим на обеих машинах
по RAID1-массиву. Во время и после установки операцион- Руководство «Установка БД Oracle 9.2.0.4.0 и Oracle
ной системы (вплоть до установки DRBD) они должны ос- Application Server 10g на RED HAT Enterprise Linux AS 2.1» рас-
таваться неиспользуемыми! положенное по адресу: http://pm4u.narod.ru/oracle.htm –
также замечательный материал.
Порядок установки системы Книга из официальной документации по Oracle 9i
Для начала нужно установить Oracle на основном узле «Oracle 9i installation guide». Электронная версия распо-
кластера. Затем создать базу. Предполагается, что сам ложена по адресу: http://download-west.oracle.com/docs/
Oracle и база имеют некую общую родительскую директо- html/A96167_01/toc.htm.
рию (например /D01). После этого, используя конфигураци-
онные файлы от первой установки, Oracle устанавливает- Я не буду описывать весь подготовительный процесс,
ся и на вторичном узле. Делается это для того, чтобы быть о котором вы можете прочесть в фирменной документации.
уверенным, что Oracle работает (!) на обоих узлах в иден- Остановлюсь только на отличительных особенностях для
тичной (!) конфигурации. нашей ситуации. Учитывая, что мы с вами создаем клас-
Затем устанавливаем DRBD и Heartbeat. Конфигуриру- тер, то на разных узлах пользователь oracle и группы, с ко-
ем их. Создаем раздел на основном узле кластера на за- торыми он связан, должны иметь одинаковые идентифи-
пасенном RAID1-массиве. Oracle переносим во временную каторы (uid и gid)
директорию. Настраиваем DRBD и монтируем созданный
раздел к той директории, в которой был установлен Oracle altora1#> groupadd –g 789 oracle
altora1#> useradd –g oracle –u 1234 oracle
(в нашем случае /D01) и переносим Oracle обратно из вре-
менной директории. Проверяем работоспособность пос- и
леднего и работоспособность кластера в целом.
А теперь все то же самое подробнее. altora2#> groupadd –g 789 oracle
altora2#> useradd –g oracle –u 1234 oracle
Использование встроенных средств Oracle для организации репликации в ре- DRBD и Heartbeat (http://www.drbd.org, http://www.linux-ha.org)
Восстановление в реальном
альном времени между несколькими серверами (книга из документации «+» высокая надежность;
(или почти) времени
под названием «Oracle Data Guard Concepts and Administration») низкая стоимость решения
«+» высокая надежность (в идеале, максимально возможная); «–» возможные ошибки при записи данных из-за программного сбоя
гарантия сохранения информации на уровне транзакции; (драйвер диска и т. д.) будут немедленно скопированы на все узлы
практически полная незаметность факта сбоя для пользователя кластера;
«–» высокая стоимость лицензии небольшая задержка при переключении с одного узла кластера
Использование специализированных аппаратных средств (сервер с высоким на другой
показателем доступности)
«+» высокая надежность;
«–» стоимость решения еще дороже, чем стоимость предыдущего варианта
…
connect internal
shutdown
…
38
администрирование
Компилируем DRBD: должны определиться с этим и «сказать» DRBD. Делает-
ся это командой:
#> cd /usr/src/drbd-0.7.17
#> make clean all #> drbdadm -- --do-what-I-say primary all
Устанавливаем:
запущенной на ведущем узле. После чего начинается про-
#> make install цесс синхронизации дисков на обоих узлах кластера и со-
держимое раздела диска основного узла копируется на раз-
Модуль находится в /lib/modules/2.4.32/kernel/drivers/ дел диска ведомого узла. Будьте внимательны и аккуратны,
block/. Подробное описание процесса компиляции и ус- советую проверить перед выполнением вышеприведенной
тановки находится в файле INSTALL из пакета исходни- команды еще раз конфигурационный файл DRBD!
ков DRBD. За процессом синхронизации можно наблюдать на-
Перед настройкой DRBD нужно разбить запасенные брав:
диски на обоих узлах на разделы (раздел может быть
и единственный). При этом те разделы, которые будут ис- #> cat /proc/drbd
пользоваться с DRBD, желательно сделать одного размера.
Для этого используем fdisk или аналог. Например, на обо- Вывод будет примерно следующим:
их узлах разобьем диски на два раздела: основной – 35 Гб, Основной узел:
для использования с DRBD и логический – остальное про-
version: 0.7.17 (api:77/proto:74)
странство диска. SVN Revision: 2093 build by root@altora1, 2006-03-14 18:42:04
Настраиваем DRBD. Настройка производится через 0: cs:Connected st:Primary/Secondary ld:Consistent
ns:636228 nr:2984 dw:639212 dr:337464 al:22 bm:44 lo:0 pe:0 ua:0 ap:0
конфигурационный файл /etc/drbd.conf. Файл должен быть [====>...............] sync’ed: 20% (27200/34000)M
идентичен на обоих узлах кластера. ...
...
Добавим модуль drbd в /etc/modules. 1: cs:Unconfigured
При установке init скрипт для DRBD копируется в /etc/
rc.d/init.d/drbd. Устанавливаем его: Ведомый узел:
Дело в том, что изначально DRBD ничего не знает о том, #> cd /usr/src/heartbeat-2.0.4
#> ./ConfigureMe configure
какой из узлов ведущий, а какой ведомый. И теперь мы
40
bugtraq
Валентин Синицын
Выбор пакетов для Slackware, на ваш взгляд, скудноват, а Gentoo собирается целую вечность?
Попробуйте Arch Linux – удачное сочетание гибкости и скорости развертывания.
42
администрирование
В
этой статье мы поговорим об Arch министрированию производятся тем (Arch User Repository) – по-настояще-
Linux (www.archlinux.org) – срав- путем, который предусмотрел автор му неофициальный репозитарий, под-
нительно молодом, первоприн- той или иной программы. Arch Linux держиваемый пользователями Arch
ципном (то есть не базирующемся ни вообще старается выдерживать «ав- Linux. Содержимое AUR, за редким ис-
на какой из ныне существующих) дис- торскую» линию – на пакеты почти ключением – не готовый бинарный па-
трибутиве Linux. Это не совсем об- не накладываются патчи (кроме три- кет, а его сборочный сценарий, так на-
зор – по ходу изложения будут давать- виальных) и т.п. Как утверждает Ви- зываемый PKGBUILD. Arch Linux стре-
ся советы и рекомендации по практи- нет, основные идеи он позаимство- мится предоставить самые послед-
ческой работе с системой. Поскольку вал у CRUX (www.crux.nu) и Slackware нии версии программ, поэтому вы-
Arch Linux, как и большая часть сов- (www.slackware.com) – так что антураж ход бинарных пакетов обычно проис-
ременных ОС, не явно подразумевает, соответствующий. ходит вскоре после релиза исходных
что пользователю не составляет труда Arch Linux имеет оригинальную ор- текстов (все зависит от конкретного
выкачать из Интернета 100-200 Мб об- ганизационную структуру. Поскольку maintainer): так, пакеты с KDE 3.5.2 по-
новлений, мы специально остановим- он в некотором смысле является дети- явились в Extra спустя четыре дня пос-
ся на специфике его использования щем одного человека, здесь есть чет- ле анонса, а в Testing они были еще за
в условиях нашей страны. Сразу же ко очерченный набор «официальных» восемь дней до него.
скажу, что речь не идет о локализа- пакетов (коих в версии 0.7.1 насчиты- Раз уж мы заговорили о бинарных
ции – в этом смысле Arch Linux не от- вается 357 штук) и, как некогда заме- пакетах и сборке, имеет смысл ска-
личается от любого другого дистрибу- тил Алексей Федорчук: «ни малей- зать пару слов и о пакетном менед-
тива, а данная статья не преследует шей тенденции к увеличению их чис- жере. Для управления двоичными па-
цель дублировать существующую до- ла не просматривается». Официаль- кетами в Arch Linux используется ути-
кументацию. ный Arch Linux скормен и строг: поми- лита с забавным названием pacman.
Основателем Arch Linux является мо базовой системы (arch-base) сюда Сами пакеты имеют неудобный суф-
Джудд Винет (Judd Vinet). Первая вер- входит графическая среда и легкие фикс .pkg.tar.gz. Поддерживаются за-
сия дистрибутива под номером 0.1 уви- оконные менеджеры (FVWM, IceWM, висимости (исключительно жесткие –
дела свет 11 марта 2002 года, а теку- WindowMaker), а также средства раз- это вам не Debian) и имеются средс-
щая версия имеет номер 0.7.1 и дати- работки, сервера и основные графи- тва их автоматического разрешения –
рована 5 января 2006 года. ческие приложения: AbiWord, Gimp, при помощи того же pacman. Если вы
Arch Linux является i686-оптимизи- Mozilla Firefox и Thunderbird. Ни KDE, привыкли собирать программы из ис-
рованным дистрибутивом. Что пони- ни Gnome, ни OpenOffice.org в этом ходных кодов – нет проблем: для этих
мается под этими словами? Это зна- списке нет, но это не значит, что их нет целей предназначена благозвучная
чит, все пакеты собираются с клю- вообще: у «официального» Arch Linux уху автолюбителя система ABS (Arch
чом «-march=i686», то есть использу- существуют «полуофициальные» са- Build System) – аналог портов BSD, поз-
ют набор инструкций Pentium II и вы- телиты, в первую очередь – репози- воляющая быстро и эффективно соб-
ше. Как следствие, этот процессор яв- тарий Extra. Это – весьма объемная рать готовый пакет из авторских исход-
ляется «минимальным системным тре- коллекция пакетов, не поддержива- ных текстов. Можно сказать, что Arch
бованием» к оборудованию. Как зна- емая г-ном Винетом лично. Не сто- Linux – это бинарный дистрибутив, по-
ют пользователи Gentoo, пересбор- ит думать, что Extra – нечто вроде ощряющий сборку из исходных текс-
ка Linux под свою архитектуру позво- linuxpacages.net – это просто репозита- тов: этакий Gentoo со stage3, раздутым
ляет достичь определенного (порой – рий, поддерживаемый другими людь- до размеров дерева Portage.
весьма незначительного) прироста ми, что и придает ему «полуофициаль- Arch Linux использует rc-скрипты
производительности, поэтому можно ный», но отнюдь не «неофициальный» в стиле BSD и охотно перенимает све-
предположить, что на новых компью- статус. Между репозитариями сущес- жие решения. Так, Arch Linux 0.7.1 был
терах Arch Linux будет работать быс- твует тесное взаимодействие, и мно- одним из первых (но не первым) дис-
трее, чем, например, Slackware (оп- гие рассматривают Extra как неотъем- трибутивом, отказавшимся от Hotplug
тимизация i486) или SUSE/Mandriva лемую часть Arch Linux. в пользу Udev, что весьма ускорило
(i586). На самом деле на скорость Перечень репозиатриев Arch Linux загрузку. В него входит собственная
работы влияет множество парамет- не исчерпывается Extra и Current система распознавания оборудования
ров, и оптимизация здесь – далеко (это тот самый «официальный» Arch (HWD) и поддержка сетевых профилей
не главное. Существуют также порты Linux, из которого в определенные мо- на уровне стартовых сценариев.
Arch Linux на x86-64 и i586, однако мне менты времени делают ISO-образы). Все это хорошо, спросит внима-
не приходилось работать с ними поэ- Упоминания заслуживает Testing, в ко- тельный читатель, но где же взять
тому в дальнейшем мы будем говорить тором появляются новые, еще не «об- Arch Linux? Канонический ответ сво-
только об основной ветви. катанные» версии программ (так, на- дится к следующему: скачать с сай-
Arch Linux – дистрибутив для опыт- пример, в состав Arch Linux 0.7.1 входит та проекта ISO-образ arch-0.7.1.iso
ного пользователя. Вы не найдете X11R6.8.2, но на момент выхода дист- или arch-0.7.1-base.iso (только базо-
в нем графических мастеров-конфи- рибутива в свет X.Org 7.0 уже был до- вая система), а затем догрузить все
гураторов вроде YaST или Mandriva ступен в Testing, а в Current он появил- необходимые пакеты (KDE/Gnome,
Control Center: все операции по ад- ся лишь в середине февраля) и AUR OpenOffice.org и т. д.) из Extra. К сожа-
Первая загрузка
После перезагрузки системы (которая, кстати, произойдет
весьма быстро) вашему взору будет представлена чистая
текстовая консоль. Впрочем, если вы все же не послуша-
лись старших товарищей и попросили инсталлятор раз-
вернуть что-то помимо базовой системы, у вас вполне мо-
Рисунок 1. Рабочий стол Arch Linux – ничего необычного.
Все самое интересное – за кулисами жет оказаться и X с простеньким оконным менеджером,
но речь сейчас не о том. Независимо от того, ограничи-
лись ли вы пресловутым arch-base или же выбрали все па-
кеты без разбора, наверняка вы захотите установить до-
полнител ные программы из репозитария Extra. Допустим
также, что у вас, как и у подавляющего большинства насе-
ления России, нет быстрого (и дешевого) канала в Интер-
нет, поэтому вы где-то раздобыли текущий срез Arch Linux.
Что дальше? Устанавливать пакеты, разрешая зависимос-
ти вручную или не учитывая их вообще, – не выход. Нуж-
но прописать путь к вашему локальному репозитарию Arch
Linux (который, кстати, может располагаться в локальной
же сети – подумайте об этом, если планируете установить
Arch Linux на три и более компьютеров).
К сожалению (или к счастью), специального источника
Рисунок 2. Сине-бело-черная гамма – визитная карточка
Arch Linux. Сайт проекта выдержан в том же стиле «cdrom», как в apt, в pacman не предусмотрено – програм-
ме совершенно не важно, где находится зеркало, заданное
лению, для большинства российских пользователей это не- тем или иным URL (и это правильно, иначе URL не был бы
приемлемо, но выход все же есть. Начиная с января этого Универсальным локатором ресурсов). Таким образом, что-
года ежеквартальные срезы репозитариев Arch Linux мож- бы научить pacman обновляться с CD/DVD-ROM, достаточно
но заказать по почте (http://www.linuxcenter.ru/?good=1332). прописать путь к локальному репозитарию, используя про-
Будем считать, что вам удалось раздобыть Arch Linux тем токол file://. Зеркала просматриваются в порядке их объяв-
или иным способом. Что дальше? Конечно же, установка! ления в соответствующих секциях файла /etc/pacman.conf,
Весь процесс подробно описан на самом диске, в файле поэтому, добавив нужную строчку в самое начало, вы на-
archdoc.txt (потрудившись, его можно найти и на ftp.archlinux. всегда отучите pacman «лазать по Интернету». Впрочем, со-
org). Мы же сосредоточимся на некоторых тонкостях, зна- ветую вам приберечь «жесткие меры» на крайний случай:
ние которых позволит сделать развертывание системы до- вполне может статься, что вы захотите обновить какую-ни-
статочно быстрым и безболезненным. будь небольшую программу именно из репозитария current,
а не с локального диска. Исходя из этого, секция current
Установка файла /etc/pacman.conf может иметь следующий вид:
Инсталлятор Arch Linux выдержан в духе Slackware: те же
сценарии на языке оболочки плюс утилита dialog. Созда- [current]
# Список «настоящих» интернет-серверов
тели дистрибутива настоятельно рекомендуют установить Include=/etc/pacman.d/current
только базовую систему, а оставшиеся пакеты добрать Server= Ошибка! Недопустимый объект гиперссылки.
вручную после перезагрузки системы и, как выясняется, не
зря. Просматривая плоский список из 350 с лишним паке- В результате при отсутствии подключения на консоль
тов, не мудрено и утомиться, а выбор двух несовместимых будет выдаваться множество сообщений о невозможнос-
вариантов (например, hotplug и udev – см. выше) приведет ти соединиться с ftp.foo.bar, а затем pacman установит нуж-
к тому, что программа откажется продолжать свою работу ный пакет с DVD-ROM.
и предложит начать все сначала. Зависимости тоже раз- С репозитариями Extra и Testing можно поступить так-
решаются автоматически – никакой возможности поучас- же, а можно – еще проще – просто добавить:
твовать в этом процессе вам не предоставляется, а пото-
Server=file://<путь к локальному репозитарию>
му случайный выбор, скажем Mozilla Firefox приведет к то-
44
администрирование
makepkg
makepkg -i
Рисунок 3. Не нашли нужную программу в основном дистрибутиве. Пришло время Если вы собрали что-то уникаль-
обратиться к помощи сообщества – ArchLinux User-community Repository
ное и считаете, что ваш PKGBUILD мо-
в начало соответствующей секции. «разумном» формате (.tar.gz, .tar.bz2, жет быть полезен другим пользовате-
Для пущей уверенности можно заком- zip) и PKGBUILD.proto, если речь идет лям Arch Linux, подумайте о его публи-
ментировать все остальные сервера. о новом пакете, после чего PKGBUILD. кации в AUR.
Альтернативный подход к разверты- proto переименовывается в PKGBUILD Все! Подготовительные этапы
ванию локального репозитария изло- и правится в соответствии с вашими пройдены, и теперь вы можете осна-
жен в файле archdoc.txt. требованиями. В сложных случаях мо- щать свою систему всеми необходи-
Первую половину пакетного ме- жет потребоваться использовать сце- мыми приложениями.
неджмента мы, таким образом, на- нарий install, который легко создать Используйте автоматическое раз-
строили. Осталось вторая – ABS. на базе install.proto. Написание сце- решение зависимостей (pacman -S) –
К счастью, она требует гораздо мень- нариев PKGBUILD находится за рам- это сделает вашу жизнь проще, а бло-
шего внимания. В первом приближе- ками данной статьи. ки «конструктора», с которым прихо-
нии (особенно если вы не собираетесь О том, как писать сценарии дится работать, крупнее.
пересобирать пакеты вручную) можно PKGBUILD, можно узнать из докумен-
вообще забыть о ее существовании. тации, поэтому ограничимся лишь об- Заключение
Но я бы рекомендовал все же синхро- щими замечаниями: Теперь вы представляете себе, что та-
низировать дерево ABS, так сказать, В первую очередь необходимо ис- кое Arch Linux. Устанавливать ли эту
на будущее. Эта задача выполняет- править значение переменных систему на свой компьютер – решать
ся командой abs, которая в свою оче- pkgname (имя пакета) и pkgver (вер- только вам. Думается, что Arch Linux
редь использует cvsup, поэтому бо- сия). Эти переменные используют- хорошо подойдет «продвинутым поль-
лее-менее заметный трафик (поряд- ся для заполнения массива source, зователям» Linux, которые произво-
ка 10-20 Мб без учета сжатия) будет содержащего имена архивов с ис- дят большую часть настроек из кон-
сгенерирован только в первый раз. ходными текстами. Если формат фигурационных файлов и не слиш-
Вы же получите в свое распоряжение нужного вам архива отличается ком связаны временными рамками,
полностью готовый к использованию от .tar.gz, нужно внести соответс- то есть могут позволить себе «дово-
каталог /var/abs, а также два файла: твующие изменения. дить» систему в свободное от рабо-
PKGBUILD.proto и install.proto, которые Естественно, необходимо описать ты время.
можно использовать для компиляции саму процедуру сборки – подпро- Если же, напротив, речь идет о
своих собственных пакетов. грамму build(). В большинстве слу- предприятии, где на первый план вы-
Эта операция (как, впрочем, и чаев требуется лишь изменить па- ходит скорость развертывания, про-
пересборка уже имеющихся в сис- раметры configure. стота управления, «дуракоупорность»
теме пакетов) происходит следую- Необходимо сгенерировать md5- и уж тем более сертификация сто-
щим образом. Вы переходите в под- суммы для каждого архива – мас- ронних производителей, Arch Linux –
каталог /var/abs, отвечающий нужно- сив md5sums. К счастью, эта зада- не самый лучший выбор. В общем, ес-
му вам приложению. Если речь идет ча автоматизирована и выполняет- ли вы ищете простой настольный/сер-
о компиляции нового пакета «с ну- ся стандартной командой: верный дистрибутив с большим ко-
ля», каталог для него следует создать личеством свежих пакетов, не отяго-
в /var/abs/local. Затем в этом ката- makepkg -g >>PKGBUILD щенный средствами автоматической
логе последовательно размещают- настройки и связанным с ними «жир-
ся: добытый где-либо архив с исход- При этом подразумевается, что вы ком», возможно, Arch Linux – это то,
ными текстами программы в любом находитесь все в том же подкатало- что вам нужно.
46
администрирование
Прихоти судьбы
Биография IT-просветителя
Ч
то такое судьба? Нечто навеч- ществования порой похожи на кадры ги. Фантастика да и только, особенно
но впечатанное в таинственные из детектива с захватывающим сю- для ребят, к технике охочих. Юные ма-
скрижали и определяющее каж- жетом. тематики не дыша смотрят на машину,
дый наш шаг? Или туманное будущее, Первый раз компьютер, тогда это на преподавателя, который этим чудом
неизвестное никому? Хочется верить, называлось «электронно-вычисли- управляет. Учитель, между прочим, не
что ты сам себе хозяин, только от те- тельная машина», Алеша Сальников представитель точных наук, а отстав-
бя зависит выбор профессии, семьи увидел в подростковом возрасте, ког- ной полковник. Это его собственная
и прописки… да учился в физико-математической ЭВМ, списанная из какого-то штаба.
школе-интернате №18 при МГУ им. Ло- Прибавьте к обрисованному такую де-
Как в кино моносова. Представьте себе картину: таль: подростки все поголовно в белых
Знаки судьбы Алексей Михайлович 15-летние мальчишки входят в комна- рубашках, при галстуках, да не на ре-
Сальников встречает регулярно. И по- ту, где шумят какие-то механизмы, ми- зиночках, а настоящих, умело завя-
жаловаться на скучную жизнь никак гают лампочки, как на космическом ко- занных. У преподавателя НВП был же-
не может. Наоборот, перипетии его су- рабле, телетайп выводит рулоны бума- лезный принцип. Он считал, что муж-
48
человек номера
чина должен быть всегда хорошо вы- грузилась какая-то страничка. Однако с супругой Еленой решили открыть
брит и прилично одет. Сам он ходил на представить, как это выглядит на нор- собственное дело. Родилась совер-
занятия в безукоризненно отутюжен- мальной скорости, было несложно… шенно неожиданно, как побочный про-
ном костюме, сверкающей белизной Я всегда в нашей фирме занимался дукт другой авантюрной идеи.
рубашке и галстуке. На занятиях по вопросами продвижения наших курсов. Сначала семейство рассуждало
начальной военной подготовке учени- Это была моя главная обязанность. так: что могут делать и продавать про-
ки школы-интерната не просто любо- Когда я увидел, как работает Интер- граммисты? Естественно, программы.
вались ЭВМ, но и учились ею пользо- нет, сразу сказал: «Это место для рек- Какие? Для банков, которые первые
ваться: делали лабораторные работы, ламы». А в 1997 году мне совершен- в стране разбогатели и первыми захо-
писали программки. но случайно попалась книга англий- тели автоматизироваться. Это же золо-
Следующий кадр. Наш герой уже ского автора об интернет-маркетин- тая жила – полторы тысячи банков, ко-
учится в университете, успел прой- ге. И в нашем офисе как раз появил- торым нужна специальная компьютер-
ти армию и даже поучительствовать ся плохонький, медленный, но все же ная программа под названием «Опер-
в глухом селе на Смоленщине. На 4-м выделенный канал. Бизнес есть биз- день». Стали собирать информацию –
курсе практику Алексей Сальников нес. Я прочитал книжку, мне стало ин- как функционирует банк, какой долж-
проходил на ЗИЛе, в суперсовремен- тересно. Следующий шаг – я объявляю на быть программа. Читали специаль-
ном вычислительном центре, создан- курсы интернет-маркетинга. 60 взрос- ную литературу, свели дружбу с бан-
ном автозаводом и Академией на- лых умных людей приезжают слушать киром, который согласился предоста-
ук. «Там было красиво, – вспомина- мои лекции. Каждый платит 300 дол- вить свой маленький банк в качестве
ет он мечтательно. – В стране таких ларов за то, чтобы меня три дня слу- полигона для отработки этой програм-
вычислительных центров практичес- шать. Несколько лет я такой курс чи- мы, дать деньги на ее разработку. Увы,
ки не было, разве что в закрытых уч- тал. Мне было интересно изучать эту однажды банкир испарился. И совето-
реждениях, в «ящиках». Сотрудники тему. В конце 90-х годов я был главным ваться стало не с кем.
центра с нами говорили уважитель- специалистом в России по интернет- Что делать? Ходить на поклон
но. Видно было, что это правильные маркетингу. Потом я стал проводить в другие банки? Нет, сказал себе Саль-
люди, с ними было приятно общаться. конференции по интернет-маркетингу. ников, надо… сделать так, чтобы бан-
И возникало желание там трудиться. Толпы народа собирались. Хотя на пер- киры сами пришли к нам. Все гениаль-
Я два года параллельно с обучением вых конференциях было очень немного ное – просто. «Взяли листок бумаги, на-
работал в центре. А после, как закон- людей, способных сказать что-то внят- писали: семинар «Автоматизация бан-
чил мехмат МГУ, туда же и распреде- ное на эту тему». ковской деятельности», 7-11 сентября
лился. В конце 80-х там были сдела- Тогда же организаторы Учебно- 1992 года. Место проведения: Москва,
ны знаменитые компьютеры семейс- го центра решили, что хорошо бы Университет. Семинар платный. Ука-
тва БЕСТА. Был огромный коллектив. на практике воплотить теоретические зали номер телефона в комнатке, ко-
Часть людей занимались «железками», положения, о которых говорилось на их торую арендовали в университете. Ку-
часть – программами. Если бы эту ли- курсах, и создали ЦИТ Форум. Прос- пили базу данных с адресами банков,
нию продолжать дальше, все было бы то для того, чтобы рекламировать свои тогда она продавалась в редакции га-
хорошо. Но линия, к сожалению, не по- курсы. Как резюмирует сегодня Алек- зеты «Коммерсантъ». Написали про-
лучила развития». сей: «ЦИТ Форум возник из небаналь- грамму семинара, напечатали, разло-
Новый скачок во времени. Середи- ного подхода к рекламе своей продук- жили в конверты и отправили. Когда
на 90-х. Алексей Сальников – руково- ции. Потом продукция исчезла, а инс- письма дошли, наш телефон просто
дитель первого в России коммерческо- трумент остался». Сегодня портал разорвался. Звонили со всей страны
го учебного центра, чрезвычайно попу- CITForum.ru – не имеющая аналогов из банков, спрашивали, как записать-
лярного среди людей, внедряющих ин- техническая библиотека бесплатных ся, куда деньги переводить за участие.
формационные технологии в финансо- ресурсов по информационным техно- Почему получился такой эффект, по-
вую, промышленную и телекоммуника- логиям на русском языке. нятно. Банкам надо было автоматизи-
ционную сферы. На учебный центр ра- Но начало, начало – в этих трех роваться, но никто не знал, как это де-
ботают специалисты высокого уровня. кадрах истории жизни одного челове- лать. Мы были первые, кто предложил
Среди них знаток Интернета, сотруд- ка. Алексей Сальников может со мной поучаствовать в семинаре на эту тему.
ник Курчатовского института. Как-то не согласиться, но я уверена, что эти Ну вот записали мы желающих учас-
он пригласил Алексея и его соратни- три эпизода – знаковые, и если бы я твовать, теперь надо семинар прово-
ков посмотреть, что такое Сеть. Стоп- снимала фильм об Алексее Михай- дить. О чем говорить? Стали звонить
кадр весьма выразительный, почти ис- ловиче, они были бы центральными в IBM, Hewlett-Packard, другие круп-
торический: «Мы приехали, а как раз в картине. ные компании, отправляли им по фак-
случилось несчастье. Тогда Интернет су список банков и говорили: «Эти гос-
в Россию попадал через Финляндию. Огонь, вода пода желают вас выслушать». Они со-
И, как на грех, где-то под Питером эк- и медные трубы гласились выступить».
скаваторщик повредил провод. Поэто- Алексей сам себя называет генера- Алексей Сальников смеется, ког-
му все очень медленно происходило. тором идей. Самая гениальная из них да вспоминает первый семинар. За-
Мы смотрели на экран, где не спеша родилась в 1992 году, когда Алексей явок тогда набралась добрая сотня.
Пригласили только 16 банков, которые чая группа из их представителей, вы- Потом приезжали «студенты» и полу-
оказались в списке первыми, но в ау- рабатывающая стандарты обмена ин- чали на руки две книги. Одна – крат-
диторию, арендованную в Московском формацией, заседала в ЦИТе. А само- кое изложение лекций, другая – сбор-
университете, набилось человек трид- го Алексея Михайловича приглашали ник слайдов, которые преподаватели
цать, только успевали стулья подно- занять пост в Ассоциации производи- показывали в ходе учебы. Слушатели
сить. Финансисты были непреклонны: телей банковского софта… ничего не записывали в тетради, учи-
мы приехали и мы будем участвовать Второе направление – учебные теля ничего не писали на доске. На это
в семинаре, возьмите деньги и дай- курсы по информационным техноло- не было времени. Предельная автома-
те нам возможность послушать! Се- гиям (citmgu.ru), которые читаются тизация организации учебы, опера-
минар длился целую неделю. Банки- и по сей день, но, естественно, в эпо- тивность подачи информации принес-
ры остались им довольны. А органи- ху обилия информации об IT и Интер- ли ЦИТу оглушительный успех. Неко-
заторы Центра информационных тех- нете, уже далеко не столь популярны. торые сотрудники отделов автомати-
нологий… проснулись знаменитыми, А в 1993-1994 годах, вплоть до 1998-го, зации банков и крупных предприятий
как пишут в биографиях знаменитых на курсы в Москву ехали так же мас- приезжали просто купить книги. Це-
актеров. Их офис на военной кафед- сово… как раньше в московские мага- нообразование было простое: доллар
ре факультета ВМК МГУ на ближай- зины за колбасой, простите за такое за страницу… И покупали с большим
шую пятилетку стал самым популяр- приземленное сравнение. Потому что удовольствием.
ным местом для банкиров, разработчи- здесь можно было услышать людей, В эйфории успеха Алексей Сальни-
ков банковского софта, а позже – пред- которые знали все про IT, потому что ков и его коллеги не заметили, как по-
ставителей крупных промышленных только здесь можно было купить книги ток слушателей резко уменьшился,
предприятий, которые интересовались о сетях, операционных системах, базах опомнились только когда он совсем
информационными технологиями и их данных и прочем. Дело было организо- сошел на нет. Наступили другие вре-
применением в прикладных областях. вано умно и оперативно. Были собраны мена. Однако судьба, благосклонная
Идея писать банковские программы лучшие специалисты, которые в рекор- к Алексею, приготовила ему «задел»
тихо умерла. Зачем, если можно за- дно короткие сроки писали методички для создания нового дела. Тот самый
рабатывать на семинарах? по своим предметам. Например, трех- сайт в Интернете, который когда-то вы-
Семинары и конференции – это пер- сотстраничная книжка создавалась за весили для рекламы курсов. IT-портал
вое направление работы Центра ин- три месяца! Сдавали свои учебники стал новым делом Алексея. И тоже, ес-
формационных технологий. С 1992 спецы по частям. Так что когда из-под тественно, уникальным, ведь делать
года они проводились регулярно, те- пера автора выходили последние стро- что-то как все – неинтересно!
мы выбирались самые горячие, до- ки, первые главы уже были не только
кладчики приглашались самые ак- отпечатаны, прочитаны корректора- Новый Макаренко
туальные. Более того, в какой-то мо- ми, оформлены, проиллюстрированы Сегодня Алексей Сальников знает
мент офис ЦИТа стал штабом обще- нужными схемами, картинками и таб- о своей новой сфере деятельности
ния для конкурирующих фирм, кото- личками, но даже размножены в соот- все. Как работать с рекламодателями,
рые автоматизировали банки. Рабо- ветствии с количеством слушателей. как строить работу портала. Хотя при-
50
человек номера
знается, что никогда не думал зани- питателем, то есть наблюдать за ре- мент увенчался успехом. Благодарный
маться изданием СМИ и получать до- бятами с первого по восьмой класс, мальчишка потом своего учителя да-
ходы от рекламы! А мне такой поворот которые приезжали в этот интернат же на тракторе катал. Потом Алексей
судьбы в жизни нашего героя совсем из мелких окрестных сел на неделю. восстановился в университете, закон-
не кажется неожиданным. Ведь глав- У Сальникова самые приятные воспо- чил его, далекая смоленская деревня
ная задача IT-портала ЦИТ Форум – да- минания о том периоде жизни: «На- ушла в прошлое…
вать людям знания. Библиотекой пор- до было прийти после уроков в шко- Но с тех пор, как мне кажется, ни-
тала ежедневно пользуются тысячи лу, забрать детей, сводить на обед, чем другим Алексей Сальников в жиз-
IT-специалистов и менеджеров, пре- потом поиграть с ними, потом они са- ни не занимается. Учит и учит негра-
подавателей и студентов вузов. Поч- дились делать уроки, я их консульти- мотных «мальчишек» тому, без чего
ти везде информационные техноло- ровал. Времени свободного у меня сегодня не обойтись, как раньше не-
гии преподают с помощью ЦИТ-Фору- был вагон. Развлечений не было ни- льзя было обойтись без элементар-
ма. Преподаватели готовятся к лек- каких. Была библиотека. Я брал там ной грамоты.
циям по скачанным материалам, да- книги, например, сочинения Макарен- Сам Алексей рассуждает скеп-
ют студентам не домашние задания, ко, шел домой – а я арендовал в этой тически: «Я знаю людей, моих одно-
а ссылки на ресурсы ЦИТ Форума. Так деревне избу с огромной русской печ- классников, которые добились гораздо
что ничего не изменилось кардиналь- кой в пол-комнаты – ложился на печ- большего, возглавляют крупнейшие IT-
но в деятельности Алексея Сальнико- ку и читал. Детишки были счастливы, компании. По масштабам бизнеса они
ва. Он по-прежнему учит народ. ведь до этого их воспитывали скуч- заведуют крейсерами. А у меня – ло-
А ведь будучи студентом, Алексей ные пожилые бабушки. А я с ними иг- дочка…» Но именно эта лодочка выво-
мог легко угадать, что судьба ему при- рал в футбол…». дит корабли в бурное море IT-техноло-
готовила именно эту миссию – просве- Но даже не в этом был знак судьбы- гий. Без нее, возможно, ни один крей-
тителя. Звучит патетически, но истина благодетельницы, а в том, что, будучи сер не сдвинулся бы с места. Ну, или
всегда немного банальна. Исключен- воспитателем, Алексей научил читать сделал бы это значительно позже.
ный из университета на третьем кур- одного деревенского мальчика. Па- Неплохую альтернативу предло-
се, недоучившийся математик подался рень учился в пятом классе и для крес- жила Алексею Сальникову судьба –
в учителя. Приехал в Смоленскую об- тьянской жизни имел все необходи- быть на 100% востребованным. Ни он,
ласть, явился в облоно, оттуда его от- мые навыки – классно водил трактор ни кто другой не знает, каким конкрет-
правили в дальнюю школу, где не было и профессионально курил «Беломор». ным делом будет заниматься сегод-
учителя математики. Доехал до шко- А вот читать в начальной школе ребен- няшний директор ЦИТ Форума через
лы и… попал в тупик: учителя иска- ка не научили – просто с учительни- полгода. Но я убеждена, что работать
ли летом, а он приехал в январе. Ко- цей они не встречались никогда, доку- он будет вновь под грифом «Впервые
нечно, вакансию давно уже худо-бед- мент выдали, чтобы не портить цифры в России» и обязательно – просвещать.
но закрыли… Ехать назад не хотелось, успеваемости по району. Занимались Попутного ветра в парусах!
и Алексей согласился на предложения Алексей Михайлович и неграмотный
директора школы-интерната стать вос- пятиклассник после отбоя. Экспери- Оксана Родионова
Настраиваем эффективную
систему сетевой защиты Zorp
Сергей Яремчук
ModSecurity – Open Source firewall седьмого уровня – позволяет защититься от угроз, типичных
для веб-сервера. Но в обычной сети можно встретить и другие сервисы, также нуждающиеся
в защите.
52
безопасность
Ф
ильтры пакетов вроде ipchains
во время работы использу-
ют самые простые критерии,
и д ля фильтрации основываются
на информации, содержащейся в за-
головках IP-пакетов: IP-адреса источ-
ника и назначения, протокол и номера
портов источника и назначения, взя-
тые с TCP/UDP-протоколов следую-
щего уровня.
По сегодняшним меркам такой
подход может обеспечить только са-
мую минимальную защиту. Система
Рисунок 1. Принцип работы Zorp
защиты, использующая этот принцип,
не владеет более подробной инфор- прос большой длины или попробо- ты не будут дублироваться, что повы-
мацией о соединении. И приняв пакет, вать реализовать сross-site scripting сит надежность за счет суммарного
не может определить – устанавлива- атаку. Без посредника здесь точно уменьшения их количества, а с дру-
ется новое соединение либо пришед- не обойтись. гой стороны, приведет к меньшим за-
ший пакет является частью уже уста- держкам, так как весь анализ будет
новленного соединения, а может, это Подход Zorp произведен только один раз и в од-
вообще случайный или враждебный Создатель Syslog-NG венгр Балазс ном месте.
пакет. Так работал ipchains, исполь- Шайдлер (Balazs Scheidler) разра- Взаимодействие сервера и клиента
зуемый совместно с Linux-ядром се- ботал еще одно полезное приложе- в случае использования Zorp показа-
рии 2.2. ние – Zorp. На заглавной странице но на рис. 1. Клиент, желая установить
В Netfilter/iptables ядра 2.4/2.6 эта сайта проекта [2] он дословно име- соединение, посылает TCP SYN-пакет,
проблема решается за счет контро- нуется как Modular Application Level который поступает на маршрутизатор
ля состояния (stateful) флагов и по- Gateway (хотя в некоторых документах с установленным iptables (ipchais), ис-
рядковых номеров ТСР. Такой фильтр его название несколько другое – new пользующим Zorp. Полученный пакет
работает аналогично предыдущему generation proxy firewall). проверяется на соответствие правил
и дополнительно просматривает фла- Но как бы ни звучало его название, iptables. Если он должен быть обрабо-
ги TCP и UDP-пакетов, а поэтому мо- назначение остается неизменным – тан Zorp, то в записи следует указать
жет определить, является ли этот па- защита приложений от направленных цель TPROXY (iptables) или REDIRECT
кет попыткой установления нового со- атак. Принцип действия похож на рас- (ipchains). В качестве одного из пара-
единения. Если да, то в таблице состо- сматриваемый ранее ModSecurity [1]. метров указывается порт, где Zorp бу-
яний делается новая запись и действие Zorp представляет собой прозрачный дет ждать подключения. Zorp получа-
разрешается, если нет, то проверяет- (transparent) прокси, который высту- ет пакет, проверяет его на соответс-
ся принадлежность существующим со- пает посредником при работе клиента твие со своими правилами и запуска-
единениям и при положительном ре- и сервера. В этом случае для клиента, ет соответствующий прокси, который
зультате пакет пропускается. Кроме который хочет установить новое соеди- инициализирует соединение с серве-
явного отсеивания приходящего мусо- нение, Zorp выступает как сервер, а ре- ром и дальше действует уже от име-
ра, такие фильтры упрощают написа- альный сервер видит Zorp как клиен- ни клиента, а в процессе работы про-
ние правил фильтрации. Например, ес- та. Находясь посередине, такой прок- веряет проходящий поток данных. Ес-
ли ранее требовалось явно разрешить си знает особенности своего протоко- тественно, и остальные цепочки так-
в правиле оба направления, т.е. от кли- ла и на основании имеющейся инфор- же должны пропускать обработанные
ента к серверу и от сервера к клиен- мации и настроек может принять реше- Zorp пакеты.
ту, то теперь достаточно просто раз- ние о необходимости продолжения те- Теперь аномалии более низкого
решить соединение с сервером, за- кущего соединения. уровня будут отсеиваться сразу. Та-
бота же о доставке информации кли- Но в отличие от ModSecurity, ко- кой принцип работы позволяет делать
енту полностью ляжет на плечи филь- торый является отдельным приложе- то, что недоступно многим IDS, а имен-
тра пакетов. нием и в идеальных условиях требу- но проверять защищенные HTTPS,
Кроме того, при использовании ет установки на отдельный компью- POP3S, IMAPS или SSH-соединения.
stateful-фильтров можно смело запре- тер, Zorp фактически представляет То есть когда пользователь подключа-
щать все соединения на номера пор- собой расширение к Netfilter/iptables. ется к веб-серверу, последний отсыла-
тов выше 1024. Но опять же при всех Таким образом, вся обработка проис- ет ему сертификат, прокси может пе-
положительных качествах контроль ходит на одном-единственном ком- рехватить этот сертификат и отправить
состояний не сможет защитить сервер пьютере, который находится на входе пользователю свой. Теперь, находясь
от атак, направленных на конкретное сети, что освобождает её от пакетов, посередине, можно беспрепятствен-
приложение. Например, никто не по- которые все равно будут отброшены. но контролировать любой трафик. Та-
мешает злоумышленнику послать за- Кроме того, функции устройств защи- ким же образом можно автоматически
54
безопасность
нут проблемы, то следует добавить отладочной инфор-
мации. Заглянув в net/ipv4/netfilter/iptable_tproxy.c, найде-
те строку:
#ifdef CONFIG_NETFILTER_DEBUG
#define DEBUGP printk
#if 1
56
безопасность
matcher=RegexpFileMatcher('/etc/zorp/http.black', ↵ # iptables -t tproxy -P OUTPUT ACCEPT
'/etc/zorp/http.white')
def config(self):
HttpProxyURIFilter.config(self) Создаем цепочки для каждого интерфейса:
self.transparent_mode = 1
def regexp():
Service("local_internet_http", IDHttp) # iptables -t tproxy -N PRlocal
Listener(SockAddrInet("192.168.0.1", 50090), ↵ # iptables -t tproxy -N PRdmz
" local_internet_http ") # iptables -t tproxy -N PRinternet
Крис Касперски
Первое, что делает исследователь, взяв в руки программу: смотрит, упакована она
или нет, и тут же бежит искать подходящий распаковщик, ведь большинство программ
все-таки упакованы, а готовые распаковщики есть не для всех. Предлагаем вам алгоритм
универсального распаковщика, «снимающего» даже сложные полиморфные протекторы.
К
ак хитро я вас обманул! Ни о ралов», а двигатели вообще. Почувс- перерасходу памяти и тормозит всю
генах, ни о хромосомах речь твуйте разницу! систему. Подробности – в статье «па-
здесь не идет. Искусственный Так о чем же мы будем говорить? ковать или не паковать», электронную
интеллект отдыхает на задворках ис- Все больше и больше программ рас- копию которой можно бесплатно ска-
тории. Genetic – в переводе с гречес- пространяется в упакованном виде, чать с ftp://nezumi.org.ru).
кого «общий». Генетический распа- и совсем не потому, что так они зани- Усложнить взлом, затруднить ана-
ковщик – универсальный распаков- мают меньше места или загружают- лиз – вот для чего на самом деле ис-
щик, общий для всех упаковщиков/ ся быстрее, как это обещают разра- пользуются упаковщики, в конеч-
протекторов. Кстати говоря, «General ботчики упаковщиков (на самом деле ном счете превратившиеся в про-
Motors» – это не «двигатели для гене- упаковка приводит к значительному текторы.
58
безопасность
Одно и то же оружие используется как против хакеров,
так и против легальных исследователей. Вирусы, черви, тро-
янские кони практически всегда обрабатываются самыми
последними версиями полиморфных протекторов, для ко-
Рисунок 1. Структура нормальной, неупакованной программы
торых распаковщики еще не написаны, и прежде чем анти-
вирус научится распознавать заразу, программистам при-
ходится проделать колоссальный объем работы. Существу-
ют и другие мотивы, побуждающие распаковать програм-
му: многие протекторы отказываются работать в присутс-
твии пассивных отладчиков, не дружат с виртуальными ма- Рисунок 2. Структура упакованной программы
шинами и эмуляторами…
Но не будем философствовать на моральные темы, луч-
ше поговорим о деле. А говорить мы будем преимуществен-
но о PE-файлах NT-подобных системах (включая 64-битные
редакции оных), в UNIX-мире упаковщиков намного мень-
ше, но все-таки они есть (взять хотя бы Shiva ELF-protector).
Если не углубляться в «политические» тонкости разногла-
сий между UNIX и Windows, алгоритм распаковки – тот же
самый, поэтому не будем на нем останавливаться, а пос-
корее ринемся в бой!
Рисунок 3. Раскладка секций неупакованного файла
Предварительный анализ
Прежде чем приступать к распаковке, не помешает убедить-
ся: а упакована ли программа вообще? Графическая вер-
сия IDA Pro поддерживает специальную панель «overview
navigator», позволяющую визуализировать структуру ди-
зассемблерного кода. В нормальных программах машин-
ный код занимает значительную часть от общего объема,
остальная часть приходится на данные (см. рис. 1).
В упакованных программах кода практически нет, и все
пространство занято данными (см. рис. 2), объединенны-
ми в один (или несколько) огромных массивов, которые IDA Рисунок 4. Раскладка секций упакованного файла
Pro не смогла дизассемблировать.
Впрочем, визуализация – довольно расплывчатый кри-
терий. Существует сотни причин, по которым IDA Pro от-
вергает неупакованный код или, напротив, рьяно бросает-
ся дизассемблировать упакованную секцию, получая ку-
чу бессмысленных инструкций, пример которых приведен
в листинге 1:
60
безопасность
цикл! Рассмотрим его повнимательнее (будьте уверены, тут
есть чему поучиться):
62
безопасность
структурных исключений («BPM FS:0»). Но это не очень хо-
рошие способы и ниже будет показано почему.
Начнем с функции GetModuleHandleA, которая присутс-
твует практически в каждом стартовом коде (исключая неко-
торые ассемблерные программы). Нажимаем <Ctrl+D> для
вызова soft-ice, даем команду «BPM GetModuleHandleA X»
(можно также дать «BPX GetModuleHandleA», но в этом слу-
чае soft-ice внедрит в начало GetModuleHandleA програм-
мную точку останова CCh, легко обнаруживаемую многи-
ми защитными механизмами) и запускаем наш подопытный
«Блокнот», предварительно зажевав его любым не слишком
навороченным упаковщиком, например, ASPack или UPX.
Поскольку установка точки останова носит глобальный ха-
рактер, все программы, обращающиеся к GetModuleHandleA,
будут вызывать всплытие отладчика. Внимательно смотри-
те на имя программы, отображаемое отладчиком в правом
нижнем углу (см. рис. 9), – если это не наша программа,
жмем «x» или <Ctrl+D> для выхода из отладчика.
После серии ложных срабатываний в углу наконец-то Рисунок 9. Функция 1010295h:CALL [EBP+F4Dh] это на самом деле
появляется наш заветный NOTEPAD. Самое время сказать GetModuleHandleA, вызываемая таким заковыристым образом
отладчику «P RET», чтобы выбраться из функции в непос-
редственно вызывающий ее код, однако… этим вызываю-
щим кодом оказываются отнюдь не окрестности исходной
точки входа, а код самого распаковщика! И до OEP нам еще
трассировать и трассировать. Определить нашу дислока-
цию поможет карта памяти. Даем команду «MAP32» и смот-
рим, что скажет отладчик (см. рис. 9).
Файл notepad.exe состоит из нескольких секций: .text
(сжатый код исходной программы), .data (сжатые данные
исходной программы), .rsrc (сжатые ресурсы исходной про-
граммы), .aspack (код распаковщика) и .adata (данные рас-
паковщика). Секция кода исходной программы заканчива-
ется на адресе 100800h и все, что лежит ниже, ей уже не при-
надлежит. В нашем случае функция GetModuleHandleA,
вызывается кодом, расположенным по адресу 1010295h,
который, как нетрудно установить, принадлежит секции
.aspacack – то есть непосредственно самому распаковщику
и к OEP никакого отношения не имеет (помимо распаков-
щика, функцию GetModuleHandleA могут вызывать и дина-
мические библиотеки, подключаемые статической компо- Рисунок 10. Подлинный вызов GetModuleHandleA
новкой, то есть через секцию импорта). из окрестностей OEP
Выходим из отладчика, нажимая <Ctrl+D> до тех пор,
пока вызов GetModuleHandleA не окажется внутри секции тности, DELPHI помещает GetModuleHandleA в функцию
.text (если лень нажимать одну и ту же клавишу помногу раз, @Sysinit@@InitExe$qqrpv, а вот она-то уже и вызывается
можно установить условную точку останова в стиле «BPM стартовым кодом (см. листинг 4)!
GetModuleHandleA X IF EIP < 0x1008000». Это значит, что для достижения OEP, с момента «ловли»
Ага! Вот, наконец, появилось что-то похожее на исти- GetModuleHandleA нам придется раскрутить стек (команда
ну (см. рис. 10). «STACK» в soft-ice), поднявшись на один или два уровня
Данный вызов действительно подлинный и, прокручи- вверх. Но на сколько конкретно подниматься? Чтобы отве-
вая экран окна CODE вверх, нам остается всего лишь най- тить на этот вопрос, нам необходимо исследовать состоя-
ти стандартный пролог PUSH EBP/MOV EBP,ESP или RET, ние стека на момент вызова файла.
которым заканчивается предшествующая процедура. С вы- Остановив отладчик в точке входа EP (не путать с OEP,
сокой степенью вероятности это и будет OEP, на которую которую еще только предстоит найти), даем команду
можно поставить аппаратную точку останова, затем пере- «D ESP» и смотрим (чтобы данные отображались не бай-
запустить программу еще раз (не забыв при этом удалить тами, а двойными словами, необходимо сказать отладчи-
точку останова на GetModuleHandleA) и в момент всплы- ку «dd»):
тия отладчика сделать программе дамп. При этом следу-
ет помнить, что далеко не всегда GetModuleHandleA вызы- Листинг 5. Состояние стека на момент вызова файла
вается непосредственно из самого стартового кода! В час- :d esp
:u *esp
:u 77EB834F
:d fs:0
64
безопасность
твенной близости от передачи управле- В неупакованном «Блокноте» (см. рибут C0000040h, то есть такой же, как
ния на OEP. Означает ли это, что, уста- рис. 13) секция .text имеет права у секции данных – с правом на запись,
новив точку останова на VirtualProtect, на чтение и исполнение (executable/ но без прав исполнения.
мы… readable/code), секция .data – чтение и А вот это уже нехорошо! Мало то-
А вот и нет! Из трех наугад взятых запись (writeable/readable/инициализи- го, что в кодовую секцию теперь может
упаковщиков: ASPack, PE-Compact рованные данные), секция .rsrc – толь- писать кто угодно, так еще на процес-
и UPX только PE-compact вызывал ко на чтение (readable/инициализиро- сорах с NX/XD-битами файл, обрабо-
VirtualProtect для манипуляций с атри- ванные данные). Короче, все как в при- танный ASPack, исполняться не будет!
буты секций (да и то совсем для других личных домах. Система выбросит грозное предупреж-
целей), а все остальные оставляли их Теперь упакуем файл с помощью дение с намеком на вирус, и большинс-
открытыми на запись даже после за- ASPack. Запустим его и, дож дав- тво пользователей попросту сотрут та-
вершения распаковки! Вопиющее на- шись окончания распаковки (на экра- кой файл от греха подальше, а это зна-
рушение спецификаций и неуважение не появляется главное окно програм- чит, что создатель упакованной про-
к нормам хорошего поведения! мы), снимем с него дамп (см. рис. 14). граммы потеряет клиента (и правиль-
Смотрите сами. Вот это номер! Все секции имеют ат- но – незачем было паковать!).
Что делать, если отладчик проскакивает точку ляем адрес точки входа путем сложения Entrypoint RVA (в нашем
входа в распаковщик случае – 10001h) с Image Base (в нашем случае 1000000h). Полу-
Берем исполняемый файл, загружаем его в NuMega SoftICE Symbol чается 1010001h. Если считать лень, можно просто нажать <F5>,
Loader, предварительно убедившись, что пиктограммма, изобра- чтобы hiew перенес нас в точку входа, сообщив ее адрес (однако
щающая «электрическую лампочку», горит в полный накал, а оп- это не срабатывает на некоторых защищенных файлах с искажен-
ция «Start at WinMain, Main, DllMain» активирована (см. рис. 12), ной структурой заголовка). Хорошо, адрес EP получен. Вызыва-
что по идее должно отладчик заставить останавливаться в точке ем soft-ice путем нажатия на <Ctrl-D> и устанавливаем точку ос-
входа, но… При попытке загрузки программы soft-ice коварно иг- танова на любую API-функцию, которую вызывает наша програм-
норирует наши распоряжения, нахально проскакивает точку вхо- ма (откуда – не суть важно). Это может быть и GetModuleHandleA
да, совсем не собираясь в ней останавливаться. («BPX GetModuleHandleA») и CreateFileA – да все что угодно! Вы-
Это известный глюк soft-ice, с которым борются по всем на- ходим из soft-ice и запускам нашу программу. Отладчик всплы-
правлениям. Самый популярный (но не самый лучший) спо- вает по точке останова на API. Убедившись, что правый нижний
соб заключается во внедрении INT 03h (CCh) в точку входа про- угол отражает имя нашего процесса (если нет, выходим из soft-
граммы. ice и ждем следующего всплытия), устанавливаем аппаратную
Берем PE-файл, открываем его в hiew, нажимаем <Enter> точку останова на EP, отдавая команду «BPX 0x1010001 X», где –
для перехода в hex-режим, теперь <F8> (header) и <F5> (переход 0x1010001 адрес точки входа в PE-файл. Выходим из soft-ice и пе-
к точке входа в файл или сокращенно EP, не путать с OEP, кото- резапускаем программу. hint: soft-ice запоминает установленные
рую нам еще предстоит найти). Запоминаем содержимое байта точки вместе с контекстом отлаживаемой программы и не удаля-
под курсором (записываем на бумажке), переходим в режим ре- ет их даже после ее завершения. При повторном (и всех после-
дактирование по <F3> и пишем «CC». Сохраняем изменения по дующих) перезапусках, soft-ice будет послушно останавливаться
<F9> и выходим. В самом soft-ice должен быть предварительно ус- на EP в точке останова. Ну разве это не здорово?!
тановлен режим всплытия по INT 03 (команда «I3HERE ON»). Внимание! Динамические библиотеки, статически скомпоно-
Запускаем программу (просто запускаем без всяких там ванные с программой, получают управление до EP!!! Это позво-
loader) и… попадаем в soft-ice, который непременно должен ляет защитам предпринять некоторые действия еще до начала от-
всплыть, иначе здесь что-то сильно не так. Теперь необходимо ладки! Поэтому, если что-то идет не так, первым делом проверьте
вернуть исправленный байт на место. Это делается так: даем ко- код, содержащийся в DllMain всех динамических библиотек.
манду «WD» для отображения окна дампа (если только оно уже
не отображается на экране), затем «DB», чтобы отображение
шло по байтам (начинающим – так удобнее) и говорим «D EIP-1».
Минус один появился оттуда, что soft-ice останавливается после
CCh, увеличивая EIP на единицу. Даем команду «E» и редакти-
руем дамп в интерактивном режиме меняя «CC» на «60» (число,
записанное на бумажке). Остается только скорректировать ре-
гистр EIP, что осуществляется командой: «R EIP = EIP – 1». Все!
Команда «.» (точка) обновляет окно дизассемблера, перемещая
нас в текущую позицию. Теперь можно отлаживать!
Медленно? Неудобно? Куча лишних операций? Операции –
это ерунда, их можно «повесить» на макросы (благо, что они од-
нотипные), хуже, что некоторые упаковщики/проекторы контро-
лируют целостность файла, отказываясь запускаться, если он из-
менен. Как быть тогда?
А вот второй способ. Гораздо более элегантный. Загружаем Рисунок 12. Символьный загрузчик – хорошая штука,
программу в hiew, переходим в hex-режим, жмем <F8> и вычис- но не всегда работающая
:u eip
; сохранить все регистры в стеке
001B:01010001 60 PUSHAD
Рисунок 15. «Блокнот», упакованный PE-compact ; определить текущий EIP
001B:01010002 E803000000 CALL 0101000A
; спрятанные JMPS/POP EBP/INC EBP
001B:01010007 E9EB045D45 JMP 465E04F7
; следующие 2 строчки «эмуляция» команды jmp 01010008h
001B:0101000C 55 PUSH EBP
001B:0101000D C3 RET
66
безопасность
Поиск исходной точки входа не затратил и десятка се- Таблица 1. Расшифровка атрибутов секций PE-файла
кунд! Ну разве не красота?! Код Значение
А теперь возьмем UPX и проверим, удастся ли нам 00000004h 16-битные смещения кода
провернуть этот трюк и над ним? Ведь мы же претендуем 00000020h code
на универсальный примем!
00000040h инициализированные данные
68
bugtraq
Владимир Мешков
Благодаря своим уникальным свойствам ассиметричные алгоритмы шифрования
применяются для защиты информации в тех областях, где использование симметричных
алгоритмов затруднительно. Это защита сообщений электронной почты, HTTP-трафика,
организация безопасного доступа для удаленного администрирования (Security Shell).
Самый популярный представитель семейства ассиметричных алгоритмов – алгоритм RSA.
Ассиметричные рантировать его доставку получате- Для шифрования информации, пред-
алгоритмы лю. Когда количество абонентов не- назначенной конкретному получате-
Симметричные алгоритмы наряду со велико и расположены они недалеко лю, используют уникальный открытый
всеми своими достоинствами имеют друг от друга (например, в пределах ключ получателя-адресата. Соответс-
большой недостаток: потеря секрет- одного города), гарантированно доста- твенно для дешифрования получатель
ного ключа грозит потерей всех дан- вить ключ абоненту достаточно прос- использует парный, создаваемый од-
ных, которые с помощью этого ключа то. А если абоненты находятся в раз- новременно с открытым, секретный
зашифрованы (имеется в виду не фи- ных городах или их количество очень ключ. Для передачи открытого ключа
зическая потеря, а потеря конфиден- велико? В таком случае организация от получателя к отправителю секрет-
циальности). надежного канала доставки ключевых ный канал не нужен.
Использование симметричной схе- данных – задача весьма непростая,
мы шифрования требует передачи од- требующая значительных затрат. Алгоритм RSA. Теория
ного и того же ключа двум и более сто- Для решения в первую очередь Криптосистема RSA, пред ложен-
ронам по независимому и надежно- задачи распределения ключей была ная в 1977 году Ривестом (R. Rivest),
му каналу. Этот канал должен исклю- выдвинута концепция двухключевой Шамиром (A. Shamir) и Адлеманом
чать возможность утечки информа- (или ассиметричной) криптографии. (L. Adleman), предназначена для шиф-
ции, обеспечивать полный контроль Для шифрования и дешифрова- рования и цифровой подписи. В насто-
над процессом передачи ключа и га- ния применяются различные ключи. ящее время RSA является наиболее
70
безопасность
распространенной криптосистемой – стандартом де-факто полнялось уравнение [2]. Для этого с помощью алгоритма
для многих криптографических приложений. Криптосисте- Эвклида ищем значения d и v, удовлетворяющие соотно-
ма RSA широко применяется в составе различных стандар- шению [4]. Суть алгоритма сводится к проведению после-
тов и протоколов Интернета, включая PEM, S/MIME, PEM- довательности операций деления с остатком. В соответс-
MIME, S-HTTP и SSL. твии с алгоритмом находим частное и остаток от деления
Криптографическая стойкость алгоритма RSA основа- ϕ(n) на e:
на на трудоемкости разложения на множители (факториза-
ции) больших чисел. Термин «большие» означает, что чис- 192 = 7 * 27 + 3
ло содержит 100~200 и более двоичных разрядов. Откры-
тый и секретный ключи являются функциями двух больших Частное равно 27, остаток – 3. Теперь последователь-
простых чисел. Рассмотрим на примере, как выполняется но делим делитель на остаток (т. е. 7 на 3 в данном случае)
генерация ключей алгоритма RSA, но вместо больших чи- до тех пор, пока в остатке не получим единицу:
сел для простоты изложения будем использовать малень-
кие десятичные. 7 = 3 * 2 + 1
Для генерации парных ключей используются два слу-
чайных простых числа, p и q. Вычисляется произведе- А теперь распишем процесс получения остатка в об-
ние этих чисел n и значение функции Эйлера от числа n ратном порядке:
по формуле:
1 = 7 – 3 * 2 = 7 – (192 – 7 * 27) * 2 = 7 – (192 * 2 – 7 * 2 * 27)
φ(n)=(p-1)(q-1)[1]
Раскроем скобки:
Далее выбирается ключ шифрования e такой, что e
и значение функции Эйлера ϕ(n) являются взаимно просты- 1 = 7 + 7 * 54 – 192 * 2 = 7 * 55 – 192 * 2
ми числами, т.е. числами, не имеющими общих делителей,
кроме единицы (единицу еще называют тривиальным дели- В итоге получаем искомые числа d=55 и v=2. Числа
телем). Теперь необходимо найти значение ключа дешиф- d=55 и e=7 являются взаимно обратными по модулю 192,
рования d такое, чтобы выполнялось равенство: что подтверждает равенство:
Таким образом, исходная последовательность восста- Подробную информацию по функциям типа BN_* смот-
новлена. рите на странице руководства man bn.
Шифрование RSA выполняется намного эффективнее, Все ассимметричные алгоритмы, реализованные в
если правильно выбрать значение e. Чаще всего исполь- библиотеке, такие как RSA, DSA, Diffie-Hellman, использу-
зуются 3, 17 и 65537. Стандарт X.509 рекомендует 65537, ют эти функции.
PEM – 3, PKCS#1 – 3 или 65537.
Ознакомившись с теорией, приступим к рассмотрению Генерация ключей алгоритма RSA
средств, предоставляемых библиотекой для защиты ин- Как в и случае симметричных алгоритмов, для криптогра-
формации по RSA алгоритму. фической защиты информации по алгоритму RSA необхо-
димо вначале сгенерировать открытый и секретный клю-
Функции библиотеки для защиты чи. Генерацию ключей алгоритма RSA выполняет функция
информации по RSA-алгоритму RSA_generate_key следующего вида:
Прежде чем изучить вышеозначенные функции, приоста-
новимся на минуту и подумаем – если мы оперируем с чис- RSA *RSA_generate_key(int num, unsigned long e, ↵
void (*callback)(int,int,void *), void *cb_arg);
лами, разрядность которых составляет ~200 битов, то мы
должны их где-то хранить. А ведь их надо не только хранить, Параметры функции:
но и проводить над ними различные математические опера- int num – размер ключа в битах;
ции, такие как умножение, деление, возведение в степень unsigned long e – это то самое число e, с которым мы
и т. п. Очевидно, что стандартные типы языка программи- познакомились в пункте 2, когда рассматривали теоре-
рования Си, например, long или double long, и прямое ис- тические основы алгоритма RSA. Этот параметр обыч-
пользование функций стандартной библиотеки этого язы- но принимает значения 3, 17 или 65537.
ка, таких как «+», «*» и т. п. для этих целей совершенно не-
пригодны. Поэтому библиотека OpenSSL содержит ряд спе- Два последних параметра, указатели на функцию
циальных функций для работы с большими числами, раз- (*callback) и void *cb_arg, служат для предоставления об-
рядность которых превышает разрядность адресной шины ратной связи (feedback) с процессом генерации ключевой
и регистров процессора. Для хранения этих чисел исполь- информации. Это, как правило, индикация хода выполне-
зуется динамическая память. Базовым объектом библио- ния операции генерирования ключей. Например, если мы
теки для работы с такими числами является объект типа выполним команду:
BIGNUM. Этот тип определен в файле openssl/bn.h:
openssl genrsa –out outfile 2048
#define BN_ULONG unsigned char
typedef struct bignum_st
{ то увидим, как на экране начнут появляться символы «.»
/* Pointer to an array of 'BN_BITS2' bit chunks. */ и «+», отображающие процесс формирования ключей. Най-
BN_ULONG *d;
int top; /* Index of last used d +1. */ дем в файле apps/genrsa.c исходных текстов библиотеки
/* The next are internal book keeping for bn_expand. */ вызов функции RSA_generate_key:
int dmax; /* Size of the d array. */
int neg; /* one if the number is negative */
int flags; rsa=RSA_generate_key(num,f4,genrsa_cb,bio_err);
} BIGNUM;
Приведем краткий перечень функций библиотеки Третий параметр – функция genrsa_cb – находится в этом
для работы с большими числами: же файле и имеет следующий вид:
BIGNUM * BN_new(void) – создает объект типа BIGNUM
и возвращает указатель на него; static void MS_CALLBACK genrsa_cb(int p, int n, void *arg)
{
int BN_add (BIGNUM *r, const BIGNUM *a, const char c='*';
BIGNUM *b) – суммирует числа a и b, результат поме-
if (p == 0) c='.';
щает в r (r=a+b); if (p == 1) c='+';
int BN_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM if (p == 2) c='*';
if (p == 3) c='\n';
*b) – выполняет операцию вычитания числа b из числа BIO_write((BIO *)arg,&c,1);
(void)BIO_flush((BIO *)arg);
а, результат сохраняется в r (r=a-b);
72
безопасность
74
безопасность
/* Шифруем содержимое входного файла */ inf = open(argv[1], O_RDWR);
while(1) { outf = open("./test.rsa", ↵
inlen = read(inf, ptext, key_size - 11); O_CREAT|O_TRUNC|O_RDWR, 0600);
if(inlen <= 0) break;
/* Открываем ключевой файл и считываем секретный ключ */
outlen = RSA_public_encrypt(inlen, ptext, ctext, ↵ priv_key_file = fopen(PRIVAT, "rb");
pubKey, RSA_PKCS1_PADDING); privKey = PEM_read_RSAPrivateKey(priv_key_file, ↵
if(outlen != RSA_size(pubKey)) exit(-1); NULL, NULL, NULL);
Сергей Супрунов
Как часто мы слышим, что открытых лицензий на программное обеспечение развелось
слишком много. BSD, Apache, CDDL, GPL2/3, LGPL… Даже для юристов это настоящий кошмар.
А что же тогда говорить о нас, простых (хотя и системных) администраторах?
76
IMHO
мы, не создавая для пользователя ни-
каких ограничений, решили бороться Отказ от ответственности не подразумевают никаких гарантий. Автор
за свободу своих детищ тем же оружи- Настоящая статья публикуется в соответс- не отвечает за последствия применения,
ем, которое использовалось для огра- твии с принципом «как есть» (а не «как пить неправильного применения или неприме-
ничения этой свободы – лицензиями. дать»), что означает возможность нали- нения материала данной статьи, включая
Но, в противоположность коммерчес- чия в ней ошибок и заблуждений, хотя ав- разбитые вследствие неосторожного цити-
ким лицензиям, здесь явно указыва- тор и стремился этого избежать. Сам факт рования в присутствии идейных оппонен-
лось право пользователя распростра- публикации, а также указание на послед- тов носы (но не ограничиваясь этим). Шут-
нять программы любым способом, ис- ней странице журнала, что «За содержа- ливый тон настоящего раздела не подразу-
пользовать в любых целях, модифици- ние статьи ответственность несёт автор», мевает шутливость всего изложения.
ровать код и т. д.
Наиболее известной свободной нейшего распространения, модифика- Формально всё это никоим обра-
лицензией является разработанная ции, использования. зом не ущемляет прав разработчика
в FSF (Free Software Foundation) лицен- открытой версии – он остаётся авто-
зия GNU GPL (General Public License). GNU LGPL (Lesser GPL) ром и владельцем кода и может его
Однако помимо неё существует мас- «Ограниченная» GPL, регламентиру- по-прежнему развивать и распростра-
са других лицензий, в которых и по- ющая права на программные библи- нять, как ему вздумается. То есть все
пытаемся разобраться хотя бы в об- отеки. Содержит ряд пунктов, допус- возражения против BSD сводятся, по
щих чертах. кающих компоновку данной библио- сути, к апелляции к морали. Впрочем,
теки с программами, распространяе- это личное право разработчика – пос-
Представляем главных мыми по другим лицензиям. Разработ- тупать со своим детищем так, как ему
игроков чик библиотеки (или её модификации) вздумается.
Сначала коротко познакомимся с ос- вправе перевести её на лицензию GPL,
новными положениями наиболее рас- однако обратная процедура уже будет Apache
пространённых открытых лицензий. невозможна. Достаточно либеральная, и в то же вре-
мя хорошо проработанная лицензия
GNU GPL2 (GNU General Public BSD (чувствуется «рука мастера» – перво-
License) Пожалуй, самая простая и демократич- начально к ней приложили руку юрис-
Это детище Ричарда Столлмана ная открытая лицензия, занимающая ты корпорации IBM). Позволяет моди-
(Richard Stallman), пришедшее в 1991 всего несколько строк. Её смысл сво- фицировать и распространять ПО как
году на смену 1-й версии, имеет чёт- дится к тому, что «делайте с програм- в открытых кодах, так и в двоичном ви-
ко поставленную задачу – не допус- мой всё, что хотите, только не говори- де. Помимо прав на сам программный
тить «закрытия» программ, которые те, будто это вы её написали». То есть продукт (на его использование, моди-
первоначально были выпущены как единственное предъявляемое ею тре- фикацию, распространение), лицен-
свободные. GPL предоставляет право бование – сохранение уведомлений зия регламентирует и вопросы, свя-
свободно использовать, модифици- об авторских правах. Таким образом, занные с сопутствующими патента-
ровать и распространять программу, лицензия BSD не подпадает под поня- ми – они также должны передаваться
при обязательном условии, что вмес- тие Copyleft, поскольку не запрещает вместе с программой. Предусмотрена
те с ней будут распространяться и её ограничивать свободу этого или про- контрмера на случай судебных претен-
исходные коды, включая все сделан- изводных продуктов. Сторонники GPL зий к разработчику ПО, распространя-
ные изменения, и по той же самой ли- часто критикуют BSD за то, что она емого под лицензией Apache, – в этом
цензии. Допускается не включать ис- позволяет любому «украсть» разра- случае лицо, предъявившее такие пре-
ходные коды в дистрибутив при усло- ботку. Действительно, если хорошая тензии, автоматически теряет передан-
вии, что их можно будет свободно полу- программа распространяется под BSD- ные ему права в отношении программы
чить в дальнейшем (например, скачав лицензией, то существует ненулевая или сопутствующих патентов.
с ftp-сервера). Формально лицензия вероятность, что какая-нибудь круп-
не требует от разработчика или дист- ная корпорация возьмёт этот код и бу- Artistic
рибьютора распространять программу дет распространять программу как за- Под этой лицензией распространяют-
бесплатно, но в свете обязательности крытую под коммерческой лицензией. ся такие программы, как Razor, Perl
предоставления исходных кодов взи- Очевидно, что у такой компании будет (этот проект использует слегка моди-
мание платы за «сборку» в какой-то гораздо больше маркетинговых воз- фицированную версию) и ряд других.
степени теряет смысл. можностей по продвижению и прода- Изменённый продукт может распро-
Здесь нужно сказать, что с GPL же программы – большинство пользо- страняться только в случае публика-
прочно связано ещё одно понятие – вателей могут даже и не догадывать- ции в доступном виде модифициро-
Copyleft. Это положение (в противо- ся, что существует такая же програм- ванных исходных кодов либо при ус-
положность Copyright), согласно ко- ма, но абсолютно бесплатная. К то- ловии, что все изменённые файлы бу-
торому распространитель (т.е. право- му же лицензия BSD не обязывает де- дут переименованы. В принципе позво-
обладатель) программного продукта литься с сообществом модифициро- ляет использовать программный про-
не вправе ограничивать свободу даль- ванным кодом. дукт в коммерческих программах. FSF
78
IMHO
Кому и зачем всё это надо
Казалось бы, ну есть какая-то про- Free as a beer? Во втором же случае понимается сво-
грамма, ну не берут денег за то, что я У нас таких проблем не возникает – поня- бода программы в терминах лицензии
пользуюсь ею… Ну вот и славненько! тия «бесплатное» и «свободное» ПО до- GPL.
Какая мне разница, что именно там за статочно чётко разделяются на лингвис- Последнее время наметилась тен-
лицензия? тическом уровне. В английском же язы- денция к использованию вместо термина
С точки зрения обычного пользова- ке ситуация несколько иная, и говоря «free software как Кипелов» формулировки
теля, так оно и есть. По большому счё- «free software», приходится уточнять, име- «open source software» (открытое програм-
ту рассмотренные лицензии не явля- ется в виду «free as a beer» (бесплатное, мное обеспечение, ПО с открытым кодом),
ются так называемыми EUL (End User как пиво; нам бы такую аналогию в бли- что выглядит несколько лучше, но тоже до-
License), т.е. они не столько регламен- жайший ларёк) или «free as Kipelov» (пом- пускает неоднозначность (можно открыть
тируют права конечного пользователя, ните: «Я свободен, словно птица в небе- коды, но сопроводить это такой лицензией,
сколько права разработчиков и рас- сах…»). «Free» в первом контексте подра- что эти коды будет страшно трогать).
пространителей, которые будут ис- зумевает бесплатность программы, но при Возможно, со временем гибкий и изво-
пользовать данную программу в сво- этом её использование может быть сильно ротливый человеческий ум придумает-та-
их продуктах или предоставлять услу- ограничено (только для личного пользова- ки однозначные формулировки, пока же
ги на основе данного продукта. ния, для ознакомительных целей, без пра- будем уточнять: «Free as a beer?», «Open
Системный администратор в ка- ва декомпиляции и т. д.). as Linux?».
кой-то мере тоже является конечным
пользователем. То есть его деятель- двойного лицензирования. Некоторые они дублируют друг друга, отличаясь
ность направлена не на модификацию производители, желая обеспечить бо- лишь незначительными особенностя-
и распространение той или иной про- лее широкие возможности использо- ми, но преследуя одинаковые (по край-
граммы, а на соответствующую её на- вания своей программы, выпускают её ней мере, схожие) цели. Несовмести-
стройку и дальнейшее сопровождение. под несколькими лицензиями. В качес- мость некоторых положений несколь-
Конечно, зачастую настройка связа- тве примера можно привести PC-BSD, ко осложняет жизнь дистрибьюторам
на с модификацией продукта, но пос- распространяющуюся под лицензиями и разработчикам, желающим объеди-
кольку результат этой модификации GPL и BSD. Или, например, MySQL, ко- нить в своём продукте несколько сто-
редко выходит за пределы «личного» торая выпускается под GPL и под ком- ронних программ. Но в целом сущес-
использования, то вопросы лицензи- мерческой лицензией. твующие лицензии неплохо уживают-
рования здесь тоже особого значе- Однако помимо прямой роли ли- ся друг с другом.
ния не имеют. цензий на те или иные программы не- Тем не менее сокращение их чис-
А вот для разработчиков (даже ес- льзя забывать и о косвенных последс- ла было бы на руку как разработчи-
ли разработка заключается в сборке твиях. Ведь это непосредственным об- кам, так и конечным пользователям,
готовых программ и библиотек в один разом влияет на желание программис- поскольку сделало бы работу с раз-
дистрибутив) вопросы лицензирова- тов заниматься разработкой открытых личным ПО более прозрачной и понят-
ния приобретают большое значение. программ и их распространением. ной. Так что будем надеяться, что GPL
Как вы видите, большинство откры- С этой точки зрения лицензии, со- третьей версии удастся сделать при-
тых лицензий достаточно либераль- ответствующие «Copyleft», такие как влекательной для большинства раз-
ны, и особых проблем с использова- GPL, должны быть более привлека- работчиков, что будет стимулировать
нием «покрываемых» ими продуктов тельны для разработчиков, посколь- отказ от различных «доморощенных»
возникнуть не должно. Единственное, ку гарантируют, что никто не сможет лицензий.
нужно не забывать о вопросах совмес- воспользоваться результатами их тру-
тимости разных лицензий. Например, да в своих целях. Кроме того, «обрат- Ссылки:
вы не можете распространять свою ная связь» в виде обязательного пре- 1. Лицензия GNU GPL2 – http://www.gnu.
программу под лицензией, не требу- доставления сообществу модифици- org/licenses/gpl.html.
ющей открывать исходный код, ес- рованных исходных кодов способс- 2. Лицензия GNU LGPL – http://www.gnu.
ли она основана или включает в себя твует более быстрому развитию про- org/copyleft/lesser.html.
программный продукт, распростране- граммы, поскольку подобный обмен 3. Черновик GNU GPL3 – http://gplv3.fsf.
ние которого требует соблюдения от- кодом позволяет использовать наилуч- org/draft.
крытости. Парадоксально, но лицен- шие варианты. 4. Лицензия Apache – http://apache.org/
зию QPL (Qt Public License), под кото- С другой стороны, лицензии в сти- licenses/LICENSE-2.0.
рой распространяется библиотека Qt, ле BSD более удобны для дистрибью- 5. Лицензия Artistic – http://www.perl.com/
Free Software Foundation относит к не- торов, поскольку позволяют использо- pub/a/language/misc/Artistic.html.
совместимым с GPL. Впрочем, разра- вать такие программы и в коммерчес- 6. Лицензия Sun CDDL – http://www.sun.
ботчикам KDE, похоже, удалось обой- ких разработках. com/cddl/cddl.html.
ти эту формальность. 7. Страница Open Source Initiative (OSI)
Кстати говоря, проблемы совмес- Ждём с нетерпением… со ссылками на большинство откры-
тимости послужили причиной воз- Что ж, на сегодняшний день лицен- тых лицензий – http://www.opensource.
никновения ещё одной особенности – зий действительно немало. Во многом org/licenses/artistic-license.php.
Возможности поискового
движка DataparkSearch
Иван Максимов
Как организовать поиск информации на файловом сервере не только по названию и типу
документа, но и по его контенту? Возможно ли создать подходящий инструмент, доступный
и прозрачный для пользователей?
В
настоящее время вопрос поис- вые сервисы, возможности и совер- браться в этом многообразии иногда
ка информации становится все шенные механизмы поиска. Но нуж- очень не просто. В организациях ча-
более и более актуален. В се- ные данные сложно найти не только ще всего информацию централизуют
ти Интернет давно идет конкурент- в Интернете. На домашних компью- и сортируют на файловых серверах,
ная борьба между поисковыми систе- терах пользователей также накапли- но со временем поиск нужных доку-
мами, постоянно предлагающими но- вается огромное количество и разо- ментов затрудняется. Производители
80
web
программного обеспечения отреаги-
ровали на данную потребность. На се- Работа рость работы движка с нелокальными ре-
годня существуют десятки поисковых Сервер был установлен на машине: AMD сурсами будет зависеть от скорости кана-
машин, работающих локально на PC, Athlon 2500 Barton, 512 Мб DDR 3200 (Dual), ла. Также скорость индексирования зави-
также появились серверные поиско- HDD WD 200 Гб SATA (8 Мб кэш, 7200 сит от используемых парсетов. Использо-
вые машины. оборотов). Конфигурация движка: дви- вание режима хранения cache улучшает
Локальные поисковые машины жок DataparkSearch (v4.38), СУБД MySQL скорость работы примерно на 15-20%. В ка-
в большинстве своем распространя- (v4.1.11), веб-сервер Apache (v1.3.33), про- честве клиентского ПО используются веб-
ются бесплатно, тогда как корпора- изводится индексация doc, xls, rtf (конвер- браузеры, проверялась работа на: Firefox,
тивные версии, позволяющие пользо- тация в text/plain), html, txt-файлов. Исполь- Opera, Konqueror, Microsoft Internet Explorer
вателям производить поиск информа- зуется режим хранения данных multi. Обра- и даже Lynx – проблем не возникло. Всю ра-
ции на сервере, стоят достаточно до- ботка примерно 2 тыс. файлов, располо- боту серверной части движка можно авто-
рого. Несомненно, покупая коммер- женных на данной машине (размер на дис- матизировать с помощью всем известного
ческий продукт, мы получаем грамот- ке ~1 Гб), и индексация их контента требует демона cron, поместив в него нужные па-
ную техническую поддержку и другие 40 мин, размер БД после работы пример- раметры для индексации данных.
преимущества, но небольшие органи- но равен 1 Гб. Должен заметить, что ско-
зации или владельцы частных сетей
не всегда в состоянии заплатить ты- Search [1] или Ask Jeeves Desktop возможно использовать его и в корпо-
сячи долларов за подобные продукты. Search [2]. Возможно, для организа- ративной среде.
К счастью, в мире Open Source сущес- ции поиска в маленькой компании или MnogoSearch (бывший UdmSearch) –
твуют свободные проекты, не уступаю- на рабочей станции пользователя, под известный многим и достаточно рас-
щие по функциональности своим ком- управлением ОС Windows, эти движки пространенный движок. Существу-
мерческим конкурентам, с качествен- могут быть полезны, но не в данном ют версии как под Windows (30-днев-
ной поддержкой и обновлениями. случае. Поисковые «монстры» вроде ная бесплатна версия), так и под *nix-
Сейчас мы рассмотрим один из ва- Яндекса очень дороги, но если требу- платформы (лицензия GNU). Возмож-
риантов по организации поиска доку- ется качественная помощь разработ- на работа практически со всеми рас-
ментов на файловом сервере, кото- чиков, то крупным компаниям, воз- пространенными версиями СУБД SQL
рый был реализован на конкретной можно, следует подумать об его арен- под обе платформы. К сожалению,
задаче. де. Для *nix-семейства существует не- на данный движок достаточно мно-
сколько проектов. Это движки: го нареканий, поэтому я не остановил
Начальные условия DataparkSearch [3] свой выбор на нём.
Имеется файловый сервер под уп- Wordindex [4] Wordindex – движок, находящийся
равлением ОС Linux. Для совместно- ASPseek [5] в стадии разработки (на момент напи-
го использования файлов установле- Beagle [6] сания статьи последняя доступная вер-
ны популярные пакеты samba и pro- MnogoSearch [7] сия 0.5 от 31 августа 2000 года). Рабо-
ftp. На диске используется файловая тает в связке СУБД MySQL и веб-сер-
система reiserfs, как наиболее произ- Перечисленные движки позицио- вера Apache. Работоспособный про-
водительная для работы с большим нируются как свободно распростра- ект представлен только на сайте раз-
количеством маленьких файлов (до- няемые поисковые машины для рабо- работчиков.
кументы, около 3 тысяч, различных ты в локальной и/или глобальной се- ASPseek – поисковая машина, по-
форматов: txt, html, doc, xls, rtf). Дан- тях. Хочу заметить, что многие проек- лучившая в прошлом достаточно боль-
ные отсортированы, но их объем рас- ты не мультиплатформенные и не ра- шое распространение, но в 2002 году
тет с каждым днем, удаление устарев- ботают под операционными система- этот движок прекратил свое развитие
шей информации не решает пробле- ми компании Microsoft. Для Windows- (последняя доступная версия данной
му. Как организовать поиск по именам систем существуют серверные реше- поисковой системы 1.2.10 от 22 июля
и типам документов, а также по кон- ния, такие как: MnogoSearch и «Ищей- 2002 года).
тенту? Как сделать его доступным для ка» [8]. DataparkSearch – клон поискового
пользователей в локальной сети? Итак, коротко рассмотрим поиско- движка MnogoSearch. Позволяет про-
Для решения этих вопросов нам по- вые машины под *nix-платформу: изводить поиск как по именам фай-
надобится поисковый движок, сервер Beagle – преемник в SUSE Linux лов, так и по их контенту. Обработка
баз данных (MySQL, firebirg, ...), веб- движка Htdig [9]. Последний дистри- txt-файлов, HTML-документов и тэгов
сервер Apache [13] и около гигабай- бутив SUSE, в который вошел движок mp3 встроена, для обработки содер-
та дискового пространства для рабо- Htdig, был за номером 9, в последую- жимого документов иного типа необ-
ты комплекса. щих версиях компания Novell заменила ходимы дополнительные модули. Воз-
его на beagle. Htdig закончил свое раз- можен поиск информации, как на ло-
Какой из поисковых витие в 2004 году, последняя доступ- кальном жестком диске, так и в ло-
движков выбрать? ная версия – 3.2.0b6 от 31 мая 2004 кальной/глобальной сети (http, https,
Существуют локальные поисковые года. Новый движок в SUSE позицио- ftp, nntp и news).
машины, такие как Google Desktop нируется как локальный поисковик, но Поисковая машина функциониру-
Перезагрузим MySQL.
Допустим, имя пользователя – searcher, пароль –
qwerty.
Теперь создаём файл indexer.conf в папке /etc/ движка,
примеры данного файла (для некоторых задач) можно най-
ти в папке /doc/samples исходников DataparkSearch. Пример
с минимальными настройками приведен на рис. 1.
Рассмотрим файл подробнее. Как упомянуто в коммен-
тарии, команда DBAddr указывает путь к SQL-серверу (в на-
Рисунок 2. Минимальные параметры search.htm шем случае это MySQL), способ хранения данных и другие
параметры (если необходимо). Существуют несколько ре-
ет с самыми распространенными СУБД SQL, такими как жимов хранения: если не указывать dpmode, то по умолча-
MySQL [10], firebird [11], PostgreSQL [12] и другими. По заяв- нию будет значение single – самый медленный. Рекомен-
лению разработчиков, DataparkSearch стабильно работает дуется использовать режим cache, но если с ним возник-
на различных *nix-операционных системах: FreeBSD, Solaris, ли проблемы, можно использовать менее эффективный,
Red Hat, SUSE Linux и других. По сравнению с MnogoSearch но более простой в конфигурировании режим multi. Под-
в движке были исправлены некоторые ошибки, изменены робное описание всех параметров dbmode находится в до-
в лучшую сторону некоторые функции. На сайте разработ- кументации.
чиков приведены ссылки на рабочие версии движка в се- DoStore хранит сжатые копии проиндексированных до-
ти Интернет. Большой плюс – качественная документация кументов. Sections – модуль, предоставляющий гибкие воз-
на русском языке. можности индексирования. Допустим, можно создать огра-
Итак, сравнив все «за» и «против», для реализации по- ничение по тэгу или настроить индексацию не только со-
иска на файловом сервере был выбран движок поисковой держимого файлов, но и URL (хост, путь, имя). Langmap –
машины DataparkSearch. специальные языковые карты для распознавания кодиро-
вок и языков, эффективны, если документы размером бо-
Установка лее 500 байт.
Для работы нам понадобятся: веб-сервер Apache, сервер Второй необходимый конфигурационный файл – файл
базы данных MySQL и исходные коды DataparkSearch. Ус- результатов поиска search.conf. Рекомендуется взять гото-
танавливаем сервер Apache и БД MySQL (со всеми необхо- вый шаблон (файл /etc/search.htm-dist) и отредактировать
димыми библиотеками). Если на вашем сервере установле- его под свои запросы. Нужно заметить, что основные па-
на иная СУБД, то можно использовать и ее (см. документа- раметры, указанные в файле indexer.conf, должны совпа-
цию по движку). Далее распакуем архивы DataparkSearch дать с параметрами в search.htm, иначе будут ошибки при
и приступим к сборке нашего комплекса. работе движка. Search.htm состоит из нескольких блоков:
Запустим скрипт install.pl и ответим на необходимые воп- первый – variables – содержит данные для работы движ-
росы: выбор папки установки движка, базы данных и дру- ка (скрипт search.cgi), а все остальные блоки необходимы
гие относящиеся к параметрам работы движка. Рекомен- для формирования html-страницы результатов поиска. При-
дуется оставит настройки по умолчанию. Опытные поль- мер блока variables в search.conf приведен на рис. 2.
зователи, прочитав документацию, расположенную в пап- Рассмотрим search.htm подробнее. Как видно, пара-
ке doc, могут вручную сконфигурировать движок (коман- метры DBAddr и LocalCharset совпадают с идентичны-
да configure). Если при инсталляции скрипт не может найти ми параметрами в indexer.conf. Если ваш веб-клиент под-
mysql, возможно не установлены библиотеки для разработ- держивает формат xml, то можно установить параметр
чиков (libmysql14 devil). Теперь скомпилируем и установим ResultContentType text/xml. Ниже идут HTML-блоки, необ-
DataparkSearch командами make и make install. ходимые для дизайна страницы результатов, они здесь
не представлены из-за большого объема. Рекомендуется
Минимальное конфигурирование пользоваться готовым шаблоном, расположенным в фай-
Создадим базу данных: ле /etc/search.htm-dist. В сопроводительной документации
полностью описан формат HTML-блоков (дизайна), жела-
sh$ mysqladmin create search ющие могут настроить его по своему вкусу.
Теперь можно запускать файл indexer из папки sbin движ-
Командой mysqlshow просмотрим все таблицы в БД. ка DataparkSearch с параметром -Ecreate. Если все было сде-
Сразу хочу отметить, что удобнее работать с MySQL с по- лано правильно, то будут созданы необходимы sql-табли-
82
web
цы в БД. Если появились ошибки, следует проверить имя
пользователя mysql и пароль в файле indexer.conf, это на-
иболее распространенная ошибка.
Для тестирования рекомендуется проиндексировать не-
большой участок ресурса, чтобы если возникнут ошибки, Рисунок 3. Форма ввода данных
новая переиндексация не заняла много времени. Индек-
сирование выполняется командой indexer без параметров,
в итоге нам выведут результаты: затраченное время, коли-
чество документов и скорость работы.
Ско пируе м файл bin /search.cgi и з д ир е к тор ии
DataparkSearch в папку cgi-bin нашего веб-сервера и отре-
дактируем файл index.shtml нашего веб-сервера Apache
(расположенный в папке html), добавив в него код фор-
мы поиска:
search.htm
Выводы
DBAddr mysql://searcher:qwerty/search/?dbmode=cache Поисковый движок DataparkSearch – мощное средство для
работы c веб-ресурсами, расположенными как в локальной
Этого изменения в целом достаточно, но если вы же- сети, так и в глобальной. Проект постоянно развивается
лаете достичь еще большей гибкости движка, то рекомен- и дорабатывается, на момент написания статьи последняя
дуется ознакомиться с дополнительными параметрами ре- стабильная версия движка 4.38 (от 13.03.2006) и снапшота
жима cache и внести необходимые изменения в конфигу- 4.39 (от 19.04.2006). Должен заметить, что обновления пос-
рационные файлы. ледней версии происходят почти через день.
Далее перейдем в директорию sbin нашего движка и за- Мы не рассматривали вопрос о создании публич-
пустим утилиту cached с параметрами: ного поискового сервиса в Интернете, если же вам это
требуется, ознакомтесь с соответствующей документа-
cached & 2> cached.out цией по СУБД, веб-серверу и другим моментам, каса-
ющимся защиты информации от несанкционированно-
Демон запустится и будет записывать отладочную ин- го доступа.
формацию в файл cached.out. Порт работы cached по умол-
чанию – 7000, но если необходимо, его можно изменить Ссылки:
(в cached.conf). 1. Google Desktop Search – http://desktop.google.com.
Заново создадим SQL-таблицы для нового режима хра- 2. Ask Jeeves Desktop Search – http://about.ask.com.
нения данных командой «indexer -Ecreate» и проиндекси- 3. DataparkSearch – http://www.dataparksearch.org.
руем сервер – indexer. После завершения выполним ко- 4. Wordindex – http://wordindex.sourceforge.net.
манду: 5. ASPseek – http://www.aspseek.org.
6. Beagle – http://beagle-project.org.
run-splitter -k 7. MnogoSearch – http://www.mnogosearch.ru.
8. Ищейка – http://www.isleuthhound.com.
Должен сказать, что данный метод ускоряет не только 9. Htdig – http://htdig.org.
скорость поиска по базе, а также скорость индексирова- 10. Mysql – http://www.mysql.com.
ния. Теперь можно попробовать произвести поиск по БД, 11. Firebird – www.firebirdsql.org.
если все было сделано правильно, то мы получим резуль- 12. PostgreSQL – http://www.postgresql.org.
таты поиска. 13. Apache – http://www.apache.org.
14. Catdoc – http://www.45.free.net.
Дополнительные функции 15. XLHTML – http://chicago.sourceforge.net/xlhtml.
В приведенной конфигурации использовались минималь- 16. vwHtml – http://wvware.sourceforge.net.
ные параметры настройки, с помощью дополнительных 17. unrtf – ftp://ftp.gnu.org/pub/gnu/unrtf.
84
bugtraq
Дмитрий Мороз
Уход основателя Silicon Graphics Джима Кларка из компании изначально не был воспринят
всерьёз. «Подумаешь, ушёл один человек, когда в компании таких, как он, – тысячи». Однако,
если поломка даже единственной шестерёнки может стать причиной выхода из строя всего
механизма, что ждало Silicon Graphics?
Хочешь жить – умей рушечная история» позволил Sun отоб- на, и все, казалось бы, были доволь-
вертеться рать у Silicon Graphics частицу всемир- ны… до появления Windows 95.
К 1994 году продажи рабочих станций ной славы. Жестокая война продук- В начале 1995 года Microsoft запус-
Silicon Graphics перевалили за отмет- ции компании с рабочими станциями тила программу по поддержке разра-
ку в полмиллиона единиц в год. Коли- от DEC, Hewlett-Packard и уже упоми- ботки игр, работающих на её новой
чество приложений для платформы до- навшейся Sun Microsystems, а также ОС. Суть этой программы заключалась
стигло 1300 штук. Несмотря на это, це- появление нового «конкурента» – про- в захвате персональными компьютера-
ны как на аппаратное, так и програм- цессора Pentium Pro вынудили Silicon ми, работающими на базе Windows 95,
мное обеспечение являлись для мно- Graphics признать, что она более не од- части рынка игровых консолей, на ко-
гих непреодолимым барьером. на и теперь ей придётся изрядно потру- тором в то время доминировали ком-
Желание сэкономить и выбрать на- диться, чтобы сохранить свои позиции пании Nintendo и Sega.
иболее оптимальный вариант посетило в этом секторе рынка. Microsoft приняла решение не ис-
и студию Pixar, занявшуюся созданием Однако первая настоящая «пощёчи- пользовать OpenGL, к тому времени
первого полнометражного мультфиль- на» была получена от «злейшего врага успешно применявшийся в Windows NT,
ма, созданного целиком при помощи всего компьютерного мира» – Microsoft. для обработки трёхмерной графи-
компьютерной графики. В результате Как только Silicon Graphics объявила о ки в играх. Вместо этого она приоб-
рабочие станции Silicon Graphics хоть и лицензировании API OpenGL, эта ком- рела компанию Rendermorphics, Ltd.
были использованы, но только в качес- пания в срочном порядке записалась разработавшую API под названием
тве рабочего инструмента для художни- в члены комитета ARB. Между ними RealityLab. После его доработки и пе-
ков и аниматоров, и лишь исключитель- сразу же был заключен договор, со- реименования в Direct3D Microsoft объ-
но из-за многообразия программных гласно которому Silicon Graphics помо- явила о своём намерении сделать но-
пакетов, доступных для платформы. жет Microsoft написать версию OpenGL вый API единственным стандартом
Что же касается серверов, составляв- для её новой операционной системы для Windows 95. Специально для этого
ших систему просчёта (rendering farm), Windows NT, предназначенной для ра- компания отказалась предоставить не-
и систем хранения данных, тут компа- бочих станций, работающих на различ- обходимую информацию относительно
нию опередила Sun Microsystems. ных архитектурах (х86, PowerPC, PA- своей новой операционной системы
Итог известен всем: выход в 1995 RISC Alpha, SPARC и MIPS). Работа бы- разработчикам приложений и игр под
году анимационного мультфильма «Иг- ла проделана, Windows NT – выпуще- OpenGL. Фактически на протяжении
86
ретроспектива
длительного периода времени компа- твенным системам компании. Поз-
ния специально «тормозила» развитие же это мнение окажется ошибочным,
OpenGL, а также появление этого API однако в 1995-97 гг. Silicon Graphics
на Windows 95. Примером может слу- продолжала не спеша «плыть по те-
жить тот факт, что приложения, напи- чению».
санные на базе OpenGL и работавшие Как известно, компьютер или в дан-
на Windows NT, на Windows 95 запус- ном случае рабочая станция являют-
каться просто отказывались. ся для артиста лишь инструментом,
После этого последовала так назы- причём не самодостаточным. Кроме
ваемая война API, в которую были вов- него необходимы и программы. По-
лечены не только производители гра- нимала это и Silicon Graphics. Поэто- Рисунок 1. Игровая консоль Nintendo 64
фических карт, но и разработчики при- му 7 февраля 1995 года она объявила
ложений и игр, а также простые поль- о покупке за 650 млн. долл. компаний
зователи. Многочисленные статьи, Alias Research и Wavefront Technologies,
сравнивающие оба стандарта, анали- являвшихся главными поставщика-
тические очерки, публичные обраще- ми программных продуктов в сфе-
ния к Microsoft – всё это мир ПК пере- ре трёхмерной графики и анимации,
жил за каких-то два года. К 1997 го- а также промышленного дизайна,
ду компания смогла достаточно до- и их объединении в одну под назва-
работать Direct3D (сделав его частью нием Alias|Wavefront (в апреле 2003
DirectX), чтобы не беспокоиться конку- переименованную в Alias). Новоиспе-
ренции со стороны OpenGL, поэтому- чённая компания начала параллельно Рисунок 2. Рабочая станция O2
таки сподобилась обеспечить его огра- с выпуском обновлённых версий уже
ниченную поддержку в Windows 95. Од- успевших зарекомендовать себя про- 12 июля 1995 года стал самым счас-
нако к тому времени имидж Microsoft грамм разработку графического паке- тливым днём в истории компании – сто-
был уже подпорчен. та нового поколения для трёхмерного имость одной акции Silicon Graphics со-
Тем не менее Silicon Graphics моделирования и анимации под назва- ставила рекордные 45,25 долл., что на
не сильно огорчилась. Профессио- нием Maya, который с выходом в 1997 то время было в два раза больше сум-
нальный рынок всё ещё принадлежал году стал стандартом де-факто в про- мы, которую просили за акцию Microsoft.
ей, а персональные компьютеры не изводстве компьютерных спецэффек- В различных подразделениях компании
могли составить конкуренции собс- тов для кинофильмов. по всему миру работали 12 тысяч чело-
век. Сравните эти цифры с показателя-
Проект «Действительность» тота работы 62,5 МГц), состоит из двух от- ми начала 2006 года: менее доллара за
История появления консоли Nintendo 64 дельных процессоров: RSP (занимается акцию и менее 2100 сотрудников.
столь же интересна, как и сама игро- обработкой полигонов: трансформацией, Однако всё это ждало компанию
вая приставка. Когда к компании Sega of освещением, обрезанием и т. д.) и RDP в будущем, а пока 23 апреля 1996
America поступили данные о будущей це- (на его плечах лежит Z-буферизация, ап- года свет увидела игровая консоль
не их новой консоли Sega Saturn, которая паратное сглаживание и текстурирование). Nintendo 64, являвшаяся результа-
должна была стоить $549, к ней обратился Объём оперативной памяти RDRAM в 4 Мб том проекта Project Reality. Для Silicon
Джим Кларк, в то время ещё надеявший- мог быть увеличен вдвое путём установки Graphics приставка значила одно –
ся воплотить свои мечты в недрах Silicon в консоль специальной платы расширения. финансовые поступления. От прода-
Graphics. «У меня есть несколько процессо- Nintendo 64 обрабатывала около 100 тыс. жи каждой консоли компания получа-
ров, производных архитектуры MIPS, кото- полигонов в секунду, хотя при отключении ла свою частичку, которая позволила
рые как нельзя лучше подойдут для вашей аппаратного сглаживания и других функ- Silicon Graphics сделать одну из самых
системы», – говорил он. Несмотря на согла- ций эта цифра переваливала за полмил- больших ошибок за время своего су-
сие американского подразделения корпо- лиона треугольников. ществования – купить за 764 млн. долл.
рации принять предложение Кларка, Sega К сожалению, несмотря на свои выда- компанию Cray Research.
Japan ответила отказом. Однако предпри- ющиеся графические возможности (кото- К тому времени Cray Research яв-
имчивый Джим обращался с целью поиска рые лишь немногим не дотягивали до уров- лялась одним из двух основных пос-
потенциального клиента не только к Sega, ня IRIS Crimson), использование морально тавщиков параллельных векторных
но и к другим компаниям. Одной из них устаревших картриджей в качестве носи- суперкомпьютеров. Кроме того, в ар-
была Nintendo, с радостью согласившаяся теля информации, а также банальный пе- сенале компании присутствовали
совместно с Silicon Graphics разрабатывать ренос срока выхода консоли на год (с пла- и обычные массивно-параллельные
консоль следующего поколения. нировавшегося 1995 на 1996 г.) не позво- «суперы». Во время совершения сдел-
В основе приставки лежат два про- лили Nintendo 64 стать лидером продаж. ки доход Cray достиг отметки 900 млн.
цессора. Первый, NEC VR4300, основан- К концу 2002 года было продано 32 млн. долл. В штате компании работало око-
ный на базе ядра MIPS R4300i, работает приставок, тогда как основной конкурент, ло 4500 сотрудников.
на частоте 93,75 МГц и отвечает в основ- Sony PlayStation, разошлась по миру 100- Итак, что же Silicon Graphics при-
ном за игровую логику. Второй, RCP (час- миллионным тиражом. обрела за баснословную сумму? Во-
88
ретроспектива
кими акселераторами InfiniteReality 2/3.
Производительность Onyx2, как уже Несостоявшийся трёхмерный бран формат файлов программной библи-
упоминалось в первой части статьи, Интернет отеки Open Inventor, разработанной Silicon
достигла 2 млн. полигонов в секунду. Ещё одна неудача, которую потерпела Graphics. В октябре того же года доработан-
Завершил обновление модельно- Silicon Graphics, была связана с VRML. ный инженером Silicon Graphics формат пре-
го ряда Silicon Graphics выход в янва- VRML – стандарт языка описания трех- вратился в первую версию VRML.
ре 1997 года рабочей станции среднего мерных сцен, содержащих объекты, а так- В отличие от Sun Microsystems, Silicon
уровня под названием Octane. Основ- же возможные взаимодействия между объ- Graphics не уделяла интернет-технологи-
ные её отличия от O2: упрощённая ар- ектами и наблюдателем. Основное при- ям должного внимания. «Единственная их
хитектура Origin 2000, поддержка двух менение нашёл в сети Интернет в качес- попытка заключалась в создании VRML, –
процессоров, до 2 Гб ОЗУ, а также ви- тве средства представления статической говорил аналитик Jupiter Research Ноа Яс-
деокарты серии Impact 4-летней дав- и интерактивной информации в виде вир- скин. – Они потратили на него много вре-
ности, созданные ещё для Indigo 2. туальной трехмерной среды, содержащей мени и денег, а отдача от проекта получе-
Пользователи, ожидавшие от Silicon различные объекты. на так и не была».
Graphics появления нового «графичес- В середине 1994 года была придумана «Критической массы» для широкого
кого монстра», призванного напомнить концепция трехмерного HTML: своеобраз- распространения VRML не набрал и на се-
миру, кто тут главный, были разочаро- ного языка описания трехмерных сцен с под- годняшний день является в основном за-
ваны. Как следствие – продажи новин- держкой гиперссылок. Позже она получила бавой для специалистов и немногих ин-
ки были весьма вялыми. название VRML. Для описания сцен был вы- тернет-магазинов.
Ещё одна проблема, на которую
компания доселе не обращала вни- ной». И эти слова оказались прелюди- производительностью, и при этом сто-
мания, – появление персональных ей к началу упадка Silicon Graphics. или в несколько раз дешевле. На про-
компьютеров, стремительно догоняю- Первое массивное сокращение ра- тяжении долгого времени компания не
щих рабочие станции Silicon Graphics бочего персонала в истории компании понимала, что происходит, а когда до
по производительности. Процессор- последовало на следующий день пос- неё дошло – было уже поздно».
ную мощность им обеспечивала ком- ле анонса 27 октября 1997 г. неудов- Все вышеперечисленные пробле-
пания Intel, тогда как графическую – летворительных показателей Silicon мы вынудили Эда МакКракена уйти
«новоиспечённые» 3Dfx и nVidia (со- Graphics за прошедший финансовый с поста генерального директора ком-
зданные, кстати, бывшими выходцами квартал – 37 млн. долл. убытка (ос- пании. Его место в январе 1998 года
из Silicon Graphics). «Компания прос- новная причина – 50% падение спроса занял «убийца Silicon Graphics», ярый
то не верила в то, что персональные на рабочие станции компании), что бо- приверженец Microsoft Рик Белуццо,
компьютеры, бывшие ещё в 1995 году лее чем в полтора раза больше показа- до этого практически «уничтоживший»
«игрушками», будут прогрессировать теля за аналогичный квартал 1996 го- разработки HP/UX (вариант UNIX) и ра-
так быстро, – говорил аналитик Jupiter да. Генеральный директор Эд МакКра- бочих станций на её основе в компа-
Research Майкл Гартенберг. – Она поп- кен объявил о том, что работу потеряют нии Hewlett-Packard.
росту игнорировала Закон Мура». от 700 до 1000 сотрудников. Массовые
«Silicon Graphics была всеобщей увольнения сопровождались бегством Диверсант
любимицей, компания считалась «ко- и c более высоких постов. Так, вслед Первые же действия новоиспечённо-
ролём горы» рабочих станций, – гово- за Джимом Кларком компанию посте- го CEO, направленные на «улучше-
рил аналитик Dataquest Питер Фоул- пенно покинули президент Том Джер- ние финансовых показателей компа-
кис. – Но за своими «розовыми» очка- молак, управляющий дизайнерскими нии», не заставили себя ждать. В на-
ми она не заметила, как рынок с неве- разработками Alias/Wavefront Роберт чале 1998 года Silicon Graphics офи-
роятной скоростью меняется за её спи- Баргисс и исполнительный директор циально объявила о подписании со-
по международным финансовым опе- глашения с Microsoft, согласно кото-
рациям Гари Лаер. рому обе компании будут разрабаты-
Продажи рабочих станций компа- вать графический API под названи-
нии шли из рук вон плохо. Более де- ем Fahrenheit, представляющий собой
шёвые альтернативы из мира ПК стре- смесь DirectDraw, Direct3D и OpenGL
мительно догоняли продукцию Silicon и призванный «закончить войну стан-
Graphics по возможностям, а уж по со- дартов 3D-графики» в Windows. Од-
отношению цена/производительность нако Microsoft, параллельно с работой
давно вырвались вперёд. «Silicon над Fahrenheit, продолжала развивать
Graphics, по существу, вытесняли свой DirectX, нагло копируя в него все
из рынка, на котором она до недавних новшества из «Фаренгейта». Доказа-
пор была единственной, – говорил Гар- тельством этого может служить заяв-
тенберг. – Она продолжала разрабаты- ление одного из разработчиков DirectX,
вать рабочие станции класса high-end, прозвучавшее в августе 1998 года:
тогда как стандартные ПК к тому вре- «Direct3D представляет собой API, ко-
Рисунок 4. Графические суперкомпьютеры
Onyx2 мени уже обладали довольно хорошей торый в будущем будет наиболее сов-
90
конкурс
92
книжная полка
Eclipse IDE
Эд Барнет
лений». Основной упор сделан на рас- вает свое название. Из нее вы узнае-
смотрение инструментария для разра- те о CVS, Ant, платформе веб-инстру-
ботки приложений на Java. Из главы ментов, тестировании и производитель-
«Введение» вы узнаете общие сведения ности, визуальном редакторе, AspectJ,
о Eclipse, установке, запуске и обнов- разработке плагинов, платформе Rich
лении этого продукта. Во второй главе, Client. Завершает книгу глава «Получе-
с лаконичным названием «Верстак 101» ние помощи», в которой автор предо-
будет рассмотрен интерфейс и основ- ставил список источников, из которых
ные меню IDE Eclipse. Следом идет гла- можно получить помощь по IDE Eclipse.
ва «Java быстро», в которой написано о Замечательная во всех отношениях
процессе создания проекта, кодирова- книга – весь материал строго по делу,
нии, запуске программы, отладке, юнит- и без лишней воды. Если вы собирае-
тестирование, а также советы и хитрос- тесь, или уже работайте с Eclipse это
ти (помощник создания кода, шаблоны, издание станет вашим незаменимым
автоматический вход, рефакторинг, ги- спутником и помощником.
В настоящий момент Eclipse является перссылки, быстрое исправление, по-
одной из самых популярных интегри- иск, альбомные страницы, Java Build Издательство: «Кудиц-Образ»
рованных сред разработки. Этот про- Path, конфигурация запуска). Для того Год издания: 2006
дукт по праву завоевал любовь у тысяч чтобы не запутаться в множестве эк- Количество страниц: 160
людей по всем миру за свою простоту, ранов и панелей инструментов Eclipse, ISBN: ISBN 5-91136-007-1
функциональность, и, что не маловаж- в главе «Экраны» перечислены основ- Цена: ≈ 99 руб.
но, свободность. Несмотря на неболь- ные объекты. Содержание главы «Ко- Книга предоставлена издательством «Кудиц-
шой объем книги, автор позициониру- ротко о разном» полностью оправды- Образ».
ет её как «исчерпывающее руководс-
тво по Eclipse IDE без излишних отступ- Обзор книжных новинок подготовил Александр Байрак
Подписные
индексы:
20780*
81655**
по каталогу
агентства
«Роспечать»
87836
по каталогу
агентства
«Пресса
России»
*
годовой
**
полугодовой
94
подписка на 2006 год
Редакционная подписка
Открыта подписка через редакцию. Вы можете оформить
подписку на любое количество номеров 2006 года. Редак-
ция не высылает журналы за пределы Российской Феде-
рации.
Стоимость
подписки через
редакцию:
900* руб.
за 6 номеров
1800* руб.
за 12 номеров
* Включая НДС
и почтовую доставку
РЕДАКЦИЯ
ЧИТАЙТЕ
Исполнительный директор
Владимир Положевец В СЛЕДУЮЩЕМ
НОМЕРЕ:
Ответственный секретарь
Наталья Хвостова
sekretar@samag.ru
Технический редактор
Владимир Лукин
Редактор
Алексей Коршунов Современный Linux-сервер: мацию о различных событиях, про-
Внештатные редакторы виртуализация сетевых исходящих в системе. Например, ин-
Алексей Барабанов устройств формацию об ошибках приложений
Кирилл Тихонов В серверном эксплуатационном цикле или о попытках несанкционированно-
Валентин Синицын часто возникает потребность во все- го проникновения в сеть. Автоматиза-
возможных манипуляциях над сете- ция реакции на эти сообщения являет-
РЕКЛАМНАЯ СЛУЖБА выми подключениями в режиме on-line. ся важным элементом в обеспечении
тел./факс: (495) 628-8253
Переведя последние в категорию вир- бесперебойного функционирования
Евгения Тарабрина
туальных можно значительно упрос- всей сети. Конечно, каждый админис-
reсlama@samag.ru
тить их обслуживание и предусмотреть тратор, придя на работу, первым де-
Верстка и оформление многие внештатные ситуации. лом должен проверить протоколы сво-
maker_up@samag.ru их серверов, не произошло ли что-ни-
Дизайн обложки Как настроить будь в течение ночи или за выходные,
Николай Петрочук безопасный роутер и в случае необходимости принять со-
на базе FreeBSD ответствующие меры. Однако иногда
По вопросам распространения В этой статье мы рассмотрим вопросы такая реакция может оказаться запоз-
обращайтесь по телефону: безопасности FreeBSD, работающей в далой, особенно это касается попыток
(495) 628-8253 (доб. 120) качестве маршрутизатора между ло- осуществления несанкционированно-
кальной сетью и Интернетом. Говоря го входа в систему.
107045, г. Москва,
о безопасности в общем, мы постоян-
Ананьевский переулок, дом 4/2, стр. 1
тел./факс: (495) 628-8253 но возвращаемся к одному простому и Linux в школе?
Сайт журнала: www.samag.ru действенному правилу: все, что чело- Из всех сфер применения вычисли-
век создал, человек может и уничто- тельной техники наиболее интересной
РУКОВОДИТЕЛЬ ПРОЕКТА жить. И в вопросе безопасности опе- является использование Linux в сфе-
Петр Положевец рационных систем это правило неиз- ре образования. Конечно, сегодняш-
менно действует: ОС создал человек, няя ситуация с программами, ориен-
УЧРЕДИТЕЛИ следовательно, всегда найдется другой тированными на сферу образования,
Владимир Положевец человек, который сможет обойти ее за- еще далека от идеальной: программы
Александр Михалев щиту, какой бы мощной она не была. локализованы не полностью, нет стан-
дартного интерфейса, не хватает под-
ИЗДАТЕЛЬ
ЗАО «Издательский дом
Пишем систему готовленных специалистов и прочее.
«Учительская газета» динамической защиты Но главное, что общими усилиями про-
ресурсов сети цесс сдвинулся с места. И не исполь-
Отпечатано типографией Серверные журналы, проще говоря, зовать заложенный в Open Source по-
ГП «Московская Типография №13» протоколы, содержат в себе инфор- тенциал – просто преступление.
Тираж 11000 экз.
96