Вы находитесь на странице: 1из 98

№6(55) июнь 2007

подписной индекс 20780


www.samag.ru

Не допустите потери данных!

№6(55) июнь 2007


К вашим услугам
ленточная библиотека

Как настроить АТС Samsung:


первые шаги

Разворачиваем кластер
Microsoft Exchange

Строим сетевую инфраструктуру


для системы 1С:Предприятие

Антивирус+Антиспам Dr.Web
для почтовых серверов UNIX

Система анализа квот на базе


File Server Resource Manager

FreeBSD: особенности
сборки ядра

Тестируем дистрибутив
ALT Linux 4.0 Server
Так видит журнал читатель, который забыл оформить подписку:

ЛИ
С
ЛИ
ТЯ Е

Ж ПИ
ЗА ДНИ
НУ

РА КУ
ЛЫ ГО

ТИ РАС
КУ ВО

РО
НИ НО

СТ
БЫ
КА

И
ЬГ
ЬД О
РА СКА
ТЕ
К

ИС НН
ЕН
УС

БО
НА ТПУ

ИЛ ДА
ТП

НЧ ЖИ
ВО

РА Е О

КО ЕО
АВ СЛ
Л

Л
ХА

ЗА Н
ПО
УЕ
Так видит журнал читатель, оформивший подписку:

ПОДПИШИТЕСЬ И ЧИТАЙТЕ!
Роспечать – 20780, 81655
Пресса России – 87836
Интер-почта – тел. (495) 500-00-60
в номере
3 ТЕНДЕНЦИИ 50 ALT Linux 4.0 Server: что день грядущий
нам готовит?
РЕПОРТАЖ Тестируем новый серверный дистрибутив от компа-
нии ALT Linux. Дмитрий Шурупов
4 Конференция PHPCONF с каждым годом osa@samag.ru
становится успешнее
Итоги шестой международной конференции «Современ- ИНФОРМАЦИОННАЯ БЕЗОПАСНОСТЬ
ные технологии эффективной разработки веб-приложе-
ний с использованием PHP». Дмитрий Горяинов 54 Антивирус+Антиспам Dr.Web
dmitry.goryainov@gmail.com для почтовых серверов UNIX
Когда начинаешь тонуть под наплывом спама и виру-
6 Open Source вновь в центре внимания сов, хватаешься за каждую соломинку... Но зачем по-
на Interop Moscow лагаться на соломинку, когда к вашим услугам насто-
Во второй раз в Москве прошла международная вы- ящий спасательный круг? Сергей Супрунов
ставка-конгресс информационных технологий для биз- amsand@rambler.ru
неса Interop Moscow 2007. Как и в прошлом году, одной
из ключевых тем обсуждения стало программное обес- IP-ТЕЛЕФОНИЯ
печение с открытым кодом. Дмитрий Шурупов
osa@samag.ru 56 Развертываем корпоративную
телефонную сеть на основе технологии
АДМИНИСТРИРОВАНИЕ VoIP. Часть 1
Даже простая настройка АТС Samsung – занятие весьма
8 FreeBSD: некоторые особенности нетривиальное. Программа-конфигуратор чрезвычайно
сборки ядра неудобна и весьма недружественна. Опыт Рашида Ачи-
Сборка собственного ядра на сервере – это почти обя- лова поможет освоиться с основами программирования
зательный ритуал для каждого системного админист- АТС Samsung немножко быстрее. Рашид Ачилов
ратора. Сегодня мы расскажем о том, как это делать achilov-rn@askd.ru
быстрее и эффективнее. Сергей Супрунов
amsand@rambler.ru ЧЕЛОВЕК НОМЕРА
12 Не допустите потери данных! 64 СМИ уровня 2.0
Ленточная библиотека к вашим услугам Благодаря аналитику Михаилу Елашкину я решила
Руководство по созданию системы резервного копи- стать представителем этого вида средств массовой
рования. Виталий Банковский информации. Оксана Родионова
smartcgi@gmail.com rodion@dol.ru

22 Доступ к Active Directory с помощью WEB


прилинкованного SQL-сервера
Скорость получения данных из AD с помощью штатных 68 Система аутентификации
средств в сценарии оставляет желать лучшего. Одно веб‑пользователей WebAuth
из решений проблемы – использовать прилинкован- Как обеспечить надежность аутентификации пользо-
ный SQL-сервер. Иван Коробко вателей. Сергей Яремчук
ikorobko@prosv.ru grinder@ua.fm

28 Разворачиваем кластер ПРОГРАММИРОВАНИЕ


Microsoft Exchange
Один из наиболее распространенных способов обес- 76 Организуем доступ к базам данных
печить отказоустойчивость сервиса электронной поч- при разработке кроссплатформенных
ты – кластер Microsoft Exchange. Андрей Бирюков приложений на C++/wxWidgets
mex_inet@rambler.ru Написание кроссплатформенных приложений на C++,
использующих для своей работы базы данных, не явля-
34 Строим сетевую инфраструктуру ется непосильной задачей. Владимир Тряпичко
для системы 1С:Предприятие t-rex@mail.zp.ua
Пред лагаем решение на базе с ервера терми -
налов в Windows Server 2003 с использованием РЕТРОСПЕКТИВА
2X ApplicationServer. Сергей Алаев
alaev777@mail.ru 86 Судебные войны: оберегай своё,
не посягай на чужое. Часть вторая –
40 Система анализа квот на базе программная
File Server Resource Manager Так уж повелось, что, в отличие от мира аппаратного
В Windows Server 2003 RC2 появился инструмент, поз- обеспечения, судебные разбирательства между ком-
воляющий назначать квоты на использование дис- паниями, занимающимися разработкой программных
кового пространства серверов – File Server Resource продуктов, проходят намного ожесточённее, да к тому
Manager. Иван Коробко же длятся значительно дольше. А уж суммы результи-
ikorobko@prosv.ru рующих штрафов и вовсе сводят с ума. За примерами
далеко ходить не надо. Дмитрий Мороз
46 Vyatta – Linux-дистрибутив для роутеров akuji@list.ru
Компания Vyatta анонсировала вторую версию разраба-
тываемого ею дистрибутива, позволяющего превратить 92 КНИЖНАЯ ПОЛКА
обычный ПК в маршрутизатор. Сергей Яремчук
grinder@ua.fm 74, 75 BUGTRAQ
№6, июнь 2007 
сисадми оже человек
тенденции
Открыт код Open Sound System Canonical (Ubuntu) и Mandriva объявили о том, что не же-
14 июня компания 4Front Technologies, разработчик Open лают обсуждать с Microsoft вопросы возможного заклю-
Sound System (OSS), системы поддержки аудио для UNIX чения лицензионных соглашений.
и Linux, открыла доступ к исходному коду продукта. «Полагаясь на то, что нам удалось наблюдать, в дого-
На «информационном сайте для разработчиков» Open воре мы не заинтересованы. Мы продолжаем верить в то,
Sound System (http://developer.opensound.com/sources) по- что Open Source и его инновации не должны быть пред-
явился исходный код OSS под лицензиями GNU GPLv2 метом для необоснованных и непонятных поборов», – со-
(для Linux) и CDDL 1.0 (для Solaris, *BSD). Такое разде- общила Лэй Дэй (Leigh Day) из компании Red Hat.
ление было сделано специально, поскольку авторы счи- Марк Шаттлворт (Mark Shuttleworth), глава компании
тают, что GPL может оказаться неприемлемой для сооб- Canonical Ltd, занимающейся поддержкой Ubuntu Linux,
ществ сторонников лицензии BSD. Не допускается сме- высказал схожую позицию. Он заявил об «отказе от об-
шивания файлов из пакетов Open Sound System с раз- суждения любых договоров с Microsoft под угрозой не-
ными лицензиями. понятных патентных нарушений», добавив, что не видит
Исходный код Open Sound System теперь также до- никакой необходимости защищать пользователей Ubuntu
ступен и для закрытых операционных систем вроде SCO от подобных сомнительных притязаний Microsoft.
UnixWare/OpenServer, однако пользователям этих ОС Франсуа Бансильон (Francois Bancilhon), исполнитель-
для легального использования OSS необходимо купить ный директор Mandriva, так прокомментировал происхо-
коммерческую лицензию от 4Front Technologies. дящее в своем блоге:
«... Не было ни одного конкретного доказательства
Solaris может привести Linux к GPLv3 того, что Linux и приложения с открытым кодом наруша-
В своем сообщении в почтовую рассылку для Linux-раз- ют какие-либо патенты. Поэтому мы считаем, что, как
работчиков Линус Торвальдс (Linus Torvalds), автор яд- и при любой демократии, люди не виновны, пока их ви-
ра Linux, говорит о том, что ОС Solaris может иниции- на не доказана, и мы можем продолжать добросовест-
ровать переход Linux-ядра на новую готовящуюся вер- но работать.
сию лицензии на свободное программное обеспечение Так что мы не видим необходимости в том, чтобы по-
– GNU GPLv3. лучать прикрытие от Microsoft для выполнения работы
«Если Sun действительно собирается выпустить или платить за подобную защиту кому-либо».
OpenSolaris под GPLv3, это может стать хорошей при-
чиной» для перехода Linux на новую лицензию, заявил Составил Дмитрий Шурупов
по материалам www.nixp.ru
Торвальдс.
«Не думаю, что GPLv3 – такая же хорошая лицензия,
как и GPLv2, но, с другой стороны, я прагматик, и если мы
можем избежать ситуации с существованием двух ядер,
распространяющихся под разными лицензиями, и с вы-
званными этим разногласиями, я по крайней мере вижу
причину для перехода на GPLv3», – пояснил свою пози-
цию главный разработчик Linux-ядра.
До этого Торвальдс уже выражал свое недовольство
новой версией лицензии GNU GPL, однако после появ-
ления последнего чернового варианта GPLv3 стал луч-
ше относиться к этому проекту. Несмотря на это, сам он
до сих пор отдает предпочтение GPLv2.

Патентные угрозы Microsoft


разделили мир Open Source
В середине мая Брэд Смит (Brad Smith) из Microsoft «на-
помнил», что программное обеспечение с открытым ко-
дом в совокупности нарушает 235 патентов его корпо-
рации. При этом никакой конкретной информации о том,
что именно нарушается, не сообщалось.
Вскоре Microsoft, руководствуясь опытом заключе-
ния сделки с Novell, удалось достичь договоров о сотруд-
ничестве с другими Open Source-поставщиками, среди
которых оказались Xandros и Linspire. При этом осно-
вой новых договоров стало обеспечение корпорацией
Microsoft своим «союзникам» защиты от возможных па-
тентных проблем.
Другие же производители Linux-дистрибутивов отре-
агировали обратным образом. Представители Red Hat,

№6, июнь 2007 


репортаж
ко, ведущий программист Red Graphic

Конференция PHPCONF
Systems, взял на себя нелегкую долю
быть первым, выступил с докладом
«Практика разработки корпоратив-
ных веб-приложений-2007». Несмотря

с каждым годом на слегка обобщенный характер подан-


ного материала, выступление Дмитрия
получилось довольно живым и энергич-

становится успешнее ным. Он сумел поговорить и о совре-


менных тенденциях в интернет-реше-
ниях, и об их приложении к системам
масштаба предприятия.
Павел Шевелев, основатель проекта
http://agiledev.ru, посвященного методам
гибкой разработки ПО, и ведущий раз-
работчик проекта Limb (http://limb‑project.
com), предложил залу в качестве допу-
щения вопрос о том, что было бы, ес-
ли бы мы с вами жили в идеальном ми-
ре, повел речь об аспектно-ориентиро-
ванном программировании (АОП) в PHP.
Боюсь, что этот допуск об «идеальном
мире» несколько потерялся из виду.
Слушатели так увлеклись, что, кажет-
ся, испытали некоторое разочарова-
ние от прозвучавших под конец про-
блемах с практическим использовани-
ем. А зря. Стоит пояснить, что концеп-
ция АОП применительно к PHP-плат-
форме пока находится ближе к уровню
модели, чем к практической примени-
мости. И сама концепция АОП требует
24-25 мая в Москве прошла 6-я международная
несколько иного подхода к разработке
конференция «Современные технологии эффективной проектов с тем, чтобы приложение ас-
разработки веб-приложений с использованием PHP». пектов было оправданным.
В качестве места проведения на этот раз был выбран Сергей Антонинко, технический ди-
конференц-зал ММТС-9, известной как «М9». ректор Umisoft (http://umisoft.ru), одного
из спонсоров конференции, прочитал

П
о доброй традиции организа- Лицом к залу, один из самых доходчивых докладов
торы конференции: меж ду- день первый о применении технологии memcache.
народный к луб разработчи- Во вступительном слове Александр Части слушателей доклад показался
ков PHPCLUB (http://phpclub.ru), спе- Смирнов (основатель http://phpclub.ru слишком простым, но лично мне эта вы-
циализированный учебный центр в и активный участник движения за ка- бранная докладчиком простота изло-
области современных IT и веб-тех- чественное веб-программирование жения материала показалась достой-
нологий PHPCenter (http://phpcenter. и повышение квалификации разработ- ной всяческого уважения.
ru) и электронный журнал для веб- чиков) развил тему непринужденного Следующего докладчика зал встре-
разработчиков PHP{INSIDE} (http:// общения в рамках конференции. По- тил овациями, ибо на сцене появился
phpinside.ru) в очередной раз поста- мимо официальной части, организато- автор веб-сервера nginx Игорь Сысо-
рались превзойти самих себя. В отли- ры предложили участникам в переры- ев. Доклад Игоря был посвящен раз-
чие от множества широко рекламиру- вах между докладами живое общение работке модулей под nginx. Послушать
емых конференций, PHPCONF по-пре- с экспертами и докладчиками в форма- советы по этой теме от самого автора
жнему сохраняет атмосферу дружес- те флипчартов. Такой вариант нефор- сервера удается нечасто и чрезвычай-
кой компании и определенную непри- мального общения оказался очень удач- но полезно. Правда, лично меня жда-
нужденность. ным. Настолько, что иногда организато- ло некоторое разочарование: отло-
Так, вместе с дежурным комплек- ры были вынуждены настоятельно про- вив Игоря после доклада в кулуарах,
том раздаточных материалов каждый сить участников вернуться в зал и пос- я не мог удержаться от вопроса о том,
из участников в этот раз получил… не- лушать, наконец, следующий доклад. можно ли в принципе заставить nginx
большую подушечку с логотипом кон- Чем же «потчевали» в официаль- работать с разными location от раз-
ференции. но-докладной части? Дмитрий Шей- ных пользователей? И увы, мне при-


репортаж
шлось услышать четкое «нет» от ав-
тора. А жаль, жаль.
После такого серьезного погруже-
ния в серверную часть нам всем предло-
жили взглянуть на интернет-технологии
с другой стороны. Андрей Иванников ре-
шил оживить вечную тему «PHP & Flash,
новая альтернатива для создания Rich
Internet Applications». Вообще тема Flash
и всего с ним связанного подается как
«новая альтернатива» уже лет так пять,
и лично мне иногда напоминает старый
анекдот, где смеяться надо после слова
«лопата». Но именно к докладу Андрея
Иванникова это не относится. На этот
раз речь шла об Adobe Flex2. Это реше-
ние, родственное и основанное на Flash,
прежде всего ориентировано на про-
ектирование интерфейсов, способных
Представитель компании MySQL ведет демонстрацию работы целого кластера MySQL NDB
«прокручиваться» на клиенте при по- на одном ноутбуке
мощи уже традиционного Flash Player
и взаимодействовать с приложениями является сейчас чуть ли не единствен- ное, найдется ли ей место не в специ-
на стороне сервера. Доклад, по-моему, ным мантейнером постепенно заменя- фических или ориентированных на IT-
получился вполне конкретным и имею- емой 4-й версии PHP. Доклад «Раскры- специалистов проектах, а в массе?
щим практическую ценность не толь- вая секреты PHP, или Как все работает Два взгляда на традиционное вза-
ко для поклонников интернет-мульти- внутри» прежде был интересен не толь- имодействие через формы были пред-
пликации. ко оценкой применимости и выгоды ис- ставлены в докладах Александра Вла-
Еще один «взгляд с другой стороны» пользования оптимизаторов, но также димировича Анохина, начальника бю-
представил главный редактор элект- затронул механизмы и особенности по- ро экспертизы интернет-проектов
ронного журнала PHP{INSIDE} Андрей ведения интерпретатора. ОАО «АвтоВАЗ», и Дмитрия Котеро-
Олищук. Назвав свой доклад «Практи- В этом году главным спонсором ва, наверное, более всего известного
ка независимой веб-разработки», Анд- конференции выступила компания как автора книг «Самоучитель PHP4»
рей постарался втиснуть в отведенные Microsoft. А ее полномочным предста- и «PHP». Еще одним практичным до-
регламентом рамки довольно объем- вителем на конференции стал Дрю кладом стал доклад того же Анохина
ную сагу о том, что же такое и как оно Роббинс (Drew Robbins) – эксперт о применении служб LDAP.
быть автономным freelance? Надо от- по технологиям разработки програм-
дать Андрею должное: очень четко от- много обеспечения. Успокоив соб- Лучше, чем другие
ставив в сторону типичную подработку, равшихся заявлением о том, что нет, Что же можно сказать в завершение?
время от времени он говорил о реалиях Microsft не планирует поглощать Zend PHPCONF продолжает сохранять ат-
работы «частного специалиста fulltime». Corporation и подменять PHP на какой- мосферу непринужденного клубного
С чем приходится сталкиваться, какие нибудь Visual PHPScript, м-р Роббинс общения, выгодно отличаясь от кон-
нюансы учитывать, как организовывать в очень изящной манере устроил по- ференций формата «кто есть кто».
свою работу и свои взаимоотношения казательную демонстрацию исполь- При этом уровень представительства,
с заказчиком? зования PHP под управлением MS IIS 7. формат проведения и уровень докла-
Пишу это без всякой иронии, посколь- дов каждый раз приятно удивляют. Ве-
День второй, ку конфигурационные возможности ликолепная идея флипчартов, предло-
продолжая традиции и умение подхватывать изменение на- женная и успешно реализованная ор-
Следующий день конференции был строек на лету в новой версии сервера ганизаторами, оставила только одно
в чем-то проверкой организаторов интернет-приложений от Microsoft дейс- ощущение: да, именно так и надо про-
на прочность. Заполучив в прошлом твительно произвели впечатление. водить конференции для разработ-
году в качестве гостей и докладчиков После такой усиленно-показатель- чиков. Два (а для участников мастер-
самого автора PHP Расмуса Лердорфа ной международной части конферен- классов – все пять) дня полного погру-
(Rasmus Lerdorf ) и такую яркую фигу- ция плавно вернулась на круги своя, жения в среду активного обсуждения
ру в PHP Core Team, как Андрей Зми- к обсуждению технологий. и обмена мнениями оставили очень
евский (Andrei Zmievski), организаторы Прозвучал доклад о микроформа- позитивные ощущения. Так держать,
в этом году выставили в роли пригла- тах. Да, семантика в разметке должна и до встречи в следующем году!
шенной знаменитости маститого Дери- рано или поздно прийти и проявиться.
ка Ретанса (Derick Rethans). Помимо то- Но насколько она может найти практи- Текст: Дмитрий Горяинов,
го что Дерик – автор Xdebug, он по сути ческое применение уже сейчас? И глав- фото: Сергей Чеперис

№6, июнь 2007 


репортаж

Open Source вновь в центре внимания


на Interop Moscow
30 и 31 мая в Москве, в комплексе «Форум Холл», во второй раз прошла международная
выставка-конгресс информационных технологий для бизнеса Interop Moscow 2007. Как и
в прошлом году, одной из ключевых тем обсуждения стало программное обеспечение
с открытым кодом.

Open Source Forum @ 1. Программное обеспечение с откры- 6. Альтруизм не служит единствен-


Interop тым кодом появилось раньше про- ным мотивирующим фактором для
Все мероприятия, посвященные про- приетарного. Здесь следует разде- создания Open Source. Хотя бы по-
граммному обеспечению с откры- лять Open Source и Free Software: тому, что многие разработчики ПО
тым кодом, были проведены в рамках последнее появилось намного поз- с открытым кодом используют его
«Третьего форума по открытому коду» же (организация Ричарда Столлма- в своей профессиональной де-
(III Open Source Forum), который прохо- на Free Software Foundation старто- ятельности.
дил в течение первого дня Interop. вала лишь в 1985 году). 7. Online-сообщества действитель-
Если на Interop 2006 были такие 2. Проекту Apache удалось сохранить но могут решать конкретные зада-
видные мировые деятели Open Source, свободу глобальной сети Интер- чи. Несмотря на то что такое меж-
как Йон Холл (Jon «maddog» Hall), Ян нет. Потому что на начальных эта- дународное сотрудничество быва-
Мердок (Ian Murdock), Виетс Винема пах его разработки существовала ет склонно к хаосу, этот подход за-
(Wietse Venema) и Марк Спенсер (Mark опасная вероятность, что какому- частую способствует эффектив-
Spencer), то и в этом году состав зару- нибудь одному поставщику удастся ным разработкам.
бежных гостей не разочаровал. Сре- стать мировым диктатором в этой 8. Самая важная свобода – возмож-
ди них были: области, имея в своем распоряже- ность ответвления (fork), создания
n Б р а й е н Б е л е н д о р ф ( B r i a n нии доминирующий набор базовых собственной версии того или ино-
Behlendorf), один из родоначаль- интернет-приложений: веб-браузер го Open Source-продукта на базе
ников веб-сервера Apache, ныне и сервер. опубликованного кода.
технический директор CollabNet; 3. Проект OpenSSL обеспечил всеоб- 9. Open Source все еще может из-
n Льюис Суаре-Поттс (Louis Suarez- щую доступность криптографии. менить мир. В качестве примеров
Potts), старший менеджер сообщес- 4. ПО с открытым кодом помогло были приведены проект дешевых
тва OpenOffice.org (с 2000 года); сохранить свободу генома чело- ноутбуков для детей в развиваю-
n Эрик Олман (Eric Allman), автор века. Благодаря усилиям одно- щихся странах OLPC (One Laptop
Sendmail. го Perl-программиста был опуб- Per Child) и развернувшаяся борь-
ликован исходный код скрипта, ба с технологиями управления ав-
Из наших соотечественников мож- реализующего сложные матема- торскими правами (DRM).
но выделить присутствие Алексея тические расчеты над необрабо- 10. Программное обеспечение с от-
Смирнова и Алексея Новодворского танными данными, необходимы- крытым кодом нуждается в вашей
из компании ALT Linux, Александра Да- ми для установления последова- помощи (и не важно, кто вы). При-
выдова из NAUMEN. тельности генов человека. Иначе зыв достаточно всеобъемлющий:
эта процедура была бы
Ключевой доклад запатентована коммер-
Белендорфа ческим консорциумом
Брайен Белендорф – не только один Celera.
из авторов самого распространенно- 5. Microsoft любит Open
го веб-сервера, но и заметная фигу- Source. Автор сослал-
ра в сообществе Open Source (http:// ся на известный факт
en.wikipedia.org/wiki/Brian_Behlendorf). о том, что MS заимство-
Поэтому именно он и открыл Open вала для Windows код
Source Forum @ Interop, выступив с до- TCP/IP от разработчиков
кладом «10 вещей об Open Source, ко- из Беркли, а также на ее
торых вы могли не знать». сотрудничество с такими
Основные моменты, которые до- Open Source-проектами,
кладчик обозначил в сообщении, та- как MySQL, SugarCRM
ковы: и JBoss. Льюис Суаре-Поттс


репортаж
используйте Open Source, участвуйте
в разработке, сообщайте о найденных
ошибках, помогайте с переводом ин-
терфейсов и документации...

Интервью с зарубежными
гостями
За ключевым докладом последова-
ло общение трех иностранных Open
Source-гуру с публикой. В качестве ве-
дущего «интервью» выступал Дмитрий
Дмитриев из отечественной компании
Линукс Инк.
Им и были заданы несколько пер-
вых вопросов. В частности, он спро-
сил у гостей, почему Open Source-про-
екты обычно занимают позицию дого-
няющего, заимствуя инновации у про-
приетарных аналогов. Ни один из гуру
не смог согласиться с такой позицией. Участники мероприятия «К барьеру!»
В том числе и Суаре-Поттс – несмотря
на настойчивые утверждения Дмитри- ной стороны – Владислав Шершуль- Некоторое время было отведено
ева, что OpenOffice.org появился пос- ский, Владимир Мамыкин (Microsoft), на вопросы из зала, где особенно от-
ле Microsoft Office, вобрав в себя мно- Андрей Федоров (Digital Design), с дру- метился профессор В. А. Каймин, ны-
гие его черты. гой – Алексей Смирнов, Алексей Но- не занимающийся юриспруденцией.
Среди затронутых общественнос- водворский (ALT Linux) и Александр Начав с вопросов по проблемам па-
тью проблем запомнился вопрос о том, Давыдов (NAUMEN). Представители тентования, он в результате изрядно
как привлечь разработчиков к начина- каждого «лагеря» поочередно выска- развлек публику продолжительными
ющему Open Source-проекту. зывали свое мнение по тому или ино- и зачастую юмористичными коммен-
Здесь отличился Белендорф, лако- му вопросу, что в сумме формирова- тариями.
нично ответивший, что подобные ини- ло объективный взгляд. «Модерато-
циативы обречены на гибель, поэтому ром» же был автор этой статьи – Дмит- Open Source в «театре»
не стоит их даже пытаться начинать. рий Шурупов. После обеда была проведена заклю-
Аргументируя эту позицию, он доба- Само обсуждение началось после чительная секция, посвященная про-
вил, что перед тем как создавать Open уточнений в терминологии. Так, участ- граммному обеспечению с открытым
Source-проект, полезно предваритель- ники условились понимать под ПО с от- кодом: «Open Source-проекты в теат-
но ознакомиться с уже существующи- крытым кодом его традиционное опре- ре Interop».
ми и помочь одному из них. В ином слу- деление «Open Source Definition». Пер- С получасовыми докладами вы-
чае мир программного обеспечения вой предложенной темой для дискус- ступили все зарубежные гости (Суа-
с открытым кодом будет расти в коли- сии стала обоснованность примене- ре-Поттс, Белендорф, Олман) и Алек-
чественном, но не качественном от- ния программного обеспечения в го- сей Смирнов.
ношении. сударственном секторе. Вместе с тем
На протяжении всей дискуссии Су- была затронута и проблема выбора на- Общие впечатления
аре-Поттс активно призывал публи- иболее приемлемых решений для об- Interop Moscow вновь примечателен
ку присоединяться к проектам Open разования. тем, что смог предоставить желающим
Source, чем наглядно подтверждал Затем участники перешли к об- возможность послушать видных деяте-
не только свой статус в OpenOffice.org, суждению программного обеспече- лей сообщества Open Source и пооб-
но и десятый пункт ключевого докла- ния, используемого в сферах, связан- щаться с ними. При этом стоит особен-
да Белендорфа. ных с национальной безопасностью. но отметить значительные улучшения
Сторонники Open Source выразили в отношении последнего – интерактив-
«К барьеру!» мнение, что открытие исходного кода ности действа. Все это вкупе с тради-
Следующее мероприятие – «К барье- Microsoft для определенных служб са- ционно высоким уровнем организации
ру!», анонсированное как «Сторонни- мо по себе недостаточно, потому что оставило приятные впечатления. Хоро-
ки и противники открытого кода встре- это не позволяет вносить какие-либо ший повод ждать продолжения мероп-
чаются на ринге», – было проведено модификации в существующий код. риятий, проводимых в рамках Interop,
в формате, близком к тому, что мож- Соответственно такая «открытость» в следующем году.
но наблюдать в одноименном телеви- не удовлетворяет необходимым усло-
зионном шоу. Разве что оно было про- виям обеспечения настоящего уровня Текст: Дмитрий Шурупов,
ведено как «командная игра». С од- безопасности. фото: Татьяна Афанасенко

№6, июнь 2007 


администрирование

FreeBSD: некоторые особенности


сборки ядра

Сергей Супрунов

Сборка собственного ядра на сервере – это почти обязательный ритуал для каждого
системного администратора. Сегодня мы поговорим о том, как это делать по возможности
быстро и эффективно.


администрирование
Плюсы и минусы
«стандартного» подхода Пара советов Это позволяет сохранить текущий кон-
Информацию о том, как собирать собс- Хотя эти советы не оказывают непосредс- фигурационный файл в самом ядре (в дво-
твенное ядро, можно найти практичес- твенного влияния на размер или скорость ичном файле). Несколько лишних килобайт
ки в любой книге, посвящённой сис- сборки ядра, но при частых его пересбор- проблемой не станут, зато если вы вследс-
теме FreeBSD. Естественно, есть она ках могут несколько упростить жизнь. твие печального стечения обстоятельств
и в официальной документации (в час- Если вы постоянно (или преимущес- потеряете конфиг, на основе которого со-
тности, см. Handbook), так что не будем твенно) работаете с одним конфигура- биралось ядро, то всегда сможете его вос-
останавливаться на этом вопросе. ционным файлом ядра, то чтобы каждый становить, используя команду strings, вы-
В конфигурационном файле яд- раз не вводить в командной строке опцию бирающую из двоичного файла строковые
ра в первую очередь по устоявшей- «KERNCONF=MYKERN», укажите эту оп- фрагменты:
ся традиции отключают все «лиш- цию в файле /etc/make.conf. Правда, не за- # cd /boot/kernel
ние» устройства. Действительно, ка- бывайте после этого явно указывать файл # strings -n 3 kernel | ↵
sed -n 's/^___//p'
кой смысл собирать в ядре поддержку GENERIC, если захотите пересобрать яд-
сетевых карт USB или SCSI-дисков, ес- ро по умолчанию. Перенаправив вывод в файл и немно-
ли их в сервере нет и в ближайшие го- Иногда бывает, что рабочее ядро ос- го подчистив при необходимости (к сожале-
ды не планируется? Так что, добавляя таётся, но его конфигурационный файл нию, последовательность из трёх символов
поддержку пакетного фильтра или квот, безвозвратно теряется. Конечно, составле- подчёркивания, идентифицирующая стро-
практически любой системный адми- ние конфигурации с нуля – лучший способ ки сохранённой конфигурации, встречает-
нистратор заодно пробегает и по строй- навести в ядре порядок. Однако не всег- ся и в других местах ядра; как правило, та-
ным рядам device-строк, безжалостно да на это есть время и силы. Для подстра- кой «мусор» появляется в самом начале по-
расставляя комментарии перед теми, ховки можно добавить в конфигурацион- лученного вывода), вы получите исходную
которые выглядят подозрительно. ный файл ядра такую строку: конфигурацию, и даже со всеми коммента-
Но одной из особенностей сбор- options INCLUDE_CONFIG_FILE риями, которые там были изначально.
ки ядра во FreeBSD является то, что,
даже закомментировав в конфигура- бот? А зачем нужна поддержка NTFS, n На совместимости с предыдущи-
ционном файле строку, отвечающую Ext2/3, Reiserfs и прочих, если единс- ми версиями (опции COMPAT_*),
за то или иное устройство или опцию, твенной системой была, есть и будет на мой взгляд, лучше не экономить.
вы всё равно получите их поддержку FFS (ну, может, ещё ZFS через годик- Впрочем, если очень хочется, мож-
в виде модуля. То есть драйвер ред- другой, когда притрётся), поскольку но поэкспериментировать и в этом
ко используемого устройства не будет разводить «зоопарк» на боевом шлю- направлении.
постоянно занимать место в оператив- зе не придёт в голову даже самому отъ- n INET6 в ближайшие месяцы вы со-
ной памяти, но при необходимости его явленному экспериментатору? бираетесь использовать? Вряд ли.
всегда можно подгрузить. Понятно, что всё лишнее будет не- n Списки доступа (UFS_ACL)? Вещь
Но есть здесь и небольшой недо- пременно из конфигурации ядра ис- полезная, но не везде – не думаю,
статок – время на сборку модулей бу- ключено. Только вот, как уже упомина- что на интернет-шлюзе или DNS-
дет всё равно потрачено. И зачастую лось выше, всё, что не указано в кон- сервере нельзя будет обойтись
даже небольшое изменение конфигу- фигурации, по-прежнему будет соби- стандартными правами доступа.
рации ядра требует нескольких часов раться в виде модулей. То есть ждать n NFS, MSDOSFS, CD9660 на серве-
на пересборку, особенно на не слиш- придётся столь же долго... Впрочем, ре часто используете? Если нет –
ком мощном «железе». Как правило, можно и не ждать! долой из ядра, хватит и поддержки
особых проблем это не создаёт (за- Попробуем минимизировать не в модуле... Хотя, с другой стороны,
пустил сборку и пошёл обедать; да и только ядро, но и время, затрачивае- наличие этих опций будет не слиш-
на вопрос начальства «Чем занима- мое на его сборку. Для начала по тра- ком обременительно для системы,
ешься?» всегда можно честно ответить: диции уберём лишнее. зато вероятность столкнуться с про-
«Ядро собираю»). Однако иногда «жаба Например: блемами при работе с CD- и Flash-
душит», когда десятки минут созерца- n Определитесь с нужным семейс- дисками несколько уменьшится.
ешь процесс сборки чего-то, что никог- твом процессоров. Как минимум, n В принципе на боевом сервере
да на сервере не понадобится... Попы- i486 сейчас уже мало где остались, можно исключить и средства от-
таемся решить эту проблему. и совсем необязательно загромож- ладки, особенно если для тести-
дать ядро кодом поддержки оного. рования есть отдельная машина,
Ничего лишнего! n PROCFS, а с ней и PSEUDOFS в ря- где в случае необходимости мож-
Допустим, вам нужно пересобрать яд- де случаев можно безболезнен- но будет воспроизвести проблем-
ро на сервере. А действительно ли не- но отключить. Некоторые утили- ную ситуацию и «снять» нужные
обходимы здесь модули поддержки ты (преимущественно отладочно- дампы.
звуковых карт? А как насчёт USB, если го характера, такие как truss) мо-
из оборудования здесь – четыре сете- гут требовать поддержки PROCFS, С имеющимися у вас устройствами,
вых карты в PCI-слотах да CD-привод но в большинстве случаев можно думаю, сами разберётесь (не забывай-
для аварийно-восстановительных ра- обойтись и модулем. те только про устройство miibus, требу-

№6, июнь 2007 


администрирование
емое для работы некоторых сетевых вам нужны, а какие нет. Также нужно бы обновить «подсказки» ядру, где и
карт; его исключение – довольно рас- учитывать, что таким образом можно какие модули искать. Хотя обычно эта
пространённая ошибка). Я обычно в яд- очень легко привести систему в не- команда автоматически запускается
ро включаю то, что работает постоян- работоспособное состояние, поэтому при выполнении цели install. Собрать
но. То, в чём необходимость возникает проверьте сначала по kldstat, какие же все модули вручную можно, выполнив
сравнительно редко, проще оставить модули используются системой в раз- команду make all install в каталоге /usr/
модулем. Это же правило я применяю личных режимах работы, чтобы ниче- src/sys/modules.
и к различным опциям (например, под- го не забыть. Ну и несколько раз поду- В дополнение к MODULES _
держку пакетных фильтров как-то при- майте – а правда ли вы сможете жить OVERRIDE есть опция WITHOUT_
вык «вкомпилировать» в ядро). Впро- без звука на своём боевом сервере? MODULES, которая позволяет исклю-
чем, это только моё мнение. чить сборку конкретных, указанных
Если подходить к этому вопросу Make.conf вам в помощь в ней модулей (из тех, что останут-
более детально, то следует учитывать, Если характер работы сервера таков, ся для сборки после применения оп-
что использование модулей обеспечи- что список модулей, которые могут по- ции MODULES_OVERRIDE). Особого
вает дополнительную гибкость (вы ди- надобиться, практически не меняется смысла разрешать определённые мо-
намически можете подгружать нужные (частный случай – полное отсутствие дули в MODULES_OVERRIDE и тут же
модули, например, в случае добавле- модулей, если вы привыкли работать исключать часть из них в WITHOUT_
ния нового оборудования). С другой исключительно с монолитным ядром), MODULES нет. Но если не использо-
стороны, каждый модуль – это допол- то параметр MODULES_OVERRIDE вать MODULES_OVERRIDE, то с по-
нительные структуры в памяти плюс можно задать в файле /etc/make.conf – мощью WITHOUT_MODULES можно
дополнительное время на «стыковку» это значение будет оказывать влияние исключить те модули, которые заве-
при загрузке. Впрочем, объёмы требуе- на все собираемые ядра. Таким обра- домо не нужны (например, драйверы
мой памяти не слишком велики по сов- зом, есть два пути жёстко задать спи- звуковых карт), но при этом выполнить
ременным меркам, да и затраты вре- сок модулей – в make.conf, если все ва- сборку всего остального «на всякий по-
мени пренебрежимо малы (тем более ши ядра должны будут использовать жарный случай».
на серверах, где загрузка – не самая один и тот же набор модулей, и в кон-
частая операция). Так что вопрос лежит, фигурационном файле ядра (опция Несколько
скорее, в плоскости личных предпоч- makeoptions MODULES_OVERRIDE), предостережений
тений. Иногда рассматривается так- если для каждого ядра необходимо напоследок
же аспект безопасности (можно соб- (или желательно) задавать свой на- Если вы используете модули, но ре-
рать монолитное ядро и полностью за- бор модулей. шили не пересобирать их каждый раз
претить от греха подальше загрузку Есть более кардинальный путь – оп- вместе с ядром, внимательно следи-
модулей, скажем, в результате пере- ция NO_MODULES в том же make.conf те за тем, влияет ли исправление тех
вода системы на securelevel 1 или вы- позволяет вообще отключить сбор- или иных критических ошибок на ваши
ше), но здесь мы не будем вторгать- ку модулей при сборке ядра. Опция модули – не исключена ситуация, что,
ся в эту тему. MODULES_WITH_WORLD оставля- скрупулёзно выполнив все предписа-
С этим, думаю, всё понятно. А как ет вам шанс – при её наличии моду- ния из рассылки freebsd-security, вы на
влиять на то, какие модули должны ли будут собираться, но не с ядром, самом деле останетесь с открытой уяз-
быть собраны? В конфигурацию яд- а с «миром» (во время выполнения вимостью в модуле, который не пере-
ра можно добавить удобную для таких команды make buildworld). Посколь- собирался вместе с ядром.
случаев опцию: ку сборка всей системы выполняется И не забывайте, экспериментируя
сравнительно редко (при обновлении с ядром, оставлять пути отступления,
makeoptions MODULES_OVERRIDE='cd9660 ↵ системы да изредка при устранении копируя работоспособное ядро в от-
netgraph nfsserver nfsclient'
той или иной ошибки, оказывающей дельный каталог. Это позволит вам
При наличии такой строки модуля- влияние на многие подсистемы ОС), в случае проблем загрузиться с пре-
ми будут собраны только поддержка а пересборка ядра не всегда требует жним ядром, разобраться в проблеме
CD9660 (вдруг когда-нибудь понадо- перекомпиляции всех модулей, то оп- и устранить допущенные ошибки. Так-
бится CD-диск подмонтировать), NFS ределённый смысл в этом есть. Если же имеет смысл сохранять устанавли-
и интерфейсов netgraph. Остальное же потребуется пересобрать какой-то ваемое при инсталляции системы ядро
попросту не будет собираться, не от- из модулей, это в любое время можно GENERIC (если его нет, то всегда мож-
нимая ни времени, ни места на дис- сделать вручную: но собрать на основе одноимённого
ке. (Названия модулей соответствуют файла в каталоге конфигурационных
именам каталогов в /usr/src/sys/modules, # cd /usr/src/sys/modules/<имя_модуля> файлов ядра). Когда-нибудь оно смо-
# make
и, как правило, по названию несложно # make install жет вас выручить, например, если при-
догадаться об их предназначении.) дётся в аварийном порядке загружать-
Естественно, приведённый вы- При необходимости можно за- ся на оборудовании, поддержка кото-
ше пример не следует рассматривать пустить команду «kldxref /boot/kernel» рого в вашем рабочем ядре не предус-
в качестве эталонного – вы и только (иногда модули размещаются и в от- матривалась.
вы можете определить, какие модули дельном каталоге – /boot/modules), что- Удачи!

10
администрирование

Не допустите потери данных!


Ленточная библиотека
к вашим услугам

Виталий Банковский
Какое самое кошмарное событие в работе системного администратора? Правильно, потеря
всех данных. Тогда он вспоминает, что собирался сделать архивирование данных в 1995 году.
Знакомо? Если еще нет – тогда эта статья для вас.

И
так, предстоит задача оценки процесс создания и сохранения резер- n DVD-RAM-библиотека.
и внедрения системы созда- вных копий. На втором этапе расскажу n Ленточная библиотека.
ния резервных копий серверов о внедрении системы создания копий
в ситуации, когда объем первичных с применением одного из типа храни- Сразу скажу, что хотя DVD-библио-
средств (дополнительные накопители, лища – ленточной библиотеки. теки и выглядят привлекательно с точ-
CD/DVD) уже недостаточен для сохра- ки зрения надежности, стоимость та-
нения растущих объемов данных. Для Выбор хранилища ких систем в настоящее время остает-
начала предлагаю вам проанализиро- резервных копий ся очень высокой.
вать три наиболее используемых типа При выборе типа хранилища резервных Для начала давайте оценим стои-
систем хранения резервных копий дан- копий данных я рассматривал три вари- мость все трех решений для объема
ных, а также программные и аппарат- анта хранилища архивных данных: 14 Tб (см. таблицы 1-3). Как видите, це-
ные средства, обеспечивающие сам n Дисковый массив. на решения на ленточной библиотеке

12
администрирование
составляет почти в два раза дешевле, Таблица 1. Стоимость системы сохранения резервных копий данных на жесткие диски
чем стоимость сохранения копий дан- Компонент Пример Стоимость
ных на жестких дисках и почти в 8 раз Корпус с 40 слотами для жестких дисков RM8U8042 $4,000 US
дешевле стоимости решения на осно- RAID-контролер, 24 порта Areca ARC-1170 SATA II 24 2 x $1,500 US = $3000 US
ве DVD‑библиотеки.
Материнская плата с процессором и памятью – $1500

Стабильность Жесткие диски, 28 штук, 500 Гб каждый Hitachi, Seagate 28 x $130 = $3640

В среднем одна лента способна выдер- Окончательная стоимость: $12,410 US

жать порядка 250 полных циклов пере- Таблица 2. Стоимость системы сохранения резервных копий данных на ленточную
записи. Я использовал приблизитель- библиотеку
но 6 лент каждую неделю, т.е. 24 лен- Компонент Пример Стоимость
ты в месяц. С 60 лентами, загружен- Ленточная библиотека с LTO2 накопителем DELL PowerVault 136T $5,000 US
ными в ленточную библиотеку, каждая Лента, 72 картриджа Fujitsu LTO2 72 x $30 = 2160
лента используется в среднем 2,5 ра-
Окончательная стоимость: $7,160 US
за в месяц. Таким образом, мы полу-
чаем, что в среднем одна лента спо- Таблица 3. Стоимость системы сохранения резервных копий данных на DVD-библиотеку
собна прослужить около 100 месяцев Компонент Пример Стоимость
(250/2,5=100). Конечно, все зависит DVD-библиотека с 1525 слотами Plasmon D-1525 DVD $36,545 US
ещё и от условий окружающей среды. $640 US за упаковку
Например, если температура часто ме- DVD RAM 4.7 Гб плюс картридж производителя – из 40 носителей, 30 упаковок,
няется или присутствует пыль, то это итого: $19200 US

может значительно сократить время Окончательная стоимость: $55,745 US

жизни ленты. На первый взгляд, ста- Источник: http://www.opticaljukeboxes.com/dvd?plasmon_d-1525.htm.


бильность системы на диски выглядит
более высокой по сравнению с лен- создается полная копия всех данных, тите восстановить ваши данные, то вы
тами, но как показывает опыт, время затем кассеты изымаются и помещают- будете вынуждены остановить теку-
жизни SATA-дисков при очень высоких ся в удаленное безопасное место. щую процедуру архивирования. Сис-
загрузках составляет в среднем 1-2 го- темы хранения на дисках лишены это-
да в зависимости от внешних факто- Масштабирование го недостатка, что является большим
ров. Поэтому нужно учитывать нагруз- К уже имеющейся библиотеке мож- преимуществом перед лентами, осо-
ку при выборе решения. но добавить новые. При наличии двух бенно когда необходимо иметь асин-
SCSI-портов один архивирующий сер- хронный доступ к данным, например,
Длительное хранение вер может обслуживать до 15 библио- если вы предоставляете ваше реше-
Если вы хотите хранить ваши данные тек с суммарным объемом 210 Tб. ние многим клиентам, которые хотят
в течение длительного срока, напри- иметь параллельный доступ.
мер, банковские записи, то вы можете Охлаждение Вам необходимо рассмотреть все
сохранить данные на лентах, затем вы- и потребление энергии требования и выбрать наиболее под-
грузить их из библиотеки и сохранить Dell PowerVault 136-T использует по- ходящее решение. Единственное,
в другом безопасном месте на дли- рядка 110 Ватт, тогда как решение что можно посоветовать, так это на-
тельное время. В среднем ленты имеют на 28 дисках и сервере использует чать с более дешевой конфигурации
срок хранения порядка 30 лет, правда, порядка 800-1000 Ватт. Так как реко- на ленточной библиотеке, а затем до-
этот срок может резко сократиться при мендованная рабочая температура бавить хранилище на дисках, таким об-
частом перезаписывании. И, как вы по- жестких дисков составляет 40-50°C, разом вы можете хранить полные дан-
нимаете, такая схема практически не- то в случае решения на жестких дис- ные на лентах за последние несколь-
доступна в случае решения на дисках. ках нужно позаботиться о качествен- ко месяцев и одновременно восполь-
Также сюда можно добавить потенци- ной охлаждающей системе, и это то- зоваться преимуществами хранения
альный фактор, что жесткие диски мо- же нужно учитывать при составлении на жестких дисках.
гут просто не запуститься после столь окончательной сметы при выборе ре-
длительного хранения из-за затвер- шения. Плюс, если процесс создания Структура системы
девания смазки механических частей. архивных копий затягивается на мно- Я покажу шаги, необходимые для соз-
Поэтому система хранения на лентах гие часы, то стоимость потребленной дания хранилища на лентах. Наша сис-
мне видится более гибкой, позволяю- электроэнергии может составить вну- тема будет состоять из следующих
щей решать обе задачи – хранение опе- шительную сумму. компонентов:
ративных копий и возможность хране- n Архивирующий сервер (сервер ре-
ния данных в течение очень длитель- Доступность зервного копирования).
ного времени. Например, работа может Из-за того, что системы хранения на n Ленточная библиотека.
происходить по следующему сценарию: лентах являются синхронными, только
ежедневно производится запись изме- одна операция доступна в какой-то мо- Архивирующий сервер собирает
ненных данных на ленту и раз в месяц мент времени. Например, если вы хо- данные с серверов, сжимает, сохраня-

№6, июнь 2007 13


администрирование
ет на собственный носитель для вре- класса с интерфейсами SCSI/SAS/FC n Четыре 300 Гб SCSI-диска, собран-
менного хранения и последующей за- способны выдержать такую нагрузку. ные в массив RAID5.
писи на ленту. Кроме этих базовых n Л е н т о ч н а я б и б л и о т е к а D e l l
операций, сервер также создает рас- Высший уровень Powervault 136-T с 60 кассетами
писания сохранения полных и частич- Важным отличием этого решения от (доступно до 72 кассет).
ных данных с серверов. двух предыдущих является способ- n Два LTO-2-накопителя, установлен-
ность системы архивировать данные ных в библиотеку.
Выбор аппаратного с серверов в максимально короткое
обеспечения время, таким образом, производитель- Таким образом, полный объем хра-
Попробуем выбрать аппаратное обес- ность серверов в час пик не пострада- нилища составил порядка 12 Tб, ко-
печение, необходимое для созда- ет. Для этой конфигурации вы можете торого было достаточно для сохране-
ния нашей системы. Как вы помни- воспользоваться контроллером аппа- ния 8 Tб, включая частичные и пол-
те, есть два компонента архивирую- ратного сжатия AHA362-PCIX, который ные архивы.
щего сервера, которые интенсивно предоставляет скорость до 3 Гб в се- Инсталляционный процесс включа-
используются: процессор для сжатия кунду. Для обеспечения такой скоро- ет в себя два шага – подключение ка-
данных и накопитель для временно- сти сохранения на архивном серве- белей и загрузку кассет в библиотеку.
го хранения данных. Исходя из этого, ре вам также необходим соответству-
у нас есть выбор построения системы ющий накопитель, способный рабо- Подключение кабелей
на основе простенького P4 с неболь- тать на этой скорости. Приблизитель- Вам необходимо последовательно со-
шим жестким диском до сервера с ап- но можно рассчитать его конфигура- единить все SCSI-устройства. Если
паратной компрессией и высокопро- цию по формуле: у вас 2 накопителя на лентах, то вам
изводительным, вместительным хра- понадобится 3 SCSI-кабеля и один
нилищем SAN. hNumber = bSpeed/hSpeed терминатор. Шаги подключения при-
Также нужно учитывать, что про- ведены ниже:
цесс сбора данных с серверов ис- где: n Подключите первый разъем авто-
пользует немалое количество ресур- n hNumber – количество дисков, не- загрузчика (tape exchanger) в SCSI-
сов подсистем ввода-вывода, и если обходимых для накопителя; порт архивирующего сервера.
ваши серверы достаточно нагружены, n bSpeed – средняя скорость переда- n Второй разъем автозагрузчика
то вам необходимо учитывать и этот чи архивного сервера; должен быть подключен к первому
фактор для выбора конфигурации, ко- n hSpeed – средняя скорость записи разъему первого ленточного нако-
торая могла бы собирать данные сер- на каждый жесткий диск. пителя.
веров в минимально возможное время n Второй разъем первого накопите-
для предотвращения перегрузки сер- Для примера возьмем ситуацию – ля должен быть подключен к пер-
веров в час пик. вы хотите сохранять данные на скоро- вому разъему второго накопителя.
Таким образом, можно рассмотреть сти 1 Гб в секунду, и каждый накопитель n И второй разъем второго накопите-
три класса аппаратного обеспечения. способен сохранять на скорости 30 Мб ля должен быть закрыт SCSI-терми-
в секунду. Таким образом, вам необхо- натором.
Начальный уровень димо, как минимум, 5 жестких дисков.
Подходит для небольшого количества Конечно, чем больше дисков установ- Структура подключения приведе-
серверов (например, от 1 до 20 серве- лено, тем большую скорость вы можете на рис 1.
ров с 100‑200 Гб на каждом сервере) получить. Хотя при возрастании коли-
и в случае, если вы не ограничены вре- чества дисков кривая зависимости ско- Установка программного
менными рамками для процесса архи- рости от количества дисков будет па- обеспечения
вирования. Для такого решения мож- дать, и в этом случае можно подумать Я использовал программный пакет
но воспользоваться системой с одним- о создании массива RAID10. Так как Amanda (http://www.amanda.org). Пред-
двумя процессорами и непроизводи- цена на SAN-накопители падает в пос- варительно были рассмотрены разные
тельным SATA-накопителем. ледние годы (стоимость начального программы, но комбинация возмож-
SAN-накопителя на 14 слотов состав- ностей Amanda сыграла решающую
Средний уровень ляет порядка $2500 US), то такое реше- роль в выборе последней:
Этот уровень можно порекомендовать ние может рассматриваться как наибо- n Бесплатность. Если у вас большое
для 200-300 серверов, но если и здесь лее эффективное по соотношению ка- количество серверов, то лицензи-
вы не ограничены по времени. Подой- чества, скорости и стоимости. онные отчисления могут поставить
дет система с 2-4 ядрами, SCSI/SAS/ крест на всем решении или проде-
FC-накопителями на 400‑800 Гб. Вы Инсталляция аппаратного лать большую дыру в бюджете ком-
можете спросить: «Почему SCSI/SAS/ обеспечения пании.
FC предпочтительнее?». Накопитель Я использовал «среднюю конфигура- n Безопасность. Шифрование на
должен быть способен передавать по- цию» со следующими компонентами: уровнях передачи и хранения дан-
рядка 600-1000 Гб в день, и на данный n Два процессора AMD 270 с двумя ных. Шифрование на уровне пере-
момент только накопители серверного ядрами в каждом. дачи является особенно важным,

14
администрирование
если серверы расположены в месте, отличном от рас-
положения системы архивирования.
n Развитый планировщик. Пока другие системы лишь
предоставляют доступ к командам архивирования дан-
ных и вам необходимо самому определять стратегию ар-
хивирования, Amanda имеет собственный планировщик
задач архивирования, способный выполнять такие не-
тривиальные требования, как распределение запусков
задач полного архивирования по всему циклу архиви-
рования.

Инсталляция Amanda на сервер


В работе я использую Linux, а конкретнее – CentOS 4.4. По-
этому все дальнейшие указания рассчитаны на эту опера-
ционную систему, хотя Amanda работает на большинстве
UNIX-подобных операционных системах.
Скачайте amanda с сайта http://sourceforge.net, распа-
куйте и проинсталлируйте, как написано в инструкции,
или следуйте нижеприведенному примеру. Я использовал
версию 2.4.5p1:

tar -xzvf amanda-2.4.5p1.tar.gz


cd amanda-2.4.5p1
./configure --with-user=root --with-group=root
make
make install

По умолчанию имя конфигурации называется «DailySet1»,


и она расположена в /usr/local/etc/amanda/DailySet1. Вам не-
обходимо скопировать конфигурационные файлы из ката-
лога example/* в каталог /usr/local/etc/amanda/DailySet1/.
Также вам надо установить программу mtx для опера- Рисунок 1. Схема подключения библиотеки к серверу
ций с ленточными накопителями.
тать. Как упоминалось ранее, я использовал LTO2 (200gb/
Подготовка ядра для сервера 400gb) drives.
Также вам необходимо включить опции ядра для поддержки В нашем случае конфигурационные файлы были рас-
автозагрузчика и ленточного накопителя. Вы можете вос- положены в /usr/local/etc/amanda/DailySet1. Два файла, ко-
пользоваться модулями или статически включить под- торые подлежат правке: changer.conf и amanda.conf.
держку в ядро. На наших серверах в целях безопаснос-
ти мы используем ядра с полностью выключенной подде- Настройка amanda.conf
ржкой модулей. Большинство опций подходят для типичных случаев, но есть
Необходимо включить следующие опции в ядре Linux такие, которые необходимо изменить.
(см. рис. 2): Имя вашей организации:
n SCSI Tape support;
n SCSI Media changer support; org "Bigsoft Home"
n Probe all LUNs on each SCSI device;
n SCSI generic support. Адрес администратора системы архивирования. На этот
адрес будут отправляться отчеты об архивировании. Если
После установки нового ядра и перезагрузки сервера у вас большое количество серверов, то нужно позаботить-
введите команду «dmesg», и если все настроено правиль- ся, чтобы все почтовые системы могли успешно доставить
но в ядре, вы должны увидеть ваши устройства: большие письма.
Vendor: DELL Model: PV-136T Rev: 3.37 mailto report@domain.com
Type: Medium Changer ANSI SCSI revision: 02
Vendor: IBM Model: ULTRIUM-TD2 Rev: 53Y3
Type: Sequential-Access ANSI SCSI revision: 03 Количество параллельных процессов архивирования.
Vendor: IBM Model: ULTRIUM-TD2 Rev: 53Y3
Type: Sequential-Access ANSI SCSI revision: 03 Я получил число максимального количества процессов,
равное 24 на 4 ядрах AMD 270 (два процессора, четыре яд-
ра). Если скорость превышает 1 Гб в секунду, то вам необ-
Настройка Amanda ходимо гигабитное и выше подключение к сети:
Теперь речь пойдёт о настройках, которые необходимо
применить, чтобы заставить DELL PowerVault 136T рабо- inparallel 12

№6, июнь 2007 15


администрирование
changerfile "/usr/local/etc/amanda/DailySet1/changer"

Путь к системному файлу статуса автозагрузчика.

changerdev "/dev/sg2"

Путь к устройству автозагрузчика. Вам необходимо най-


ти число после «sg» с помощью запуска программы «dmesg»
и найти порядок автозагрузчика в списке SCSI-устройств.
В нашем случае SCSI RAID имел число 0, SCSI-контроллер
имел число 1 и автозагрузчик имел число 2.

tapetype LTO2

Рисунок 2. Конфигурация ядра Linux


Тип ленточных кассет. Amanda.conf содержит список
Максимальная скорость для использования сервером. практически всех типов кассет, из которого нужно выбрать
Это не жесткое ограничение и лишь помогает планиров- используемый в вашей системе, например, LTO2, LTO3,
щику в определении максимального количества запущен- или недавно появившийся LTO4. Понятно, что при покупке
ных процессов для получения скорости, не превышающей библиотеки у вас есть выбор, какой тип ленточного нако-
этот предел: пителя вы установите в систему.

etusage 600000 Kbps amrecover_changer "chg-zd-mtx"

Если на ваших серверах расположено громадное коли- Типы программы для управления загрузчиком для про-
чество файлов (порядка несколько миллионов), то необхо- цесса восстановления.
димо увеличить это значение по умолчанию, иначе процесс Далее займемся changer.conf. Есть несколько опций, ко-
подсчета размера всех файлов закончится неудачно. торые необходимо поменять для PowerVault 136-T:

etimeout 208000 eject > 1

Накопители поддерживают команду eject для выбрасы-


Настройка автозагрузчика вания кассеты в автозагрузчик.
В этом разделе мы расскажем, как настраивать Amanda для
использования автозагрузчика лент, установленного в биб- sleep 5
лиотеке. Параметры автозагрузчика находятся в двух фай-
лах – amanda.conf и changer.conf. Подождать 5 секунд перед началом использования кас-
Для начала займемся amanda.conf. сеты после загрузки.

Runtapes 5 cleanmax 10

Количество лент, используемых для каждого запуска. Максимальное количество использования чистящего
Если это число меньше, чем необходимо для сохранения картриджа. Это число может меняться, поэтому необходи-
ежедневных данных, то вы получите сообщение об ошибке, мо свериться с руководством по эксплуатации конкретно-
и Amanda перейдет в degraded режим. Вам необходимо по- го типа чистящего картриджа.
добрать это число экспериментальным путем или по пред-
варительной оценке из расчета суммарный объем данных changerdev /dev/sg0
плюс максимальный объем файлов, измененных между за-
пусками процедур архивирования. Путь к автозагрузчику.

tpchanger "chg-zd-mtx" havebarcode 1


havereader=1

Тип программы управления автозагрузчиком. Если у вас Как описано в разделе «Нанесение меток на ленту»,
SCSI-автозагрузчик, то автор рекомендует использовать PowerVault 136-T имеет собственное устройство чтения
программу chg-zd-mtx как наиболее развитую и «понимаю- штрих-кодов, и для его использования нужно включить
щую» большинство SCSI-автозагрузчиков. эту опцию:

tapedev "/dev/nst0" labelfile /var/log/amanda/labelfile.txt

Путь к ленточному накопителю. Файл, где сохраняется список кассет, и их метки:

16
администрирование
offline_before_unload=1 offlinestatus=1 OFFLINE_BEFORE_UNLOAD=1 n program «GNUTAR» – программа для сбора данных
на клиентах. Если не стоит задача делать дамп файло-
Как правило, ленточные накопители требуют команды вых систем, то это – оптимальная опция.
«offline» перед тем, как кассета может быть выгружена. n dumpcycle 14 – как часто необходимо создавать пол-
ный архив серверов. В нашем случае мы остановились
Настройка временного хранилища на двух неделях.
Как вы уже знаете, Amanda сохраняет данные на собствен- n compress server fast – выбор стороны, на которой бу-
ное временное хранилище, и затем, когда оно заполняется дет происходить сжатие данных. Есть два варианта -
или процедура архивирования завершена, сохраняет дан- server – для сжатия на архивирующем сервере и client –
ные из этого хранилища на ленту. Необходимо описать хра- для сжатия на стороне клиента. У меня была возмож-
нилище в конфигурационном файле amanda.conf: ность установить 4 ядра на архивирующем сервере, по-
этому я использовал архивирование на стороне серве-
holdingdisk hd1 { ра. Максимальная скорость сжатия составила поряд-
comment "main holding disk"
directory "/home/amanda" # Путь к данным на диске ка 600 Мб в секунду. Дополнительно можно установить
use 300 Gb # Доступное пространство один из уровней сжатия – best, custom, fast.
chunksize 1Gb # Разбить данные на куски по 1 Гб
} n index – указывает Amanda, что необходимо создавать ба-
зу данных содержимого на кассетах. По умолчанию эта
Вы можете настроить несколько систем хранилища. опция выключена. Но это необходимо включить, иначе
Например, если на сервере установлены несколько нако- будет невозможно сделать поиск данных на кассетах.
пителей. n exclude list «amandaexclude» – на каждом диске, на
каждом клиенте необходимо расположить этот файл,
Настройка стратегии архивирования который может содержать пути и маску файлов и ди-
Рассмотрим, как настроить тип процедуры архивирова- ректорий, которые необходимо исключить из архиви-
ния и как составлять список серверов, подлежащих копи- рования (например, лог-файлы). Даже если необходи-
рованию. мо включить все файлы, этот файл должен существо-
вать, но может быть пустым. Иначе процесс архивиро-
Настройка стратегии вания завершится неудачно. Для подробностей обрати-
Сперва необходимо описать стратегии для Amanda. Для боль- тесь к разделу «Исключение и разделение данных».
шинства ситуаций одной стратегии уже достаточно, хотя n priority medium – для некоторых дисков на клиентах
можно настроить множество стратегий для специфичных можно указывать различные уровни приоритетов: high,
случаев. medium, low. Если система архивирования не имеет до-
статочно места для сохрания данных, она выберет дис-
define dumptype default ки с более высоким приоритетом для замещения дисков
{
global с меньшим приоритетом, таким образом, важные дан-
estimate calcsize ные с большим приоритетом получают большую гаран-
program "GNUTAR"
dumpcycle 14 тию сохранности.
comment "root partitions dumped with tar" n tape_splitsize 20 Gb – для уменьшения фрагментации
compress server fast
index ленточного пространства вы можете разбить большие
priority medium exclude list "amandaexclude" архивы на более мелкие на момент записи на ленту. На-
tape_splitsize 20 Gb
} пример, если объем ваших дисков в среднем составля-
ет 100 Гб, то однозначно проблема фрагментации про-
Ниже приведены описания каждой опции: явится, потому каждый раз Amanda будет вынуждена
n global – означает, что эту стратегию можно использовать искать свободное место на лентах на 100 Гб. Ограниче-
независимо в списках серверов. Например, можно на- ние максимального размера архива позволит записы-
строить несколько стратегий, затем объединить их вмес- вать архивы кусками по 20 Гб (как в данном примере).
те и придать статус «global». Для простоты мы не исполь- Сегментация больших архивов на более мелкие позво-
зовали такую схему построения стратегий. лит существенно уменьшить проблему фрагментации
n estimate calcsize – используемый метод для определения носителей.
общего размера файлов на серверах. Существует два на-
иболее полезных варианта этой опции – calcsize и server. Описание клиентов
В случае calcsize Amanda запустит небольшую программу На этом этапе мы опишем серверы-клиенты, а также ка-
на каждом сервере, которая просуммирует размер всех талоги, которые подлежат архивированию. Специальный
файлов. Это наиболее аккуратный способ для оценки объ- файл disklist отвечает за это описание (по умолчанию он
ема, но может занять продолжительное время в случае находится в каталоге /usr/local/etc/amanda/DailySet1). Этот
большого количества файлов. Второй вариант server ука- файл содержит список каталогов, которые необходимо ар-
зывает Amanda использовать данные, полученные из пре- хивировать, например:
дыдущих запусков. Если объем данных сильно разнится
от запуска к запуску, то это может привести к составле- server1.domain.com / {
default
нию неправильного расписания заданий. }

№6, июнь 2007 17


администрирование
server1.domain.com /boot { #!/usr/bin/perl
default use strict;
} foreach my $i(1..60)
server1.domain.com /var { {
default system("amlabel -f DailySet1 DailySet1-$i slot $i");
} }
server1.domain.com /usr {
default
}
server1.domain.com /home { Запуск и проверка
default
} Таким образом, мы выполнили все первоначальные ша-
ги и подошли к финальной стадии – запуск процесса ар-
Вы могли бы спросить: «Почему бы просто не опреде- хивирования.
лить корневой каталог «/» вместо списка каталогов?». Ког- Всего существует три режима работы процесса архи-
да Amanda запускает программу сбора данных (tar) на сер- вирования:
верах, то используется опция «stay on single filesystem», ко- n архивирование всех данных всех серверов;
торая указывает tar оставаться на текущей файловой сис- n архивирование конкретного сервера;
теме. Таким образом, монтирование по NFS или другие ма- n архивирование конкретного диска конкретного сервера.
нипуляции с файловой системой не приведут к двойному
или циклическому архивированию. Я использую отдельные Для начала попробуем создать резервную копию одно-
разделы для /boot, /home/, /usr, and /var, поэтому необходи- го диска нашего сервера:
мо было указать все разделы. Также, если какой-то раз-
дел содержит большие объемы данных, то вместо указа- amdump DailySet1 server1.domain.com /home
ния этого каталога необходимо использовать список под-
каталогов. Эта команда указывает Amanda сделать копию данных,
Для подробностей обращайтесь к разделу «Исключе- расположенных на сервере server1.domain.com в каталоге
ние и разделение данных». /home. Процесс занимает некоторое время и включает в се-
бя следующие этапы:
Создание меток на лентах и кассетах n запуск планировщика задач;
Перед использованием библиотека должна знать о кассе- n оценка объема данных на клиенте;
тах, которые установлены. Для этого мы должны обучить n сбор данных и отправка на временное хранилище ар-
библиотеку, и этот процесс включает два шага: хивирующего сервера;
n инициализация библиотеки; n запись архивных данных с временного хранилища
n создание списка кассет для Amanda. на ленту.

Инициализация библиотеки Если есть желание понаблюдать за процессом, то мож-


Первоначально кассеты не имеют никаких меток, которые но увидеть процессы calcsize, tar, sendbackup на клиен-
позволили бы библиотеке идентифицировать каждую кас- те и gzip на архивирующем сервере. Как только процеду-
сету. Для этого необходимо купить специальные бумаж- ра архивирования завершится, необходимо проверить ре-
ные метки и разместить их на каждую кассету. Их можно зультат всего процесса.
купить на сайте http://www.issidata.com (USA) или на http://
www.invictus.ru (Россия) или просто напечатать с помощью Проверка архива
GNU-Barcode. Каждая метка имеет уникальный цифро- После того, как мы завершили архивирование, можно про-
вой и штрих-коды, причем последний используется скане- верить результаты процесса с помощью команды:
ром штрих-кода для поиска кассет. После создания меток
на кассетах поместите кассеты в библиотеку. Процесс по- amadmin DailySet1 info servername [disk]
мещения кассет может разниться для каждого типа биб-
лиотеки, поэтому лучше обратиться к документации про- В нашем случае это должно выглядеть вот так:
изводителя.
amadmin DailySet1 info server1.domain.com /usr
Создание списка кассет для Amanda Current info for server1.domain.com /usr:
После того как мы разместили все кассеты в библиотеку Stats: dump rates (kps), Full: 2109.9, 1071.6, -1.0
Incremental: -1.0, -1.0, -1.0
и библиотека нашла их, время приступить к созданию ме- compressed size, Full: 36.8%, 36.8%,-100.0%
ток Amanda на каждой ленте, что может быть выполнено Incremental: -100.0%,-100.0%,-100.0%
Dumps: lev datestmp tape file origK compK secs
с помощью следующей команды: 0 20070517 DailySet1-1 66 1288890 474720 225

amlabel DailySet1 DailySet1-NR slot SlotID Здесь можно видеть уровень архива (полный или инк-
рементальный), имя кассеты, где был сохранен архив, дату,
где NR-номер кассеты (любое число, но желательно, что- количество файлов, оригинальный и сжатый объемы архи-
бы оно совпадало с номером слота), и SlotID – номер сло- ва и количество секунд, потраченных на процедуру. Если
та в библиотеке. Например, если у вас 60 кассет, то можно все выглядит правильно, то можно запускать систему в ра-
воспользоваться следующим скриптом: бочем режиме, т.е. ежедневно.

18
администрирование
Исключение и разбивка данных Обращаем внимание, что элементы списка должны быть
В разделе будут описаны два очень важных момента в ра- записаны от начала каталога из disklist. Для примера, ес-
боте системы – как исключить данные из процесса архиви- ли у вас есть /var из disklist, и если вы укажете /var/log/httpd
рования и как разбить большой объем данных на несколь- в файле excludeamanda, то Amanda решит, что каталог /var/
ко архивов меньшего размера. var/log/httpd должен быть исключен, что неверно.

Исключение данных Разбивка данных


Как уже было показано, в нашей стратегии архивирования К сожалению, одним из недостатков Amanda является не-
мы указали файл, который содержит список файлов, кото- возможность размещения одного каталога на нескольких
рые необходимо исключить из архивов: кассетах, таким образом, архивирование каталогов, пре-
вышающих 200 Гб (после сжатия), невозможно. Конечно,
define dumptype default можно указать список подкаталогов из сверхбольших ка-
{
...... талогов, но проявляется одна проблема, которую я поясню
exclude list "amandaexclude" на основе следующего примера:
......
}
/home/mysql/
/home/www/
Файл amandaexclude должен быть расположен в верх-
нем каталоге каждого каталога, определенного в файле /home/users/user1
/home/users/user2
disklist. Например, если определен /home в файле disklist,
то файл amandaexclude должен быть расположен в /home/ Для того чтобы исключить ошибки и ручной труд, мож-
amandaexclude. В этом файле указаны каталоги и файлы, но воспользоваться следующей командой для поиска под-
которые не должны быть архивированы: каталогов типа /home/users/user***:

log/httpd/* find /home -t d -mindepth 2 -maxdepth 2


log/httpd2/*
log/httpd2-ssl/*
log/httpsd/*
log/maillog* Таким образом, будут найдены все подкаталоги, кото-
tmp/* рые нужно описывать отдельно в disklist. Но нам еще необ-
*.tmp
*.temp ходимо найти каталоги с меньшей глубиной:

№6, июнь 2007 19


администрирование
find /home -t d -mindepth 1 -maxdepth 1 инкрементальный архив данных, которые были изменены
с момента создания полной копии.
Если результаты обеих команд включить в disklist, то он Для получения наиболее свежих данных необходи-
будет выглядеть следующим образом: мо извлечь и распаковать оба архива, что включает в се-
бя два шага.
/home/mysql/ Загрузка нужной кассеты в привод:
/home/www/
/home/users/
/home/users/user1 amtape DailySet1 label DailySet1-1
/home/users/user2

Таким образом, в список каталогов попадает сверхболь- Извлечение архива с ленты с помощью команды
шой каталог /home/users, и в результате задача по разбие- amrestore:
нию данных остается нерешенной.
Для решения этой проблемы достаточно включить ка- amrestore /dev/nst0 server1.domain.com /home
талоги из /home/users в список для исключения директо-
рии /home как показано: где:
n /dev/nst0 – накопитель на ленте;
server1.domain.com /home n server1.domain.com – имя клиента;
{
default2 n /home – каталог, который был определен в disklist.
exclude append /home/users/user1
exclude append /home/users/user2
Если архив успешно был извлечен с ленты, то в теку-
} щем каталоге вы обнаружите файл server1.domain.com._
server1.domain.com /home/users/user1
{ home.20070403xxxxx.0.1, что является tar-архивом сжатым
default с помощью gzip.
}
Следующим этапом необходимо достать копию инкре-
server1.domain.com /home/users/user2 ментального архива:
{
default
} amtape DailySet1 label DailySet1-59
amrestore /dev/nst0 server1.domain.com /home

Замечание: используется новая стратегия «default2», И как результат этого действия, вы должны получить
которая не имеет опции «exclude», иначе она перекроет оп- файл server1.domain.com._home.20070517, который также
цию «exclude append». является tar-архивом, сжатым с помощью gzip. Далее, рас-
крыв оба архива с помощью tar, вы получите наиболее све-
Восстановление с Amanda жую копию данных, доступную в архиве.
Теперь самое главное – восстановление данных из архива.
Сейчас мы разберем, как восстанавливать данные на сто- Заключение
роне архивного сервера. Как восстанавливать данные Я не стремился изложить полное руководство по созданию
на стороне клиента – тема следующей статьи. Итак, спер- системы резервного копирования, а лишь рассмотрел ос-
ва необходимо найти кассету, на которой находятся инте- новные понятия и базовые принципы, необходимые для соз-
ресующие нас данные. дания собственной системы, которая более года успешно
Например, если нужно восстановить данные каталога используется в нашей компании.
/home с клиента server1.domain.com, то на стороне архивно- Многие расширенные компоненты остались за рамка-
го сервера нужно выполнить команду: ми статьи, такие как:
n Планирование расписания задач.
amadmin DailySet1 info server1.domain.com /home n Проверка целостности архивов.
n Использование нескольких ленточных накопителей.
Если система успешно работала и данные присутству- n Обслуживание и мониторинг ленточных библиотек.
ют на ленте, то вы должны увидеть приблизительно такую n Аппаратное сжатие.
картинку: n Дамп файловых систем и остановка серверов баз дан-
ных перед архивированием.
Current info for server1.domain.com /home:
Stats: dump rates (kps), Full: 2186.8, -1.0, -1.0
Incremental: 1413.2, -1.0, -1.0 Но сегодняшнего материала уже достаточно для по-
compressed size, Full: 88.2%,-100.0%,-100.0% нимания, как устроена и работает система резервно-
Incremental: 66.0%,-100.0%,-100.0%
го копирования, и в будущем мы постараемся осветить
Dumps: lev datestmp tape file origK compK secs другие аспекты, возникающие в процессе эксплуатации
0 20070403 DailySet1-10 7 34495940 30409476 13906
1 20070517 DailySet1-59 124 3532300 2330312 1649
системы.

Оказывается, что у нас есть две копии каталога /home Ни автор, ни редакция не несут ответственности
но с различным уровнем сохранения. Уровень «0» означа- за возможные последствия при использовании
информации из данной статьи.
ет полную копию каталога /home и уровень «1» означает

20
администрирование

Доступ к Active Directory с помощью


прилинкованного SQL-сервера

Иван Коробко
Ни для кого не секрет, что скорость получения данных из Active Directory с помощью штатных
средств в сценарии оставляет желать лучшего. Одно из решений проблемы – использовать
прилинкованный SQL-сервер.

О
существляя доступ к Active Скорость решения аналогичной зада- о нем помнить при формировании за-
D i r e c t o r y с п о м о щ ь ю чи сокращается до нескольких секунд. просов.
ADsDSOObject, обеспечивают Однако не все так хорошо, как кажется
полный доступ к свойствам ее объек- с первого взгляда. Во-первых, с помо- Теория создания
тов: их можно создавать, удалять, из- щью прилинкованного сервера можно прилинкованного сервера
менять свойства. Основной недоста- осуществлять только быстрый поиск Прилинкованный сервер можно со-
ток использования ADsDSOObject-про- и чтение данных. Так что записывать здать двумя способами – програм-
вайдера – очень низкая скорость полу- данные придется с помощью ADODB- мным и вручную.
чения данных. Например, если читать соединения. Во-вторых – по умолча-
из Active Directory свойства 500‑600 нию прилинкованный сервер имеет Создание прилинкованных
объектов, отфильтровывая их из об- ограничение по количеству выводи- серверов вручную
щей массы, то эта процедура занимает мых записей – 1000. Это ограничение – Чтобы создать прилинкованный сер-
по времени 1-3 минуты. Увеличить ско- изменяемый параметр (см. KB243281, вер вручную, необходимо войти в «SQL
рость чтения данных можно, исполь- Conrolling the Active Directory Search Server Enterprise Manager → SQL Server
зуя в качестве провайдера прилинко- Buffer Size (http://support.microsoft.com/ Group → Сервер → Sequrity → Linked
ванный к Active Directory SQL-сервер. kb/243281)), но все-таки необходимо Server» и в контекстном меню выбрать

22
администрирование
«New Linked Server…». В диалоговом
окне присутствуют следующие пара-
метры (см. рис. 1):
n Linked name – произвольное имя
создаваемого сервера. Макси-
мальная длина 128 символов.
n Provider name – имя провайдера
выбирается из списка, например
Microsoft Jet 4.0 OLE DB Provider.
Максимальная длина этого обяза-
тельного параметра – 128 симво-
лов. Остальным параметрам зна-
чения присваиваются по необхо-
димости.
n Product name – комментарий при-
Рисунок 1. Создание прилинкованного Рисунок 2. Прилинкованный к AD
линкованного сервера размером сервера сервер
до 128 символов.
n DataSource – имя источника данных или его IP-адрес. OLE DB Provider for Microsoft Directory Services" does not
Максимальная длина 4000 символов. provide either the tables or views. Therefore you will get the
error "Error 7301: Could not obtain a required interface from
n Provider String – строка соединения, в которой могут OLEDB provider ADsDSOObject
быть заданы имя, пароль и другие характеристики до-
ступа, например – «Encrypt Password=False;Integrated Не обращайте внимания на него и переходите к созда-
Security=SSPI;». Максимальная длина 4000 символов. нию запроса.

Во второй вкладке – «Security» осуществляется кон- Программное создание прилинкованного сервера


фигурация безопасности. Для прилинкованного сервера Для программного создания прилинкованного сер-
к Active Directory настройки можно оставить по умолчанию: вера программным способом используется функция
«Be may using the login’s current security context». sp_addlinkedserver, у которой следующий синтаксис:
Третья вкладка – «Server Options». Удостоверьтесь,
что отмечены опции Data Access и Use Remote Collation. sp_addlinkedserver [ @server = ] 'server'
[ , [ @srvproduct = ] 'product_name' ]
Использование RPC в случае соединения с Active Directory [ , [ @provider = ] 'provider_name' ]
не обязательно. [ , [ @datasrc = ] 'data_source' ]
[ , [ @location = ] 'location' ]
[ , [ @provstr = ] 'provider_string' ]
Создание прилинкованного сервера [ , [ @catalog = ] 'catalog' ]
к Active Directory на практике
Для создания прилинкованного к AD сервера использует- где:
ся провайдер OLE DB Provider for Microsot Directory Services n server – имя создаваемого прилинкованного сервера;
(ADsDSOObject). Именно его необходимо выбрать в списке n product_name – его описание;
«Provider Name» во вкладке «Settings». В поле «Data Source» n provider_name – имя провайдера, к которому прилинко-
указывают adsdatasource. Рекомендуется добавить описа- вывается сервер;
ние созданного сервера в поле «Product Name», например n data_source – источник данных – имя или IP-адрес ре-
Active Directory Service Interfaces. Остальные настройки ос- сурса;
таются без изменений (см. рис. 2). n location – местонахождение базы как интерпретатора
Если по какой-то причине OLE DB Provider for Microsot OLE-DB провайдера;
Directory Services провайдер отсутствует в предлагае- n provider_string – строка соединения, содержащая пара-
мом списке, необходимо изменить значение параметра метры создаваемого соединения, при необходимости;
AllowInProcess (тип DWORD) в ветви HKLM\Software\Microsoft\ n catalog – имя каталога, который будет использоваться
MSSQLServer\Providers\ADSDSOObject на 1 (см. рис. 3). как временный во время соединения с провайдером.
Существует альтернативный вариант прилинкованно-
го сервера с помощью Microsoft Jet 4.0 OLE DB Provider. На практике запрос, формирующий прилинкованный
Все настройки остаются прежними, за исключением Provider сервер (см. рис. 2) к Active Directory, следующий:
String:
sp_addlinkedserver 'ADSI', 'Active Directory Service Interfaces',
'ADSDSOObject', 'adsdatasource'
Provider=ADsDSOObject;Encrypt Password=False;Integrated ↵
Security=SSPI;Mode=Read;Bind Flags=0;ADSI ↵
Flag=-2147483648
Использование прилинкованного
В созданном прилинкованном сервере находятся два сервера
объекта – Tables и Views. При попытке посмотреть их напол- Прежде чем рассказывать о чтении данных через прилин-
нение провайдер данных выдаст сообщение об ошибке: кованный сервер, приведу пример получения данных из АD

№6, июнь 2007 23


администрирование
с помощью обычного ADODB-соединения. Рассмотрим за- тип данных, к которому необходимо преобразовать пере-
дачу формирования списка компьютеров в текущем доме- менную, num – максимальное ограничение количества сим-
не. Листинг на VBScript: волов, field – имя поля. При считывании данных из AD дан-
ные преобразуются к строке переменной длины: varchar(50).
Set objConnection = СreateОbject("ADODB.Connection") Синтаксис функции выглядит следующим образом:
Set objCommand = СreateОbject("ADODB.Command")
objConnection.CommandTimeout = 120
objConnection.Provider = "ADsDSOObject" openquery( linked_server , 'query' )
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
Рассмотрим характерный пример. Требуется пост-
Set sql=objconnection.execute("SELECT cn FROM ↵
'LDAP://DC=firm,DC=ru' WHERE objectClass='Computer'" ) роить таблицу, в которой будет две колонки – UserName
sql.Movefirst и Description. В первую колонку должны попасть все имена
Do Until sql.EOF пользователей в домене. Им соответствует значение поля
Wscript.Echo sql.Fields("cn").Value cn в AD. Во вторую – должности соответствующих сотруд-
sql.MoveNext
Loop ников, которые зафиксированы в поле Description его учет-
ной записи.
В данном и во всех последующих листингах для нагляд- В основном запросе вместо «*» должны быть указа-
ности имя домена намеренно присутствует в явном виде. ны два поля. Причем данные необходимо преобразовать,
а столбцы переименовать. Преобразование типов данных
Query Analyzer осуществляется с помощью описанной ранее функции
Чтение данных в Query Analyzer осуществляется с помо- convert(), а переименование столбцов – с помощью инс-
щью: трукции OldFieldName as NewFieldName, где OldFieldName –
считанное имя поля, а NewFieldName – отображаемое. Та-
openquery( linked_server , 'query' ) ким образом, основной запрос выглядит так:

где linked_server – имя прилинкованного сервера, а query – Select Convert(varchar(50), cn) as UserName,
Convert(varchar(50), description)
SQL-запрос, заключенный в кавычки. From openquery (ADSI, '…')
Запрос, формирующий список компьютеров, входящих
в домен, включает в себя подзапрос, в котором непосредс- Поскольку желаемое название второго столбца совпа-
твенно идет обращение к AD: дает с именем переменной, то нет необходимости его пе-
реименовывать.
select * from openquery С помощью вложенного запроса считываем данные
(ADSI,
' из AD:
select cn
from ''LDAP://DC=firm,DC=ru''
where objectclass=''computer'' Select cn, description from 'LDAP://DC=firm,DC=ru' ↵
') where objectclass='person' and not objectclass='computer'

Суммируя сказанное, получим следующий запрос:


Замечание: в SQL-запросе «select cn from ''LDAP://
DC=firm,DC=ru'' where objectclass=''computer''» имя доме- Select Convert(varchar(50), cn) as UserName,
Convert(varchar(50), description)
на и параметр фильтра заключаются в двойные апостро- From openquery (ADSI,
фы, а не в кавычки. 'Select cn, description
from ''LDAP://DC=firm,DC=ru''
Характеристики, считываемые из Active Directory, могут where objectclass=''person'' ↵
относиться к одному из следующих типов данных: строка, and not objectclass=''computer''
')
массив, бинарное значение, число. Создавая более слож-
ные SQL-запросы, учитывайте тип данных считываемой
переменной. Используя функцию Convevert, осуществляй- VBScript
те преобразование типов. Она имеет три параметра: type – Для подключения к SQL-серверу на VBScript также исполь-
зуется ADODB-соединение, однако связь с AD идет не на-
прямую через ADsDSOObject, а с помощью прилинкован-
ного сервера.
С помощью функции СreateОbject создают два объекта:
Adodb.Сonnection – для соединения с SQL-сервером и Аdodb.
Recordset – с прилинкованным к нему сервером. В стро-
ке соединения не нужно указывать имя базы, поскольку
ни к одной из них подключения не осуществляется:

set a=СreateОbject("Adodb.Сonnection")
str="driver={sql server};server=SQLServer; ↵
trusted_connected=yes;"
a.open(str)
Рисунок 3. Провайдер OLE DB Provider for Microsoft a.cursorlocation=3
Directory Services в реестре

24
администрирование
set rs=СreateОbject("Аdodb.Recordset") Соответствия объектов классам AD
str_q="select * from ОpenQuery (ADSI, 'select cn ↵
from ''LDAP://DC=firm,DC=ru'' ↵ Тип объекта Значение objectclass Тип объекта Значение objectclass
where objectclass=''computer'' ')" Top Top
rs.open str_q, a, 1, 2, 1 OU
rs.movefirst Person OrganizationalPerson
Do Until rs.EOF
Wscript.Echo rs.Fields(0).Value Computer OrganizationalPerson Top
rs.MoveNext User Leaf
Loop Printer
Computer ConnectionPoint

Замечание: если созданный скрипт запускается от име- Top PrintQueue


ни локального, а не доменного пользователя, то SQL-сер- Person Top
Contact
вер выдаст сообщение об ошибке: OrganizationalPerson Leaf
SharedFolder
An error occurred while preparing a query for execution against Contact ConnectionPoint
OLE DB provider 'ADsDSOObject'. Top Volume
OLE DB error trace [OLE/DB Provider 'ADsDSOObject' Group
CommandPrepare::Prepare returned 0x80040e14]. Group Top
Top Person

Практика использования Person


User
OrganizationalPerson

прилинкованного сервера InetOrgPerson OrganizationalPerson User

Ранее говорилось об ограничении прилинкованного серве- User


ра: он может использоваться только для чтения данных. За- InetOrgPerson
писать какие-либо параметры в AD с его помощью невоз-
можно. Комбинация чтения данных из AD с помощью при- Алгоритм сценария следующий: с помощью прилинко-
линкованного сервера и запись их в базу с помощью ADODB ванного сервера сформируем запрос, который будет выво-
позволяют создавать быстро работающие скрипты, которые дить список пользователей, у которых поле telephonenumber
можно интегрировать в ASP, ASPX-файлы. Предположим, пустое. Прежде чем создавать скрипт на VBScript, насто-
что необходимо анализировать поле telephonenumber всех ятельно рекомендуется сформировать запрос к прилин-
учетных записей пользователей в Active Directory, и если по- кованному серверу в Query Analyzer. Это позволит уско-
ле содержит информацию – записать в него «***». рить создание скрипта. Для удобства контроля в Query

№6, июнь 2007 25


администрирование
Analyzer сделаем в таблице два поля – имя (UserName) запрос необходимо трансформировать, заменив поле cn
и номер телефона (Tel), которым соответствуют поля cn на distinguishedName.
и telephonenumber. В подзапросе непосредственно к AD Сценарий работает по следующему алгоритму: сначала
укажем оба эти поля. создается запрос. Его результатом является список, каж-
Теперь нужно правильно сформировать фильтр where. дая строка которого содержит два параметра. Они переда-
Во-первых, необходимо отфильтровать учетные записи ются в функцию записи параметров.
пользователей от всех объектов (см. таблицу). Как вид- Рассмотрим отдельно сценарий записи данных в Active
но из таблицы, objectclass должен принадлежать к классу Directory. Изменение атрибутов любого объекта осущест-
Person или User и не принадлежать к классу Computer. По- вляется с помощью метода Put() с предварительным полу-
этому фильтр должен быть таким: чением к нему доступа:

objectclass=''person'' and not objectclass=''computer'' Domain = GetObject("LDAP://rootDSE").Get( ↵


"defaultNamingContext")
Set oUser = GetObject("LDAP://cn=Ivanov,Ivan,"& Domain)
К нему необходимо добавить еще одно условие: oUser.Put "Description", "Иванов Иван Петрович"
oUser.SetInfo
Set oUser = Nothing
not telephonenumber=''*''
Первый аргумент метода Put – изменяемое поле, второй –
Замечание: его значение. Описанному алгоритму соответствует сле-
1. Обратите внимание, что инструкция «telephonenumber дующий сценарий:
is NULL» не будет работать, так как в запросе к AD ис-
пользуется упрощенная версия интерпретатора SQL, Domain = "LDAP://" + GetObject("LDAP://rootDSE").Get( ↵
"defaultNamingContext")
многие функции не поддерживаются.
2. Необходимо помнить, что последовательность выраже- set a=СreateОbject("Adodb.Сonnection")
str="driver={sql server};server=SQLServer; ↵
ний в запросе играет роль: наивысший приоритет у пер- trusted_connected=yes;"
вого выражения, наименьший – у последнего. a.open(str)
a.cursorlocation=3
Учитывая описанное, составим SQL-запрос к AD через
прилинкованный сервер: set rs=СreateОbject("Аdodb.Recordset")
str_q="select convert(varchar(50), distinguishedName ) ↵
as Path, convert(varchar(50), telephonenumber) ↵
select as Tel from openquery (ADSI, ↵
convert(varchar(50), cn) as UserName, 'select distinguishedName , telephonenumber ↵
convert(varchar(50), telephonenumber) as Tel from ''"+Domain+"'' where objectclass=''person'' ↵
from openquery and not objectclass=''computer'' ↵
(ADSI, ' and not telephonenumber=''*тел.*'' ')"
select cn, telephonenumber rs.open str_q, a, 1, 2, 1
from ''LDAP://DC=firm,DC=ru'' rs.movefirst
where objectclass=''person'' Do Until rs.EOF
and not objectclass=''computer'' WriteDate (rs.Fields(Path).Value, rs.Fields(Tel).Value)
and not telephonenumber=''*тел.*'' rs.MoveNext
') Loop

Сценарий будет работать гораздо медленнее, если, Function WriteDate(a,b)


Set oUser = GetObject("LDAP://"& a)
к примеру, фильтр телефонного номера вынести из подза- oUser.Put " telephonenumber", b
проса в основной, поэтому старайтесь использовать все oUser.SetInfo
Set oUser = Nothing
фильтры в непосредственном запросе к Active Directory. End Function
Приведу пример неправильного использования фильтра.
Красным отмечены внесенные в листинг изменения:
Заключение
select Прилинкованные серверы, кажущиеся с первого взгляда
convert(varchar(50), cn) as UserName,
convert(varchar(50), telephonenumber) as Tel неудобными и громоздкими в использовании, позволяют
from openquery значительно повысить скорость работы приложений, в ко-
(ADSI, '
select cn, telephonenumber торых они применяются. Отсутствие возможности записи
from ''LDAP://DC=firm,DC=ru'' в прилинкованные базы с помощью сервера может быть не
where objectclass=''person''
and not objectclass=''computer'' только недостатком, но и преимуществом.
/* and not telephonenumber=''*тел.*'' */ Если необходимо добиться, чтобы все пользователи
')
where telephonenumber is null имели доступ к базе данных только на чтение, – использо-
вание прилинкованного сервера является идеальным ва-
Добившись правильной работы сценария, перейдем риантом для решения задачи с точки зрения администри-
к формированию скрипта на VBScript. рования Если же необходимо обеспечить возможность де-
Запись значений параметров в Active Directory осу- лать изменения в базе – используйте сервер для получе-
ществляется с помощью ADODB-соединения с исполь- ния необходимой для записи информации и записывайте
зованием провайдера ADsDSOObject. Исходными данны- данные традиционным способом.
ми являются distinguishedName – местоположение объек- Такой подход обеспечивает увеличение скорости рабо-
та и имя корректируемого поля, поэтому созданный SQL- ты созданных приложений.

26
администрирование

Разворачиваем кластер
Microsoft Exchange

Андрей Бирюков
Надежность – зачастую основное требование, которое предъявляется к любой системе.
Не являются исключением и различные информационные системы, например сервис
электронной почты. Один из наиболее распространенных способов обеспечения
отказоустойчивости этой службы – почтовый кластер Microsoft Exchange.

Вступление ния и организации бизнеса. Очевидно, тывании и обслуживании кластеров


к продолжению что при таком положении вещей почто- Microsoft Exchange. Материал является
Сервис электронной почты являет- вая система становится, пожалуй, са- продолжением статьи [1], посвященной
ся неотъемлемой частью бизнес-про- мым критичным сервисом, и даже ми- кластерам на базе Microsoft.
цессов в любой компании, независимо нутный простой этой системы чреват
от ее размеров. А такие мощные поч- большими неприятностями для сис- Когда кластер
товые системы, как Microsoft Exchange темных администраторов. Возможным не поможет…
или Lotus Domino, предоставляют, по- решением проблемы отказоустойчи- Так как внедрение кластерных сис-
мимо отправки и приема почтовых со- вости является использование клас- тем связано с определенными, иногда
общений, также средства планирова- теров. Сегодня я расскажу о развер- весьма серьезными финансовыми за-

28
администрирование
тратами, прежде чем приступать к опи-
санию технологии, мне бы хотелось об-
судить такой вопрос: от каких проблем
помогают кластеры, а от каких – нет?
Кластерные технологии предоставля-
ют отказоустойчивость, но не гаранти-
руют ее. Другими словами, несмотря на
использование данной технологии вам
не стоит забывать о таких вещах, как
регулярное резервное копирование,
обеспечивающее сохранность данных
и настроек, резервирование и дублиро-
вание служб и приложений (например,
развертывание нескольких почтовых
релеев, серверов DNS и т. д.).
Следующий важный момент, свя-
занный с обслуживанием почтовых
систем. До 80% простоев почтовых
служб связано с человеческим фак-
тором, т.е. с ошибками администрато-
ров и технических специалистов (ес-
ли в вашей сети рядовой пользователь Рисунок 1. Схема зависимости ресурсов в кластере Exchange
может вывести из строя почтовую сис-
тему, то дела совсем плохи, и кластер нологий и проблем, связанных с этим, ты: Active/Active и Active/Passive. То есть
тут точно не поможет). В такой ситуа- помогут вам лучше определиться с те- в первом случае в каждый момент вре-
ции почтовый кластер также не слиш- ми требованиями и задачами, кото- мени оба узла обрабатывают зада-
ком полезен, ведь ошибки допускают- рые вы предъявляете к данной тех- чи Exchange, во втором случае только
ся людьми, и техника не всегда способ- нологии. Для того чтобы проверить, один узел обрабатывает задачи, а вто-
на определить, верно ли выполнены поддерживается ли ваше аппарат- рой простаивает. Microsoft настоятель-
те или иные действия администрато- ное обеспечение Windows Server 2003, но рекомендует использовать режим
ра. Кластер предназначен для защиты вы можете воспользоваться ресур- Active /Passive, так как использование
прежде всего от аппаратных сбоев. сом http://www.microsoft.com/whdc/hcl/ режима Active/Active приводит к появ-
Не забудьте про масштабируемость default.mspx. лению ограничений в использовании
вашего решения. Организации с тече- аппаратных ресурсов узлов, а также
нием времени расширяются, увеличи- Постановка задачи к проблемам с отказоустойчивостью.
вается количество рабочих мест, учет- Имеется два сервера: Node 1 и Node 2. Перед тем как начать процесс ус-
ных записей электронной почты и т. д. Необходимо развернуть почтовую сис- тановки, нам необходимо развернуть
В связи с этим выбирайте аппаратное тему на базе отказоустойчивого клас- кластер на основе службы Microsoft
обеспечение для вашего кластера с за- тера. В результате мы должны полу- Cluster Service. Подробное описание,
пасом по мощности и ресурсам. Иначе чить почтовый кластер. Данная поч- как это сделать, читайте в статье [1].
вы рискуете столкнуться с ситуацией, товая система должна быть созда- Напомню, что перед установкой нужно
когда ваш отказоустойчивый кластер на на основе двухузлового отказоус- подготовить кворум-устройство, то есть
будет справляться с запросами поль- тойчивого кластера, который назо- общий диск, который будут использо-
зователей все медленнее и медленнее. вем Mail. вать все узлы кластера. В данном слу-
Это общий принцип, который актуа- чае емкость этого диска должна пре-
лен не только для кластеров, но и для Архитектура вышать 100 Гб, при этом для отказоус-
любых других систем. И, наконец, не- Прежде всего определимся с редакци- тойчивости лучше всего использовать
маловажный вопрос стоимости внед- ями Microsoft Exchange, которые мы мо- аппаратные RAID‑1 или RAID-5. Также
рения. Необходимо определить стои- жем использовать. По аналогии с опе- при создании кластера Exchange вам
мость простоя и исходя из этого подоб- рационной системой необходимо ис- потребуется использовать оба сете-
рать конфигурацию кластерного реше- пользовать редакцию Enterprise Edition, вых адаптера на каждом из узлов. Это
ния. Не очень разумно разворачивать так как Standard не поддерживает обусловлено необходимостью оптими-
четырехузловой кластер в сети из 50 кластеризацию. Microsoft Exchange зации пропускной способности сети.
пользователей, однако не менее нера- 2003 Enterprise Edition поддерживает Предназначение сетевых интерфей-
зумно использовать для почтовой сис- до 8 узлов, но в качестве примера я бу- сов аналогично описанным в преды-
темы одиночный сервер в сети из не- ду рассматривать установку двухузло- дущей статье: Heartbeat и LAN. Пер-
скольких тысяч пользователей. вого кластера. вый предназначен для обмена сооб-
Итак, думаю мои размышления Для кластерных приложений типа щениями о состоянии узлов кластера,
по поводу внедрения кластерных тех- Exchange возможны два режима рабо- а второй служит для связи с внешней

№6, июнь 2007 29


администрирование
n Print Spooler Service;
n License Logging Services;
n Computer Browser.

Следующим этапом проверьте


соответствие наименования дисков
на каждом из узлов кластера. Напри-
мер, в нашем случае имеются два узла,
у каждого из них имеется диск Q, P, R.
Ситуация, при которой на одном узле
эти диски видны как Q, P, R, а на дру-
гом L, M, N, недопустима. На обоих уз-
лах должны быть видны Q, P, R. Также
проследите за тем, чтобы Exchange на
всех узлах был установлен на локаль-
ном ресурсе и имел идентичную струк-
туру каталогов и файлов.
Также удостоверьтесь, что на каж-
дом из узлов установлены следующие
службы: Web, NNTP, SMTP, ASP.NET.
И еще хотелось бы напомнить
Рисунок 2. Установленный почтовый кластер Exchange о том, что крайне нежелательно разме-
щать какие-либо сторонние приложе-
сетью. Обмен данными в кластере осу- Все прочие службы, такие как ния на узлах кластера (за исключени-
ществляется через кворум-устройство, шлюзы, коннекторы Exchange и дру- ем приложений, взаимодействующих
не через сеть. гие, должны быть установлены на от- с почтовой системой, таких как почто-
Итак, в случае правильного выпол- дельных серверах. вый антивирус).
нения рекомендаций статьи [1] у вас После завершения выполнения
должен был получиться отказоустой- Приступая к установке предварительных настроек можно при-
чивый двухузловой кластер под назва- Прежде чем запустить файл установ- ступать к началу инсталляции.
нием Mail, как и предполагалось в раз- ки, нам придется проделать некото- Преж де всего необходимо за-
деле «Постановка задачи». рые предварительные работы, поми- пустить /Domainprep для подготовки
мо установки кластера Microsoft Cluster домена Active Directory к установке
Учитываем ограничения Service. Для начала необходимо убрать Microsoft Exchange. Обратите внима-
Для того чтобы лучше спланировать все ненужные настройки и сетевые ние, что для запуска вам потребуются
использование кластером некото- службы, так как они замедляют рабо- права из группы Domain Admins.
рых аппаратных ресурсов, в частнос- ту кластера, а также снижают уровень Далее, на первом узле кластера
ти, жесткого диска, вам необходимо защищенности системы. Так, для внут- (том, который предполагается исполь-
ознакомиться с рядом ограничений реннего интерфейса Heartbeat не нуж- зовать в качестве «хозяина» ресурса)
в Microsoft Exchange. ны настройки DNS и шлюз по умолча- запускаем установочный файл setup.
В Exchange 2003 есть жесткое ог- нию. Также удалите на внутреннем ин- exe. В нашем случае это Node 1. В пер-
раничение на количество хранилищ, терфейсе службы Client for Microsoft вом окне после лицензионного со-
не более четырех групп на один сер- Networks, File & Printer Sharing for глашения видим Component Selection
вер. Как правило, четырех хранилищ Microsoft Networks. Screen. Обычно используется типич-
вполне достаточно для решения за- На закладке «Advanced Properties» ная (Typical) установка компонентов.
дач средней сети. в разделе «Internet Protocol (TCP/IP)» В этом же окне необходимо указать
Развивая тему ограничений, ис- выберите «DNS» и отключите «Register расположение каталога, в который
пользуемых в кластере Exchange, при- This Connection’s Address In DNS». будет установлен Exchange. Ещё раз
вожу список служб, используемых Затем выберите закладку «WINS» обращаю внимание на то, что на всех
в Active/Passive-кластере: и удалите все IP-адреса WINS-серве- узлах кластера этот путь должен быть
n System Attendant; ров. Также отключите «Netbios over одинаковым, но располагаться этот ка-
n Information Store; TCP/IP». талог должен на локальном ресурсе.
n Routing Engine; Кроме сетевых служб, также жела- Далее нажимаете «Next» и про-
n Message Transfer Agent (one per тельно отключить следующие службы изводите установку. В результате
cluster group); на каждом из узлов кластера: по завершении процесса установ-
n POP3, IMAP4, SMTP, and HTTP n Distributed Link Tracking Client; ки Exchange установлен, но сервисы
protocols; n Distributed Link Tracking Server; не настроены. Аналогичную операцию
n MS Search; n Distributed File System; необходимо проделать и на втором уз-
n Exchange Management. n Remote Access Connection Manager; ле кластера Node 2.

30
администрирование
Объединяем ресурсы
Теперь приступаем к самому интерес-
ному – к настройке почтового класте-
ра. Оба узла содержат файлы, необхо-
димые для поддержки Exchange Virtual
Server, виртуального сервера, кото-
рый в качестве физической структу-
ры использует наш кластер. Первым
делом проверьте, видят ли оба узла
общий кворум-ресурс. Затем в кон-
соли Cluster Administrator необходи-
мо создать группу. Для этого нажима-
ем правою кнопку мыши на разделе
«Groups», и выбираем «Create A New
Group». Далее указываем наименова-
Рисунок 3. Политика перехода Рисунок 4. Политика возвращения
ние группы и ее описание. На следую- отключения при сбое ресурса
щем шаге указываем предпочтитель-
ного владельца ресурса. В нашем слу- ляется служба System Attendant – клю- робностями, описывающими постро-
чае это будет Node 1. чевой компонент Microsoft Exchange. ение зависимостей, рекомендую об-
После этого нам необходимо со- Так что такая зависимость вполне ратиться к [2].
здать ресурс. Однако тут придется сде- оправданна. От этой службы зави- Итак, все эти ресурсы необходимо
лать небольшое отступление. Как уже сят службы протоколов SMTP, HTTP, будет создать для успешного функцио-
упоминалось в предыдущей статье [1], IMAP, POP3, а также Exchange Store нирования кластера. Причем создавать
ресурсы в Microsoft Cluster Service, и Microsoft Search. Также служба свя- нужно в соответствующей последова-
как правило, обладают зависимос- зана с Message Transfer Agent и Routing. тельности. Начнем с ресурса IP Address.
тями. Для Exchange эти зависимости В свою очередь System Attendant за- Выбираем «New → Resource». В поя-
отображены на рис. 1. висит от Network Name и Physical Disk. вившемся окне тип ресурса IP Address,
Как видно из рисунка, ключевым А Network Name в свою очередь тради- а также имя, описание и группу, к кото-
элементом в схеме зависимостей яв- ционно зависит от IP Address. За под- рой принадлежит данный ресурс. В сле-

№6, июнь 2007 31


администрирование
дующем окне указываем возможных сурсов, используемых непосредствен- глядеть это должно следующим обра-
владельцев, это узлы Node 1 и Node 2. но Exchange. Первым из этих ресурсов зом (см. рис. 2).
Затем необходимо прописать IP-адрес должен быть Exchange System Attendant. Обратите внимание на то, что все
ресурса, который будет использовать- Для этого выбираете «Exchange Server ресурсы должны иметь состояние
ся для доступа к кластеру. Group», далее «Create → New», далее Online. Если это не так, нужно вручную
В соответствии со схемой следу- «Exchange System Attendant Resource». запустить остановленный ресурс.
ющим требуется указать сетевое имя. Укажите оба узла в качестве возмож- Далее откройте «Exchange System
Обратите внимание на то, что это имя ных владельцев ресурса. В окне за- Administrator» на одном из узлов свеже-
впоследствии будет использоваться висимостей нужно указать только созданного кластера.
для подключения профилей почтовых Network Name. У вас может возник- Затем «Administrative Group», кон-
клиентов Outlook к почтовому класте- нуть ошибочное мнение, что нужен тейнер «Servers». Выбираем «Mailbox
ру. Проделываем действия, аналогич- также IP‑адрес, но так как сетевое имя Store», после чего открываем заклад-
ные описанным в предыдущем разде- уже зависит от IP-адреса, то в списке ку «Database». Здесь, возможно, ука-
ле. Только в качестве создаваемого ре- зависимостей его выделять не нужно. зан локальный путь к почтовому храни-
сурса указываем Network Name. Соот- После этого определяем administrative лищу, необходимо указать путь на об-
ветственно, в окне «Dependencies» не- group, в которой данный виртуальный щем ресурсе.
обходимо выбрать «IP address». В ка- сервер Exchange будет создан. Будьте После завершения всех этих не-
честве сетевого имени кластера ука- внимательны, сменить администра- хитрых манипуляций вы получаете
зываем Mail. тивную группу потом будет невозмож- работоспособный, отказоустойчивый
Следующий ресурс – это Disk но. Далее выбираем «Routing group», кластер.
Resources. Так же как и ранее, указы- в которой будет создан данный вирту-
ваем в качестве ресурса Disk Resource альный сервер. В отличие от предыду- Если что-то пошло
и выбираем общие кворум-устройства. щего действия, это впоследствии мож- не так…
Необходимо указать все общие диски, но будет изменить. Затем нужно ука- Что делать, если в процессе создания
используемые для хранилища, журна- зать пути к почтовым базам (databases) кластера что-то пошло не так и вы по-
ла событий и т. д. В качестве зависи- и журналам событий (transaction logs). лучили сообщение об ошибке или ка-
мости указываем «Network Name». И наконец, после завершения указа- кие-то ресурсы не запускаются?
Создав Disk Resources, мы подго- ния путей в следующем окне мы полу- Проверьте, не использует ли ка-
товили наш кластер к созданию ре- чаем рабочие ресурсы Exchange. Вы- кой-либо из узлов кластера TLS/SSL.

32
администрирование
В случае, если вам требуется исполь-
зование защищенных каналов, обра-
титесь к документации по Exchange
на Microsoft.com.
Удостоверьтесь, что каталог SMTP\
Mailroot находится на кворум-ресурсе,
не на локальном диске узла.
Проверьте соответствие букв дис-
ков на узлах в кластере.
Еще одна проблема, с которой вы
можете столкнуться, особенно пос-
ле перезагрузки или отключения уз-
лов кластера, – это то, что ресурсы
Exchange «повисают» в состоянии
Pending Online. В такой ситуации не-
обходимо проверить доступность
контроллеров домена Microsoft Active
Directory. Как правило, узлы не могут
переключиться в состояние Online, ес-
ли контроллер домена недоступен.
Если проблема имеет более слож-
ное решение, просмотрите сообщения Рисунок 5. Ресурсы кластера
об ошибках в журналах событий на уз-
лах кластера. тера (см. рис. 3). сурс кластера, и вы можете управлять
Политика возвращения ресурса им так же, как и прочими ресурсами.
Тонкая настройка аналогична политике выхода из строя. В следующем примере используется
Теперь необходимо произвести не- Но здесь вы можете запретить Failback. Trend Micro ScanMail for Exchange в ка-
которые дополнительные настройки Это необходимо в тех ситуациях, ког- честве антивирусной системы для поч-
для обеспечения дополнительной от- да смена владельца ресурса может тового сервера (см. рис. 5).
казоустойчивости и надежности. Пре- привести к сбоям приложений клас- Основным инструментом управ-
жде всего необходимо определиться тера. В случае, если вы хотите разре- ления почтовым кластером является
с политиками отключения при сбое. шить возвращение ресурса, то вы мо- консоль Cluster Administration. Рабо-
Этот процесс очень важен, так что я жете разрешить делать это немедлен- та с почтовым кластером имеет свои
рассмотрю его более подробно. но (Immeditely) или же в определенный особенности, в частности, нужно быть
Когда один из узлов кластера выхо- интервал времени, например, в нера- очень осторожным при работе с ресур-
дит из строя (политика Failover), с дан- бочие часы, когда нагрузка на кластер сами, остановка основных, таких как
ного узла перестают приходить сиг- минимальная (см. рис. 4). System Attendant, приведет к останов-
налы Heartbeat. Другие узлы класте- Как правило, вместе с почтовым ке всех зависимых ресурсов.
ра обнаруживают отсутствие одного сервером в крупных сетях использу- К тому же не стоит забывать о тех
из узлов, и запускается процесс пе- ется также различное дополнительное вопросах, которые освещались в параг-
редачи владения (ownership) рабочим программное обеспечение, например, рафе «Когда кластер не поможет…».
узлам кластера. Информация о пе- антивирус, антиспам, система шиф-
редаче владения находится на кво- рования и т. д. Что касается средств Заключение
рум-устройстве. В случае возвраще- защиты от нежелательных почтовых с продолжением
ния в строй выбывшего узла (полити- сообщений (антиспама), то мое мне- Тема реализации кластеров на осно-
ка Failback) происходит обратная пере- ние, что данная служба должна рас- ве служб Windows ещё не заканчива-
дача владения рабочему узлу. полагаться на почтовом шлюзе (relay) ется. Не стоит обходить стороной та-
Политики перехода Failover и и не должна расходовать ресурсы на- кую службу, как Network Load Balancing,
Failback доступны в разделе свойства шего кластера. и установку кластера с её помощью.
Exchange Server. Что же касается таких средств, как В следующей статье читайте создание
В политике перехода отключения почтовый антивирус, то перед развер- кластера на основе NLB, а также о его
при сбое нужно определить два пара- тыванием кластера необходимо уз- настройке и обслуживании.
метра поведения кластера: пороговое нать, поддерживает ли ваш антиви-
значение количества сбоев (threshold) рус кластеризацию. Как правило, все 1. Бирюков А. «Разворачиваем кластер
за интервал времени (period). Значе- современные антивирусные систе- на основе Windows Server 2003». //Сис-
ния по умолчанию это 10 сбоев ресур- мы для почтовых серверов позволя- темный администратор, №5, 2007 г. –
са в группе за 6 часов. Такие значения ют осуществлять установку на клас- с. 50-55.
этих параметров будут вполне прием- терные системы. При этом антивирус 2. J. McBee. «Microsoft Exchange Server
лемы для нашего двухузлового клас- после установки превращается в ре- 2003: 24 seven», Sybex.

№6, июнь 2007 33


администрирование

Строим сетевую инфраструктуру


для системы 1С:Предприятие

Сергей Алаев

Ваших сотрудников не устраивает медленная работа системы 1С:Предприятие,


и вы планируете перейти на клиент-серверное решение? Использование сервера терминалов
и средств публикации приложений поможет справиться с этой проблемой, а также обеспечит
возможность доступа к программе удаленных пользователей.

34
администрирование
Прелюдия n SSL-шифрование передачи данных
Ни для кого не секрет, что 1С:Бухгал- и другие.
терия получила широкое распростра-
нение в различных предприятиях и ор- Терминальный клиент, входящий
ганизациях. Развитие и укрупнение ор- в состав Windows («Удаленный рабо-
ганизации неизменно связано с ростом чий стол») не обладает никакими до-
объемов хранимой и перерабатывае- полнительными возможностями, кро-
мой информации, а также увеличени- ме как запускать программу, пропи-
ем количества одновременно работаю- санную в среде пользователя. Поэ-
щих пользователей с программой. Воз- тому после установки и испытания
никает ситуация, при которой обеспе- 2X ApplicationServer в действии вы пой-
чить приемлемую производительность мете, чем отличается работа со специ-
работы, используя способ хранения ализированными средствами терми-
данных в виде файлов dbf, и переда- нальной работы и стандартными ре-
чи в процессе работы всей БД на кли- шениями от Microsoft.
Рисунок 1. Настройка сервера
ентский компьютер, не представляет- терминалов
ся возможным. Установка и настройка
Выход из этой ситуации заключа- сервера терминалов Вам потребуется в течение 120
ется в том, чтобы сменить архитек- Желательно обновить Windows Server дней установить в разделе «Установ-
туру на клиент-серверную. Для этого 2003 до SP1, чтобы иметь послед- ка и удаление программ» «Панели уп-
потребуется перейти на SQL-версию нюю версию RDP-протокола переда- равления» необходимый компонент –
1С:Предприятие и Windows SQL-сер- чи данных. Terminal Server Licensing и активиро-
вер или использовать другие решения, Для установки сервера терминалов вать его. Именно на этот срок для кли-
например, установить сервер термина- запускаем мастер настройки сервера: ентов будут выдаваться временные ли-
лов на базе Windows Server 2003. «Пуск → Настройка → Панель управле- цензии на подключение.
Это также удобно, если планиру- ния → Администрирование → Управ- При этом целесообразно исполь-
ется организация работы удаленных ление данным сервером». Здесь нажи- зовать схему лицензирования «На ус-
рабочих мест. маем кнопку «Добавить или удалить тройство».
Использование средства публика- роль». Мастер установки выведет спи- Запускаем консоль «Лицензиро-
ции приложений на удаленные рабо- сок всех ролей нашего сервера. Сре- вание сервера терминалов» в разде-
чие столы 2X ApplicationServer позво- ди них выберем «Сервер терминалов» ле «Администрирование» и в списке
лит передавать приложение как есть, и нажмем кнопку «Далее». серверов выбираем наш сервер. В ме-
без элементов рабочего стола и допол- После установки сервера терми- ню «Действие» нажимаем «Активиро-
нительных окон, что избавит пользова- налов система автоматически пере- вать сервер», а далее следуем инс-
теля от лишних хлопот и, кроме этого, загрузится. трукциям мастера активации серве-
защитит передаваемые данные. Осо- Настроить новые подключения для ра терминалов.
бенно это актуально, если для досту- служб терминалов, изменить парамет- Также советую отключить срабаты-
па к приложению работники будут ис- ры существующих подключений и уда- вание механизма «Предотвращения
пользовать Интернет. Основные воз- лить их позволяет компонент «На- выполнения данных» (Data Execution
можности 2X ApplicationServer: стройка служб терминалов» в разде- Prevention, DEP). Для этого открыва-
n простая возможность публиковать ле «Администрирование». ем и редактируем в «Блокноте» файл
как обычные, так и системные при- Здесь в свойствах существующего C:\boot.ini. Ищем строку с парамет-
ложения; подключения необходимо на заклад- ром /noexecute и меняем его значение
n передача приложения без окон ке «Параметры клиента» отключить на AlwaysOff (/noexecute=AlwaysOff).
и полная интеграция с локальным следующие возможности: сопостав- После этого необходимо перезаг-
рабочим столом и панелью задач ление LPT- и COM-портов, а наиболь- рузить систему. Это позволит предо-
удаленного пользователя; шую глубину цвета выставить в значе- твратить блокирование как самой про-
n встроенные возможности фильтра- ние «16 бит». Этого вполне достаточно граммы 1С:Предприятие, так и драй-
ции доступа к приложениям (напри- для компьютеров, входящих в локаль- веров некоторых принтеров, напри-
мер, по пользователям или IP-адре- ную сеть организации. мер, CANON Laser Shot LBP-1120, ко-
сам); Если будут работать компьютеры, торые возможно будут использовать-
n запуск пользователем множества использующие низкоскоростные спо- ся удаленными пользователями по об-
копий опубликованных программ собы подключения, например, по мо- щему доступу.
в рамках одной сессии с возмож- дему, этот параметр можно будет пе- Теперь можно приступить к уста-
ностью их полного восстановле- реопределить в настройках клиен- новке 1С:Предприятия (в ходе инстал-
ния; та 2Х-сервера. Все оставшиеся на- ляции необходимо выбрать локальный
n возможность запускать опублико- стройки на вкладках можно не трогать. режим установки, например, на диск
ванные Windows-приложения в сре- Они позднее будут заданы в консоли D:\1C\Distrib) и стандартного ПО, необ-
де Linux и Mac; 2X ApplicationServer (см. рис. 1). ходимого для работы (архиваторы, ко-

№6, июнь 2007 35


администрирование
ные записи входят в груп- администратору 1С контролировать
пу «Users», и пользователи работу удаленных клиентов и в слу-
не имеют достаточных прав чае непредвиденных ситуаций коррек-
выполнить ряд настроек тно завершать или сбрасывать сеансы,
в Windows Server 2003, тре- а главному бухгалтеру – визуально на-
бующих повышенных при- блюдать и непосредственно оказывать
вилегий. помощь своим подчиненным.
С целью экономии време- К пользователям 1С мы еще вер-
ни, пока находимся в нужном немся, теперь перейдем к главному.
разделе администрирова-
ния, мы их сразу включаем Установка и настройка
в группу «Administrators» (Ад- 2X ApplicationServer
министраторы) и «Remote Большего от встроенных оснасток на-
Desktop Users» (Пользовате- стройки и управления сервером тер-
ли сервера терминалов). миналов Windows 2003 ничего не тре-
До бав л е ни е в группу буется. Опытные администраторы, ко-
Рисунок 2. Список публикаций «Администраторы» является нечно, позаботятся о более «тонкой»
временным. После того, как настройке политики безопасности
деки, XML-парсера, Microsoft .NET-2.0 авторизуемся с помощью клиента 2Х- сервера, но оставшаяся часть рабо-
или старше, драйверы ключа HASP сервера из-под учетной записи каждо- ты заключается в конфигурировании
для 1С, версии не ниже 4.98, менед- го пользователя сервера терминалов 2X ApplicationServer.
жера лицензий HASP от «Аладди- и запустим удаленный «Рабочий стол» Закачиваем ApplicationServer с сай-
на» (http://www.alladin.ru/catalog/hasp/ для настройки параметров пользова- та http://www.2x.com, предварительно
hasp4), версии не ниже 8.20, MS Office, тельского окружения (какие настрой- зарегистрировавшись на нем, и при-
и прочее). ки – я опишу чуть позже), мы исключим ступаем к установке. Замечу, что ком-
Менеджер лицензий устанавливать членство пользователей в группе «Ад- пания позволяет бесплатно работать
нужно с типом загрузки «Service» и от- министраторы». В результате работни- с продуктом 5 пользователям одно-
казаться от установки драйвера ключа, ки не смогут делать несанкциониро- временно.
идущего в комплекте, так как он имеет ванные действия и менять настройки Продукт состоит из серверной
более раннюю версию. в Windows Server 2003. (2XAppServer-LoadBalancer.msi) и кли-
Конфигурации 1С устанавлива- Называть учетные записи пользо- ентской частей.
ем в отдельные папки, например, вателей можно как удобно, главное по- Серверную часть устанавливаем
D:\1C\Buh, D:\1C\Zarplata, D:\1C\Sklad. том задать пароль на вход в систему. на компьютер, работающий под управ-
Отдельно создадим папку D:\1C\ Дополнительные настройки для учет- лением Windows Server 2003. В про-
Archive, куда будем делать копии баз ных записей заключаются в том, чтобы цессе установки инсталлятор пред-
данных. на закладке «Удаленное управление» ложит выбрать тип установки – выби-
Обратите внимание, что установ- снять галочку с флажка «Запрашивать раем «Single Terminal Server» и жмем
ку всех программ необходимо про- разрешение пользователя» и устано- кнопку «Next».
изводить с помощью утилиты «Уста- вить переключатель в секции «Уро- После установки запуститься
новка и удаление программ» (в «Па- вень управления» на «Взаимодейс- «2X Console», где производится на-
нели управления»). В открывшемся твие с этим сеансом». Это позволит стройка и публикация приложений.
окне нажмите кнопку «Установка но-
вой программы» и следуйте дальней-
шим указаниям мастера. Это делает
программы доступными в терминаль-
ном режиме.
Все действия выполняются из-под
учетной записи Администратора.

Добавление пользователей
сервера терминалов
В разделе «Администрирование» за-
ходим в «Управление компьютером»
и выбираем раздел «Локальные поль-
зователи и группы». В меню «Дейс-
твие» добавляем учетные записи для
пользователей программы 1С, имею-
щих право входа в терминалы. Логи-
ка следующая: по умолчанию все учет- Рисунок 3. Публикация приложений

36
администрирование
Весь этап конфигурирования за- Sever 2003, и, не добавив в него необ-
ключается в прохождении всех строк ходимые учетные записи (в том чис-
в навигационном меню сверху – вниз. ле Администратора), программа не
Первая вкладка слева – «Terminal опубликует приложение пользовате-
Servers». В окне свойств справа мы мо- лю программы.
жем нажать на кнопку «Add» и ввести Главный бухгалтер организации
(лучше всего IP-адрес для скорейшего должен иметь возможность запускать
поиска) работающий сервер термина- оснастку управления сервером тер-
лов как по протоколу RDP, так и Citrix миналов «Terminal Services Manager»
Server (ICA). По умолчанию здесь уже для перехвата управления сессиями,
будет добавлен наш сервер, например, а администратор Windows Server 2003
с IP-адреса 192.168.6.39. и 1С, дополнительно, удаленный «Ра-
Вкладка «Load Balancing» служит бочий стол» для администрирования
для настройки балансировщика за- и обновления программ.
грузки нескольких терминальных сер- Поэтому публикуем «Рабочий стол»
Рисунок 4. Настройка
веров «2Х LoadBalancer». Здесь нас Windows Server 2003 с добавлением 2X ApplicationServer Client
интересуют только строки «Reconnect в фильтре учетной записи «Админис-
to disconnected sessions» и «Limit user тратор» и группы «Администраторы», няем на «<IP-адрес Windows 2003>:80»
to one session per desktop». Выстави- а также утилиту C:\Windows\system32\ (в нашем примере 192.168.6.39:80).
те галочки, чтобы их задействовать. tsadmin.exe. Фильтр для tsadmin.exe Это обеспечит доступ к веб-серверу.
Это позволит правильно восстанавли- должен содержать учетные записи, ис- Для защищенного доступа к опуб-
вать отключенные сеансы и экономить пользуемые администратором систе- ликованным приложениям необхо-
ресурсы сервера. мы и главным бухгалтером. Таким об- димо на закладке «Client Gateway»
На вкладке «Publishing» происходит разом, пока учетные записи пользова- в секции «Security» поставить галоч-
самое главное. А именно, публикация телей 1С входят в группу «Администра- ку «Enable SSL on Port 443». В самом
программ для терминального исполь- торы», мы имеем возможность запус- низу нажимаем кнопку «Generate new
зования и назначение фильтров на до- тить удаленный «Рабочий стол» и вы- certificate», вводим данные для едино-
ступ к ним. В окне свойств нажимаем полнить настройки окружения. А за- го сертификата доступа и сохраняем
кнопку «Add» и выбираем, что мы бу- тем, исключив их из группы «Адми- его на сервере. После этого для соеди-
дем публиковать (см. рис. 2). нистраторы», завершим сеанс, чтобы нения с 2Х‑сервером можно использо-
Предоставленные средства позво- в дальнейшем пользователи не смог- вать 443-порт с шифрованием переда-
ляют организовать публикацию само- ли «видеть» и запускать его. Напро- ваемых данных. Порт, прописанный
стоятельных программ, установлен- тив, главный бухгалтер и администра- в строке «2X Client Gateway Port», так-
ных на Windows Server 2003, удален- тор 1С всегда смогут воспользоваться же будет доступен 2Х-клиентам в ре-
ные рабочие столы, предустановлен- удаленным «Рабочим столом» и оснас- жиме доступа «SSL Mode».
ные программные средства Windows ткой «Terminal Services Manager». На вкладке «Connection Settings»
Server 2003 (браузер Internet Explorer, Если с опубликованными прило- имеются различные настройки для пе-
системные утилиты, оснастки), от- жениями будут работать пользовате- ренаправления портов сервера тер-
дельные файлы и объединять все это ли на компьютерах, использующих миналов, агента и вспомогательных
в группы. Выбираем первый пункт ме- dial-up способ подключения и полу- служб 2Х. Желательно отключить
ню «Application» и нажимаем «Далее». чающих IP-адреса от DHCP-серве- «Broadcast 2X Client Gateway Address»,
В появившемся окне смотрим секцию ра, то рекомендую не использовать чтобы сервер публикации не «засорял»
«Server Settings», добавляем в строке фильтр «IP Address». сеть пакетами оповещения для быст-
«Target» файл запуска 1С:Предприятия На следующей вкладке «Connection рой настройки клиентов 2Х.
(D:\1C\Distrib\BIN\1cv7.exe) и жмем «Да- Settings» необходимо установить Вкладки «Information» и «Licensing»
лее». Автоматически заполнятся все «2X Client Gateway Port». По умолча- пропускаем, нажимаем внизу «ОК»
оставшиеся настройки для публика- нию его значение «80». Обычно на сер- и закрываем 2Х ApplicationServer. Сис-
ции программы в терминальном до- верах и в маршрутизаторах порты тема готова для работы, осталось уста-
ступе (см. рис. 3). 80, 443 открыты для передачи дан- новить и настроить на клиентских ком-
Переходим на закладку «Filtering» ных. Если на вашем сервере Windows пьютерах 2X ApplicationServer Client.
и активируем тип фильтра «User». Server 2003 не будет использоваться Устанавливаем его на компьютерах
Здесь надо добавить все ранее за- IIS‑служба (HTTP-сервер), то можно пользователей. Для настройки кли-
веденные учетные записи пользова- оставить все как есть. ента запускаем в меню «Tools» пункт
телей, которые будут работать в про- Если IIS задействована, то устано- «Options». На закладке General указы-
грамме 1С, а также учетную запись вим значение «2X Client Gateway Port» ваем основные параметры для под-
«Администратор». равным «81», рядом нажимаем кноп- ключения (см. рис. 4).
Важно понять, что фильтр «User» ку «Advanced…» и значение «Forward На закладке «Local Resources» сек-
2Х-сервера не относится к встроен- requests to 2X Publishing Agent and HTTP ции «Remote Computer Sound» выбира-
ным средствам безопасности Windows Server» в строке «HTTP Server(s)» ме- ем «Do not play», чтобы не воспроиз-

№6, июнь 2007 37


администрирование
мой IP‑адрес и имя принтера, напри-
мер, \\192.168.5.12\hp LaserJet 1160.
Для более надёжной работы не-
обходимо активировать учетную за-
пись «Guest» на клиентских компью-
терах и добавить её в свойствах при-
нтера на закладке «Безопасность».
Если у вас отсутствует закладка «Бе-
зопасность», то в свойствах «Про-
водника» уберите галку «Использо-
вать простой общий доступ к файлам
и принтерам».
Не закрывая удаленный «Рабо-
чий стол», переносим «Мои докумен-
ты» с Windows Server 2003 на локаль-
ный диск работника, присоединенный
в терминальную сессию. Кликнем пра-
вой кнопкой мышки по значку «Мои
документы», выберем свойства и на-
жмем кнопку «Переместить».
Рисунок 5. Создание ярлыка для 1С В обзоре присоединенные локаль-
ные диски будут выглядеть как сете-
водить звуки через локальный адап- телей сервера терминалов и произве- вые диски, поэтому их не надо путать
тер звука, а в секции «Local devices» дем следующие настройки на серве- с локальными дисками сервера. Луч-
оставляем галочку только на «Disk ре: в свойствах экрана отключим за- ше переместить «Мои документы»
drives» для подключения локальных ставку, потом в «Панели управления» с сервера в такую же папку «Мои до-
дисков клиента в терминальную сес- откроем «Электропитание» и выберем кументы» на локальной машине поль-
сию. Все эти настройки заменяют на- период «Никогда» для опции «Отклю- зователя.
стройки оснастки «Настройка служб чение дисков» (при отсутствии актив- Теперь все отчеты из 1С будут
терминалов» в Windows Server 2003. ности на сервере). Тут же, на заклад- по умолчанию сохраняться на локаль-
На последней закладке «Advanced ке «Дополнительно», снимем галоч- ной машине пользователя для даль-
Settings» советую снять галочку с «Do ку «Запрашивать пароль при выходе нейшей с ними работы.
not warn if server certificate is not verified», из ждущего режима». «Разрешить ис- Небольшой совет: при выгрузке
чтобы избавить пользователя от про- пользование спящего режима» тоже отчетности на дискету программа 1С
цедуры ознакомления с сертификатом отключаем. Далее, в свойствах «Мое- предложит дисковод, размещенный
доступа при запуске опубликованных го компьютера» на закладке «Дополни- на сервере (если таковой имеется),
приложений. тельно», нажмем кнопку «Параметры», оператору надо сменить его на присо-
После настройки и запуска 2Х‑кли- и в секции «Быстродействие», на за- единенный локальный диск А:\ и со-
ента в рабочей области программа кладке «Визуальные эффекты», поста- здать на дискете папку, в которую бу-
отобразит список всех опубликован- вим флажок «Обеспечить наилучшее дет осуществляться выгрузка, ина-
ных приложений, для которых в филь- быстродействие». Все эти настройки че 1С выведет сообщение об отсутс-
тре «User» консоли 2Х-сервера добав- обеспечат быструю и бесперебойную твии дискеты.
лены нужные учетные записи. работу сервера терминалов. Кроме то- Прежде чем выйти из удаленно-
Для Администратора будут до- го, в процессе работы с опубликован- го «Рабочего стола», запустим ос-
ступны 1С:Предприятие, Рабочий стол ной программой создается иллюзия, настку «Управление компьютером»
и Terminal Services Manager, а для рядо- что программа присутствует на клиент- и в свойствах учетной записи на за-
вых операторов 1С фильтр должен бло- ском компьютере, однако все, что про- кладке «Членство в группах» удалим
кировать последнюю программу. исходит на экране, лишь транслирует- нашу принадлежность к группе «Адми-
Для создания ярлыка на локальном ся сервером 2Х и грамотные настрой- нистраторы». Нажмем кнопку «Пуск →
рабочем столе пользователя кликни- ки на сервере позволят удаленному Завершение работы → Завершение
те правой кнопкой мышки по иконке пользователю «забыть», что он рабо- текущего сеанса» и выйдем из терми-
1С и выберите пункт «Create Shortcut» тает удаленно. нальной сессии.
(см. рис. 5). Теперь займемся принтерами. Раз- Все вышеописанные действия не-
решим общий доступ к локальным обходимо проделать с оставшими-
Настройка печати и прав принтерам пользователей. И в опубли- ся учетными записями пользовате-
доступа пользователей кованном удаленном «Рабочем столе» лей сервера терминалов. После это-
к базам данных 1С устанавливаем ему его же локальный го они не будут иметь административ-
Запустим удаленный «Рабочий стол» принтер, но уже как сетевой с помо- ных прав на сервере. Соответствен-
из-под учетной записи всех пользова- щью кнопки «Обзор» или указав пря- но, в консоли 2Х‑сервера, в фильтре

38
администрирование
«User», опубликованного «Рабочего стола», удалим груп- Обратите внимание, что наименование запускаемого
пу «Администраторы», запретив пользователям запускать приложения необходимо брать в кавычки.
его в клиенте 2Х. Полный список всех параметров приведен в руководс-
Для разграничения доступа пользователей к базам тве к 2Х-серверу.
данных 1С:Предприятия в свойствах папки D:\1C выберем При испытании Windows-клиента 2Х-сервера мною бы-
«Безопасность», удалим все учетные записи и группы, ос- ла выявлена следующая проблема: когда вы закрываете
тавив только «Администратор», «SYSTEM», «СОЗДАТЕЛЬ- опубликованное приложение и в течение 20 секунд (столь-
ВЛАДЕЛЕЦ», а потом добавим учетные записи пользова- ко времени 2Х-сервер сохраняет в памяти закрытый се-
телей 1С с полными правами. А в свойствах «Безопаснос- анс для быстрого повторного запуска) снова его запускае-
ти» каждого каталога с базами, находящихся на уровень те, то раскладка клавиатуры не будет переключаться. По-
ниже, мы будем удалять те учетные записи, пользовате- этому приходится ждать некоторое время, чтобы повторно
ли которых не должны запускать определенные конфигу- запустить опубликованное приложение. Причем при пер-
рации 1С. Причем удаление прав и учетных записей надо вом запуске приложения никаких проблем с раскладкой
производить, нажав на кнопку «Дополнительно» в заклад- нет. В Linux-версии 2Х-клиента данной проблемы замече-
ке «Безопасность», отключив там галочку с пункта «Раз- но не было. Производитель советует в Windows Server 2003
решить наследование разрешений от родительского объ- использовать другое сочетание клавиш для переключения
екта…». В появившемся диалоговом окне выбираем «Ко- раскладки клавиатуры, нежели в локальном компьютере
пировать» и удаляем лишние учетные записи. Для папки удаленного пользователя.
D:\1C\Archive строго оставляем только учетную запись ад- Какие-либо дополнительные ошибки, как, например,
министратора сервера, в функции которого входит резер- с Citrix ICA Client под Linux (при работе в нем на русской рас-
вное копирование данных. кладке клавиатуры буква «Ы» всегда печатается заглав-
Для управления сессиями сервера терминалов исполь- ная, справедливости ради надо заметить, что маленькая
зуется утилита «Terminal Server Manager». С её помощью «ы» получается при активированном CapsLock), связанные
можно отправлять сообщения подключенным пользовате- с работой 2Х-сервера и опубликованных приложений, так-
лям, принудительно завершать и сбрасывать отключенные же не обнаружены.
сессии, а также смотреть статистику сеансов. В заключение хочется сказать, что с выходом продукции
Теперь 1С можно запускать непосредственно с рабоче- компании 2X Software Ltd на рынке программ для Windows
го стола пользователя. 2X установит терминальную сес- Terminal Services прибавился очень серьезный игрок –
сию и само передаст программу как есть, без окон и уда- средство публикации приложений на удаленные рабочие
ленного рабочего стола. столы 2X ApplicationServer.
Запускаем 1С и добавляем каждому пользователю путь На сегодняшний день возможности Metaframe от компа-
к базе 1С, проверяем принтеры. В процессе работы опера- нии Citrix являются лидирующими в области эмуляции ло-
тор может запустить в рамках одной сессии неограничен- кальных окон (seamless windows) и публикации приложе-
ное количество копий программы 1С и работать с несколь- ний, а «стандартная связка» службы терминалов и ее кли-
кими конфигурациями одновременно, а также использо- ента «Remote Desktop Connection», работающие по прото-
вать другие программы, которые будут публиковаться, на- колу RDP, до сих пор не может обеспечить дополнитель-
пример, КонсультантПлюс и Гарант. ные потребности организаций, внедряющих терминаль-
Если в вашей организации имеется proxy-сервер и ис- ные решения.
пользуется firewall с SNAT, то, чтобы получить доступ Недостатки 2X ApplicationServer текущей версии 4.3:
к 2Х‑серверу через Интернет, необходимо настроить на нем выявленная при его использовании ошибка, приводящая
переадресацию портов на Windows Server 2003. к нестабильному переключению раскладки клавиатуры
Приведу пример, как это сделать в Linux. В настройках с латиницы на русский, а также отсутствие встроенной
firewall добавляем два правила: возможности сопоставлять локальные принтеры удален-
ных пользователей в терминальную сессию. Но с выходом
iptables -t nat –I PREROUTING -p tcp -d <внешний ↵ 5 версии продукта производитель обещает исправить все
IP-адрес proxy-сервера> --dport <выделенный порт ↵
на proxy-сервере, например, 10443> -j DNAT ↵ эти недостатки.
--to-destination <IP-адрес Windows 2003 сервера>:3389 В ходе написания статьи на сайте компании 2Х поя-
iptables –t filter –I FORWARD –s <IP Windows 2003 сервера> ↵ вилась новость о выходе 2X ApplicationServer v.5 Small
-d <внешний IP proxy-сервера> -p tcp ↵ Business Edition. Компания заявляет, что возможности но-
--port <выделенный порт на proxy-сервере, ↵
например, 10443> -j ACCEPT вого продукта ничем не уступают решениям Citrix и наце-
лены на небольшие развивающиеся предприятия и пред-
В настройках клиента 2Х, соответственно, надо пропи- принимателей.
сать внешний IP-адрес proxy-сервера и порт 10443. Клиент Низкая ценовая политика, безопасный и полный до-
2Х-сервера под Linux представляет собой бинарный файл, ступ к приложениям, а также универсальный Printer Driver
запускаемый с нужными параметрами. являются отличным решением для организации мобиль-
Например: ных рабочих мест, удаленных офисов и обеспечивают пол-
ную избыточность удаленного управления и администри-
./appserverclient -s192.168.6.39 -a"1С Предприятие" ↵ рования.
-uAdministrator -ppassword
На этом всё. Удачи!

№6, июнь 2007 39


администрирование

Система анализа квот на базе


File Server Resource Manager

Иван Коробко
В Windows Server 2003 RC2 появился наконец инструмент, позволяющий назначать квоты
на использование дискового пространства серверов – File Server Resource Manager. Каковы
достоинства и недостатки утилиты и как расширить ее возможности?

О
чень долгое время в операци- оповещения есть существенный недо- но с помощью сценария, который бу-
онных системах Windows от- статок. При заполнении дискового про- дет запускаться при событии, генери-
сутствовал инструмент, кото- странства, ограниченного квотой, мо- ровать и отсылать сообщение по поч-
рый позволял устанавливать квоты жет быть отправлено сообщение тому, те о состоянии квоты всем пользовате-
на дисковое пространство серверов кто его заполнил или перешел через ус- лям, имеющим доступ к папке.
и информировать по заданным пра- тановленную контрольную точку; а так-
вилам об использовании свободно- же службе поддержки по явно указан- File Server Resource
го места. В Windows Server 2003 RC2 ному e-mail-адресу. Однако оповестить Manager
появился штатный инструмент, позво- об этом событии остальных сотрудни- В состав File Server Resource Manager,
ляющий решить данную задачу – File ков, имеющих права на эту папку, не- находящейся в «Панели управления»,
Server Resource Manager. В системе возможно. Решить эту проблему мож- входят три инструмента:

40
администрирование
n Quota Management – позволяет со-
здавать шаблоны квот и назначать
квоты на серверные папки;
n File Screening Management – огра-
ничивает запись файлов указанных
форматов (mp3, wav, avi, vob и т. д.)
в папки;
n Storage Reports Management – со-
здает отчеты, в том числе обеспе-
чивает генерацию отчетов с помо-
щью Scheduled Tasks.

Quota Management
Состоит из двух компонентов: Quotas
и Quota Templates. В разделе Quotas
располагаются созданные на папки
Рисунок 1. Диалоговое окно
квоты, а в Quota Templates – шабло- «Create Qouta Templates…» Рисунок 2. Вкладка «e-mail Message»
ны, на основе которых можно созда-
вать квоты. падающего списка: Kb, Mb, Gb, Tb. В него могут быть вставлены пе-
Логика подсказывает, что квоты Квота может быть двух типов: Hard ременные, значения которых будут
удобнее и быстрее создавать с помо- и Soft. Принципиальная разница изменяться в зависимости от на-
щью шаблонов, поэтому сначала рас- заключается в том, что при превы- стройки квот и состояния анали-
смотрим Quota Templates. шении Hard-квоты система не да- зируемой папки.
ет записать информацию на диск, n Event Log – формируется запись
Quota Templates выводя сообщение об окончании в журнале событий на сервере на
В Quota Templates присутствует не- места, и генерируется сообщение. основе шаблона, содержащего раз-
сколько шаблонов по умолчанию. Не- При превышении Soft-квоты только личные переменные (см. рис. 3).
смотря на это, создадим собственный генерируется соответствующее со- n Command – при наст уплении
шаблон, кликнув правой кнопкой мы- общение. события запускается сценарий
ши по надписи Quota Templates и вы- n Notification thresholds – задают- (см. рис. 4). Для запуска скрипта
брав в появившемся меню «Create ся пороговые значения, в соответс- на VBScript необходимо в поле «Run
Quota Templates…». твии с которыми будут генериро- this command or script» указать путь
В диалоговом окне (см. рис. 1) не- ваться сообщения и их тип. к файлу-интерпретатору: %WinDir%\
обходимо заполнить несколько полей. system32\wscript.exe. В качестве
Программисты Microsoft предусмотре- Задание пороговых значений его аргумента в поле «Command
ли возможность создания шаблонов Под пороговым значением понима- Settings» вводят полный путь к фай-
на основе существующих: в верхней ют значение, указанное в процентах, лу-сценарию: C:\Quota.vbs. Если он
части диалогового окна в выпадающем по достижении которого происходит имеет параметры командной стро-
списке «Copy properties quota templates событие, на основе которого осущест- ки, то их указывают последователь-
(optional)» выберите подходящий шаб- вляется указанное действие. Выполня- но после имени сценария через
лон и нажмите на кнопку «Copy». Оста- емое действие зависит от настроек. пробел. FSRM поддерживает пере-
лось отредактировать импортирован- Задать новое пороговое значе-
ные параметры. ние можно, нажав на кнопку «Add»
Рассмотрим подробнее поля вклад- и указав в поле «Generate notifications
ки «Settings»: when usage» reaches число в процен-
n Template Name – имя шаблона, ко- тах, по достижении которого будет
торое будет отображаться в списке происходить событие. В появившем-
шаблонов; обязательное поле, ог- ся диалоговом окне несколько вкла-
раниченное по длине 255 символа- док, в каждой из которых задается
ми. свое событие:
n Label – описание шаблона, распо- n e-mail Message – используя эту
ложенное справа от названия в об- вкладку, инициируют отправку
щем списке; необязательный пара- двух сообщений: одно – админис-
метр. тратору или службе поддержки
n Space Limit – размер и тип кво- (его текст невозможно изменить)
ты. Задавая размер квоты, необ- и второе – пользователю, который
ходимо тысячи отделять запяты- инициировал событие (см. рис. 2).
ми без пробелов, указывать раз- Есть возможность задать тему
мерность одним из значений вы- письма и создать шаблон письма. Рисунок 3. Вкладка «Event Log»

№6, июнь 2007 41


администрирование

Рисунок 6. Диалоговое окно


Рисунок 4. Вкладка «Command» Рисунок 5. Вкладка «Report» «Create Quota»

менные, которые также можно указать в качестве аргу- В качестве языка программирования рекомендуется вы-
ментов командной строки. Для успешной работы сце- брать VBScript или JScript. В данной ситуации это не принци-
нария необходимы, как правило, максимальные права пиально. В качестве примера приведен сценарий на языке
доступа. Этого достигают выбором Local System в раз- VBScript. Итог работы сценария – сообщение, разосланное
деле «Command Sequrity». С помощью сценария можно всем сотрудникам, имеющим право доступа к квотируемой
реализовать отправку сообщений всем пользователям, папке. Оно примерно такого содержания:
которые имеют право использовать данный сетевой ре-
сурс. Как это сделать, читайте в разделе «Сценарий опо- Тема сообщения:
Квота папки Отдел сбыта использована на 85% (8704.00 Мб).
вещения пользователей». Размер Квоты 10240.00 Мб.
n Report – генерируется отчет по заданному критерию
Сообщение:
и отправляется по электронной почте администратору Уважаемый(ая) AIvanov
или в службу поддержки, либо сохраняется в виде файла Вы использовали установленную квоту на папку Отдел сбыта на 85%.
в %SystemDrive%\StorageReports\Incident (см. рис. 5). Общий размер квоты 10240.00 Mб, из них занято 8704.00 Mб.
Необходимо удалить ненужные данные из этой папки.
С уважением, Служба поддержки.
Quotas
Для создания новой квоты на папку необходимо в FRSM Красным шрифтом выделены параметры, которые ме-
войти в Quota Management и кликнуть правой кнопкой няются в зависимости от ситуации: имя пользователя в се-
мыши по Quotas, а в контекстном меню выбрать «Create ти, название квотируемой папки, рубеж в процентном со-
Quota». В появившемся диалоговом окне (см. рис. 6), на- отношении, израсходованное и предельное дисковое про-
жав на кнопку «Browse», установить курсор на квотируе- странство. Все эти параметры транслируются из FRSM
мой папке и нажать на кнопку «ОK». Для FRSM не важно, в сценарий с помощью аргументов командной строки:
предоставлена ли папка в общий доступ или нет. Впослед-
ствии папка должна стать сетевой, поскольку квотировать C:\Quota.vbs [Quota Path] [Quota Limit MB] ↵
[Quota Used MB] [Quota Used Percent] ↵
локальную папку не имеет смысла. [Quota Free MB] [Source Io Owner]
В диалоговом окне необходимо задать один из вариан-
тов создания квоты – «Create Quota on Path» (по умолчанию) где:
или «Auto apply template and create quotas on existing and new n [Quota Path] – локальный путь анализируемой папки;
folders» (см. рис. 6). В каждом из них есть возможность ис- n [Quota Limit MB] – размер квоты в Мб;
пользовать имеющиеся шаблоны. Отличие методов заклю- n [Quota Used MB] – использованный размер квоты в Мб;
чается в возможности изменить в шаблоне существующие n [Quota Used Percent] – занятое дисковое пространства
настройки для метода «Create Quota on Path». в процентах;
Контролировать настройки назначаемой квоты можно n [Quota Free MB] – размер доступного для записи дис-
с помощью окна «Summary of quota properties». кового пространства в Мб;
n [Source Io Owner] – пользователь, превысивший уста-
Сценарий оповещения пользователей новленный рубеж.
Создавая квоту, обратите особое внимание на вкладку
Command в диалоговом окне. Использование сценариев Чтение аргументов командной строки в сценарии осу-
может значительно расширить возможности FRSM. Созда- ществляется следующим образом:
дим скрипт, формирующий список сотрудников на основе
настроек системы безопасности квотируемой папки и от- Set objArgs = WScript.Arguments
a0=objArgs(0)
сылающий сообщение по электронной почте. a1=objArgs(1)

42
администрирование
a2=objArgs(2) n Адрес электронной почты пользователя, от име-
a3=objArgs(4)
a4=objArgs(4) ни которого отправляется сообщение. Он не должен
a5=objArgs(5) быть фиктивным. Рекомендуется использовать адрес
службы поддержки Support@Firm.Ru. В листинге исполь-
Зная путь к каталогу (параметр a0), с помощью объек- зована переменная MAIL_FROM.
та adsSeсurity получают доступ к параметрам безопаснос- n DNS-имя почтового сервера, например Mail.Firm.ru.
ти NTFS этого каталога: В листинге – переменная MAIL_SERVER.
n Адрес электронной почты получателя. Поскольку
Set sec = CreateObject("AdsSecurity") письмо отправляется нескольким пользователям одно-
Set sd = sec.GetSecurityDescriptor("FILE://"+PathToFolder)
Set Dacl = sd.DiscretionaryAcl временно, то в сценарии формируется одно письмо, от-
For Each ace In Dacl правляемое одновременно нескольким адресатам, поэ-
Wscript.Echo ace.Trustee
Wscript.Echo ace.AccessMask тому в поле MAIL_TO заносят их почтовые адреса, раз-
Wscript.Echo ace.AceType деленные символом (;).
Next
n Тема письма в листинге сценария фигурирует в пе-
Считанные данные необходимо отфильтровать и обра- ременой MAIL_SUBJECT. Желательно, чтобы по теме
ботать. На каждую папку, расположенную на сервере, на- письма сотрудник сразу мог понять, что это уведомле-
значены права. ние от службы о состоянии файловой системы, и не при-
Перечень объектов, которые присутствуют в списке нимал его за спам:
вкладки «Permissions», можно разделить на 2 части. Пер-
вая часть списка постоянна, вторая – вариативна. MAIL_SUBJECT="Квота папки "+right(a0,len(a0)- ↵
cstr(a0,"\")) +" использована на "+a3+"% ↵
В список постоянных объектов входят Domain Admins, ("+a(2)+" Мб). Размер квоты "+a(1)+" Мб"
System, Creator Owner.
Во второй – обычные пользователи, которым назначены n Сообщение, отсылаемое пользователям, содер-
права доступа в зависимости от выполняемых ими задач. жится в переменной MAIL_BODY. Для форматирова-
Фильтр объектов безопасности осуществляется с помо- ния сообщения рекомендуется использовать для пере-
щью функции InStr(). хода на новую строку встроенную константу vbNewLine,
Имена объектов имеют формат Domain\ObjectName. для отбивки текста – константу табуляции vbNewTab:
В большинстве случаев объект – группа. Поскольку у груп-
пы может не быть почтового адреса, а пользователей, mail_body = mail_body + "Уважаемый(ая) " + mail_to + ↵
"!"+ vbNewLine
за редким исключением, он есть, то необходимо получить mail_body = mail_body + "Вы использовали установленную ↵
список пользователей, входящих в группу. квоту папки " + right(a0,len(a0)-cstr(a0,"\")) ↵
+" на " + a3 + "%." + vbNewLine
Для этого необходимо получить непосредственно имя mail_body = mail_body + "Общий размер квоты на папку" ↵
группы: + a1+ " MB, из них занято " + a2 +" MB." ↵
+ vbNewLin + vbNewLine
mail_body = mail_body + "Необходимо удалить ненужные ↵
GroupName=ace.Trustee данные с этой папки." + vbNewLin + vbNewLine ↵
Right(cstr(GroupName), Len(GroupName)-InStr(GroupName,"\")) + vbNewTab
mail_body = mail_body + "С уважением, Служба ↵
Получив доступ к группе, с помощью провайдера WinNT поддержки." + vbNewLin + vbNewLine
можно определить список пользователей, входящих в нее,
с помощью свойства объекта obj – members: Листинг отправки сообщения:

Set Obj=GetObject("WinNT://"&domain&"/"& group&",group") MAIL_FROM="Support@Firm.Ru"


For Each member In obj.members MAIL_SERVER="Mail.Firm.ru"
Wscript.Echo cstr(member.name) MAIL_TO=""
Next MAIL_BODY=""
Set Obj=nothing MAIL_SUBJECT=""

Замечание: для операций с правами доступа к папке MAIL_SUBJECT=…
MAIL_BODY = MAIL_BODY + …
используют библиотеку ADsSecurity.dll, входящую в комп- …
лект ADSI Resource Kit. Перед использованием библиоте- Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")
ку необходимо зарегистрировать командой: Set Flds = iConf.Fields
Flds.Item("http://schemas.microsoft.com/cdo/ ↵
regsvr32 /s c:\Program Files\Microsoft\ADSI Resource Kit, ↵ configuration/sendusing") = 2
Samples and Utilities\ResourceKit\ADsSecurity.dll Flds.Item("http://schemas.microsoft.com/cdo/ ↵
configuration/smtpserver") = MAIL_SERVER
Flds.Item("http://schemas.microsoft.com/cdo/ ↵
Для чтения назначенных прав доступа на объект исполь- configuration/smtpconnectiontimeout") = 10
зуется объект AdsSecurity. Для назначения новых прав ис- Flds.Update
iMsg.Configuration = iConf
пользуется объект AccessControlEntry. iMsg.To = MAIL_TO
На заключительном этапе формируют текст сообщения iMsg.HTMLBody = MAIL_BODY
iMsg.From = MAIL_FROM
и отправляют его по электронной почте с помощью CDO- iMsg.Subject = MAIL_SUBJECT
объекта, используя CDO.Message и CDO.Configuration. iMsg.Send
При создании письма должны быть указаны пара-
метры: Полный листинг сценария смотрите на сайте журна-

№6, июнь 2007 43


администрирование
го списка. Файлы с указанными расши- сать генерирует сообщение по хра-
рениями можно записать в квотируе- нящемуся в нем шаблону и либо за-
мую папку. Приоритет списка файлов писывает его в журнал событий, ли-
исключений выше приоритета списка бо отсылает его по электронной поч-
файлов включений. те, либо выполняет указанную коман-
Приведу пример. Системному ад- ду. Перечень действий зависит от на-
министратору необходимо запретить строек шаблона.
запись файлов с расширением AVI, Создание шаблона File Screen
Рисунок 7. Раздел File Screening
Management однако части из них – имеющим в на- Templates полностью повторяет со-
чале имени символы MP4 необходи- здание шаблона Quota Templates
ла www.samag.ru в разделе «Исход- мо разрешить доступ. Для решения за исключением вкладки Settings
ный код». этой задачи добавляют в список «Files (см. рис. 9). В ней указываются груп-
to Include» все файлы с расширением пы файлов из раздела File Groups, ко-
File Screening Management AVI: *.AVI и нажимают кнопку «Add», торые будет обрабатывать экран, со-
Помогает ограничивать запись фай- в список «Files to Exclude» – MP4*.AVI, зданный на основе данного шаблона.
лов указанных форматов (mp3, wav, также нажимают кнопку «Add», за- Здесь же можно создать новую группу
avi, vob и т. д.) в квотируемую папку. тем «OK». файлов или отредактировать сущест-
Структура File Screening Management Всего в состав File Groups по умол- вующую. В этой вкладке также указы-
(см. рис. 7) повторяет структуру Quota чанию входит 11 групп: Audio and Video вается тип шаблона: Active Screening
Management: существуют предуста- Files, Backup Files, Compressed Files, или Passive Screening. Все остальные
новленные шаблоны – File Screen E‑mail Files, Executable Files, Office Files, настройки были описаны в разделе
Templates, на основе которых создают System Files, Temporary Files, Text Files, Quota Templates.
новые шаблоны и сами правила – File Web Page Files
Screens. Присутствует дополнитель- Список групп можно пополнять но- File Screen
ный раздел File Groups, в нем наборы выми, выбрав в контекстном меню В отличие от Quotas в File Screen допус-
расширений, обобщенные в группы. «File Groups», вызываемого правой кается создание объектов двух видов:
кнопкой мыши, «Create File Group». File Screen и File Screen Exception.
File Groups
В разделе File Groups находится спи- File Screen Templates File Screen
сок групп (см. рис. 8), в которых пе- В File Screen Templates по умолчанию Принципы настройки File Screen иден-
речислены характерные расширения несколько шаблонов: Block Audio and тичны с принципами настройки Quotas.
файлов. Этот список может быть из- Video Files, Block E-mail Files, Block Новый файловый экран можно создать
менен. Для этого достаточно два раза Executable Files, Block Image Files, Mirror полностью вручную или с помощью го-
кликнуть на нужные группы. В появив- Executable and System Files. Все, кроме тового шаблона.
шемся меню присутствует два списка. последнего, – активные шаблоны, пос-
В первом списке перечислены расши- ледний – пассивный. Файловый экран, File Screen Exception
рения файлов, которые нельзя будет созданный на основе активного шаб- Благодаря наличию файловых групп –
записать в квотируемую папку. Второй лона, запрещает доступ файлам ука- File Group, появилась возможность
список – список исключений из перво- занного типа и при их попытке запи- создавать ограничения непосредс-

Рисунок 9. Раздел File Screen


Рисунок 8. Раздел File Groups Templates

44
администрирование

Рисунок 10. Вкладка «File Screen


Exception» Рисунок 11. Вкладка «Settings» Рисунок 12. Вкладка «Delivery»

твенно на основе групп, а не шабло- в случае необходимости будет указан тного меню «Add or Remove Reports for
нов. Основное отличие File Screen адрес электронной почты, по которому a Report Task…». Если дважды клик-
Exception (см. рис. 10) заключается будет отправлен отчет. Таким образом, нуть на ранее созданную надпись,
в том, что из него невозможно отпра- администратор и сотрудники службы то видно, что все кнопки недоступны
вить пользователю сообщение в ка- поддержки будут оперативно получать и можно только посмотреть существу-
кой-либо форме. информацию о состоянии квот. ющие настройки.
Особый интерес представляет Чтобы изменить расписание
Storage Reports вкладка Schedule (cм. рис. 13). С ее «Scheduled», необходимо в Пане-
Management помощью можно настроить регуляр- ли управления запустить програм-
С помощью этой службы создают раз- ную генерацию файла отчета, напри- му Scheduled Task и открыть там со-
личные отчеты, в том числе она обес- мер XML. Во вкладке «Schedule» на- ответствующую задачу. FSRM созда-
печивает генерацию отчетов с помо- жмите на кнопку «Create Schedule…». ет задачи, имена которых соответст-
щью Scheduled Tasks. В контекстном В появившемся окне приведен список вуют следующему шаблону – Имя
меню службы присутствуют три ва- задач, выполняемых Task Scheduled. задачи + {GUID}, например FSRM_
рианта: Для пополнения списка нажмите кноп- Report_Task{85aa8287-16b7-41f3-8af8-
n Schedule a New Report Task… ку «New». Расписание запуска задачи e44d235af653}.
n Add or Remove Reports for a Report можно изменить здесь, выбрав час-
Task… тоту выполнения задачи и время ее Generate Reports Now…
n Generate Reports Now… пуска. Если необходим запуск зада- Часто бывают ситуации, в которых не-
чи каждые 20 минут, то надо нажать обходимо создать свежий отчет, и нет
Schedule a New Report Task… на «Advanced» и включить раздел времени ждать, когда по расписанию
Если кликнуть на «Schedule a New «Repeat Task». В доступных полях не- создастся новый. Для решения такой
Report Task…» левой кнопкой мы- обходимо сделать изменения: в поле задачи программисты Microsoft пре-
ши, появится диалоговое окно с тре- «Every» установить значение 20 (min), дусмотрели третий пункт контекстно-
мя вкладками «Settings», «Delivery» в поле «Duration» – 24 (hours). го меню «Generate Reports Now…». По-
и «Sсhedule». являющееся диалоговое окно в точ-
В первой из них – «Settings» (cм. Add or Remove Reports for ности повторяет окно «Schedule a New
рис. 11) – необходимо набрать список a Report Task… Report Task…». Единственное разли-
анализируемых папок Scope и указать Для изменения параметров создан- чие – отсутствие вкладки «Schedule».
тип файла отчета. Предлагается вы- ной задачи отчета необходимо вос- Сформированные отчеты находят-
брать один или несколько форматов пользоваться вторым пунктом контекс- ся в %systemdrive%/storage/reports/
из следующего списка: DHTML, HTML, scheduled.
XML, CSV, TXT для просмотра в Internet
Explorer, Microsoft Excel, Microsoft Word Заключение
или экспортировать его в базу дан- Несмотря на недостатки, которые мож-
ных, например в SQL. Также в этой же но ликвидировать с помощью скрипта,
вкладке предлагается выбрать одно думаю, утилита будет востребована
или несколько событий, на основе ко- системными администраторами и ис-
торых будет сгенерировано сообще- пользована, например, в системе об-
ние. Предполагается, что в следую- мена данными между подразделения-
щей вкладке – «Delivery» (cм. рис. 12) – Рисунок 13. Вкладка «Schedule» ми в крупных организациях.

№6, июнь 2007 45


администрирование

Vyatta – Linux-дистрибутив
для роутеров

Сергей Яремчук
В конце февраля этого года компания Vyatta анонсировала вторую версию разрабатываемого
ею дистрибутива, позволяющего превратить обычный ПК в маршрутизатор. Это решение
позиционируется как конкурент продуктам нижнего уровня Cisco и Juniper. Что же такого
особенного в Vyatta?

С
начала никакого дистрибути- рому развитию продукта и адаптации Open Router Platform (XORP), платфор-
ва не было. Одной из первых для всех возможных условий. Кстати, ма маршрутизации с открытым кодом,
разработок Vyatta был про- Vyatta – это санскритское слово, обоз- работающая в укрепленном вариан-
граммный пакет Open Flexible Router начающее «открытый». Компания ви- те UNIX. Его разработкой занимается
(OFR), превращающий обычный ПК дит свой продукт сетевым эквивален- группа в International Computer Science
в маршрутизатор. Причем отмеча- том решений вроде Linux или Firefox, Institute (ICSI) Беркли под руководством
лось, что производительность работы правда, который противопоставляет- Atanu Ghosh, финансируют проект та-
и уровень безопасности соответство- ся продуктам не от Microsoft, а от Cisco кие гиганты, как Intel и Microsoft, а так-
вал коммерческим продуктам. С само- Systems. же National Science Foundation и Vyatta.
го начала курс взят на открытость, так В настоящее время код XORP содержит
как, по мнению разработчиков, это зна- Особености Vyatta 670,000 строк на языке C++, может быть
чительно ускоряет устранение возмож- Проект Vyatta возник не на пустом мес- скомпилирован на Linux, OpenBSD,
ных недостатков и способствует быст- те. Основой OFR является eXtensible FreeBSD, DragonFlyBSD, NetBSD,

46
администрирование
Mac OS X и Windows Server 2003 и рас-
пространяется под BSD-подобной ли-
цензией. Поддерживаются протоко-
лы Border Gateway Protocol (BGP, с не-
которыми расширеними под IPv6),
Routing Information Protocol (RIP v2
для IPv4 и RIPng для IPv6), Protocol-
Independent Multicast Sparse Mode
(PIM-SM), Internet Group Management
Protocol (OSPFv2 (RFC2328) и OSPFv3
(RFC2740), Multicast Listener Discovery
(MLD), OSPF (Open Shortest Path First),
IGMP и SNMP. Проект XORP предо-
ставляет готовый LiveCD-дистрибу-
тив, который можно использовать для
тестирования. Хотя, наверное, спе-
шить не стоит, так как Vyatta обладает
большими возможностями. Так, Vyatta Рисунок 1. Просмотр настроек интерфейсов
поддерживает протокол Virtual Router
Redundancy Protocol (VRRP), что поз-
воляет применять маршрутизатор как
резервный, мгновенно берущий на се-
бя обработку в случае сбоя основного.
Кроме этого, в Vyatta включены разра-
ботки более чем 60 различных Open
Source-проектов и свой код. Распро-
страняется дистрибутив под BSD-по-
добной или GPL-лицензией. Но наряду
с этим решением предлагается подпис-
ка на коммерческие редакции. Компа-
ния использует бизнес-модель, приме-
няемую Red Hat, то есть производитель
планирует предложить платные услуги
и поддержку для пользователей марш-
рутизаторов Vyatta, в то же время са-
мо программное обеспечение доступ-
но совершенно бесплатно.
Компанию основал в 2005 году
Аллан Лайнванд (Allan Leinwand), ко-
торый работал в Cisco еще в те вре-
мена, когда штат компании насчиты-
вал около сотни сотрудников. Одним
из управляющих Vyatta является Кел-
ли Харрелл (Kelly Harrell), бывший ви- Рисунок 2. Веб-интерфейс Vyatta
це-президент по маркетингу в компа-
нии MontaVista, специализирующейся рудования, в том числе и мультипорто- вер. Но при необходимости его мож-
на решениях со встраиваемыми вер- вых T1/E1 и T3-карт. но установить на жесткий диск, а так-
сиями Linux. Вероятно, поэтому од- же Flash или USB-устройство. Также
ними из первых продуктов Vyatta бы- Работа с Vyatta CE2 можно скачать готовый образ для вир-
ли сетевые приставки-маршрутиза- Для примера настройки соединим сеть туальной машины VMware.
торы, работающие под управлени- с провайдером, то есть к порту eth0 бу- После загрузки с образа регист-
ем Linux и установленные на серверы дет подключен Интернет, а eth1 будет рируемся как пользователь root или
Dell PowerEdge 850, оснащенные дву- «смотреть» в локальную сеть. На сай- vyatta, пароль в обоих случаях vyatta.
мя портами Gigabit Ethernet. Последняя те проекта можно скачать ISO-образ Во втором случае попадаем сразу
версия Vyatta Community Edition 2 пред- LiveCD-дистрибутива, который бу- в оболочку маршрутизатора. Если для
ставляет собой дистрибутив GNU/Linux дет работать без установки на жест- входа использован root, дополнительно
на базе Debian, что прибавило ему до- кий диск, конфигурационные файлы следует ввести команду xorpsh:
полнительной гибкости и возможнос- при этом можно сохранять на флоп-
тей, а также большую поддержку обо- пи-диск или использовать TFTP-сер- # xorpsh

№6, июнь 2007 47


администрирование
Welcome to Vyatta on vyatta # delete description
root@vyatta> Deleting:
description: "WAN"
OK
Теперь можно приступать к настройкам. Чтобы просмот- [edit interfaces ethernet eth0]
реть доступные команды, достаточно ввести знак вопроса
«?». Сейчас нас интересует команда configure, набрав кото- Просмотрев настройки с помощью show, можно увидеть,
рую и попадаем в заветный режим настройки. Если нужно что перед строкой description появился знак минус, говоря-
опять вернуться назад, достаточно набрать «exit». Причем щий о том, что планируется удаление этого параметра. Ана-
если нужно сохранить все внесенные изменения, то вна- логично настраиваем и остальные интерфейсы:
чале следует ввести «commit». Чтобы выйти без сохра-
нения настроек, используйте «exit discard». Вначале сле- # set interfaces ethernet eth1 address 10.10.10.10 ↵
prefix-length 24
дует ознакомиться с настройками по умолчанию, вводим # set interfaces loopback lo address 10.10.10.10 ↵
«show», для перемещения вперед/назад используем кла- prefix-length 32
# commit
виши <Пробел/b>.
В Vyatta (точнее XORP) используется Cisco-подобный Просмотреть настройки интерфейсов можно, введя
командный интерфейс к настройкам. Для доступа к редак- «show interfaces» (см. рис. 1). Далее необходимо указать
тируемым настройкам необходимо использовать команду имя узла и домена, к которому он принадлежит.
edit, установка нового значения производится с помощью
set, а удаление – delete. Поддерживается традиционное ав- # set system host-name router
тодополнение с использованием табуляции, поэтому пол- [edit]
ностью вводить команду не обязательно. Настраиваем пер- # set system domain-name domain.com
вый сетевой интерфейс:
[edit]
# edit interfaces ethernet eth0 root@vyatta# commit
[edit interfaces/ethernet/eth0] OK
# set description "WAN"
Об успехе будет свидетельствовать и изменение име-
[edit interfaces/ethernet/eth0] ни системы в приглашении командной строки. И не забы-
# set address 192.168.1.58 prefix-length 24 ваем о шлюзе по умолчанию:
[edit interfaces/ethernet/eth0]
# set protocols static route 0.0.0.0/0 next-hop 192.168.1.1
Смотрим:
Задаем DNS-сервер:
# show
> description: "WAN"
# set system name-server 192.168.1.1
hw-id: 00:0C:29:9C:B8:75
> address 192.168.1.58 {
> prefix-length: 24 В состав Vyatta входит сервер SSH, включив его, в даль-
> } нейшем все настройки можно производить удаленно:

Если все нормально, записываем: # set service ssh

# commit Нажав табуляцию, можно просмотреть список доступ-


[edit interfaces/ethernet/eth0] ных сервисов:
OK
# set service
Если теперь снова использовать команду show, то в вы- Possible completions:
воде уже не будут содержаться значки «>». Это означает, <[Enter]> Execute this command
dhcp dhcp settings
что это значение уже записано. Обратите внимание на под- dhcp-server DHCP configuration
сказку [edit interfaces/ethernet/eth0], которая помогает не за- http Enable/disable HTTP protocol
nat NAT configuration
блудиться в дереве настроек, что бывает весьма полезным ssh Enable/disable SSH protocol
при глубокой вложенности. При входе в режим настройки telnet Enable/disable telnet protocol
сразу попадаем в корень, то есть подсказка будет выглядеть { Enter text on multiple lines
как [edit]. Перемещаться по дереву можно командой «up»
либо для выхода в корень «exit», или «top». Например: Как видите, есть еще веб-сервер, telnet и dhcp.

# up Включение NAT и создание правил


[edit interfaces/ethernet] firewall
Включим NAT и разрешим исходящий трафик из сети, под-
Попробуем удалить описание: ключенной к eth1:

48
администрирование
# create service nat rule 1 # set service http
# edit service nat rule 1
# set type source
# set translation-type masquerade После этого в браузере набираем IP-адрес роутера, при-
# set outbound-interface eth0
# set protocols all нимаем сертификат и регистрируемся как пользователь
# set source network 10.10.10.0/24 vyatta (root система не пустит).
# set destination network 0.0.0.0/0
# top Используя веб-интерфейс, можно просмотреть систем-
ную информацию, произвести большую часть настроек, до-
Если во внутренней сети находится веб-сервер, разре- ступных в консоли.
шаем к нему доступ извне: Все они находятся во вкладке «Configure». Правда, вы-
игрывая в наглядности, проигрываем в удобстве, так как
# create service nat rule 2 здесь нет никаких подсказок и автодополнения, поэтому все
# edit service nat rule 2
# set type destination параметры придется помнить наизусть. Для сохранения из-
# set translation-type static менений необходимо нажать кнопку «Commit All Changes»,
# set inbound-interface eth0
# set protocols tcp расположенную в верхней части меню.
# set source network 0.0.0.0/0 Во вкладках «Operations» и «Tools» можно найти неко-
# set destination address 192.168.1.58
# set destination port-name http торые утилиты, с помощью которых можно проверить до-
# set inside-address address 10.10.10.30 ступность узлов, установить дату, смонтировать дискету,
# top
просмотреть статистику сервисов и прочее.
Чтобы просмотреть настройки, используем команду:
Сохранение настроек
# show service nat и установка на диск
При работе в LiveCD сохранить конфигурацию на дискету
И не забываем подтверждать изменения командой очень просто, если при загрузке вставить дискету в дис-
commit. ковод, она будет смонтирована автоматически, и с нее бу-
Если при конфигурировании допущены ошибки, commit дет считана конфигурация. Для сохранения настроек вво-
не сможет сохранить изменения, поэтому лучше сохранять дим команду:
изменения после каждой завершенной серии команд, что-
бы потом долго не разбираться с проблемой. # save /mnt/floppy/config/config.boot

Настройка фильтрации пакетов Если диск вставлен позже, можно смонтировать его
Для примера разрешим доступ к сети с адреса 170.20.0.45: обычным образом с помощью mount или использовать ко-
манду init-floppy.
# set firewall name FW-1 rule 1 action accept Но использовать LiveCD-вариант в работе неудобно,
# set firewall name FW-1 rule 1 source address 170.20.0.45
в рабочей системе лучше его установить на жесткий диск.
И привязываем к интерфейсу: Для установки потребуется диск размером всего 512 Мб
и 10 Мб для сохранения настроек. Далее регистрируемся
# set interfaces ethernet eth0 firewall in name FW-1 как root и запускаем установочный скрипт:
# commit

OK # install-system

Смотрим правило: Далее будет произведена проверка подключенных уст-


ройств и предложен вариант создания разделов:
# show firewall name FW-1
Partition (Auto/Parted/Skip) [Auto]:
rule 1 {
action: accept В самом простом случае достаточно выбрать вариант,
source {
address: 170.20.0.45 предложенный по умолчанию. По окончании будет установ-
} лен загрузчик GRUB. Чтобы вручную сохранить настройки
}
в этом варианте, достаточно ввести команду save без ар-
гументов. Конфигурационный файл будет записан в /opt/
Если требуется уточнить протокол и порт, добавляем vyatta/etc/config/config.boot.
следующие конструкции: В статье расмотрен самый простой случай настройки
маршрутизатора, достаточный для понимания принципа
# set firewall name FW-1 rule 1 protocol tcp работы в Vyatta. Следует отметить хорошую документа-
# set firewall name FW-1 rule 1 destination port-name http
цию проекта, в которой можно найти как описание основ-
ных параметров, так и некоторые примеры конфигуриро-
Веб-интерфейс вания Vyatta.
В дополнение к настройке с помощью командной строки
Vyatta имеет и веб-интерфейс (см. рис. 2), чтобы его акти- 1. Сайт проекта XORP – http://www.xorp.org.
вировать, достаточно ввести: 2. Сайт проекта Vyatta – http://vyatta.com.

№6, июнь 2007 49


администрирование

ALT Linux 4.0 Server:


что день грядущий нам готовит?

Дмитрий Шурупов
Одна из ведущих российских компаний, специализирующихся на решениях на базе Linux
и Open Source, готовит к выпуску новую версию годами проверенного продукта.

ALT Linux Server? выпуск от 1 июня (server-20070601.iso). Установка


Семейство дистрибутивов ALT Linux, В случае отсутствия проблем с этим Первое меню, возникающее на экране
основывающихся на собственном еже- выпуском планировалось обозначить после загрузки с единственного уста-
дневно обновляемом репозитории па- его как релиз 4.0.1 и на его базе стро- новочного компакт-диска, обыденно,
кетов Sisyphus, пополнил ALT Linux ить финальную коробочную редакцию но и достаточно функционально. Пре-
4.0 Server. Продукт позиционируется ALT Linux 4.0 Server (к моменту выхо- доставляется выбор загрузки с жест-
как решение «для создания серверов да журнала из печати она как раз уже кого диска, запуска установки с произ-
любых типов» и будет сопровождать- должна будет повсеместно появиться). вольными параметрами для ядра Linux
ся технической поддержкой в течение Именно эта версия (для архитектуры (в том числе есть и предопределенный
не менее трех лет. x86_64) и рассматривается сегодня. вариант с отключенным ACPI), загруз-
Обсуждение нового инсталлято-
ра для ALT Linux 4.0 началось в поч- Важное напоминание твенных и зарубежных производителей.
товой рассылке для разработчиков В обзоре представлена тестовая сборка Кроме того, ALT Linux славится хороши-
еще в последний день прошлого года, ALT Linux 4.0 Server. Упомянутые пробле- ми каналами связи между пользовате-
а дискуссии о тестовых релизах 4.0 мы могут быть устранены уже в финаль- лями, службой технической поддержки
Server – в конце марта 2007. На момент ной версии дистрибутива. и разработчиками, что позволяет наде-
написания статьи актуальной версией Тем не менее продукт был с успехом яться на быстрое исправление обнару-
готовящегося дистрибутива являлся протестирован на оборудовании отечес- живаемых ошибок.

50
администрирование
ки в режиме «rescue» или обращения
к утилите проверки оперативной памя- Готовящиеся новинки ван на использование в средних и круп-
ти memtest86. от ALT Linux ных предприятиях, в государственных
Кроме того, присутствует скром- Стоит заметить, что в ALT Linux всерьез учреждениях;
ная система помощи по предлагае- взялись за развитие серверного направ-  ALT Linux 4.0 Server-K – специальная за-
мым опциям, а также возможность ления. Помимо рассматриваемого в обзо- щищенная версия, находящаяся в про-
смены источника установки (помимо ре продукта ожидаются и другие интерес- цессе прохождения сертификации Фе-
CD их роль могут выполнять серверы ные решения: деральной службы по техническому
FTP, HTTP и NFS) и выбора языка. Од-  ALT Linux 4.0 Office Server ориентиро- и экспортному контролю России.
нако, несмотря на то что решения ALT
Linux у многих ассоциируются с хо- 2. Выбор способа смены расклад- 10. Дата и время (задается страна и го-
рошей локализацией, уже здесь на- ки клавиатуры. Возможных ва- род для часового пояса).
блюдается недостаток. Языков на вы- риантов лишь 4, и нет, например, 11. Завершение инсталляции и сооб-
бор 6: русский, английский, украинс- такого популярного сочетания, щение о том, что веб-интерфейс
кий, татарский, казахский, белорус- как <Alt+Shift>. для управления сервером будет
ский. Но присутствует поддержка лишь 3. Подготовка жесткого диска: разде- доступен по адресу https://localhost.
первых двух, в русской локализации лы, файловые системы, точки мон- localdomain:8080.
текст на странице помощи неожидан- тирования и т. д.
но заканчивается. 4. Установка базовой системы (копи- В целом процесс установки очень
Инсталлятор выглядит как прило- рование и инсталляция основных прост, интуитивно понятен и не дол-
жение с графическим интерфейсом системных пакетов). жен вызвать серьезных проблем у ад-
(на базе Qt) и работает поверх серве- 5. Установка загрузчика (LILO). Пре- министратора. Инсталлятор, возмож-
ра Xorg (с самим дистрибутивом X‑сер- дусмотрена возможность сразу же но, не так визуально красив, как у не-
вер по умолчанию не устанавливается). задать для него пароль. которых других GNU/Linux-дистрибути-
Первым делом он вновь просит уста- 6. Пароль для суперпользователя root. вов, но главное не в этом. Также отмечу
новить нужный язык, предлагая уже Есть кнопка для случайной генера- еще один, на мой взгляд, существен-
чуть более скромный выбор: русский, ции пароля. ный недочет: по ходу установки есть
английский, украинский, белорусский 7. Добавление системного пользова- возможность возвращаться на шаг
и... POSIX. теля. Для пароля – аналогично. (или несколько) назад, но... В таком
Затрудняюсь сообщить, когда пос- 8. Установка дополнительных паке- случае не сохраняются ранее введен-
ледний успел стать «языком», зато, вне тов. Предлагаются стандартные ные установки. То есть если (условно)
всяких сомнений, предположу, что вы- наборы для следующих серверов: вдруг на шаге 9 возникнет необходи-
брать здесь предлагают все-таки «ло- SMTP, POP3/IMAP4, почтовые рас- мость внести изменения в параметры
каль», заботливо оставив POSIX как сылки, NTP, Kerberos, Proxy, FTP, шага 7, то после этого придется зано-
вполне актуальный для кого-то вари- Caching name. во проходить шаг 8 и 9. Конечно, нель-
ант. На сей раз было замечено отсутс- 9. Настройка сети. Позволяет задать зя сказать, что это критично, но вот что
твие лишь одного из обещанных «язы- параметры для каждого найденно- не очень удобно – однозначно.
ков» – белорусского. го интерфейса, в том числе и бес-
Далее установщик проходит по 11 проводного. Однако моя карточка Система
привычным шагам: wi-fi (ipw3945), к сожалению, в спис- В основе ALT Linux 4.0 Server – Linux-
1. Принятие условий лицензии. ке доступных не появилась. ядро версии 2.6.18 и набор известных
и проверенных серверных решений,
подробнее о которых – позже. Управле-
ние пакетами ПО традиционно для дис-
трибутивов ALT Linux: адаптированная
для RPM версия менеджера APT, род-
ного для Debian GNU/Linux.
Как уже сообщалось, по умолчанию
в системе нет графического X‑серве-
ра, однако по загадочным причинам
установлены такие пакеты, как xterm
и GTK+2. Причем у последнего при-
сутствует и каталог с конфигураци-
онными файлами (/etc/gtk-2.0), и даже
свой скрипт в /etc/cron.daily с заком-
ментированным вызовом gtk-update-
icon-cache.
Одно из ключевых новшеств для
Рисунок 1. Главная страница веб-интерфейса дистрибутивов ALT Linux – появле-

№6, июнь 2007 51


администрирование
Интерфейс снабжен помощью. Формально на трех язы-
ках (русский, украинский и английский), но на практике все
же лишь на двух первых (причем помощь на русском – на-
иболее полная). Вместе с выбором другого языка помощи
меняется и язык интерфейса.
В веб-интерфейсе доступен ряд вкладок для управле-
ния сервисами и настройки отдельных компонентов. Не-
полное перечисление реализованных в нем возможнос-
тей поможет сформировать представление об ALT Linux 4.0
Server в целом.
n Система.
 Вывод общей информации: версия ядра, количество
доступной и свободной оперативной памяти, swap,
места на примонтированных разделах жесткого дис-
ка.
 Управление обновлениями с возможностью моди-
фикации списка источников.
Рисунок 2. Список доступных профилей OpenVZ  Управление пользователями: добавление, удаление,
изменение данных (в том числе и пароля).
 «Альтернативы» – специальная система ссылок,
обеспечивающая дополнительные имена для ис-
пользуемых по умолчанию программ. Ее файлы
хранятся в /etc/alternatives. Например, по умолча-
нию /usr/sbin/httpd2 ссылается на /etc/alternatives/
links/|usr|sbin|httpd2, а этот файл, в свою очередь –
на /usr/sbin/httpd2.prefork.
 Системные объекты – выбор одного из доступ-
ных «режимов работы» для некоторых приложе-
ний. Например, использование утилиты write мож-
но либо разрешить для всех («public»), либо – за-
претить («restricted»), а в случае с su – полезно
разрешить только тем, кто входит в группу wheel
(«wheelonly»).
n Виртуализация (OpenVZ).
 Изменение параметров (хост, IP, автоматический за-
пуск, «VE capabilities», ограничения по системным ре-
сурсам, дисковые квоты, доступ к устройствам) су-
ществующих виртуальных серверов (VE), добавле-
Рисунок 3. Настройки ограничений по системным ресурсам
для OpenVZ VE ние новых по одному из шаблонов.
 Создание шаблонов на основе профилей.
ние системы виртуализации OpenVZ. Для того чтобы сра-  Создание профилей. Среди стандартных есть заго-
зу приступить к работе с ней, достаточно выбрать соот- товки для следующих серверов: caching nameserver,
ветствующий образ при загрузке (с «ovz» в названии фай- FTP, IMAP, SMTP, Mailing list, Kerberos, NTP, PPTP,
ла – т.е., например, vmlinuz-2.6.18-ovz-smp-alt14). Конфигу- OpenVPN, print, proxy.
рация виртуальных серверов (как и многих других компо- n Настройка сети.
нентов ALT Linux Server) доступна через систему настройки  Общие параметры: хост, DNS.
ALTerator, для которой есть веб-интерфейс – именно об этом  Конфигурация интерфейсов: включение/выключе-
и извещал инсталлятор на последнем шаге установки. ние, DHCP, IP/маска сети/шлюз по умолчанию.
n FTP (vsftpd 2.0.5).
Управление сервером  Общие параметры: доступ для анонимных и локаль-
через веб‑интерфейс ных пользователей, право записи.
Хотя веб-интерфейс на базе ALTerator, по умолчанию до-  Anonymous: права на создание каталогов, закачку
ступный на https://127.0.0.1:8080, и ориентирован на воз- файлов, переименование и удаление.
можность удобного удаленного администрирования сер-  Распределение прав на запись для выбранных ло-
вера, его простота позволяет эффективно работать с ним кальных поль-зователей.
из-под консольного браузера links, входящего в дистри- n Proxy (Squid 2.6STABLE13).
бутив ALT Linux Server. Для авторизации на этой страни-  Хост и порт для приема подключений.
це необходимо указать логин и пароль системного супер-  Список подсетей, имеющих доступ к серверу.
пользователя (root).  Черный список сайтов.

52
администрирование
n Почта.
 SMTP (Postfix 2.3.11): включение
(в т.ч. с фильтрацией)/выключе-
ние транспорта, SASL, выбор
типа сервера аутентификации
(Cyrus или Dovecot).
 POP3/IMAP (Dovecot 1.0): подде-
рживаемые протоколы (POP3,
POP3+TLS/SSL, IMAP, IMAPS)
и механизмы аутентификации
(plain, login, CRAM-MD5, DIGEST-
MD5, APOP, NTLM, GSSAPI, RPA,
anonymous, OTP, SKEY). Воз-
можно использование Dovecot
как внешнего сервера аутенти-
фикации для Postfix. Рисунок 4. Список источников для обновления системы
 Защита от спама (Spamassassin
3.1.8): режим (удаление или ус- а top и фактическое положение вещей Среди них:
тановление метки), пороговое на сервере явно свидетельствовали n Asterisk PBX (1.4.4) – популярная
значение, включение белого о том, что процесс еще не завершен. программная УАТС (пакеты для нее
списка, управление правилами Еще одной приятной возможностью вынесены на CD в отдельный ката-
и очками. веб-интерфейса является поддержка лог – RPMS.asterisk).
 Управление списками рассылок RSS, способствующая элементарно- n Nagios (2.7) – система сетевого мо-
(Mailman 2.1.9). му мониторингу сервера. По словам ниторинга.
n Kerberos. Указание домена и па- разработчиков, в генерируемом RSS- n jabberd2 (2.1.4) – демон для орга-
роля, управление списком при- файле должна содержаться информа- низации сетевого общения в ре-
нципалов. ция о заполненности дисков и наличии альном времени на базе протоко-
n ИБП. Добавление устройств (на- обновлений (у меня же этот файл ока- ла XMPP (именно он лежит в осно-
звание + порт) в upsd, поддержка зался фактически пустым). ве того, что все знают как Jabber),
upsdrv. n OpenLDAP (2.3.35), а также средс-
n DNS (BIND 9.3.4). Другие возможности тва работы с другими серверами
 Список серверов для пересы- и пакеты ПО каталогов для централизованного
лаемых запросов. Разумеется, возможности ALT Linux 4.0 управления в гетерогенных сетях.
 Списки сетей, которым разре- Server не ограничиваются теми, что мо- n И, конечно, такие классические
шено делать простые и рекур- гут быть сконфигурированы через веб- и не нуждающиеся в комментариях
сивные запросы. интерфейс. И даже если не вдаваться средства, как OpenSSH (4.6p1), PAM
n NTP (OpenNTPD 3.9p1). в подробности по уже представленным (0.99.6.3), GnuPG (1.4.7), Apache 1.3
 Может выступать в качестве в этом интерфейсе программным про- (1.3.37 «Russian») и 2.2 (2.2.4), nginx
клиента (т.е. только синхрони- дуктам, можно выделить еще целый (0.5.20), Samba (3.0.25), MySQL
зировать время у текущей ма- ряд предусмотренных в дистрибути- (5.0.41) и PostgreSQL (8.2.4), CVS
шины) и сервера (предостав- ве пакетов. (1.11.22), Git (1.5.1.6) и Subversion
лять эти данные по запросам (1.4.3), Amanda (2.5.1)...
других машин).
 Списки отдельных NTP-серве- Резюме
ров и NTP-пулов. ALT Linux 4.0 Server оставил сме-
n Настройка сервера с веб-интер- шанные чувства. С одной стороны,
фейсом (порт, пароль, парамет- дистрибутив – интересный, нужный
ры SSL-сертификата). и по многим моментам «правильный»,
но, с другой, – изобилует недочетами.
Стоит признать, что в теории кра- Возможно, это было связано с тем,
сивое модульное решение для кон- что рассматривалась тестовая сбор-
фигуратора, построенного на базе ка дистрибутива. С большой вероят-
ALTerator, на практике иногда оказы- ностью можно предположить, что про-
валось не очень удобным. В частнос- дукт найдет применение во многих
ти, при выполнении некоторых опера- компьютерных парках и серверных,
ций, связанных с OpenVZ и требующих однако для того чтобы попадать туда
значительного времени на выполне- было проще, стоит довести до блеска
ние, в интерфейсе сообщалось об успе- свои системные компоненты. И тогда –
хе в совершении какого-либо действия, Рисунок 5. Настройки спам-фильтра в добрый путь!

№6, июнь 2007 53


информационная безопасность

Антивирус+Антиспам Dr.Web
для почтовых серверов UNIX
Сергей Супрунов
Когда начинаешь тонуть под наплывом спама и вирусов, хватаешься буквально за каждую
соломинку... Но зачем полагаться на соломинку, когда к вашим услугам настоящий
спасательный круг?

Р
ешений, направленных на проти- си, что позволит работать практичес- Модуль drweb-agent отвечает за ра-
востояние спаму и вирусам, су- ки с любым почтовым сервером, опи- боту всего пакета – именно от него все
ществует множество – от интег- раясь на стандартные протоколы SMTP остальные компоненты получают пара-
рированных в почтовые клиенты филь- и LMTP. метры конфигурации. Он же занимает-
тров до дорогостоящих комплексных «Антивирус+Антиспам Dr.Web» пос- ся и сбором статистики.
решений, ориентированных на приме- троен по модульному принципу, бла- Наконец, на модуль drweb-monitor
нение в крупных корпорациях. годаря чему можно почти безгранич- возложена обязанность по запуску
Бесплатно распространяемые от- но наращивать его функциональность всех модулей и дальнейшее отслежи-
крытые пакеты обычно демонстри- с помощью подключаемых расшире- вание их работоспособности (и при не-
руют высокую эффективность лишь ний (плагинов). обходимости их перезапуск).
при условии грамотного администри- Открытый комплект разработчи-
рования, то есть требуют глубокого по- ка (SDK) предоставляет возможность Установка и настройка
нимания принципов работы почтовых разрабатывать необходимые функции Установка начинается с получения ар-
систем, а также определенного внима- самостоятельно. хива с основным пакетом. Для каж-
ния в процессе эксплуатации. В частности, именно в виде моду- дой пары «операционная система –
С другой стороны, коммерческие лей реализованы функции проверки MTA» имеется свой tar-файл. Напри-
решения из разряда «поставь и за- на вирусы (используется проверенный мер, для FreeBSD 6.x и Sendmail имя
будь» зачастую отпугивают небольшие временем антивирусный пакет Dr.Web) архива будет drweb-maild-sendmail-
и средние компании своей ценой. и спам (фильтр, использующий техно- 4.33.0‑freebsd60.tar.gz. Очевидно, что
Рассматриваемый продукт компа- логию Vade Retro, см. врезку «Анти- номера версий со временем могут
нии «Доктор Веб» претендует на зва- спамовый движок Vade Retro»). Также меняться.
ние оптимального по соотношению доступен модуль проверки заголов- Распаковка выполняется стандарт-
«цена/качество» – при сравнительно ков сообщений на соответствие тем но, после чего можно пойти двумя путя-
небольшой стоимости разработчики или иным правилам. Он позволяет ад- ми: автоматическая инсталляция с по-
предлагают нам комплексное, удоб- министратору реализовать собствен- мощью сценария install.sh, или ручная
ное в администрировании и весьма ные проверки. установка, подробно описанная в пос-
эффективное средство противодейс- На рисунке показана структурная тавляемой с пакетом документации.
твия вирусам и спаму. схема пакета. Инсталляция пакета в автомати-
Модуль Receiver, зависящий от ис- ческом режиме прекрасно подойдет
Краткий обзор пользуемого MTA (скажем, в случае в большинстве случаев – скрипт гра-
Пакет «Антивирус+Антиспам Dr.Web Sendmail это будет drweb-milter), полу- мотно следует особенностям систе-
для почтовых серверов UNIX», как сле- чает входящие сообщения и передает мы, так что вам не придется, скажем,
дует из названия, предназначен для ис- их на обработку подключенным пла- на FreeBSD искать двоичные файлы
пользования в составе серверов элек- гинам (вы можете настраивать поря- в /opt, а в дистрибутивах Linux самосто-
тронной почты, работающих на UNIX- док обработки). ятельно подгонять rc.d-сценарий.
подобных системах. Модуль drweb-notifier занимается Применительно к FreeBSD могу от-
В настоящее время поддержи- формированием различных отчетов метить лишь пару незначительных мо-
ваются Linux, FreeBSD и Solaris. о результатах проверки писем; Sender ментов.
«Антивирус+Антиспам Dr.Web» спо- отвечает за дальнейшую передачу со- Во-первых, видимо, по соображе-
собен взаимодействовать с Sendmail, общений, успешно прошедших филь- ниям совместимости с системами 4-х
Qmail, Postfix, Exim, CommuniGate Pro, трацию, а также за отправку служеб- версий используется «старый», не под-
Courier и ZMailer. ных уведомлений администратору держиваемый rcorder, формат сцена-
Также существует возможность на- и отправителю/получателю, формиру- рия инициализации – sh-файл в ката-
строить продукт в режиме SMTP-прок- емых модулем drweb-notifier. логе /usr/local/etc/rc.d. Впрочем, на ра-

54
на правах рекламы
ботоспособности это не сказывается,
да и создать при желании стартовый
скрипт не так уж и сложно.
Во-вторых, то, что инсталлятор
для интеграции с Sendmail вносит не-
обходимые изменения непосредс-
твенно в sendmail.cf, может затруд-
нить сопровождение системы. Ведь
если вы настраиваете Sendmail через
mc‑файл (как оно и рекомендуется де-
лать), то при любой правке конфигура-
ции настройки, отвечающие за milter
для Dr.Web, вы потеряете. Так что все
равно желательно добавить вручную
нужные строки и в соответствующий Структурная схема пакета
mc-файл (что именно должно быть
добавлено, хорошо расписано в доку- внимания с вашей стороны, запраши- ме сообщения, так что фильтрацию
ментации). ваются настроечным скриптом во вре- таких сообщений придется настраи-
Пожалуй, можно указать ещё один мя инсталляции). вать в почтовом клиенте или, скажем,
недостаток инсталлятора. При уста- Далее, после установки нужных с помощью procmail. Кстати, справит-
новке отечественного продукта хоте- модулей расширения (модуль анти- ся с этой задачей и модуль фильтра-
лось бы и сообщения получать на род- вирусной проверки drweb-maild-plugin- ции по заголовкам headersfilter при ус-
ном языке. Впрочем, в составе пакета drweb‑4.33-* следует установить уже ловии, что он будет обрабатывать со-
идёт подробная документация на рус- после того, как будет установлен и за- общения после модуля vaderetro.
ском языке, плюс с сайта можно ска- пущен сам антивирус, drweb-4.33) ком-
чать объёмное руководство в форма- плекс готов к работе (не забудьте пе- Итоги
те pdf. резагрузить почтовый сервер). Тонкую Итак, кому и зачем стоит покупать
После инсталляции основного па- настройку плагинов можно выполнить, «Антивирус+Антиспам Dr.Web для поч-
кета также нужно установить пакет редактируя конфигурационные файлы, товых серверов UNIX»? Прежде все-
обновлений (updater), отвечающий которые будут созданы в том же ката- го тем, кто заинтересован в надеж-
за поддержание в актуальном состоя- логе etc/drweb. ной и эффективной защите почтово-
нии баз данных антивируса и антиспа- Антивирус показал себя превосход- го трафика без лишних усилий по ад-
ма, а также самих «бинарников». но – высокое качество работы, краси- министрированию и «сборке воеди-
Постинсталляционная настройка вые и понятные пользователям уве- но» различных компонентов зачастую
пакета заключается в редактирова- домления об обнаруженном вирусе. от разных разработчиков. Символи-
нии трех конфигурационных файлов Антиспамовый модуль, как ни стран- ческие системные требования не ста-
в каталоге /etc/drweb (или /usr/local/etc/ но, также с первых минут продемонс- нут преградой к использованию паке-
drweb для FreeBSD): agent.conf, monitor. трировал неплохую эффективность. та в небольших предприятиях и даже
conf и maild_sendmail.conf (для друго- От немодифицированного французс- в «домашних офисах», а гибкая тариф-
го MTA имя будет, естественно, дру- кого пакета я, честно говоря, ожидал ная политика позволит подобрать на-
гим). Они достаточно подробно про- худших результатов на русскоязычных иболее выгодный вариант именно для
комментированы и к тому же имеют сообщениях. Правда, в данной версии вашего случая.
вполне разумные значения по умол- plugin-vaderetro умеет лишь добавлять Конечно, если ваша основная цель –
чанию (параметры, которые требуют заголовки к письму да префикс к те- экономия почтового трафика на серве-
ре, то здесь «Антивирус+Антиспам
Антиспамовый движок тов к полноценной работе. Vade Retro рас- Dr.Web» вам не помощник. Модуль
Vade Retro познаёт спам, подвергая анализу все час- vaderetro не использует методы «ран-
В основе антиспамового плагина продук- ти сообщения – заголовки, имена и содер- него обнаружения» типа DNSBL (отчас-
та «Антивирус+Aнтиспам Dr.Web» лежит жимое вложений, текст письма, в том чис- ти из-за высокой вероятности ложных
разработка французской компании GOTO ле и HTML-код, – выявляя характерные срабатываний), а для полного анали-
Software под названием Vade Retro. признаки спама. Причём попытки спаме- за сообщение требуется принять пол-
Она отличается высокой эффектив- ров обойти фильтры лишь увеличивают ностью. Но если основным критерием
ностью и рядом уникальных возможнос- вероятность распознавания такого пись- для вас является эффективность ра-
тей, таких как эвристический анализа- ма именно как спама. боты сотрудников вашей фирмы или
тор спама, исключающий необходимость Нужно отметить, что анализатор оди- удобство клиентов, которым вы пре-
в предварительном обучении, взаимодейс- наково эффективен при обработке писем доставляете услуги электронной поч-
твии с централизованными базами дан- на любом языке, так что прекрасно справ- ты, то здесь рассмотренное решение
ных, «черными» списками и т. д., практи- ляется и с русскоязычным спамом без ка- от компании «Доктор Веб» будет пре-
чески сразу после установки фильтр го- кой-либо адаптации. красно служить вам.

№6, июнь 2007 55


IP-телефония

Развертываем корпоративную
телефонную сеть на основе
технологии VoIP
Часть 1

Рашид Ачилов
Однажды начальник вызывает вас и, показывая на груду коробок с надписями Samsung –
Enterprise IP Solutions, говорит: «Это наша новая телефонная станция, которую мы поставим
в филиале в другом городе. Она должна связываться с нашей основной станцией по VoIP.
Во‑первых, это позволит экономить на межгороде, а во-вторых, можно будет звонить
по коротким номерам».
Собери свою станцию n Блок 8DLI – блок, содержащий 8 с книжками, ни диск, лучше сразу иди-
Итак, с чего начнется наша работа? комплектов ЦАК. В свободной час- те на сайты производителей [4, 5] и за-
Конечно же, с изучения того, что это ти передней панели расположены гружайте документацию – [1-3]. В осо-
разложено перед нами. Мы будем ис- индикаторы использования комп- бенности полезным будет [3]. Несмот-
ходить из того, что новую станцию мо- лектов. ря на то что все описание, приведен-
дели OS7200 нам необходимо под- n Блок 8TRK – блок, содержащий 8 ное там, рассчитано на программиро-
ключить к уже действующей станции комплектов транковых (внешних) вание с СТА, при программировании
модели OS500. Следовательно, в ми- линий. Сюда подключаются входя- с PCMMC из него можно почерпнуть
нимальной комплектации (8 транков, щие линии ТФОП и УАТС. На сво- множество полезной информации.
8 ЦАК, 16 АК, 4 VoIP-канала) коробок бодной части передней панели рас- Распаковываем блок MCP. На бло-
должно быть девять – большая короб- положены индикаторы занятости ке есть набор DIP-ключей и один пе-
ка размером с 19" корпус компьютера каждого транка. реключатель, который нужно поста-
для монтажа в 19" шкаф, в которой на- n Блок 16SLI – блок, содержащий 16 вить в положение «Вкл.». DIP-ключи
ходится базовый блок, шесть коробок комплектов АК. Поскольку разъ- задают регион и размер номерного по-
поменьше, одна еще меньше и одна емы занимают всю площадь пере- ля для номеров АК, транков и групп –
совсем крошечная. Находятся в них: дней панели, никаких индикаторов по одному ключу на номерное поле.
n Блок MCP – блок центрального на блоке нет. По умолчанию вс е нас троено
процессора АТС. Это мозг стан- n Модуль кодеков MGI2D – малень- на 4‑значную нумерацию, можно пе-
ции. На нем имеется разъем LAN кая плата, устанавливаемая в со- реключить на 3-значную, только за-
для подключения в локальную сеть, ответствующие разъемы на плате чем? Регион задавать не имеет смыс-
а также другие разъемы и индика- блока MGI. ла, так как ключами можно задать
торы, назначение которых подроб- n Носитель информации – карта только США, Англию или Корею, ос-
но описано в документации [1]. MMC, обычно объемом 64 Мб, с за- тальные только через программу-кон-
n Блок MGI – блок VoIP. Имеет от- писанной на ней последней вер- фигуратор.
дельный разъем LAN, которому сией программного обеспечения Если станция укомплектована до-
назначается отдельный IP-адрес. станции. Поставляется в малень- полнительными модулями, устанавли-
В общем случае блоков MGI в стан- кой белой коробочке. ваемыми на блок MCP (см. [1] для бо-
ции может быть несколько (хотя лее подробного описания), то устанав-
для станции филиала это малове- Распаковываем базовый блок и ливаем их.
роятно, потому что на плате блока приступаем к сборке. Отвертка не по- Слегка отводим вперед рычаг
MGI имеется 4 посадочных места надобится. Удивляемся, почему в ком- черного цвета в нижней части блока
для модулей MGI2D, каждый из ко- плекте отсутствует силовой кабель пи- и утапливаем блок в разъемы базо-
торых обеспечивает 4 одновремен- тания? Не торопитесь звонить постав- вого блока, при этом рычаг фиксиру-
ных разговора). Другие разьемы щику – кабель не входит в комплект ется в закрытом положении. Для из-
и индикаторы подробно описаны поставки. Точно так же, как не входит влечения блока необходимо потянуть
в документации [1]. документация, – не ищите ни пакет за рычаг.

56
IP-телефония
Вынимаем карту MMC из малень-
кой белой коробочки и устанавливаем Терминология аппаратом. Как правило, АК группируют-
(этикеткой вверх, обрезом вправо, кон- В IP-телефонии применяется многочис- ся в блоки абонентских комплектов, пред-
тактами вниз) в разъем на передней ленная специфическая терминология, ставляющие собой платы, устанавливае-
панели блока MCP. большинство терминов которой пришло мые в слоты расширения АТС. Блоки АК –
Распаковываем блок MGI и модуль из «классической» телефонии. Для сис- основное содержание АТС.
MGI2D, устанавливаем модуль MGI2D темных администраторов, которые, может Цифровой абонентский комплект
на плату блока MGI. Разъемы модуля быть, когда-то работали монтерами кросса (ЦАК, DLI) – то же самое, только предна-
MGI2D имеют ключи, установить не- или линейными монтерами, в ней не най- значен для работы с цифровым (систем-
правильно его нельзя. Можно ориен- дется ничего нового, но для тех, кто за- ным) телефоном, который, кроме основ-
тироваться еще и по стрелке, нарисо- нимался исключительно компьютерами, ных функций, обладает рядом сервисных,
ванной на плате MGI2D, – она должна она может оказаться незнакомой. в том числе возможностями по програм-
указывать в центр платы блок MGI. Ес- ГТС (ТФОП, PSTN) – городская теле- мированию АТС.
ли станция укомплектована нескольки- фонная сеть (телефония общего пользо- Физический номер – номер устройс-
ми модулями MGI2D (максимум 4), ус- вания). Подразумевается обыкновенная тва (комплекта, порта), выделяемый жест-
танавливаем все. Единственный пере- городская телефонная сеть. ко и без возможности изменения на основе
ключатель на плате блока поставить УАТС (PBX) – учрежденческая АТС. расположения платы в слоте АТС. Изменяет-
в положение «Вкл.» Подразумевается локальная АТС крупно- ся при перемещении платы в другой слот.
Распаковываем и устанавливаем го предприятия, которая может оказать- Логический номер – номер устройства
остальные блоки. Никаких переключа- ся устаревшего типа (например, «Искра» – (комплекта, порта), назначаемый при кон-
телей и разъемов для подключения до- очень популярная среди УАТС). фигурировании АТС. Может меняться про-
полнительных модулей на них нет. Комплект серийной линии (КСИ, се‑ извольное количество раз.
Более подробное описание процес- рийный комплект, транк, TRK) – физи- LCR – маршрут до абонента, опреде-
са сборки станции приведено в доку- ческий компонент АТС, обеспечивающий ляемый по принципу меньшей стоимости
ментации [2]. взаимодействие с одной внешней теле- (Less Cost Route).
Все. Можно включать питание. фонной линией (ГТС, УАТС). Как правило, MMC – отдельная микропрограмма, за-
Подключать Ehternet-интерфейс в ло- КСИ группируются в блоки серийных ли- дающая некоторый определенный блок на-
кальную сеть пока не имеет смыс- ний, представляющие собой платы, уста- строек АТС. Называется также блоком, ко-
ла – на блоке MCP настроен адрес навливаемые в слоты расширения АТС. мандой или таблицей, хотя, по сути, все эти
по умолчанию, а на блоке MGI он во- Абонентский комплект (АК, SLI) – фи- названия неверны.
обще равен 1.1.1.1. Поэтому сначала зический комплект АТС, обеспечивающий PCMMC – так в документации обозна-
нам понадобится системный телефон, взаимодействие с одним обыкновенным чается компьютер, с которого выполняет-
а в дальнейшем – программа-конфи- (аналоговым) внутренним телефонным ся программирование АТС.
гуратор АТС.
мирования кнопок через АТС, отоб- няя под дисплеем» (СПД) и «правая
Телефон, да не простой ражает номер и идентификатор зво- под дисплеем» (ППД), при этом кноп-
Для начала работы со станцией нам нящего абонента и т. д. Но в настоя- ка ППД находится рядом и немножко
обязательно понадобится как минимум щий момент нас не интересуют поль- выше кнопки <Scroll>.
один системный телефон (СТА). Для оп- зовательские функции, нас больше ин- При программировании АТС кноп-
ределенности будем использовать на- тересует то, что с его помощью мож- ка ППД используется для перемеще-
иболее дешевую модель – Samsung но изменять настройки АТС. Для это- ния курсора в следующую позицию,
DCS-12B, двенадцатикнопочный теле- го вначале освоимся с управлением где можно вводить или изменять дан-
фон с двухстрочным ЖКИ-индикато- АТС через него. ные.
ром. Понадобится он нам для началь- Непосредственно под дисплеем Кроме ППД, для программирова-
ного программирования станции, по- находятся три кнопки без названия, ния используются кнопки <Volume +>
тому что адрес по умолчанию не сме- функции которых примерно анало- и <Volume ->, с помощью которых пе-
нить никак, кроме как с СТА. Понадо- гичны кнопкам на сотовых телефонах, реходят на следующий (предыдущий)
бится он нам и для дальнейшего про- когда возможное действие отобража- экран настроек, и кнопка <TRSF>, ко-
граммирования и выяснения ошибок, ется на экране. торая служит для запуска процедуры
потому что станция не имеет других Во время обычного пользования программирования или принятия из-
интерфейсов подключения програм- СТА как телефоном, на экране в ниж- менений.
мы-конфигуратора, кроме COM‑пор- ней строке отображаются действия, Инженеру телефонной сети обяза-
та и доступа по Ethernet. которые можно выполнить с их помо- тельно необходимо иметь как минимум
Что такое системный телефон? щью. Но поскольку в режиме програм- один СТА, потому что некоторые опе-
Это телефон, подключаемый к ЦАК, мирования задействованы обе стро- рации (например, MMC 818) можно вы-
который, кроме того что он использует- ки, нам придется пользоваться кноп- полнять только с СТА.
ся по назначению, предоставляет свое- ками вслепую. Следует также иметь в виду, что
му пользователю большой выбор сер- Мы назовем их для определеннос- для большинства операций по про-
висных функций, вплоть до програм- ти «левая под дисплеем» (ЛПД), «сред- граммированию АТС необходимо пред-

№6, июнь 2007 57


IP-телефония
n П о я в и т с я н а д п и с ь « S y s t e m
Модели АТС, выпускаемые серии, в том числе и интеграцией по VoIP. Netmask:», а ниже будет выведе-
компанией Samsung Конструктивно выполнена в настенном на маска подсети по умолчанию
В настоящее время Samsung выпускает моноблоке, расширяемом дополнитель- 255.255.255.0.
большое количество офисных АТС, объеди- ным мини-блоком. Она действительно эко- n Если эта маска вас не устраивает,
ненных общей маркой OfficeServ (OS). Се- номичная.., пока не захочешь прикупить нажать ППД и ввести новую маску,
рия OfficeServ состоит из двух конструктив- к ней блок MGI3 – укомплектованная стан- иначе пропустить этот пункт.
но различающихся подсерий. В одну из них ция на 6 транков, 3 цифровых и 16 аналого- n <Volume +>.
входят OS12, OS100 и OS500, в другую – вых комплектов стоят порядка 30 тыс. руб, n Появится надпись «System reset:»,
OS7200 и OS7400. Основное конструктив- блок MGI3 – порядка 35 тыс. руб. (цены взя- а ниже «Are you sure: NO».
ное различие между ними – OS12, OS100 ты с http://www.officeats.ru). n ППД, <Volume +>, «NO» меняется
и OS500 навешиваются на стену и для под- OS500 – «макси»-модель. Имеет две на «YES».
ключения телефонов используют соедини- модификации – L (large) и M (medium). Конс- n <TRSF>, станция перезагружается
тельный кабель Amphenol, второй конец ко- труктивно представляет собой настенный с новым адресом.
торого расшивается на стандартный кросс моноблок на 8 слотов. Модификация L мо-
типа 66, а OS7200 и OS7400 имеют стандар- жет расширяться до 3 блоков, модифика- Наша «коробка
тные разъемы RJ-45. Основные парамет- ция M – до двух. с инструментами»
ры АТС приведены в таблице 1. OS7200 – стоечный аналог OS100. В ней не будет ни пинцета с изолиро-
OS12 – наиболее простая модель се- Конструктивно выполнена в 19" корпу- ванными ручками, ни длинной отвер-
рии – один монолитный блок, без возмож- се, в который может быть установлено тки, словом, ничего такого, без че-
ности расширения. Несмотря на просто- до 6 блоков. Наиболее популярная в насто- го немыслима была работа инжене-
ту, обладает всеми возможностями серии, ящее время модель. Расширяется до двух ра кросса во времена координатных
в том числе возможностью объединения корпусов. АТС. В ней будут два «инструмента» –
в сеть по VoIP. OS7400 – «макси»-модель в стоечном Samsung OfficeServ Manager (OSM)
OS100 – модель для малого и средне- исполнении. Унифицированная с OS7200 и DeviceFileUploader (DFU). Первая
го офиса, позиционируемая как «эконо- по блокам модель, которая расширяется программа предназначена для на-
мичная». Обладает всеми возможностями до трех корпусов. стройки станции, вторая – для обнов-
Таблица 1. Основные характеристики АТС Samsung серии OfficeServ ления микропрограммного обеспе-
чения. Обе программы распростра-
Модель Максимальное количество портов Количество VoIP‑каналов Расширяемость
няются бесплатно. Скачать их можно
OS12 20 4 нет
с http://forum.officeats.ru, правда, там все
OS100 96 16 1 мини-блок
файлы зачем-то запаролены. Пароль
OS500 542 8 на модуль 1
2 (М), 3 (L) блока по 8 слотов на все архивы «forum.officeats.ru». Про-
OS7200 216 16 на модуль2 1 корпус на 6 слотов грамма OfficeServ Manager состоит
OS7400 656 16 на модуль 2 корпуса на 6 слотов из основного блока, установочный ар-
1
Модули нерасширяемые, устанавливаются в слот корпуса.
хив которого объемом 50 Мб, и моду-
2
Модули расширяемые, устанавливается карта MGI2D, каждая на 4 канала. ля модели OS7200 объемом 3 Мб. Про-
грамма DeviceFileUploader объемом
варительно разрешить эти действия, n <TRSF>, 830, появляется надпись 18 Мб. Установка проводится стандар-
введя пароль технического специа- «System IP address:», а ниже выве- тным для Windows способом (надеюсь,
листа, который по умолчанию равен ден установленный в данный мо- упоминать о том, что обе эти програм-
4321. Для ввода пароля предназначе- мент IP-адрес. мы существуют только под Windows,
на MMC 800. n ППД, ввести нужный адрес (при вво- излишне?).
де дополнять неполные группы нуля- Сначала устанавливается основ-
Меняем адрес АТС ми, например для ввода 192.168.1.1 ной блок. В нем может не оказать-
по умолчанию набрать 192168001001), <Volume +>. ся поддержки OS7200 – не пугай-
Первое, что нам необходимо сделать n П о я в и т с я н а д п и с ь « S y s t e m тесь, поставьте, например, OS500.
для того, чтобы начать настройку АТС, – Gateway:», а ниже будет выведен После установки основного бло -
это изменить IP-адрес блока MCP, уста- текущий установленный адрес ка запустите установку модуля под-
новленный по умолчанию на тот, кото- шлюза по умолчанию. держки OS7200. Не забудьте устано-
рый нам необходим. Сделать это мож- n ППД, ввести необходимый адрес вить DeviceFileUploader – на самом де-
но только с СТА. шлюза по умолчанию, <Volume +>. ле он не является обязательной про-
Порядок действий следующий: Таблица 2. План прозвонки
n <TRSF>, 800, появляется на д-
Номер Описание Входящие Исходящие Группа в MMC 614 Группа в ММС 601
пись «Enable Tech.Prog», а ниже
4251 Директор + 3 5001
«Passcode:», 4321.
n Вторая строка меняется на «Disable 4252 Администратор + + 1 5000, 5001

Tenant:1», <Volume ->, строка меня- 4253 Бухгалтер + 2 5001

ется на «Enable Tenant:1», <TRSF>. 4254 Оператор 4 5002

58
IP-телефония
граммой, но для обновления про-
граммного обеспечения станции она Какие еще бывают блоки и брандмауэра, а также модуль управ-
просто незаменима. Разумеется, об- для OS7200 ления блоком LIM. Применяется для
новление можно проделать без нее.  LCP – модуль сопроцессора. Устанав- построения сети на базе станций в ма-
Если хватает квалификации. Просто ливается вместо модуля основного лых офисах – станция может использо-
DFU берет на себя выполнение тех ру- процессора в дополнительный корпус ваться в качестве брандмауэра и DSL-
тинных действий, в которых нельзя при расширении станции. шлюза. Мы не будем рассматривать это
ошибиться, но которые являются обя-  TEPRI – модуль подключения каналов решение.
зательными. T1/E1 или ISDN PRI.  LIM – модуль на 16 портов обыкновен-
Запускаем OSM. (см. рис. 1). Про-  4BRI – модуль подключения каналов ного Ethernet-коммутатора (при нали-
грамма исключительно англоязычная, BRI. чии модуля WIM работает как комму-
причем к ней нет и, видимо, никогда  8SLI – модуль на 8 АК. татор второго уровня).
и не будет каких-либо русификато-  16DLI – модуль на 16 ЦАК.  4DSL – модуль на 4 DSL-канала для
ров, русских ресурсов, русских спра-  8HYB – модуль на 8 гибридных (анало- подключения удаленных устройств.
вок и прочего, что обычно выпраши- говых или цифровых) комплектов.  4WLI – модуль интерфейсов с беспро-
вают люди, которые не в ладах с ан-  8COMBO – модуль на 8 АК и 8 ЦАК. водными станциями WBS24.
глийским.  WIM – модуль DSL-интерфейса, DMZ  SVMi-20E – модуль голосовой почты.
Выбираем из списка установлен-
ных модулей OSM_7200 и нажимаем значок с молотком Полезную информацию несет также последняя стро-
для настройки параметров связи со станцией (см. рис. 2). ка окна программы – здесь выводятся состояние станции
В нижних полях «Site» и «IP‑address» вводим соответс- (ONLINE), тип подключения и подключенный узел (LAN
твенно описание станции и ее IP-адрес, который мы только REMOTE: Kemerovo_shop [192.168.1.31]), версии програм-
что установили с СТА, и нажимаем кнопку «Add». Для под- много модуля PCMMC и прошивки MCP (M:2.69‑P:2.69),
ключения к станции необходимо дважды щелкнуть мыш- текущая установленная страна (ITALY), тип станции
кой по выбранной станции, при этом загружается рабо- (OfficeServ 7200), дата и время в станции. То, что текущая
чая оболочка. Для подключения к станции следует нажать в данный момент страна – Италия, не должно вызывать
на кнопку «Connect» (c изображением двух состыкован- удивления – рисунок отображает состояние станции в мо-
ных сетевых узлов).
Рабочая оболочка проверяет доступность станции, и ес-
ли она доступна, выдает запрос на пароль технического
специалиста, который, как уже упоминалось, по умолча-
нию равен 4321 (см. рис. 3).
Если пароль введен верно, программа начинает загруз-
ку настроек из станции. Эта процедура может занять не-
которое время. Процесс загрузки настроек отображается
на экране (см. рис. 4).
После загрузки начальных настроек отображается ра-
бочее поле программы (см. рис. 5). Тех, кто никогда не ви-
дел до этого программы-конфигуратора, вид рабочего по-
ля обычно повергает в некоторое недоумение – «И что же
тут делать дальше?». Рисунок 1. Начальный экран запуска OfficeServ Manager
Действительно, OSM отличается редкостной недружес-
твенностью интерфейса – никаких мастеров, никаких под-
сказок, единственная страховка – от дублирования данных.
По сути OSM – это всего лишь переложенный на компью-
терный вариант СТА в той его части, что относится к про-
граммированию станции.
На панели инструментов находятся кнопки подключения-
отключения станции, загрузки-выгрузки настроек в конфи-
гурационный файл, просмотра версии прошивок и их об-
новления, справки и «О программе».
Основная работа проводится при загрузке в рабочее
поле некоторой MMC, раскрывающийся список которых
представлен слева.
Для загрузки определенной MMC следует щелкнуть по
ней дважды. Имейте в виду, что загруженная MMC не вы-
гружается автоматически при закрытии окна – она просто
становится неактивной. Одновременно можно загрузить
не более десяти MMC. Рисунок 2. Экран настроек параметров связи со станцией

№6, июнь 2007 59


IP-телефония
мент первого включения, без выпол-
нения каких-либо настроек, а в этот
момент страна может быть установ-
лена совершенно произвольно (лично
мне попадались несколько раз Италия
и Румыния).
Программу DeviceFileUploader мы
опишем в разделе, посвященном пе-
репрошивке программного обеспече-
ния станции.

Общая начальная
настройка
Настройка станции филиала будет
проводиться нами в два этапа:
n на первом этапе станция настраи-
вается просто как обычная офис-
ная станция, которая принимает
Рисунок 3. Запрос пароля для доступа к настройкам станции звонки и направляет их на АК, кото-
рая позволяет одним звонить в го-
род, а другим – нет, перехватывать
звонки и т. д. – все возможности
OfficeServ 7200 как офисной стан-
ции описаны в [1];
n на втором этапе вводятся специ-
фические настройки для связи го-
ловной станции (мы договорились,
что на ней работает OS500) и стан-
ции филиала.

Итак, первый этап настройки. Он


включает в себя:
n первоначальную настройку (ус-
тановку региона, даты и времени,
типа транков, времени блокиров-
ки PCMMC, времени распознава-
ния Flash;
n назначение АК-внутренних номе-
Рисунок 4. Загрузка начальных данных из станции в программу настройки ров и группировку их по возмож-
ностям доступа.

Беремся за дело. Для начала нуж-


но установить регион. Настройки ко-
да региона сохраняются в файле при
выгрузке конфигурационных файлов,
и программа-конфигуратор не даст за-
грузить в станцию файл с настройка-
ми, в которых код региона отличается
от того, что установлен в станции. Код
региона нужно устанавливать в первую
очередь, потому что при изменении ко-
да региона все остальные настройки
(кроме IP-адреса блока MCP) сбрасы-
ваются в настройки по умолчанию.
Итак, открываем MMC 812, щел-
каем по списку регионов и выбираем
«Russia/CIS» (см. рис. 6).
Далее нужно увеличить время
Рисунок 5. Рабочее поле программы Samsung OfficeServ Manager блокировки PCMMC, то есть время

60
IP-телефония
бездействия, по истечении которо-
го станция автоматически отключает-
ся от программы-конфигуратора, пос-
кольку в каждый момент времени толь-
ко один человек может подключиться
к станции с помощью данной програм-
мы. По умолчанию оно равно 5 минут,
что очень мало, когда постоянно парал-
лельно настройке читаешь документа-
цию. Открываем MMC 501, выбираем
PCMMC LOCK TIME и ставим макси-
мально возможное значение – 60 мин
(см. рис. 7). Дата и время устанавли-
ваются в MMC 505 (cм. рис. 8).
Далее мы установим время распоз-
навания сигнала Flash. По умолчанию
установлен диапазон 30-85 мс, мы из-
меним его на 10-90 мс, чтобы исклю-
чить ситуацию, когда краткое нажатие
на рычаг телефона воспринимается не Рисунок 6. Установка кода региона
как повторное поднятие трубки, а как
Flash (см. рис. 9). Время распознава-
ния задается так же, как и время бло-
кировки PCMMC, в MMC 501.
Для выполнения следующего пун-
кта нам большую помощь окажет таб‑
лица 2, которую обычно называют
«планом прозвонки». В ней отмечает-
ся, какие АК должны принимать вхо-
дящие вызовы, какие АК имеют право
звонить в город, а какие – только на-
бирать внутренние номера.
Здесь мы назначаем номера на че-
тыре АК, а также определяем, что вхо-
дящие звонки принимает АК с номером
4252, что исходящие звонки в город
можно делать с номеров 4251 и 4252,
что номер 4253 может звонить только
на локальные номера. При этом сле-
дует учесть, что группы в MMC 601 –
это «звонковые» группы, то есть здесь Рисунок 7. Установка времени блокировки PCMMC
задается, на какие АК будет направ-
ляться вызов при его поступлении
по той или иной линии, а группы в ММС
614 – это «группы доступа», где задает-
ся, какие АК имеют право пользовать-
ся какими транковыми группами (а это
могут быть транки, каналы MGI и др.)
и каким образом – отвечать на вызов,
совершать вызов.
Выделив номера на АК, программи-
руем их в ММС 724 (см. рис. 10).
Группировка АК может делаться
по двум принципам:
n группировка по приему вызова
с транка (какие АК будут звонить
при приеме вызова по тому или
иному транку). Это настраивает-
ся включением АК в определенную Рисунок 8. Установка даты и времени

№6, июнь 2007 61


IP-телефония
группу в MMC 601 (см. рис. 11) и на-
правлением вызова с определенно-
го транка на определенную группу
в MMC 406 (см. рис. 12). По умол-
чанию все вызовы направляются
на АК, включенные в группу 5000,
которая называется «группой опе-
раторов», потому что, как правило,
по этим номерам сидит секретарь,
офис-менеджер или аналогичный
персонал.
n группировка по правам доступа
к внешней линии. Под внешней
линией подразумевается не толь-
ко транк, но и канал VoIP или дру-
гих технических средств связи.
Для этого формируются так на-
зываемые «группы доступа». Они
Рисунок 9. Установка времени распознавания сигнала Flash совершенно независимы от групп
приема вызова, для внутренних
АК выделены группы 001‑300, для
внешних линий – 30‑500. По умол-
чанию все транки включаются
в группу 301, доступ к которой и ре-
гулируется в MMC 614. Предвари-
тельно в MMC 304 настраиваются
нужные группы (в нашем случае 1,
2, 3 и 4, см. рис. 13, показана груп-
па 2), в которых:
 в группе 1 не изменяется ниче-
го (по умолчанию полный до-
ступ);
 в группе 2 ставится Dial: No,
Answer:Yes, это означает, что
входящие в эту группу АК могут
принимать вызовы, но не мо-
гут использовать линии данной
группы для внешних вызовов;
Рисунок 10. Задание номеров АК в номерном плане  в группе 3 ставится Dial: Yes,
Answer:No, это означает, что вхо-
дящие в эту группу АК не будут
принимать вызовы, приходя-
щие по внешним линиям дан-
ной группы, но могут их (линии)
использовать для совершения
внешних вызовов;
 и в группе 4 ставится Dial:No,
Answer:No, что означает: ни-
каких прав на использование
внешних линий данной группы.

После настройки групп дост у-


па в MMC 614 каждому АК приписы-
вается та или иная группа доступа
(по умолчанию группа 1 – полный до-
ступ, см. рис. 14).
После выполнения данных настро-
ек станция готова к работе как простая
Рисунок 11. Включение АК в группы вызова офисная станция. Правда, здесь мы

62
IP-телефония
не учитываем один момент. Поступа-
ющие звонки у нас будут направлять-
ся на выбранные нами АК независи-
мо от того, какой сегодня день – рабо-
чий или выходной, а также независимо
от времени – утро, день, вечер... Вооб-
ще данная станция имеет шесть «пла-
нов звонка», которые задают время
переключения станции с одного пла-
на на другой. Эта возможность очень
удобна для тех организаций, в кото-
рых в рабочие дни звонки принимает
один человек, а в выходные, по вече-
рам, в праздники – другой. Настраива-
ется это в MMC 507, и тогда в MMC 406
в колонках, соответствующих «планам
звонков», указываются АК, принимаю-
щие вызовы в то время, когда исполь-
зуется тот или иной план. По умолча- Рисунок 12. Назначение групп АК на прием вызовов с заданных транков
нию всегда действует план звонков 1
(Ring Plan 1).

Заключение
Даже простая настройка АТС Samsung –
занятие весьма нетривиальное. Про-
грамма-конфигуратор чрезвычайно
неудобна и весьма недружественна,
отсутствие не то что мастеров, а даже
элементарных подсказок, что для того
чтобы добиться того-то и того-то, не-
обходимо править то-то и то-то, просто
бьет в глаза наотмашь, приходится пос-
тоянно держать открытым руководство
по программированию и то скромное
количество литературы по програм-
мированию АТС, которое удалось най-
ти [7, 8]. Конечно, после того как все
эти операции будут проделаны не-
сколько раз, привыкаешь, и ситуация Рисунок 13. Настройка групп доступа к внешним линиям
уже не кажется столь неудобной. наде-
юсь, эта статья поможет вам освоить-
ся с основами программирования АТС
Samsung немножко быстрее.

1. GABD-000038, ред. 001 OfficeServ


7200. Общее описание – http://www.
samsungdocs.com.
2. GANA-000012, ред. 001 Officeserv 7200.
Руководство по установке – http://www.
samsungdocs.com.
3. GABD-000131, ред. 001 OfficeServ 7200.
Руководство по программированию –
http://www.samsungdocs.com.
4. http://www.samsung.ru.
5. http://www.miacom.ru.
6. http://forum.officeats.ru.
7. http://citycat4.land.ru/mini_ATS.djvu.
8. ht t p: //c i t yc at4.l a n d.r u / Pr o g r_ AT S _
Samsung_Panas.djvu. Рисунок 14. Задание групп доступа для АК

№6, июнь 2007 63


человек номера

СМИ уровня 2.0

Благодаря аналитику Михаилу Елашкину я решила стать представителем этого вида средств
массовой информации.

Я вернулся на свой пост в приемную седу: анекдоты, невыдуманные исто- ния, она обсуждается второй раз, с те-
директора, свалил бесполезные ключи рии, идеи как из рога изобилия. На- ми людьми, которым надо все растол-
в ящик и прочел несколько страниц пример, такая замечательная теория ковать. Многие вещи мы воспринима-
из классического труда Я. П. Невструева
«Уравнения математической магии». развития средств массовой инфор- ем как одномоментные: вышла статья –
Эта книга читалась как приключенческий мации: «Главная проблема бумажной и все. На самом деле это процесс. Лю-
роман, потому что была битком набита прессы – то, что это СМИ уровня 1.0. ди вовлекаются, и это приносит гораз-
поставленными и нерешенными Интерактивность ее какая? Статья по- до больший эффект».
проблемами. является и затем обсуждается на сай- Мне показалось, что наша беседа
Аркадий и Борис Стругацкие те, постфактум. А интерактивность 2.0 с Михаилом Елашкиным тоже стала
«Понедельник начинается в субботу» в том, что человек в своем блоге пи- интерактивным прологом к созданию
шет: «У меня появилась идея статьи». какого-то умного, большого материала

М
ихаил Елашкин, руководитель 5-6 специалистов его класса, его уров- о проблемах, близких IT-специалистам.
компании Elashkin Research, ня, которым не надо ничего разжевы- А может быть, это будет даже книга, со-
создатель ITblogs.Ru – про- вать, обсуждают с ним эту тему. С кем- зданная на уровне 2.0. Во всяком слу-
странства для общения профессио- то он соглашается, с кем-то спорит… чае вот они, темы для ваших читатель-
налов IT-индустрии, похож на ларчик. После этого он пишет статью, в кото- ских размышлений. Если у вас возник-
Открываешь крышку – начинаешь бе- рой есть уже все подробные объясне- ли возражения или вы найдете здесь

64
человек номера
мысли, созвучные вашим, – не забудь- ся без всяких шаблонов: за десять ми- му Михаил Елашкин не уехал в даль-
те про обратную связь… нут продумать ситуацию, поставить за- ние края, хотя у него когда-то и виза
дачу, проанализировать возможности в кармане была… «Я очень доволен,
Как сдавать и так далее». что никуда не уехал ни как ученый,
ленинский зачет Сам Михаил Елашкин оставил ни как IT-специалист. Не знаю, поче-
в советском прошлом элитную физ- му... Мне нравится здесь. Был тут не-
«Столичный город и приличная
матшколу Новосибирского государс- давно в Парке Победы. Что мне пон-
зарплата», – сказал бородатый негромко,
но я услышал. твенного университета и химфак МГУ. равилось: народ идет с российскими
«Не надо, – сказал я. – Не надо мерить В 1990 году он закончил аспирантуру флагами. Приятно. По-моему, патри-
на деньги». и окунулся в проект – обучающие про- отизм – это важно для всей страны.
«Да нет, я пошутил», – сказал бородатый. екты и игры для Германии. Потом бы- Особенно такой, не навязанный, ис-
«Это он так шутит, – сказал горбоносый.
ли Oracle, Novell, Intel и, наконец, своя кренний. Мой сын пошел в День По-
– Интереснее, чем у нас, вам нигде
не будет». компания. беды поговорить с ветеранами, рас-
«Почему вы так думаете?» – «Уверен». Oracle, 1995 год. Судьба определи- спросить, как это было. Нам ветера-
лась сразу, потому что, уверен Миха- нов приглашали, они рассказывали,
Аркадий и Борис Стругацкие ил, «самое главное в нашей IT‑индус- а мы читали книжки, играли в крести-
«Понедельник начинается в субботу»
трии – люди. Попасть в американскую ки-нолики. Здесь человек взял и сам
Меня давно интересовало: почему корпорацию и при этом быть готовым пошел. Между нами говоря, я поду-
в менеджмент и IT-индустрию пришло учиться новому – все, карьера обеспе- мал: если бы народ так относился
так много людей из науки? На первый чена! Я был в первой пятерке. Мы ос- к Советскому Союзу, он бы вряд ли
взгляд все понятно – образование воились. Что происходит дальше? Те- развалился». – «А сын у вас боль-
позволило, лучшее в мире все-таки. бя встречает менеджер в коридоре: «Я шой?» – «16 лет. На подготовитель-
Но ведь наличие диплома и желание взял еще пять человек, вот тебе моя ном отделении ВМК МГУ занимается.
выбраться из нищеты, в которую пог- кредитная карточка, купи им компью- Сын пошел в тот же вуз, где я учил-
рузилось бюджетное общество на за- теры и пристрой на какую-нибудь ра- ся. Я вдруг обнаружил, что мои рас-
кате советской власти и рассвете де- боту». Ты уже начальник группы. 2-3 сказы о том, как мы учились, весели-
мократии, – это явно еще не все… такие группы – становишься началь- лись, для него не пустой звук. Для не-
Михаил Елашкин задумался над ником департамента. Наша первая пя- го честь – доказать, что он тоже может
моим вопросом: «Если бы наука терка пошла по разным путям. Один там учиться...»
финансировалась, остались бы вы стал начальником службы техничес-
в ней?». И решил, что вряд ли для него кой поддержки, другой занялся обра- Бремя белого человека
был возможен такой поворот судьбы: зованием, третий – партнерской про-
Но несмотря на все маленькие помехи
«Все-таки бизнес и информационные граммой, меня понесло в продукто- и неприятности, несмотря на то что
технологии – области, которые позво- вый маркетинг. Каждый смог реали- одушевленный теперь «Алдан» иногда
ляют человеку получить то, чего он до- зовать себя». печатал на выходе: «Думаю. Прошу
стоин. Наука – это патерналистское об- Сейчас Михаил хорошо знает лю- не мешать», несмотря на недостаток
запасных блоков и на чувство
щество. Студент работает на диплом- дей своего поколения, со схожи-
беспомощности, которое охватывало
ника, дипломник – на аспиранта, ас- ми судьбами. Круг тесен, слой то- меня, когда требовалось произвести
пирант – на доктора, доктор – на ака- нок. Эти люди работают не за страх, логический анализ «неконгруэнтной
демика… Ждать 40 лет, пока тебе да- а за совесть. Приходят в офис в 8 ут- трансгрессии в пси-поле инкуб-
дут персональную машину от Акаде- ра, уходят в 11 вечера, семью не ви- преобразования», несмотря на все это,
работать здесь было необычайно
мии наук, – это несерьезно». дят, просиживают за компьютером все
интересно, и я гордился своей очевидной
С другой стороны, на новых долж- выходные. нужностью.
ностях ученые смогли реализовать то, А их молодые сотрудники живут
что дали им крепкая советская шко- совсем по другим правилам: приходят Аркадий и Борис Стругацкие
ла, университет, классическое обра- в 9, уходят в 6 и выставляют список «Понедельник начинается в субботу»
зование: «Западного менеджера го- требований: зарплату, машину, соци- Интересно говорить с человеком, у ко-
товят начиная со школы. Учат всему: альную страховку... торого есть аналитические способ-
как писать заявление о приеме на ра- Это не значит, что предыдущие ности. Я вообще перед такими людь-
боту, как разрешать конфликты и так поколения остались верны советской ми преклоняюсь. И кажется, что и все
далее. Когда он приходит на службу, дисциплине, совести, морали. «Люди, остальные должны их на руках носить,
у него наработан огромный запас шаб- с которыми я общаюсь, в детстве чита- слушать внимательно да советы при-
лонов. Наши люди, которые пришли ли «Понедельник начинается в суббо- нимать к сведению. Михаил Елашкин
в бизнес из науки, с этими шаблонами ту». Им не безразлично, что происхо- сделал аналитику своей профессией.
не были знакомы, они знали, как сда- дит с их компаниями. Для них выиграть Его компания, как следует из офици-
вать ленинский зачет. Однако из науки в конкурентной борьбе – удовольствие ального релиза, «ставит своей целью
ушла молодежь, те люди, которые ста- большее, чем сходить на футбол». развитие услуг IT-аналитики в России
ли бы ее цветом со временем. В новой Наверное, после всего вышеиз- и СНГ и предоставление тех серви-
для себя сфере они смогли разобрать- ложенного не нужно объяснять, поче- сов, которые ранее были недоступны

№6, июнь 2007 65


человек номера
неса. Но англичане несут цивилиза-
цию индийцам». Это в общем-то шу-
точная метафора.
Если серьезнее, нормальный ры-
нок – это не только производители,
потребители и между ними посредни-
ки, но и люди, которые пишут о рын-
ке и анализируют его – пресса и ана-
литики. «Без них, – говорит Михаил, –
рынок может существовать, но тогда
он будет неэффективный. Люди не по-
нимают, что на рынке происходит, при-
нимают неэффективные решения».
В чем заключается работа анали-
тика? Любопытно заглянуть на «кух-
ню» специалиста, которому могут за-
казать какую угодно тему, ведь сегодня
спросом пользуется одна вещь, а зав-
тра другая. Невозможно же, в самом
деле, знать все обо всем?!
«Я научился выгружать знания
об одном и загружать о другом. Я умею
добывать информацию, умею задавать
вопросы техническим экспертам. Моя
работа заключается не в том, что я
сел и о чем-то написал. Я подписан
примерно на 20-30 новостных рассы-
лок и каждый день читаю 3-4 десятка
статей. Ты должен постоянно отслежи-
вать, что происходит, думать об этом,
общаться с людьми… За эти постоян-
ные «тренировки», конечно, не пла-
тят. Это как у боксеров. Он получает
деньги за один бой. Но этот бой у не-
в этом регионе». Если неофициально, вет по поводу конкретной ситуации, го раз в год, все остальное время он
внешний анализ, который предлагает а потом будет заниматься чем при- готовится».
Елашкин, – это изучение технологий, дется. Вот и хорошему аналитику могут
сравнение технологий, исследование Первое время, когда Михаил де- заплатить за один проект 6‑7 тысяч
поведения людей и тенденций на рын- лал проекты и звонил в поисках ин- долларов. Деньги большие, но впол-
ке. Вещь нужная. формации в известные фирмы, ему не заслуженные, ведь чтобы выдать
Ну как принимать правильное ре- задавали странный вопрос: «А что я качественный результат, специалист
шение в бизнесе, если не знаешь его буду иметь с аналитики?». Елашкин работает день и ночь, без отдыха, по-
последствий? Например, дистрибью- задавал встречный вопрос: «Вы хо- тому что тему нужно прочувствовать,
терская фармацевтическая компания тите жить в цивилизованном рынке?» сжиться с ней, уйти в нее с головой…
решила развивать новое направление. А про себя думал: «Ну, конечно, мож- Это ведь не контора, в которую при-
(Кстати, классная идея лично от Миха- но и без этого прожить, а есть прямо шел, поработал и ушел отдыхать, по-
ила Елашкина: распределенная систе- из кастрюли, руками». забыв о проблемах в офисе.
ма для аптек, позволяющая заказы- Ему было сложно объяснить в ко- Между тем, кто-то пытается сби-
вать товары с сотового телефона). ротком разговоре идеологию сво- вать цены на услуги аналитических
Ну ж н о в ы бр ат ь тех н ол о г и ю – ей работы. Между тем, она проста: компаний, не понимая, что это и глупо,
от этого зависит 90% успеха. Вполне «Есть бремя белого человека. Прихо- и губительно – если цена становится
логично попросить сделать этот вы- дят английские колонизаторы, захва- ниже какого-то рассчитанного уровня,
бор квалифицированных специалис- тили новый штат в Индии. Что они де- либо снижается качество работы, ли-
тов. Ан нет… лают? Первым делом учреждают суд, бо компания умирает.
В России аналитические услуги открывают больницу, школу, застав- «Любимая моя тема – произво-
на аутсорсе – пока экзотика. То ли ляют почистить улицы, строят туа- дительность тяжелых систем. Самая
денег жалко, то ли, наоборот, не жал- леты для туземцев, заставляют мыть красивая, интересная, научная. У нас
ко средств на новую штатную вакан- руки и так далее. Это никаким обра- в России человек 10-15 понимают эту
сию – специалиста, который даст со- зом не сказывается на качестве биз- тему глубоко. Может, больше».

66
человек номера
Дирижер оркестра
Институт был битком набит сотрудниками.
Казалось, их было даже больше,
чем в будний день. (…) Трудовое
законодательство нарушалось
злостно, и я почувствовал, что у меня
исчезло всякое желание бороться
с этими нарушениями, потому что сюда
в двенадцать часов новогодней ночи,
прорвавшись через пургу, пришли люди,
которым было интереснее доводить
до конца или начинать сызнова какое-
нибудь полезное дело, чем глушить себя
водкой, бессмысленно дрыгать ногами,
играть в фанты и заниматься флиртом
разных степеней легкости. Сюда пришли
люди, которым было приятнее быть друг
с другом, чем порознь, которые терпеть
не могли всякого рода воскресений,
потому что в воскресенье им было скучно.

Аркадий и Борис Стругацкие


«Понедельник начинается в субботу»
Сидеть рядом с квалифицированным
специалистом и не задать ему глобаль-
ный вопрос – грешно. Я спрашиваю: зету не всегда потому, что ему нравится Елашкин сумел-таки сколотить «костяк»
«Что будет с потоками информации, ко- редакционная политика или все изда- сообщества и отправиться на поиски
торая все время накапливается? Сфе- ние «от корки до корки», но часто из‑за единомышленников. «Я подумал: может
ра IT с ней сможет справиться?» – «Че- того, что он хочет прочитать статью кон- быть, людям времени не хватает? Я дам
ловек – очень дорогая вещь. Его нельзя кретного журналиста. Растет роль лич- им возможность асинхронного общения.
заменить в полной мере машиной. По- ности – падает ценность информации. Сегодня один написал, у второго време-
исковые машины обладают скоростью, «Увеличение количества информации ни ответить нет, он в командировке, вер-
не доступной человеку. Но иногда эта будет приводить к тому, что ее боль- нулся и отреагировал. Я разговариваю
скорость ничем не может вам помочь, шие куски будут никому не нужны», – с людьми, нахожу другие блоги, пригла-
и «релевантность в соответствии с за- уверен Елашкин. шаю. Сам почти ничего не пишу, только
просом» тоже. Например, мне нужен ум- Собственно, на этом построен про- легкие вещи. У меня нет времени разо-
ный человек, хорошо разбирающийся ект ITblogs.ru. Ведь блог – это крайняя браться в чем-то серьезном и написать
во внутренних механизмах операцион- степень персонализации. Михаил соб- на эту тему. Я сейчас – дирижер оркест-
ной системы Solaris и понимающий ра- рал в него людей, которым интересно ра. Моя задача – создавать «струнные»,
боту контейнеров. Сразу оговорюсь, что общаться друг с другом, которым есть «щипковые», «духовые» группы, вдох-
я знаю ответ – это Павел Анни из Sun. чем поделиться с коллегами и которые, новлять людей, будоражить – давай
У него есть собственный блог, на кото- самое главное, не относятся ни к одной сделаем, попробуем. Это в основном
ром два раза в год он пишет посты, пос- их трех категорий. Это еще одна лю- организационная работа.
ле которых специалисты по UNIX хва- бопытная теория: «Многие из тех, кто Я не подбираю авторов по принци-
таются за голову: «Десять лет этим за- в 1995-1996 годах пришел в этот биз- пу – нравится мне или не нравится. Есть
нимаюсь, только сейчас понял». нес, стали либо большими начальни- авторы, мнение которых лично мне ин-
Предположим, мы делаем запрос. ками, либо собираются на пенсию, ли- тересно. Есть авторы, которые интерес-
Вываливаются два миллиона ссылок. бо превратились в циников. Человек ны другим. Если он умный и ему есть
Они выстроены по принципу: где этих приезжает на конференцию за десять что сказать, всегда найдется аудито-
слов больше встречается. Включаем минут до своей презентации. Все отла- рия, которая будет его слушать. Лю-
индекс цитируемости. Да не цитируют жено, движения отработаны, как у ав- бой пост должен содержать не инфор-
Пашу, потому что его знают десять че- томатчика. Он осматривает зал. Ему мацию: смотрите сюда, прочитайте вот
ловек таких же сумасшедших, как он! говорят: «Ваша очередь». Он откры- это, а какую-то идею. Человек пишет: я
А этих десятерых знают сто человек, вает ноутбук, подключает, делает пре- прочитал книгу по управлению проекта-
а на них уже ссылаются, потому что то, зентацию, затем сворачивается и уез- ми, они говорят то-то и то-то, я 20 лет уп-
что говорит Паша, способны понять не- жает. Это шоу-бизнес. Я сам много лет равляю проектами, по моему опыту, на-
многие. Паша говорит для таких же гу- мотался по стране, красиво рассказы- до делать так и никак по-другому».
ру, которые потом могут разжевать ос- вал. Толкаешь речь – и все твои. Рань- Строгий подход. Но разве не при-
тальным. Как мне найти такую инфор- ше в гостиничных анкетах я писал в гра- влекательный? Вы не согласны?
мацию?» Михаил считает, и с этим труд- фе «род занятий» – «шоу-бизнес».
но спорить, что в прессе читатель ищет И вот, несмотря на то что многие лю- Текст: Оксана Родионова,
личность. Он открывает журнал или га- ди, что называется, перегорели, Михаил фото: Владимир Лукин

№6, июнь 2007 67


web

Система аутентификации
веб‑пользователей WebAuth

Сергей Яремчук
Интернет-технологии сегодня популярны как никогда. В той или иной форме их использование
можно встретить в любой компании, как в виде общедоступных сервисов, так и для организации
доступа к внутренним ресурсам компании. И тем острее встает вопрос об обеспечении
безопасности таких каналов доступа, в первую очередь о надежности аутентификации
пользователей.

68
web

Н
а страницах журнала уже шла
речь о достоинствах и недостат-
ках стандартных типов аутенти-
фикации basic и digest [1, 2] и был дан
пример одной из более защищенных
реализаций DACS (Distributed Access
Control System). Но это не единствен-
ное решение. В Стэнфордском уни-
верситете уже несколько лет успеш-
но используется система одноразо-
вой регистрации (SSO – single sign-
on) WebAuth. Пользователь, кото-
рый хочет получить доступ к одно-
му из ресурсов, регистрируется толь-
ко один раз на центральном сервере
(http://weblogin.stanford.edu, см. рис. 1)
при переходе на другой веб-сайт этой
группы серверов вводить пароль уже
не потребуется. Если пользователь
имеет право посетить ресурс, он к не- Рисунок 1. WebLogin Стэнфордского университета
му будет допущен автоматически.

Принцип работы системы


WebAuth
WebAuth реализован в качестве моду-
ля веб-сервера Apache 2.x. Хотя есть
порт и для IIS (см. далее по тексту).
Система работает с любым веб-бра-
узером, поддерживающим SSL/TLS
и cookies, без необходимости уста-
новки дополнительных приложений
и не требующих включения Java или
JavaScript. Вся схема аутентификации
построена поверх Kerberos, при этом
билеты (ticket) упаковываются в сеан-
совый cookies (token), который и ис-
пользуется каждый раз в случае необ- Рисунок 2. Регистрация пользователей в WebAuth (нужно включить cookies)
ходимости, для подтверждения полно-
мочий. Хотя для подтверждения полно- новление cookies, срок жизни которых воспользоваться в дальнейшем, явля-
мочий предусмотрены варианты пере- истек, установка ключей для WAS. Для ется закрытие веб-браузера. Хотя сер-
дачи билетов через URL или POST. всей сети серверов используется один вис поддерживает специальную стра-
Для работы WebAuth требуется на- такой сервер, который может находить- ницу logout, предназначенную для этих
личие трех компонентов. Кроме веб- ся в одной сети или вообще по другую целей. Отметьте, что tiket, передава-
браузера (User‑Agent – UA) необходи- сторону океана. Пользователь, кото- емый посредством URL, имеет очень
мо настроить сервер, который должен рый хочет получить доступ к ресур- короткий период жизни по сравнению
поддерживать схему аутентифика- су, защищенному с помощью WebAuth с вариантом использования cookies –
ции WebAuth-enabled Application Server сервером WAS, сначала перенаправ- не более 5 минут. Если по истечении
(WAS). Чтобы не допустить попадания ляется на страницу Weblogin, которая этого времени попытаться повторно
cookies третьему лицу, соединение находится на WebKDC, после получе- использовать такой URL, будет запро-
между UA и WAS обязательно защи- ния cookies он уже попадает на нуж- шен cookies, содержащий билет, если
щается с помощью SSL/TLS, сам tiket ную страницу. Регистрация пользо- cookies удовлетворяет всем условиям,
шифруется с использованием сеансо- вателя требует 10 шагов, из них пер- доступ будет разрешен.
вого ключа. вые два – это обмен ключами между Для подтверждения наличия учет-
Для подтверждения полномочий WAS и WebKDC при первоначальном ной записи пользователя, может быть
пользователя задействуется еще один подключении и получение результата использован любой механизм, подде-
сервер – WebKDC. Его задачами явля- krb5_mk_req. рживаемый Apache, встроена интег-
ются: проверка подлинности пользова- Да и единственным полностью эф- рация с LDAP.
теля и выдача cookies, уточнение ин- фективным способом удалить исполь- Распространяется WebAuth по X11-
формации о пользователе у WAS, об- зуемый cookies, чтобы никто не мог им подобной (http://www.gnu.org/licenses/

№6, июнь 2007 69


web
Другой проект SPIE [6] предлагает реализацию WebAuth
на Java, все файлы, предлагаемые SPIE, можно также за-
грузить со страницы закачки проекта WebAuth.
При установке из исходных текстов, кроме Apache, с под-
держкой SSL понадобятся MIT Kerberos v5, cURL и OpenSSL.
Вот список необходимых пакетов в Ubuntu, выданных ко-
мандой:

$ sudo apt-cache search webauth


apache2-threaded-dev libapr1-dev libaprutil1-dev
libcurl3-openssl-dev libdb4.4-dev libldap2-dev libpq-dev
libsqlite3-dev uuid-dev

В других дистрибутивах названия будут несколько дру-


гими. Теперь распаковываем полученный архив с исходны-
Рисунок 3. Пакеты Ubuntu ми текстами, заходим внутрь и последовательно даем ко-
манды:
info/X11.html) лицензии, разрешающей бесплатно и без ог-
раничений использовать, копировать, модифицировать, $ ./autogen
$ ./configure --enable-mod_webkdc
продавать и прочее, сохраняя уведомление об авторском
праве. Остальные параметры включены по умолчанию, поэтому
можно их не указывать. Если скрипт не найдет некоторые
Установка WebAuth библиотеки, их потребуется указать с помощью --with‑krb5,
Актуальной на момент написания статьи была версия --with-openssl, --with-curl и --with-ldap.
3.5.4. Версия WebAuth v3 базируется на Apache 2.х и MIT Затем:
Kerberos v5 (можно использовать Heimdal Kerberos верси-
ей выше 0.7) официально представлена общественнос- $ make
$ make check
ти в начале 2003 года. Поэтому период детских болезней,
...
можно сказать, давно уже миновал, чего, правда, не ска- Running all tests listed in ./TESTS. If any tests fail, run the failing
жешь о прозрачности настроек, с которыми придется по- test program by hand to see more details. The test program will have the
same name as the test set but with "_test" appended.
возиться, представленная документация также не всегда
может помочь. libwebauth/attrs........ok
libwebauth/base64.......ok
Сегодня WebAuth включен в репозитарии многих дист- libwebauth/hex..........ok
рибутивов, поэтому самый простой способ установки – ис- libwebauth/key..........ok
libwebauth/random.......ok
пользование менеджера пакетов. Правда, называться па- libwebauth/token........ok
кеты могут по-разному. В Debian необходимо установить All tests successful.
пакет libapache2-webauth. В Ubuntu команда поиска выдаст Files=6, Tests=7374, 0.99 seconds (0.74 usr + 0.14 sys = 0.88 CPU)

длинный список пакетов:


Если все тесты прошли успешно, устанавливаем:
$ sudo apt-cache search webauth
libapache2-webauth - Apache 2 modules for WebAuth authentication $ sudo make install
libapache2-webkdc - Apache 2 modules for a WebAuth authentication
KDC
libwebauth-perl - Perl library for WebAuth authentication В комплект WebAuth входит набор для тестирования
libwebauth1 - Shared libraries for WebAuth authentication работы сервиса, если планируется его использование,
libwebauth1-dev - Development files for WebAuth authentication
libwebkdc-perl - Perl library for WebAuth authentication вводим:
webauth-tests - Tests for the WebAuth authentication modules
webauth-utils - Command-line utilities for WebAuth authentication
$ sudo make install-tests
webauth-weblogin - Central login server for WebAuth authentication

Все эти пакеты понадобятся при настройке и тестиро- И если планируется на этом же компьютере использо-
вании работы сервера. Именно в дистрибутивах Debian вать WebKDC:
и Ubuntu по заявлению разработчиков WebAuth максималь-
но поддерживается. На сайте проекта, кроме исходных тек- $ sudo make install-webkdc
стов, доступны пакеты для Red Hat Enterprise Linux 4, Solaris
и Windows. Правда, их версии не самые свежие, например Теперь создаем каталог, в котором будут храниться на-
zip-архив для Windows содержит версию 3.2.0, и этот порт стройки, принципалы, токены и некоторые другие файлы:
подписан как unsuported. Судя по инструкции, использовать
этот порт можно совместно с Apache 2.0.47. Порт для IIS 6.0 $ sudo mkdir -p /etc/apache2/webauth
$ sudo mkdir -p /etc/apache2/webkdc
можно найти по адресу [5], его первоначальная реализация
разрабатывалась также в Стэнфорде и содержала много Смотрим, с правами какого учетного имени работает
ошибок, сейчас отдан на откуп сторонним разработчикам. веб-сервер:

70
web
$ sudo grep User /etc/apache2/apache2.conf Теперь создаем принципалы и ключи:
User www-data
$ sudo kdb5_util create –s
Этот пользовательский бюджет должен быть владель-
цем созданных каталогов: Создаем принципал для административных целей:

$ sudo chown -R www-data:www-data /etc/apache2/webkdc ↵ $ sudo kadmin.local -q "addprinc admin/admin"


/etc/apache2/webauth

При установке с помощью пакетов, в Ubuntu эти два И далее в интерактивном режиме создаем все необхо-
каталога можно найти в /etc. Поскольку мы имеем дело димые принципалы для узла, KDC и пользователей:
с Kerberos, поэтому в обязательном порядке синхронизи-
руем время. $ sudo kadmin.local -p admin/admin
Authenticating as principal admin/admin with password.
Настройка WAS kadmin.local: addprinc -randkey host/grinder.com
Principal "host/grinder.com@GRINDER.COM" created.
Все настройки сервера, который для аутентификации бу- kadmin.local: addprinc grinder
дет использовать WebAuth, производятся в конфигураци- Enter password for principal "grinder@GRINDER.COM":
Re-enter password for principal "grinder@GRINDER.COM":
онном файле веб-сервера Apache – httpd.conf (в Ubuntu Principal "grinder@GRINDER.COM" created.
apache2.conf). Настройки можно условно разделить на две kadmin.local: addprinc -randkey service/webkdc
части: описание параметров модуля WebAuth и настройка Principal " service/webkdc@GRINDER.COM" created.
kadmin.local: ktadd service/webkdc
доступа к ресурсам. Сначала первая часть: Entry for principal service/webkdc with kvno 3, encryption type
Triple DES cbc mode with HMAC/sha1 added to keytab WRFILE:
# Загружаем модуль /etc/krb5.keytab.
LoadModule webauth_module ↵ Entry for principal service/webkdc with kvno 3, encryption type
/usr/lib/apache2/modules/mod_webauth.so DES cbc mode with CRC-32 added to keytab WRFILE:/etc/krb5.keytab.
# Расположение AES-ключей и токенов для связи с WebKDC kadmin.local: quit
# относительно корня веб-вервера
WebAuthKeyring webauth/keyring
WebAuthServiceTokenCache webauth/service_token_cache Все созданные ключи принципала записываются в файл
# Расположение keytab-файла Kerberos
WebAuthKeytab webauth/keytab /etc/krb5.keytab. Этот файл и будем использовать при работе
# Адрес, куда будет перенаправлен пользователь для регистрации WebAuth. Лучше всего создать символическую ссылку:
WebAuthLoginURL https://grinder.com/login/
# Адрес для связи с сервером WebKDC
WebAuthWebKdcURL https://grinder.com/webkdc-service/ $ sudo ln –s /etc/krb5.keytab /etc/apache2/webauth/keytab
# Название сервиса, используемого для связи с WebKDC $ sudo chown www-data:www-data /etc/apache2/webauth/keytab
WebAuthWebKdcPrincipal service/webkdc@GRINDER.COM
# Автоматическое перенаправление пользователя на SSL, Настройка доступа к ресурсам стандартна для Apache,
# при попытке соединиться по не защищенному каналу в доступе
# будет отказано и журнале появится запись: здесь можно использовать любой удобный вариант. Чтобы
# mod_webauth: connection is not https, denying request включить проверку WebAuth, достаточно в файл .htaccess
WebAuthSSLRedirect on
WebAuthDebug on вписать:
# Если используется сам подписанный сертификат
# для работы с WebKDC, добавляем AuthType WebAuth
WebAuthWebKdcSSLCertFile webauth/webkdc.cert Require valid-user
# В отладочном режиме можно включить доступ
# к URL /webauth-status, который покажет статус работы
# mod_webauth Или в httpd.conf описать ресурс таким образом:
#<Location /webauth-status>
# SetHandler webauth <Location "/private/">
# Order allow,deny AuthType WebAuth
# Allow from all require valid-user
#</Location> </Location>
Настройки просты и понятны. Остается только создать
keytab. Kerberos – штука тонкая, и малейшая неточность Конечно, максимальная защита достигается при вклю-
приведет к тому, что WAS откажется работать, полностью чении всех возможных проверок пользователя, в том чис-
блокируя доступ к серверу. В документации проекта по это- ле и адреса:
му поводу только одна строка, рассказывающая, как по-
лучить такой файл со Стэнфорда. О настройках Kerberos <Location "/private/">
AuthType WebAuth
в журнале уже говорилось [7], коротко напомню, как это require valid-user
сделать. Устанавливаем пакеты: order deny,allow
deny from all
allow from 192.168
$ sudo apt-get install krb5-admin-server ↵ satisfy any
krb5-kdc krb5-config krb5-user krb5-clients </Location>

Редактируем файлы /etc/krb5.conf и /etc/krb5kdc/kdc.conf Для удаления cookies без закрытия окна браузера мож-
под настройки своей системы. Запускаем два сервера: но использовать страницу logout:

$ sudo /etc/init.d/krb5-kdc restart <Location /private/logout>


$ sudo /etc/init.d/krb5-admin-server restart WebAuthDoLogout on
</Location>

№6, июнь 2007 71


web
Без WebKDC эта схема не будет иметь смысла, поэто- Открываем его и указываем правильные настройки:
му приступаем к его настройкам.
our $KEYRING_PATH = "/etc/apache2/webkdc/keyring";
our $TEMPLATE_PATH = "/usr/share/weblogin/generic/templates";
Настройка WebKDC # Адрес, по которому будет находиться сервис WebKDC
Напомню, WebKDC не обязательно должен находиться our $URL = "https://localhost/webkdc-service/";
на том же узле, что и WAS, учитывая, что безопасность
всей системы WebAuth зависит от безопасности WebKDC, Для работы нам понадобится еще один файл token.acl,
последний должен быть максимально защищен. Установ- в котором описывается шаблон разрешенных токенов,
ки в конфигурационном файле веб-сервера практически которые может создавать WebKDC. Копируем пример
аналогичны: на место:

# Загружаем модуль $ sudo cp webauth-3.5.4/src/modules/webkdc/token.acl ↵


LoadModule webkdc_module ↵ /etc/apache2/webkdc/
/usr/lib/apache2/modules/mod_webkdc.so
WebKdcServiceTokenLifetime 30d Снимаем комментарий в первой строке и указываем
WebKdcKeyring webkdc/keyring
WebKdcKeytab webkdc/keytab шаблон:
WebKdcTokenAcl webkdc/token.acl
WebKdcDebug on
LogLevel debug krb5:service/*@grinder.com id

# Создадим алиасы
ScriptAlias /login "webkdc/login.fcgi" На этом настройки можно считать законченными. Пе-
ScriptAlias /logout "webkdc/logout.fcgi" резапускаем веб-сервер:
Alias /images "webkdc/images/"
Alias /help.html "webkdc/help.html"
$ sudo /etc/init.d/apache2 restart
Теперь по порядку. Как создавать файл keytab, по-
казано выше, он должен соответствовать параметру В журнале веб-сервера должна появиться запись об ус-
WebAuthWebKdcPrincipal в конфигурациях WAS. пешной инициализации модулей:
Файл keyring, в котором содержится AES-ключ, исполь-
[Wed May 16 21:47:35 2007] [notice] mod_webauth: initialized (3.5.4)
зуемый при соединении с mod_webauth ↔ mod_webkd, cоз- [Wed May 16 21:47:35 2007] [notice] Apache/2.2.3 (Ubuntu) PHP/5.2.1
дается с помощью утилиты wa_keyring: WebAuth/3.5.4 WebKDC/3.5.4 SSL/0.9.7 configured -- resuming normal
operations

$ cd /etc/apache2/webkdc При попытке получить доступ к закрытому с помощью


WebAuth ресурсу пользователь будет переключен на за-
Создадим ключ, который будет действителен в тече- щищенное SSL-соединение и появится страница, запра-
ние двух дней: шивающая пароль.
Пора подводить итог всего сказанного.
$ sudo wa_keyring -f ./keyring add 2d
Итоги
Посмотрим, что внутри: Без сомнения, WebAuth обладает достаточно впечатляющи-
ми возможностями, позволяя организовать безопасный до-
$ sudo cat keyring ступ к защищенным ресурсам, используя один сервер для
v=1;n=1;ct0=1179336753;va0=1179509553;kt0=1; аутентификации. Правда, для того чтобы заставить эту сис-
kd0=d31f548b8bab815b62afa96936105c2c;
grinder@grinder.com:/etc/apache2/webkdc
тему полноценно работать, администратору придется пот-
ратить не один час на ее первоначальную настройку.
Все доступные ключи можно просмотреть с помощью Но все затраты на установку и настройку затем с лих-
параметра list: вой окупятся удобством в использовании.

$ sudo wa_keyring -f keyring list 1. Мичурин А. Базовая HTTP-авторизация – защита от честных


Path: keyring людей. //Журнал «Системный администратор», № 5, 2005 г. –
id Created Valid after Fingerprint C. 88-92.
0 05/16/2007 20:32:33 05/18/2007 20:32:33 f08f5b1a75df2c1d2d38ccdfe570a75f 2. Мичурин А. В чем сильные и слабые стороны HTTP digest-
авторизации. //Журнал «Системный администратор», № 10,
Шаблоны страниц, которые будут выведены пользова- 2005 г. – C. 44-51.
телю при регистрации, ошибке и прочие, находятся в ката- 3. Яремчук С. Cистема контроля доступа к веб-сервису DACS.
логе /usr/share/weblogin/generic/templates. В том случае, ес- //Журнал «Системный администратор», № 8, 2006 г. –
ли установка производилась из исходных текстов, в фай- C. 74‑79.
ле /usr/share/perl5/WebKDC/Config.pm пути могут не сов- 4. Сайт проекта WebAuth – http://webauth.stanford.edu.
падать с принятыми в дистрибутиве. Можно отредактиро- 5. Сайт проекта WebAuth-IIS – http://www.adunar.com/webauth.
вать их в нем, но лучшим вариантом является использова- 6. Сайт проекта SPIE – http://spie.oucs.ox.ac.uk.
ние файла webkdc.conf, который должен находиться в под- 7. Кондрин М. Развертываем Heimdal Kerberos. //Журнал «Сис-
каталоге /etc/apache2/webkdc. темный администратор», № 7, 2005 г. – С. 20-25.

72
bugtraq

Переполнение буфера в OpenOffice


Несколько уязвимостей в Apple Safari Програ м ма: OpenOf fice 1.1.x, OpenOf fice.org 2.x,
Программа: Apple Safari 3 Beta. OpenOffice 1.0.x.
Опасность: Критическая. Опасность: Критическая.
Описание: 1. Уязвимость существует из-за ошибки при об- Описание: 1. Уязвимость существует из-за ошибки при об-
работке HTML-кода. Удаленный пользователь может с по- работке тега «prdata» в RTF-файлах, в которых первый то-
мощью специально сформированной веб-страницы выпол- кен меньше второго. Удаленный пользователь может с по-
нить произвольный код на целевой системе. Уязвимость су- мощью специально сформированного RTF-файла вызвать
ществует в версиях Windows и OS X. переполнение динамической памяти и выполнить произ-
2. Уязвимость существует из-за ошибки в обработчике вольный код на целевой системе.
протокола при обработке тегов IFRAME. Удаленный пользо- 2. Уязвимость существует из-за использования копии
ватель может выполнить произвольные команды на системе уязвимой библиотеки FreeType. Удаленный пользователь
с привилегиями пользователя, запустившего браузер. может с помощью специально сформированного докумен-
3. Уязвимость обнаружена в функции window.setTimeout() та вызвать переполнение динамической памяти и выпол-
после изменения свойства window.location. Удаленный поль- нить произвольный код на целевой системе.
зователь может с помощью специально сформированной URL производителя: www.openoffice.org.
веб-страницы выполнить произвольный JavaScript-код Решение: Установите последнюю версию 2.2.1 с сайта про-
в браузере жертвы в контексте безопасности произволь- изводителя.
ного домена. Удачная эксплуатация уязвимости позволит
злоумышленнику получить доступ к произвольным файлам
куки и отобразить произвольные данные.
Также сообщается о различных уязвимостях, которые Переполнение буфера
позволяют вызвать отказ в обслуживании системы. в Blue Coat K9 Web Protection
URL производителя: www.apple.com/safari. Программа: Blue Coat K9 Web Protection версии до 3.2.44.
Решение: В настоящее время способов устранения уязви- Опасность: Высокая.
мости не существует. Описание: Уязвимость существует из-за ошибки проверки
границ данных в management service (k9filter.exe) при обра-
Несколько уязвимостей ботке URL. Злоумышленник может с помощью специально
в Apple QuickTime сформированного HTTP-запроса на localhost на порт 2372
Программа: Apple QuickTime 7.x. вызвать переполнение буфера и выполнить произвольный
Опасность: Высокая. код на целевой системе.
Описание: 1. Уязвимость существует из-за ошибки дизай- URL производителя: www.k9webprotection.com.
на в ограничениях безопасности для QTObject-подклассов. Решение: Установите последнюю версию 3.2.44 или выше
Злоумышленник может выполнить недоверенный Java-код с сайта производителя.
и получить доступ на чтение и запись в произвольные ячей-
ки памяти.
2. Уязвимость существует из-за ошибки дизайна при Уязвимость при обработке LHA-архивов
обработке Java-апплетов. Удаленный пользователь может в продуктах F-Secure
с помощью специально сформированного апплета просмот- Программа: F-Secure Internet Security 2005-2007, F-Secure
реть произвольные данные в памяти браузера. Anti-Virus 2005-2007, F-Secure Anti-Virus 5.x, F-Secure Anti-
URL производителя: www.apple.com. Virus Client Security 6.x, F-Secure Anti-Virus for Windows
Решение: Установите последнюю версию QuickTime 7.1.6 Servers 5.x, F-Secure Anti-Virus for Workstations 5.x, F‑Secure
с сайта производителя. Anti-Virus for Citrix Servers 5.x, F-Secure Anti-Virus for
MIMEsweeper 5.x, F-Secure Anti-Virus for Microsoft Exchange
Переполнение буфера в Microsoft Office 6.x, F-Secure Internet Gatekeeper 6.x, F-Secure Anti-Virus for
Программа: Microsoft Office 2003, возможно другие вер- Linux 4.x, F-Secure Internet Gatekeeper for Linux 2.x.
сии. Опасность: Высокая.
Опасность: Критическая. Описание: Уязвимость существует из-за ошибки провер-
Описание: Уязвимость существует из-за ошибки в функ- ки границ данных при обработке LHA-архивов. Удаленный
ции DeleteRecordSourceIfUnused() в MSODataSourceControl пользователь может с помощью специально сформирован-
ActiveX-компоненте. Удаленный пользователь может с по- ного LHA-архива вызвать переполнение буфера и выпол-
мощью специально сформированной веб-страницы вы- нить произвольный код на целевой системе.
звать переполнение буфера и выполнить произвольный URL производителя: www.f-secure.com.
код на целевой системе. Решение: Установите исправление с сайта производите-
URL производителя: www.microsoft.com. ля.
Решение: В настоящее время способов устранения уязви-
мости не существует.

74
bugtraq

Целочисленное переполнение в Amavis Уязвимость при обработке CAB-файлов


Программа: AMaViS (A Mail Virus Scanner) версии до 4.21, в продуктах CA
amavisd-new 2.x. Программа: CA Anti-Virus for the Enterprise (formerly eTrust
Опасность: Высокая. Antivirus) r8, r8.1; CA Anti-Virus 2007 (v8); eTrust EZ Antivirus
Описание: 1. Целочисленное переполнение обнаружено r7, r6.1; CA Internet Security Suite 2007 (v3); eTrust Internet
в утилите file. Удаленный пользователь может вызвать пе- Security Suite r1, r2; eTrust EZ Armor r1, r2, r3.x; CA Threat
реполнение динамической памяти и выполнить произволь- Manager for the Enterprise (formerly eTrust Integrated Threat
ный код на целевой системе. Management) r8; CA Protection Suites r2, r3; CA Secure Content
2. Уязвимость существует из-за некоторых регулярных Manager (formerly eTrust Secure Content Manager) 8.0; CA
выражений в file. Удаленный пользователь может указать Anti-Virus Gateway (formerly eTrust Antivirus eTrust Antivirus
специально сформированный файл и потребить все доступ- Gateway) 7.1; Unicenter Network and Systems Management
ные ресурсы процессора на системе. (NSM) r3.0; Unicenter Network and Systems Management (NSM)
URL производителя: www.amavis.org. r3.1; Unicenter Network and Systems Management (NSM) r11;
Решение: Установите последнюю версию 4.21 или выше Unicenter Network and Systems Management (NSM) r11.1;
с сайта производителя. BrightStor ARCserve Backup r11.5; BrightStor ARCserve Backup
r11.1; BrightStor ARCserve Backup r11 for Windows; BrightStor
Уязвимость при обработке данных Enterprise Backup r10.5; BrightStor ARCserve Backup v9.01;
в MiniWeb HTTP Server CA Common Services; CA Anti-Virus SDK (formerly eTrust Anti-
Программа: MiniWeb HTTP Server 0.8.19, возможно более Virus SDK).
ранние версии. Опасность: Высокая.
Опасность: Высокая. Описание: 1. Уязвимость существует из-за ошибки провер-
Описание: Уязвимость существует из-за ошибки при об- ки границ данных в vete.dll при обработке имени файла, со-
работке входных данных в поле Content-Length в POST-за- держащегося в CAB-архиве. Удаленный пользователь мо-
просе. Удаленный пользователь может с помощью специ- жет с помощью специально сформировано CAB-файла вы-
ально сформированного POST-запроса вызвать перепол- звать переполнение стека и выполнить произвольный код
нение динамической памяти и выполнить произвольный на целевой системе.
код на целевой системе. 2. Уязвимость существует из-за ошибки при обработке
URL производителя: sourceforge.net/projects/miniweb. некорректно определенного поля coffFiles в CAB-архивах.
Решение: В настоящее время способов устранения уязви- Удаленный пользователь может с помощью специально
мости не существует. сформированного CAB-архива вызвать переполнение стека
и выполнить произвольный код на целевой системе.
Уязвимость при обработке параметров URL производителя: www.ca.com.
в Win32 API в Microsoft Windows Решение: Установите исправление с сайта производите-
Программа: Microsoft Windows 2000, Microsoft Windows XP, ля.
Microsoft Windows 2003.
Опасность: Высокая.
Описание: Уязвимость существует из-за ошибки при об- Несколько уязвимостей в Mozilla Firefox
работке некоторых параметров в Win32 API. Удаленный Программа: Mozilla Firefox версии до 2.0.0.4 и 1.5.0.12,
пользователь может с помощью специально сформиро- Mozilla Thunderbird версии до 2.0.0.4 и 1.5.0.12, Mozilla
ванной веб-страницы выполнить произвольный код на це- SeaMonkey версии до 1.1.2 и 1.0.9.
левой системе. Опасность: Высокая.
URL производителя: www.microsoft.com. Описание: 1. Уязвимость существует из-за ошибок при об-
Решение: Установите исправление с сайта производите- работке JavaScript. Удаленный пользователь может вызвать
ля. повреждение памяти и выполнить произвольный код на це-
левой системе.
Переполнение буфера в Trillian 2. Уязвимость существует из-за ошибки в методе
Программа: Cerulean Studios Trillian версии до 3.1.6.0. addEventListener. Удаленный пользователь может внед-
Опасность: Высокая. рить произвольный сценарий в другой сайт и изменить
Описание: Уязвимость существует из-за ошибки при об- важные данные.
работке границ данных в UTF-8-строках. Удаленный поль- 3. Уязвимость существует из-за ошибки при обработ-
зователь может с помощью специально сформированного ке всплывающих окон XUL. Злоумышленник может под-
сообщения, просматриваемого пользователем, вызвать пе- делать определенные частит браузера (например, адрес-
реполнение динамической памяти и выполнить произволь- ную строку).
ный код на целевой системе. URL производителя: www.mozilla.org/products/firefox.
URL производителя: blog.ceruleanstudios.com/?p=150. Решение: Установите последнюю версию с сайта произ-
Решение: Установите последнюю версию 3.1.6.0 с сайта водителя.
производителя.
Составил Александр Антипов

№6, июнь 2007 75


программирование

Организуем доступ к базам данных


при разработке кроссплатформенных
приложений на C++/wxWidgets

Владимир Тряпичко
Очень часто на форумах появляются вопросы, связанные с организацией доступа к базам
данных для приложений на C++. Тема актуальная и очень интересная, хотя у новичков
зачастую вызывает трудности. Но написание кроссплатформенных приложений на C++,
использующих для своей работы базы данных, не является чем-то непосильным,
кроссплатформенная разработка может оказаться увлекательным занятием.

Р
ечь пойдет о разработке прило- Windows databaselayer_sqlite.dsp из дистрибу-
жений, использующих для сво- В качестве среды разработки будем тива DatabaseLayer.
ей работы базы данных SQLite. использовать Microsoft Visual Studio Теперь нам необходимо указать
Учиться кросс-платформенной раз- 2005. Для создания кросс-платфор- зависимости проектов. Наше при-
работке на C++ мы будем на примере менных приложений подойдет любая ложение должно быть собрано пос-
простейшего приложения, работающе- редакция Visual Studio, включая бес- ле сборки библиотеки DatabaseLayer,
го с базами данных – адресной книги. платную Visual Studio 2005 Express поэтому в Solution Explorer жмем
Edition. В случае использования Visual правой кнопкой на названии проек-
Инструментарий Studio 2005 Express Edition необходимо та SQLiteTest, выбираем пункт меню
Для работы нам понадобятся: дополнительно установить Microsoft «Project Dependencies...», в списке про-
n Библиотека wxWidgets-2.8.3 – Platform SDK. ектов ставим маркер на названии про-
http://wxwidgets.org. екта databaselayer_sqlite и жмем «OK».
n Б и бл и о т е к а S Q L ite 3 – ht t p: // Настройка проекта Да лее выбираем пунк т меню
sqlite.org. в Visual Studio 2005 «Build → Configuration Manager» и ука-
n Библиотека DatabaseLayer for Для начала создадим новый проект зываем конфигурации каждого проек-
w xWidgets – ht tp://w xcode. (Win32 Project) в Visual Studio 2005 и на- та для отладочной и финальной вер-
sourc eforge.net /c omp onents / зовем его SQLiteTest. сии решения. При написании статьи
databaselayer. Затем распакуем архив с исходным использовалась статическая раздель-
n Утилита wxActiveRecordGenerator кодом библиотеки DatabaseLayer в пап- ная Unicode-сборка wxWidgets, поэто-
(wxARG) – http://wxcode.sourceforge. ку с нашим решением (Solution). Добав- му для Debug-версии решения была
net/components/activerecord. ляем в Solution проект databaselayer_ выбрана конфигурация Static Unicode

76
программирование
Debug Multilib проекта databaselayer_sqlite и конфигурация
Debug проекта SQLiteTest. Такие же действия необходимо
выполнить и для Release-версии, заменив все вхождения
слова Debug в названиях конфигураций на Release.
После этого распаковываем архив sqlite-source-
x_y_z.zip в папку databaselayer/sqlite/include и архив
sqlitedll-x_y_z.zip в папку databaselayer/sqlite/lib. В резуль-
тате в папке databaselayer/sqlite/lib должны появиться фай-
лы sqlite3.dll и sqlite3.def.
Всё это очень хорошо, но для использования динами-
ческой библиотеки в нашем проекте неплохо было бы иметь
.lib-файл, которого у нас сейчас нет. Для того чтобы он у нас
был, создаем два batch-скрипта:
Рисунок 1. Окно конфигурирования сборки в Visual Studio 2005
Файл setupvars.bat
Далее в разделе «Linker → General» для всех кон-
"C:/Program Files/Microsoft Visual Studio 8/VC/bin/vcvars32.bat"
фигураций указываем параметр Output File равным
Файл export.bat «../bin/$(ProjectName).exe» и в разделе Debugging – пара-
метр Working Directory равным «../bin». Это позволит гене-
lib.exe /def:sqlite3.def /machine:x86 /out:sqlite3.lib
рировать исполняемый файл в отдельную папку.
Запускаем командную строку, переходим в папку Наконец, предварительная настройка завершена,
databaselayer/sqlite/lib и по очереди запускаем два batch- и можно приступать к написанию кода.
файла:
Пишем код
setupvars SQLiteTestMainFrame.h – заголовочный файл с описани-
export
ем класса главного окна приложения:
После выполнения этих нехитрых действий у нас долж-
ны появиться два файла: sqlite3.exp и sqlite3.lib. #ifndef _SQLITE_TEST_MAINFRAME_H
#define _SQLITE_TEST_MAINFRAME_H
Отлично, теперь создаем в нашем проекте SQLiteTest
четыре новых файла: SQLiteTestApp.h, SQLiteTestApp.cpp, #include <wx/wx.h>
SQLiteTestMainFrame.h и SQLiteTestMainFrame.cpp. class SQLiteTestMainFrame : public wxFrame
Теперь открываем свойства проекта, переходим в раз- {
void CreateControls();
дел C/C++ и в настройках «Additional Include Directories» до- public:
бавляем две новые записи, содержащие пути к заголовоч- SQLiteTestMainFrame();
bool Create(wxWindow * parent,
ным файлам DatabaseLayer и SQLite: wxWindowID id, const wxString & title);

DECLARE_EVENT_TABLE()
$(ProjectDir)../databaselayer/sqlite/include void OnExit(wxCommandEvent & event);
$(ProjectDir)../databaselayer/include };
Переходим в раздел Linker и в настройках «Additional #endif
Library Directories» добавляем записи, содержащие пути
к статическим библиотекам DatabaseLayer и SQLite: SQLiteTestMainFrame.cpp – реализация класса глав-
ного окна приложения:
$(ProjectDir)../databaselayer/sqlite/lib
$(ProjectDir)../databaselayer/lib #include "SQLiteTestMainFrame.h"
#include "SQLiteTestApp.h"
В разделе «Linker → Input» в настройках «Additional
Dependencies» добавляем записи: BEGIN_EVENT_TABLE(SQLiteTestMainFrame, wxFrame)
EVT_MENU(wxID_EXIT, SQLiteTestMainFrame::OnExit)
END_EVENT_TABLE()
advapi32.lib
comctl32.lib SQLiteTestMainFrame::SQLiteTestMainFrame()
uuid.lib {
rpcrt4.lib Create(NULL, wxID_ANY, _("SQLite Addressbook"));
wxbase28ud.lib }
wxmsw28ud_core.lib
wxmsw28ud_adv.lib bool SQLiteTestMainFrame::Create(wxWindow * parent,
wxpngd.lib wxWindowID id, const wxString & title)
wxcode_msw28ud_databaselayer_sqlite.lib {
sqlite3.lib bool res = wxFrame::Create(parent, id, title,
wxDefaultPosition, wxSize(700, 500));
if(res)
Не забывайте, что суффикс d в названиях библиотек {
CreateControls();
wxWidgets указывает на то, что используется отладочная }
версия библиотеки. Release-версии библиотек не имеют return res;
}
в названии этого суффикса.

№6, июнь 2007 77


программирование
void SQLiteTestMainFrame::CreateControls() bool SQLiteTestApp::ConnectToDatabase()
{ {
wxMenuBar * menuBar = new wxMenuBar; m_Database = new SqliteDatabaseLayer();
SetMenuBar(menuBar); wxString db_filename(wxT("addressbook.db"));
PreparedStatement * pStatement(NULL);
wxMenu * fileMenu = new wxMenu; bool bCreate = !wxFileExists(db_filename);
fileMenu->Append(wxID_EXIT, _("Exit\tAlt+F4")); if(bCreate)
{
menuBar->Append(fileMenu, _("File")); wxMessageBox(_("Database does not exist... recreating."));
}
CreateStatusBar(2); try
Centre(); {
} m_Database->Open(db_filename);
// Try to recreate tables
void SQLiteTestMainFrame::OnExit(wxCommandEvent & event) try
{ {
wxUnusedVar(event); m_Database->RunQuery(
Close(); wxT("CREATE TABLE groups(id integer primary key, \
} name varchar(128) not null,\
description varchar(512));"));
}
SQLiteTestApp.h – заголовочный файл с описанием catch(DatabaseLayerException & e) {wxUnusedVar(e);}
try
класса приложения: {
m_Database->RunQuery(wxT("CREATE TABLE persons(\
#ifndef _SQLITE_TEST_APP_H id integer primary key,\
#define _SQLITE_TEST_APP_H groupid integer not null,\
first_name varchar(64) not null,\
#include <wx/wx.h> last_name varchar(64) not null,\
#include <Databaselayer.h> gender boolean not null,\
#include <SqliteDatabaseLayer.h> address varchar(128) not null,\
city varchar(64) not null,\
class SQLiteTestApp : public wxApp country varchar(32) not null,\
{ phone varchar(32),\
DatabaseLayer * m_Database; email varchar(128),\
public: website varchar(260));"));
virtual bool OnInit(); }
virtual int OnExit(); catch(DatabaseLayerException & e) {wxUnusedVar(e);}
if(bCreate)
bool ConnectToDatabase(); {
DatabaseLayer * GetDatabase(); m_Database->RunQuery(
}; wxT("INSERT INTO groups(name, description) \
VALUES ('Friends', 'My friends')"));
DECLARE_APP(SQLiteTestApp) pStatement = m_Database->PrepareStatement(
wxT("INSERT INTO persons(groupid, \
#endif first_name,last_name,gender,address,city,\
country,phone) VALUES \
(?,?,?,?,?,?,?,?)"));
SQLiteTestApp.cpp – реализация класса приложения: if (pStatement)
{
pStatement->SetParamInt(1, 1);
#include <wx/image.h> pStatement->SetParamString(2, _("John"));
#include <DatabaseLayerException.h> pStatement->SetParamString(3, _("Doe"));
#include "SQLiteTestApp.h" pStatement->SetParamBool(4, 1);
#include "SQLiteTestMainFrame.h" pStatement->SetParamString(5,
_("SomeStreet st., 123/45"));
IMPLEMENT_APP(SQLiteTestApp) pStatement->SetParamString(6, _("Some City"));
pStatement->SetParamString(7, _("Some Country"));
bool SQLiteTestApp::OnInit() pStatement->SetParamString(8, _("+000-00-000-00-00"));
{ pStatement->RunQuery();
if(!ConnectToDatabase()) m_Database->CloseStatement(pStatement);
{ pStatement = NULL;
wxFAIL_MSG(_("Error connecting to database!")); }
return false; }
} }
wxImage::AddHandler(new wxPNGHandler); catch(DatabaseLayerException & e)
wxImage::AddHandler(new wxJPEGHandler); {
if(pStatement)
SQLiteTestMainFrame * frame = new SQLiteTestMainFrame; {
SetTopWindow(frame); m_Database->CloseStatement(pStatement);
frame->Show(); pStatement = NULL;
}
return true; wxFAIL_MSG(e.GetErrorMessage());
} return false;
}
int SQLiteTestApp::OnExit() return true;
{ }
if(m_Database)
{ DatabaseLayer * SQLiteTestApp::GetDatabase()
if(m_Database->IsOpen()) {
{ return m_Database;
m_Database->Close(); }
}
wxDELETE(m_Database);
} Итак, что же мы сделали: мы создали класс приложе-
return wxApp::OnExit();
} ния SQLiteTestApp, содержащий указатель на объект клас-
са DatabaseLayer, который и будет обеспечивать связь с на-

78
программирование
шей базой данных. При запуске при- n жмем кнопку «Has Many»;
ложения проверяется наличие файла n в д иа ло го во м о к н е «Relation
addressbook.db, и в случае если файл Properties» указываем название
не найден, он создается. Вместе с ба- таблицы со стороны «многие», в на-
зой данных создаются две таблицы: шем случае это таблица persons;
groups и persons и заполняются тесто- n указываем поле внешнего ключа
выми данными. в таблице persons, в нашем случае
Главная форма приложения содер- это groupid;
жит строку меню и строку статуса и по- n значения остальных параметров
ка ничего не делает. можно оставить без изменений.
После успешной сборки прило-
жения и его запуска в папке bin дол- Для таблицы persons:
жен появиться файл базы данных n жмем кнопку «Belongs To»;
addressbook.db. n в д иа ло го во м о к н е «Relation
Отлично, теперь можно приступать Properties» указываем название
к работе с базой данных. таблицы со стороны «один», в на-
шем случае это таблица groups;
Генерирование классов n указываем поле внешнего ключа
автоматизации доступа в таблице persons, в нашем случае Рисунок 2. Список библиотек,
к базам данных с помощью это groupid; необходимых для сборки проекта
wxActiveRecordGenerator n значения остальных параметров
Устанавливаем утилиту wxARG, копи- можно оставить без изменений.
руем из папки, куда была установлена
wxARG, два файла wxActiveRecord.h В поле «Output Dir» указываем пап-
и wxActiveRecord.cpp в папку SQLiteTest/ ку SQLiteTest и жмем «Generate».
wxActiveRecord. В настройках про- После всех проделанных операций
екта SQLiteTest в разделе «C/C++ → в папке с проектом SQLiteTest должны
General» в настройках «Additional появиться файлы: Group.h, Group.cpp,
Include Directories» добавляем новую Person.h и Person.cpp. Эти файлы нам
запись: необходимо добавить в проект.
Теперь можно приступать к внесе- Рисунок 3. Главное окно приложения
./wxActiveRecord нию изменений в исходный код. Для
начала в файле wxActiveRecord.h не- дая пара .h/.cpp-файлов содержит
Далее запускаем утилиту wxARG обходимо раскомментировать строку описание и реализацию трех классов
и выбираем пункт меню «File → Connect с макросом AR_USE_SQLITE, который (где XXX – название таблицы):
to database». указывает, что мы используем SQLite. n XXX – класс таблицы;
В появившемся диалоговом окне В файле wxActiveRecord.cpp нужно ис- n XXXRow – класс типизированной
«Database Connection» указываем тип править путь к заголовочному файлу записи таблицы;
базы данных SQLite3 Database и путь wxActiveRecord.h. n XXXRowSet – типизированный спи-
к файлу addressbook.db, созданному В файле wxActiveRecord.h вносим сок записей.
нашим тестовым приложением. Жмем изменения, необходимые для организа-
«Connect». ции работы с базами данных SQLite: И после всего сказанного, воору-
В диалоговом окне «Tables» выби- жившись полученными знаниями, про-
раем таблицы groups и persons. Жмем ... должаем наш «happy coding».
// COMMENT OUT THE ONES YOU DON'T USE
«OK». В файле wxSQLiteTestApp.h добав-
После этого в левой части главно- //#define AR_USE_POSTGRESQL ляем методы доступа к таблицам базы
#define AR_USE_SQLITE
го окна wxARG появится список с вы- //#define AR_USE_MYSQL данных в класс приложения:
бранными таблицами. //#define AR_USE_FIREBIRD
...
Каждая таблица базы данных име- ...
#include <SqliteDatabaseLayer.h>
ет ключевое поле id, поэтому на вклад- В файле wxActiveRecord.cpp необ- #include "Group.h"
ке «Properties» в поле ID Field мы ука- ходимо исправить путь к заголовоч- #include "Person.h"
зываем поле id. ному файлу: class SQLiteTestApp : public wxApp
В нашей базе данных между таб- {
Group * m_GroupTable;
лицами groups и persons существует ... Person * m_PersonTable;
#include "wxActiveRecord.h"
связь один ко многим, т.е. каждая груп- ...
... public:
па может содержать множество кон- ...
тактов адресной книги. Если посмотреть на исходный код Group * GetGroupTable();
Person * GetPersonTable();
Переходим на вкладку «Relations». файлов, сгенерированных утилитой };
Для таблицы groups: wxARG, то можно заметить, что каж- ...

№6, июнь 2007 79


программирование
...

class SQLiteTestMainFrame : public wxFrame


{
wxListBox * m_GroupsListBox;
wxListView * m_PersonsListView;
wxHtmlWindow * m_PersonInfoPanel;
wxToolBar * CreateToolBar();
...
};

#endif

wxSQLiteTestMainFrame.cpp – создание элементов уп-


равления:

...
#include <wx/splitter.h>
#include "new.xpm"
Рисунок 4. Настройка связей между таблицами базы данных #include "delete.xpm"
в wxARG #include "addbookm.xpm"
#include "delbookm.xpm"
wxSQLiteTestApp.cpp – загрузка данных при запуске
...
приложения и освобождение памяти при завершении ра-
боты: void SQLiteTestMainFrame::CreateControls()
{
...
... wxBoxSizer * sizer = new wxBoxSizer(wxVERTICAL);
int SQLiteTestApp::OnExit() SetSizer(sizer);
{ wxSplitterWindow * splitter =
wxDELETE(m_PersonTable); new wxSplitterWindow(this, wxID_ANY,
wxDELETE(m_GroupTable); wxDefaultPosition, wxSize(500, 400), wxSP_3DSASH);
... splitter->SetMinimumPaneSize(100);
} sizer->Add(splitter, 1, wxEXPAND);
m_GroupsListBox =
bool SQLiteTestApp::ConnectToDatabase() new wxListBox(splitter, ID_GROUPS_LISTBOX,
{ wxDefaultPosition, wxDefaultSize);
... wxSplitterWindow * personsplitter =
try new wxSplitterWindow(splitter, wxID_ANY,
{ wxDefaultPosition, wxSize(500, 400), wxSP_3DSASH);
m_GroupTable = personsplitter->SetMinimumPaneSize(100);
new Group(wxGetApp().GetDatabase(), wxT("groups")); m_PersonsListView =
m_PersonTable = new wxListView(personsplitter, ID_PERSONS_LISTCTRL,
new Person(wxGetApp().GetDatabase(), wxT("persons")); wxDefaultPosition, wxDefaultSize, wxLC_REPORT);
} m_PersonsListView->InsertColumn(0, _("First Name"),
catch(DatabaseLayerException & e) wxLIST_FORMAT_LEFT, 120);
{ m_PersonsListView->InsertColumn(1, _("Last Name"),
wxActiveRecord::ProcessException(e); wxLIST_FORMAT_LEFT, 120);
} ...
return true; personsplitter->SetSashGravity(1.0)
} splitter->SplitVertically(m_GroupsListBox,
... personsplitter, 160);
personsplitter->SplitHorizontally(m_PersonsListView,
m_PersonInfoPanel,
Итак, мы добавили новые члены класса SQLiteTestApp, personsplitter->GetSize().GetHeight()-180);
обеспечивающие доступ к таблицам базы данных, и теперь SetToolBar(CreateToolBar());
можно приступать к созданию GUI. ...
}

Графический интерфейс пользователя wxToolBar * SQLiteTestMainFrame::CreateToolBar()


{
Дистрибутив wxWidgets содержит несколько десятков wxToolBar * toolBar = new wxToolBar(this, wxID_ANY,
свободно распространяемых иконок, которые мы мо- wxDefaultPosition, wxDefaultSize, wxTB_FLAT|wxTB_TEXT);
toolBar->AddTool(ID_ADD_GROUP, _("Add Group"),
жем использовать в нашем приложении. Создадим папку wxBitmap(addbookm_xpm));
SQLiteTest/art и скопируем в нее файлы: toolBar->AddTool(ID_DELETE_GROUP, _("Remove Group"),
wxBitmap(delbookm_xpm));
toolBar->AddSeparator();
$(WXWIN)/art/addbookm.xpm ...
$(WXWIN)/art/delbookm.xpm toolBar->Realize();
$(WXWIN)/art/new.xpm return toolBar;
$(WXWIN)/art/delete.xpm }
...

В свойствах проекта в разделе «C/C++ → General» в на-


Д ля работы с к лассом w xHtmlWindow в свойс -
твах проекта в разделе «Linker → Input» в настройках
стройках «Additional Include Directories» добавим запись:
«Additional Dependencies» нам необходимо добавить биб-
./art лиотеку wxmsw28ud_html.lib для конфигурации Debug
и wxmsw28u_html.lib для конфигурации Release.
wxSQLiteTestMainFrame.h – добавляем элементы уп- Отлично, интерфейс приложения готов, теперь можно
равления на форму: приступить к реализации функционала.

80
программирование
Реализация функционала void SQLiteTestMainFrame::
OnPersonListViewSelected(wxListEvent & event)
RecordIDClientData.h – класс для хранения данных, ассо- {
циированных с элементом списка: long personid = event.GetData();
PersonRow * person =
wxGetApp().GetPersonTable()->Id((int)personid);
... if(person)
#include <wx/clntdata.h> {
class RecordIDClientData : public wxClientData m_PersonInfoPanel->SetPage(wxString::Format(
{ wxT("<html><body><h3>%s %s</h3></body></html>"),
int m_ID; person->first_name, person->last_name));
public: m_PersonInfoPanel->AppendToPage(wxString::Format(
RecordIDClientData(int id) : m_ID(id) {} wxT("<b>Gender:</b> %s"),
int GetID() {return m_ID;} (person->gender?wxT("Male"):wxT("Female"))));
... m_PersonInfoPanel->AppendToPage(wxT("<hr>"));
}; ...
... }
else
wxSQLiteTestMainFrame.cpp – работа с базой данных, {
m_PersonInfoPanel->SetPage(
загрузка и отображение контактов из адресной книги: _("<html><body><h3>Can't find info about \
selected person</h3></body></html>"));
void SQLiteTestMainFrame::FillGroupsList() }
{ }
m_GroupsListBox->Freeze();
m_GroupsListBox->Clear(); void SQLiteTestMainFrame::
GroupRowSet * allGroups = OnPersonInfoPanelLinkClicked(wxHtmlLinkEvent & event)
wxGetApp().GetGroupTable()->All(); {
for(unsigned long i = 0; i < allGroups->Count(); ++i) #if defined(__WXMSW__)
{ ShellExecute(NULL, NULL,
m_GroupsListBox->Append(allGroups->Item(i)->name, event.GetLinkInfo().GetHref().GetData(),
new RecordIDClientData(allGroups->Item(i)->id)); NULL, NULL, SW_SHOW);
} #else
if(m_GroupsListBox->GetCount()) wxExecute(event.GetLinkInfo().GetHref());
{ #endif
m_GroupsListBox->SetSelection(0); }
RecordIDClientData * data = (RecordIDClientData *)
m_GroupsListBox->GetClientObject( Список в левой части окна содержит названия групп.
m_GroupsListBox->GetSelection());
if(data) Каждый элемент списка содержит код группы. Привязка
{ данных к элементам списка реализована с помощью объ-
FillPersonsList(data->GetID());
} ектов класса RecordIDClientData, каждый объект которо-
} го содержит код группы. Класс RecordIDClientData явля-
m_GroupsListBox->Thaw();
} ется производным от wxClientData, и его использование
обеспечивает автоматическую очистку памяти при удале-
void SQLiteTestMainFrame::FillPersonsList(int groupid)
{ нии элемента списка. Доступ к данным, ассоциированным
m_PersonsListView->Freeze(); с элементом списка групп, производится посредством ме-
m_PersonsListView->DeleteAllItems();
GroupRow * thisGroup = тода GetClientObject класса wxListBox. При выборе записи
wxGetApp().GetGroupTable()->Id(groupid); в списке групп список контактов в правой части окна запол-
if(thisGroup)
{ няется данными контактов выбранной группы.
PersonRowSet * allPersons = thisGroup->GetPersons(); При выборе элемента списка контактов, информацион-
long item(0);
for(unsigned long i = 0; i < allPersons->Count(); ++i) ное поле в нижней части окна заполняется данными кон-
{ такта, связанного с выбранным элементом списка. Каждый
item = m_PersonsListView->InsertItem(item,
allPersons->Item(i)->first_name); элемент списка контактов содержит в поле данных код кон-
m_PersonsListView->SetItem(item, 1, такта. Доступ к полю данных производится посредством
allPersons->Item(i)->last_name);
m_PersonsListView->SetItem(item, 2, метода GetItemData класса wxListView.
allPersons->Item(i)->email);
m_PersonsListView->SetItem(item, 3,
allPersons->Item(i)->phone);
m_PersonsListView->SetItemData(item,
(long)allPersons->Item(i)->id);
}
if(m_PersonsListView->GetItemCount())
{
m_PersonsListView->Select(0);
}
}
m_PersonsListView->Thaw();
}

void SQLiteTestMainFrame::
OnGroupListBoxSelected(wxCommandEvent & event)
{
RecordIDClientData * data =
(RecordIDClientData *)event.GetClientObject();
if(data)
{
FillPersonsList(data->GetID());
} Рисунок 5. Главное окно приложения с загруженным списком
} контактов

№6, июнь 2007 81


программирование
При нажатии на ссылку с адресом электронной почты #ifndef _EDIT_PERSON_DIALOG_H
#define _EDIT_PERSON_DIALOG_H
в информационном поле создается новое письмо в почто-
вом клиенте, назначенном по умолчанию. #include <wx/wx.h>
С отображением данных мы закончили. Теперь нужно class EditPersonDialog : public wxDialog
реализовать добавление новой записи в таблицу и удале- {
wxString m_FirstName;
ние записей из таблицы. wxString m_LastName;
Для начала создадим диалоговые окна ввода данных. wxString m_Address;
wxString m_City;
EditGroupDialog.h – описание класса диалогового ок- wxString m_Country;
на редактирования группы: wxString m_Email;
wxString m_Phone;
void CreateControls();
#ifndef _EDIT_GROUP_DIALOG_H public:
#define _EDIT_GROUP_DIALOG_H EditPersonDialog(wxWindow * parent);
bool Create(wxWindow * parent,
#include <wx/wx.h> wxWindowID id, const wxString title);
class EditGroupDialog : public wxDialog const wxString & GetFirstName();
{ const wxString & GetLastName();
wxString m_GroupName; const wxString & GetAddress();
wxString m_GroupDescription; const wxString & GetCity();
void CreateControls(); const wxString & GetCountry();
public: const wxString & GetEmail();
EditGroupDialog(wxWindow * parent); const wxString & GetPhone();
bool Create(wxWindow * parent, };
wxWindowID id,
const wxString title); #endif
const wxString & GetGroupName();
const wxString & GetGroupDescription(); EditPersonDialog.cpp – класс диалогового окна редак-
}; тирования контакта, создание GUI:
#endif
...
void EditPersonDialog::CreateControls()
EditGroupDialog.cpp – класс диалогового окна редак- {
тирования группы, создание GUI: wxBoxSizer * sizer = new wxBoxSizer(wxVERTICAL);
SetSizer(sizer);

... wxStaticText * firstnameLabel =


void EditGroupDialog::CreateControls() new wxStaticText(this, wxID_ANY, _("First Name:"));
{ wxStaticText * lastnameLabel =
wxBoxSizer * sizer = new wxBoxSizer(wxVERTICAL); new wxStaticText(this, wxID_ANY, _("Last Name:"));
SetSizer(sizer); ...
wxTextCtrl * firstnameEdit =
wxStaticText * nameLabel = new wxTextCtrl(this, ID_EPD_FIRSTNAME_TEXTCTRL,
new wxStaticText(this, wxID_ANY, _("Name:")); wxEmptyString);
wxStaticText * descriptionLabel = wxTextCtrl * lastnameEdit =
new wxStaticText(this, wxID_ANY, new wxTextCtrl(this, ID_EPD_LASTNAME_TEXTCTRL,
_("Description:")); wxEmptyString);
...
wxTextCtrl * nameEdit = firstnameEdit->SetMinSize(wxSize(150,-1));
new wxTextCtrl(this, ID_EGD_NAME_TEXTCTRL,
wxEmptyString); firstnameEdit->SetValidator(
wxTextCtrl * descriptionEdit = wxGenericValidator(&m_FirstName));
new wxTextCtrl(this, ID_EGD_DESCRIPTION_TEXTCTRL, lastnameEdit->SetValidator(
wxEmptyString, wxDefaultPosition, wxGenericValidator(&m_LastName));
wxSize(-1, 150), wxTE_MULTILINE); ...
nameEdit->SetValidator( wxFlexGridSizer * fg_sizer =
wxGenericValidator(&m_GroupName)); new wxFlexGridSizer(2, 2, 0, 0);
descriptionEdit->SetValidator( fg_sizer->Add(firstnameLabel, 0,
wxGenericValidator(&m_GroupDescription)); wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 5);
fg_sizer->Add(firstnameEdit, 1,
wxFlexGridSizer * fg_sizer = wxEXPAND|wxALIGN_CENTER_VERTICAL|wxALL, 5);
new wxFlexGridSizer(2, 2, 0, 0); ...
fg_sizer->Add(nameLabel, 0, fg_sizer->AddGrowableCol(1);
wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 5);
fg_sizer->Add(nameEdit, 1, sizer->Add(fg_sizer, 1, wxEXPAND|wxTOP|wxLEFT|wxRIGHT, 5);
wxEXPAND|wxALIGN_CENTER_VERTICAL|wxALL, 5); sizer->Add(CreateButtonSizer(wxID_OK|wxID_CANCEL), 0,
fg_sizer->Add(descriptionLabel, 0, wxALIGN_RIGHT|wxALL, 5);
wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 5);
fg_sizer->Add(descriptionEdit, 1, sizer->Fit(this);
wxEXPAND|wxALIGN_CENTER_VERTICAL|wxALL, 5); }
fg_sizer->AddGrowableCol(1); ...

sizer->Add(fg_sizer, 1, Теперь можно приступать к написанию обработчиков


wxEXPAND|wxTOP|wxLEFT|wxRIGHT, 5);
sizer->Add(CreateButtonSizer(wxID_OK|wxID_CANCEL), событий от кнопок на панели инструментов.
0, wxALIGN_RIGHT|wxALL, 5); SQLiteTestMainFrame.cpp – добавляем возможность
}
... создания и редактирования контактов:

EditPersonDialog.h – описание класса диалогового ок- ...


void SQLiteTestMainFrame::OnAddGroup(wxCommandEvent & event)
на редактирования контакта: {

82
программирование
EditGroupDialog * dlg = new EditGroupDialog(this); int groupid = thisPerson->groupid;
if(dlg->ShowModal() == wxID_OK) thisPerson->Delete();
{ m_PersonsListView->DeleteItem(selection);
GroupRow * newGroup = wxGetApp().GetGroupTable()->New(); if(m_PersonsListView->GetItemCount())
newGroup->name = dlg->GetGroupName(); {
newGroup->description = dlg->GetGroupDescription(); m_PersonsListView->Select(wxMin(selection,
newGroup->Save(); m_PersonsListView->GetItemCount()-1));
FillGroupsList(); }
} }
dlg->Destroy(); }
}
void SQLiteTestMainFrame::
void SQLiteTestMainFrame:: OnRemoveGroupUpdateUI(wxUpdateUIEvent & event)
OnRemoveGroup(wxCommandEvent & event) {
{ event.Enable(m_GroupsListBox->GetSelection() >= 0);
int selection = m_GroupsListBox->GetSelection(); }
RecordIDClientData * data = (RecordIDClientData *)
m_GroupsListBox->GetClientObject(selection); void SQLiteTestMainFrame::
if(data) OnAddPersonUpdateUI(wxUpdateUIEvent & event)
{ {
GroupRow * thisGroup = event.Enable(m_GroupsListBox->GetSelection() >= 0);
wxGetApp().GetGroupTable()->Id(data->GetID()); }
if(thisGroup && (wxMessageBox(
_("Do you really want to delete this group?"), void SQLiteTestMainFrame::
_("Delete group"), wxYES_NO) == wxYES)) OnRemovePersonUpdateUI(wxUpdateUIEvent & event)
{ {
PersonRowSet * thisPersons = thisGroup->GetPersons(); event.Enable(m_PersonsListView->GetFirstSelected() >= 0);
for(unsigned long i = 0; i < thisPersons->Count(); ++i) }
{ ...
thisPersons->Item(i)->Delete();
} Как видно, кнопка удаления группы и кнопка добавле-
thisGroup->Delete();
m_GroupsListBox->Delete(selection); ния контакта активны только в случае, если есть актив-
if(m_GroupsListBox->GetCount()) ная запись в списке групп. Кнопка удаления контакта ста-
{
m_GroupsListBox->SetSelection(selection < новится активной только в случае, если есть активная за-
m_GroupsListBox->GetCount() ? selection : 0); пись в списке контактов. При удалении группы удаляются
data = (RecordIDClientData *)
m_GroupsListBox->GetClientObject( и все связанные с ней контакты.
m_GroupsListBox->GetSelection()); Ну вот. Мы закончили. Теперь собираем Release-вер-
if(data)
{ сию программы и тестируем. Можно переходить к созда-
FillPersonsList(data->GetID()); нию проекта под Linux.
}
}
} Linux
}
} Для сборки нашего проекта в Linux нам необходимо наличие
в системе установленной библиотеки wxWidgets. Для боль-
void SQLiteTestMainFrame::
OnAddPerson(wxCommandEvent & event) шинства распространенных дистрибутивов wxWidgets до-
{ ступна в виде готовых пакетов, но лучше всего будет не ис-
RecordIDClientData * data = (RecordIDClientData *)
m_GroupsListBox->GetClientObject( пользовать готовые пакеты, а загрузить исходный код
m_GroupsListBox->GetSelection()); wxWidgets с официального сайта и собрать библиотеку
if(data)
{ вручную. Кроме исходного кода, дистрибутив wxWidgets со-
GroupRow * thisGroup = держит довольно большое количество примеров, которые
wxGetApp().GetGroupTable()->Id(data->GetID());
if(thisGroup) могут оказаться очень полезными для начинающих. В ка-
{ честве среды разработки в Linux мы будем использовать
EditPersonDialog * dlg = new EditPersonDialog(this);
if(dlg->ShowModal() == wxID_OK) Eclipse с установленным C/C++ Development Tooling (CDT).
{
PersonRow * newPerson =
wxGetApp().GetPersonTable()->New(); Собираем SQLite
newPerson->groupid= thisGroup->id; Для корректной работы нашего приложения необходим
newPerson->first_name = dlg->GetFirstName();
newPerson->last_name = dlg->GetLastName(); файл статической библиотеки libsqlite3.a, а также заголо-
... вочные файлы SQLite. В случае если в системе эти файлы
newPerson->Save();
FillPersonsList(thisGroup->id); отсутствуют, необходимо загрузить исходный код SQLite
} (sqlite-x.y.z.tar.gz), собрать его и установить:
dlg->Destroy();
}
} ./configure –enable-static
} make
make instal
void SQLiteTestMainFrame::
OnRemovePerson(wxCommandEvent & event)
{
long selection = m_PersonsListView->GetFirstSelected(); Создание и настройка проекта в Eclipse
PersonRow * thisPerson = wxGetApp().GetPersonTable()->Id(
(int)m_PersonsListView->GetItemData(selection)); После сборки SQLite необходимо убедиться, что путь к фай-
if(thisPerson && (wxMessageBox( лам libsqlite3.so.* находится в списке путей поиска библи-
_("Do you really want to delete this record?"),
_("Delete person"), wxYES_NO) == wxYES)) отек. Я же просто создал ссылки на эти файлы в каталоге
{ /lib. Теперь, если это еще не сделано, нужно удалить все .h

№6, июнь 2007 83


программирование
и .cpp‑файлы, не относящиеся к проекту databaselayer_sqlite
из папок databaselayer/src и databaselayer/include, а также,
папку databaselayer/tests.
После того как предварительная подготовка выполне-
на, запускаем Eclipse и в папке databaselayer создаем но-
вый проект. Назовем его SqliteDatabaseLayer.
Далее идем в настройки проекта и в разделе «C/C++
Build → Miscellaneous» в поле Other flags дописываем:

`wx-config --cxxflags`

Заметьте, кавычки обратные, кнопка с тильдой («~»)


на клавиатуре.
После того как настройка библиотеки DatabaseLayer
завершена, нужно создать проект для тестового прило-
жения. Создаем новый проект Executable (Gnu) в папке
SQLiteTest. В мастере создания проекта на вкладке на-
стройки зависимостей необходимо указать проект библи- Рисунок 6. Создание конфигурации запуска приложения в Eclipse
отеки SqliteDatabaseLayer. В свойствах проекта в разделе
«C/C++ Build → Directories» добавляем новые записи:

{ProjDirPath}/art
{ProjDirPath}/wxActiveRecord
{ProjDirPath}/../databaselayer/include

Заметьте, скобки фигурные, в отличие от настроек про-


екта в Visual Studio.
В разделе «C/C++ Build → Miscellaneous» в поле Other
flags дописываем:

`wx-config --cxxflags`

В разделе «C/C++ Build → Libraries» добавляем новые


записи:

SqliteDatabaseLayer
sqlite3 Рисунок 7. Внешний вид главного окна приложения в Linux

Библиотеки должны быть добавлены именно в указанной «OK». На вкладке «Debugger» в списке Debugger выбираем
последовательности, т.к. библиотека libSqliteDatabaseLayer.a «GDB Debugger». Жмем «Run». Вот и результат. Получилось
зависит от libsqlite3.a. довольно опрятно (см. рис. 7).
И в списке Library search path добавляем запись:
Заключение
{ProjDirPath}/../databaselayer/Debug Как видите, ничего сложного в разработке кроссплатфор-
менных приложений нет, но, как и любой труд, кроссплат-
В разделе «C/C++ Build → GCC C++ Linker → Miscellaneous» форменная разработка программного обеспечения требу-
в поле Linker flags дописываем: ет опыта и сноровки. Надеюсь, материал послужит толч-
ком для того, чтобы начать немного по-другому смотреть
`wx-config --libs` на свои проблемы и на способы их решения. Исходный код
к статье можно загрузить отсюда: http://wxwidgets.info/files/
Собираем проект с помощью «Project → Build Project». SQLiteTest.7z.

Запуск приложения и отладка 1. http://wxwidgets.info – статьи, руководства, видео-уроки по про-


После успешной сборки неплохо было бы запустить на- граммированию на C++/wxWidgets на русском. Единственный
ше приложение и проверить его на работоспособность. русскоязычный ресурс, посвященный кроссплатформенной
Выбираем пункт меню «Run → Run...» В диалоговом ок- разработке ПО с библиотекой wxWidgets.
не «Run» жмем правой кнопкой на элементе «C/C++ Local 2. http://wxcode.sourceforge.net/components/activerecord/tutorial/
Application», выбираем пункт меню «New» (см. рис. 6). После wxARG-tutorial.php – руководство по использованию библио-
этого у нас должна появиться новая конфигурация запуска теки DatabaseLayer.
с названием SQLiteTest Жмем кнопку «Search Project». В ок- 3. http://wxcommunity.com – дополнительные компоненты wxWidgets.
не «Program Selection» выбираем наше приложение. Жмем 4. http://wxforum.shadonet.com – форум библиотеки wxWidgets.

84
ретроспектива

Судебные войны: оберегай своё,


не посягай на чужое
Часть вторая – программная

Дмитрий Мороз
Так уж повелось, что, в отличие от мира аппаратного обеспечения, судебные разбирательства
между компаниями, занимающимися разработкой программных продуктов, проходят намного
ожесточённее, да к тому же длятся значительно дольше. А уж суммы результирующих
штрафов и вовсе сводят с ума. За примерами далеко ходить не надо.

Противостояние Apple носительно графического интерфейса ле, а также накладывающиеся друг


и Microsoft Windows, MacOS может навсегда рас- на друга окна, были практически не-
Соперничество между этими «гига- прощаться с новыми версиями про- отличимы от таковых в MacOS. Не-
нтами» рынка уходит своими корнями грамм Word и Excel (во многом благо- смотря на всё несовершенство первых
ещё в 1985 год. Именно тогда, нака- даря которым платформа Macintosh в версий Windows, Microsoft за короткий
нуне выпуска первой версии Windows середине 80‑х достигла большой по- срок смогла продать свыше двух мил-
(являвшейся в то время лишь графи- пулярности) и других продуктов. Да- лионов её копий, что говорило о росте
ческой оболочкой для MS-DOS), в гос- бы не усугублять накалившуюся об- популярности продукта. Данные обсто-
ти к Microsoft заглянули юристы Apple, становку, Билл Гейтс предложил руко- ятельства никак не радовали руководс-
выразившие мнение своего руководс- водству Apple лицензировать его ком- тво Apple, в результате чего 17 марта
тва по отношению к внешнему виду бу- пании внешний облик MacOS. 1988 года компания выдвинула иск про-
дущего продукта. Компания была не- Злосчастный договор, подготов- тив компании Гейтса, обвинив её в не-
довольна тем, что облик Windows копи- ленный юристами Apple для подписа- законном копировании графических
рует многие элементы внешнего вида ния Microsoft 22 ноября, содержал не- элементов интерфейса MacOS.
из её операционной системы MacOS. правильную формулировку текста, ко- В своё оправдание Microsoft зая-
В своё оправдание Microsoft отмети- торая впоследствии сыграла с «яблоч- вила, что действовала сугубо в рам-
ла, что в качестве прототипа ею бы- ной» компанией злую шутку. Согласно ках договора 1985 года. В подтверж-
ли использованы разработки в облас- договору Apple предоставляла Гейтсу дение своих слов компания предоста-
ти графических интерфейсов, произ- полную свободу независимого разви- вила общественности части этого до-
ведённые лабораторией Xerox PARC, тия графических интерфейсов, или, го- кумента.
но никак не Apple. воря проще – право копировать любой Тем временем, выпустив в 1990 го-
24 ок тября 1985 г. состоялась элемент внешнего вида MacOS. ду Windows 3.0, Microsoft смогла в те-
встреча представителей руководства В ноябре 1985 года Windows 1.0 уви- чение одного года продать три милли-
обеих компаний. Президент Microsoft дела свет. Спустя два года Microsoft она копий своей ОС, серьёзно подор-
Билл Гейтс заявил напрямую, что ес- представила миру новую версию сво- вав позиции MacOS.
ли Apple предпримет против его ком- ей разработки – 2.0. Её интерфейс, Разбирательство по факту неза-
пании какие-либо правовые нормы от- в особенности иконки на Рабочем сто- конного копирования графических эле-

86
ретроспектива
ментов интерфейса длилось вплоть узнала об этом судебном процессе ным образом компания нарушает ста-
до 1993 года, когда суд отклонил пре- лишь из официального письма юрис- рый договор. На этот раз иск был ула-
тензии Apple. Согласно постановлению, тов Apple. На встрече представителей жен намного быстрее – выплатой Apple
из 189 графических элементов, заяв- руководства обеих компаний сотруд- компенсации в 26 млн. долларов, а так-
ленных в иске Apple, 179 были лицен- ники Microsoft заявили, что спорный же судебных издержек на 8,5 млн. дол-
зированы Microsoft в соглашении отно- код составляет менее одного процента ларов. Кроме того, компании запре-
сительно Windows 1.0, а оставшиеся 10 от общего его количества и его можно щалось производить и продавать фи-
попросту не подлежали регистрации, без особых проблем заменить. Компа- зические носители музыки с нанесён-
поскольку они не были созданы самой ния согласилась самостоятельно изъять ным на них логотипом надкушенно-
компанией либо же были единственно из Video for Windows весь код Canyon, го яблока.
возможным графическим представле- дабы урегулировать иск мирным путём. Отныне между обеими компания-
нием конкретных данных. Впоследствии Несмотря на отказ Apple пойти навстре- ми длилось перемирие, в очередной
Apple апеллировала к Верховному суду чу, сразу по окончании собрания со- раз закончившееся в сентябре 2003 го-
США, однако в феврале 1995 года тот трудники Microsoft принялись за работу, да с запуском Apple музыкального он-
поставил на деле «жирный крест». и уже через несколько дней свет увиде- лайн-сервиса iTunes. Согласно новому
Проиграв столь важное дело, Apple ла новая версия программы, не содер- иску Apple Corp компания нарушала со-
решила отомстить Microsoft другим спо- жавшая спорного кода. глашение 1991 года и, как следствие,
собом. В 1992 году небольшая компа- Судебные распри по поводу гра- должна была отказаться от использо-
ния Canyon заключила с «яблочной» фического интерфейса операционных вания фирменного логотипа компании
компанией партнёрское соглашение, систем, а также QuickTime были урегу- для продаж музыки через Интернет.
согласно которому она будет разра- лированы 6 августа 1997 года, когда На сей раз удача улыбнулась Apple:
батывать программное обеспечение, между двумя компаниями было под- спустя три года в мае 2006 года суд
позволяющее при помощи технологии писано единое соглашение. Соглас- принял решение отклонить иск Apple
Apple под названием QuickTime про- но ему Apple обязалась сделать бра- Corp, поскольку «надкушенное яблоко»
игрывать аудио- и видеоинформацию узер Internet Explorer главным инстру- являлось логотипом магазина, но ни-
на компьютерах, работающих под уп- ментом веб-серфинга для платфор- как не продаваемой им музыки.
равлением Windows. Стремясь вызвать мы Macintosh, тогда как Microsoft обе- «Точка» в судебных тяжбах между
интерес к своей технологии со сторо- щала выпускать новые версии паке- обеими Apple была поставлена срав-
ны независимых разработчиков, Apple та Microsoft Office на протяжении сле- нительно недавно – 5 февраля 2007 го-
пошла на беспрецедентный шаг, поз- дующих пяти лет. Кроме того, компа- да. Согласно подписанному компания-
волив перенести её на «вражескую» ния инвестировала в Apple 150 милли- ми договору Apple Computer отныне бу-
платформу. онов долларов. дет владеть всеми правами на торго-
В результате стараний Canyon в но- вые марки, в которых фигурирует сло-
ябре 1992 года на свет появилось про- «Яблоко» раздора во Apple. Кроме того, Apple Corps лицен-
граммное обеспечение под названием В довершение всех судебных тяжб зировала Apple музыкальное достояние
QuickTime for Windows. по поводу аппаратно-программных Beatles для его продажи через iTunes.
Одновременно с ним был анонси- разработок в закромах у Apple до не- К сожалению, финансовые аспекты со-
рован конкурирующий продукт произ- давних пор находилось, пожалуй, на- глашения остались неизвестны.
водства Microsoft – Video for Windows. иболее длительное разбирательство
В июле 1993 года разработчик микро- за всю историю не только компании, Телефон без имени
процессоров компания Intel совмест- но и рынка IT. В завершение истории судебных тяжб
но с Canyon начали работать над еди- В 1978 году компания Apple Corps Apple нельзя не рассказать об иске, по-
ным интерфейсом управления дисп- (основанная известной музыкальной данном против Apple производителем
леем (DCI), который стал частью Video группой The Beatles) подала иск против телекоммуникационного оборудования
for Windows. Apple Computer (далее просто Apple), компанией Cisco Systems за право об-
«Час икс» наступил в конце 1994 го- обвинив её в нарушении прав на тор- ладания торговой маркой iPhone.
да, когда Microsoft опубликовала специ- говую марку. Судебное разбирательс- Права на эту марку iPone принадле-
фикации DCI для производителей гра- тво было улажено в 1981 году подписа- жат Cisco ещё с 2000 года, когда ком-
фических чипов. «Покопавшись» в про- нием соглашения, согласно которому пания приобрела их вместе с предыду-
граммном коде, сотрудники Apple обна- Apple выплачивала Apple Corps 80 ты- щим владельцем – Infogear Technology.
ружили полную идентичность некото- сяч долларов, а также впредь должна Стоит отметить, что одно из подразде-
рых частей кода, написанных Canyon, была держаться подальше от музы- лений Cisco, Lynksys, с 2006 года про-
таковым, написанным этой компанией кальной индустрии. изводит интернет-телефоны под на-
для QuickTime for Windows. Порядком подзабытый иск был пов- званием iPhone.
Буквально на следующий день, торно «поставлен на кон» в 1991 году. Со слов представителей Cisco, Apple
6 декабря 1994 года, Apple подала иск В модельном ряде компьютеров Apple вела переговоры с компанией на пред-
против Canyon, обвинив её в наруше- появились системы, способные хранить мет лицензирования торговой марки
нии авторских прав, а также распро- и воспроизводить музыку в формате на протяжении нескольких лет. К сожа-
странении коммерческих тайн. Microsoft MIDI, и Apple Corps решила, что подоб- лению, 9 января 2007 года, за несколько

№6, июнь 2007 87


ретроспектива
часов до объявления Стивом Джобсом версий Windows. Подобная тенденция своё монопольное положение на рын-
iPhone на выставке MacWorld 2007, сто- намечалась и в области офисных паке- ке операционных систем для обеспе-
роны так и не достигли согласия. Сразу тов, где у компании с её Microsoft Office чения Internet Explorer лучших условий,
после выступления юристы Cisco пот- позиции также были велики. ну а что касается пользователей – на-
ребовали от Apple завершить перего- В 1994 году на свет появился пер- вязывала собственный продукт поми-
воры до конца дня, иначе они будут вы- вый веб-браузер под названием Mosaic, мо их воли.
нуждены обратиться в суд. Компания разработанный в Национальном центре В последовавшем судебном разби-
не отреагировала на предупреждение, США по использованию суперкомпью- рательстве принимали участие прак-
в результате чего 11 января Cisco пода- теров (NCSA). Позже выходцы из это- тически все сотрудники Microsoft, за-
ла судебный иск, в котором говорилось го центра основали собственную ком- нимающие руководящие посты в ком-
о незаконном использовании Apple тор- панию Netscape Communications, в не- пании. Сам Билл Гейтс был допрошен
говой марки iPhone. драх которой они занялись разработ- на суде в общей сложности на протя-
В качестве защиты представи- кой браузера на основе Mosaic. В ре- жении 17 часов. Кстати, спустя неко-
тели обвиняемой стороны отмечают, зультате был создан новый «обозрева- торое время плёнки с видеозаписью
что Apple имеет полное право использо- тель Паутины» под названием Navigator, его допроса были с успехом проданы
вать данную торговую марку, посколь- быстро завоевавший большую попу- на интернет-аукционе eBay.
ку ее телефон по конструкции и при- лярность. Министерство юстиции США пот-
нципам работы отличается от продук- Microsoft запоздало начала осво- ребовало от Microsoft извлечь из опе-
ции Lynksys. Уверенная в своей пра- ение сети Интернет со своим Internet рационной системы браузер Internet
воте и силах, Apple 16 января попыта- Explorer, поэтому для его скорейшей Explorer и предлагать его отдельно,
лась зарегистрировать торговую марку популяризации предприняла соответ- тем самым давая пользователям воз-
iPhone в Канаде, однако неудачно. Пока ствующие меры. можность выбирать между ним и про-
же у обеих компаний есть время ула- Значительные средства, потрачен- дукцией конкурентов. Однако предста-
дить разногласия до июня – месяца вы- ные на развитие проекта (который, в от- вители компании заявили, что удалить
пуска телефона Apple на рынок. личие от конкурента, было решено сде- программу из ОС невозможно из-за её
лать бесплатным), а также большое ко- глубокой интеграции в систему.
Две стороны личество первоклассных программис- В 1999 году к антимонопольному
одной медали тов, работавших на компанию, сдела- процессу, инициированному правитель-
Я открыл сегодняшнюю статью расска- ли своё дело, и в 1997 году оба конку- ством США, присоединился ещё один
зом об Apple неспроста: судебные раз- рирующих браузера соревновались уже крупный коллективный судебный иск,
бирательства, в которые была вовле- на равных. Наибольшим недостатком поданный против Microsoft в штате Ка-
чена компания, можно назвать одними на тот момент были разные подходы лифорния. В нём компания обвинялась
из наиболее интересных. Однако если программ по обработке HTML-страниц, в завышении цен на свои операцион-
судить с позиции наиболее «жестоких», в результате чего сайт, заточенный раз- ные системы Windows 95 и Windows 98,
здесь вне конкуренции – Microsoft. работчиком под Netscape Navigator, мог запрашивая минимум на 40 долларов
Монополизм этого «гиганта из Рэд- некорректно отображаться в Internet больше их реальной цены.
монда» даёт о себе знать: каждый но- Explorer и наоборот. После длительного судебного раз-
вый шаг Microsoft на пути к абсолютно- Извечное стремление Microsoft бирательства 5 ноября 1999 года суд
му контролю на рынке сопровождает- к контролю всего рынка дало знать о се- вынес предварительное решение. Ок-
ся очередным громким судебным ис- бе и на этот раз. Дабы «малой кровью» ружной судья Томас Пенфилд Джек-
ком, выдвигаемым против неё. Среди сделать свой браузер доминирующим сон (Thomas Penfield Jackson) объявил,
производителей аппаратного обеспе- на рынке, компания пошла  на беспре- что Microsoft «признана монополис-
чения в аналогичной ситуации нахо- цедентный шаг. В новую версию опе- том, использующим свое доминирую-
дится Intel, о судебной «жизни» кото- рационной системы Windows 98 Internet щее положение на рынке для подав-
рой я рассказывал в прошлом номере Explorer был встроен изначально, при- ления конкурентов». В конце 2000 го-
журнала. Видимо, такова судьба всех чём его интеграция в систему была да по постановлению Джексона ком-
компаний, доминирующих в своём сег- столь плотной, что пользователю прихо- пании предстояло разделение на две
менте рынка. дилось работать с ним, даже несмотря отдельные фирмы: первая будет зани-
Описывать многочисленные су- на возможную личную неприязнь. маться исключительно операционны-
дебные разбирательства, выпавшие Антимонопольным организациям ми системами, тогда как вторая – ос-
на долю Microsoft, нет смысла, так что США, а также Netscape подобный ход тальным программным обеспечением,
я расскажу лишь о наиболее гром- пришёлся не по вкусу, в результате че- производимым Microsoft.
ком и скандальном – антимонополь- го в мае 1998 года Министерство юсти- К счастью для компании, в нача-
ном процессе. ции США, а также генеральные проку- ле 2001 года юристам удалось до-
В конце прошлого века Microsoft ста- роры 19 штатов страны подали против биться того, чтобы дело было пере-
ла негласным монополистом  на рынке Microsoft серию исков, в которых ком- дано в апелляционный суд. После вы-
операционных систем: более 80% ком- пания обвинялась в нечестном обраще- двинутых против Джексона обвине-
пьютеров по всему земному шару ра- нии с потребителями и конкурентами. ний в необъективности и личной не-
ботали под управлением различных В случае с Netscape она использовала приязни к Microsoft новый суд отме-

88
ретроспектива
нил его решение и отстранил от про- чески от любого производителя. Две по антимонопольному процессу. В слу-
цесса. Новый судья, Колин Коллар-Кот- трети от неиспользованных средств бу- чае игнорирования компанию ждал оче-
ли (Colleen Kollar-Kotelly), сразу же зая- дут перечислены в фонд калифорний- редной крупный штраф.
вила о желании пойти с компанией на ских государственных школ. Ещё 250 26 февраля 2006 года к так и не ула-
переговоры и урегулировать дело мир- млн. долларов были потрачены компа- женному разбирательству Европейс-
ным путём вне зала суда. нией на оплату труда множества юрис- кой комиссии присоединился коллек-
В 2001 году судебные разбира- тов, работавших над делом. тивный иск, поданный против Microsoft
тельства по поводу монопольного по- После окончания антимонопольно- рядом крупных компаний, среди ко-
ложения Microsoft на рынке перенес- го процесса в США настал черёд Ев- торых оказались Oracle, IBM, Sun
лись на другую сторону земного ша- ропы. В начале 2004 года Европейс- Microsystems, Nokia, RealNetworks
ра – в Южную Корею. Тогда крупней- кая комиссия обвинила Microsoft в зло- и другие. В тексте документа истцы
ший южнокорейский оператор Daum употреблении своим доминирующим опять-таки сетовали на злоупотреб-
Communications подал иск против положением на рынке операционных ление Microsoft своим монопольным
Microsoft, обвинив её в нанесении ущер- систем. Свой первый иск против ком- положением на рынке, недобросовес-
ба бизнесу малых компаний путём ин- пании Еврокомиссия подготовила ещё тную конкуренцию, а также невыпол-
теграции в Windows XP программ Instant в 2002 году, тогда он затрагивал жела- нение решения суда, вынесенного Ев-
Messenger и Media Player. ние Microsoft монополизировать ры- рокомиссией в 2004 году.
Окончательный вердикт по поводу нок мобильных устройств. Те-
антимонопольного процесса в США был перь же основой для судеб-
оглашён 6 ноября 2001 года. Согласно ного иска стала интеграция Монополизм «гиганта из Рэдмонда» даёт
подписанному «внесудебному соглаше- в Windows XP медиаплеера о себе знать: каждый новый шаг Microsoft
нию» между Министерством юстиции и Media Player, препятствующе- на пути к абсолютному контролю на рынке
Microsoft, компания обязалась предо- го нормальной работе анало- сопровождается очередным громким судеб-
ставить производителям персональных гичных программ сторонних
компьютеров большую свободу в выбо- разработчиков.
ным иском, выдвигаемым против неё.
ре предустановленного программного 24 марта 2004 года Евро-
обеспечения. Также она должна была комиссия вынесла своё решение, со- Представители компании потребо-
выпустить обновления к своим опера- гласно которому Microsoft была обя- вали от членов комиссии проведения
ционным системам с целью возможнос- зана выплатить штраф в размере 497 открытого судебного слушания. Таким
ти скрытия пользователем на Рабочем млн. евро. Кроме того, её обязали в те- образом, Microsoft хотела убедить об-
столе ярлыков программ Internet Explorer чение трёх месяцев предоставить ев- щественность в неоправданности вы-
и Media Player и установки альтернатив- ропейскому рынку специальную вер- двинутых против неё обвинений. Ко-
ных продуктов других производителей. сию Windows XP с изъятым проигры- миссия просьбу компании отклонила.
Наконец, компании возбранялось тре- вателем Media Player. Наконец, компа- 16 марта Еврокомиссия, рассмотрев
бовать от производителей ПК обяза- ния должна была предоставить постав- поданные Microsoft документы, вновь
тельной установки Windows на все вы- щикам серверного программного обес- подтвердила вину компании, соглас-
пускаемые компьютеры. печения исходные коды части сетевых но которой она не выполняет решение
Прокуроры девяти штатов отказа- протоколов своей операционной систе- суда по антимонопольному процессу
лись подписывать соглашение и потре- мы Windows Server. 2004 года. В результате на неё был на-
бовали от суда введения более жестких Не согласная с решением комиссии ложен штраф в размере 2,36 млн. дол-
санкций по отношению к Microsoft. Сре- по третьему пункту, компания подала ларов в день за период начиная с 15 де-
ди их требований был выпуск операци- апелляцию, выплатив, тем не менее, кабря 2005 года.
онных систем без встроенных Internet предписанный ей штраф. Также через 9 декабря 2006 года подошло к свое-
Explorer и Media Player, а также откры- некоторое время в продажу поступила му завершению дело по аналогичному
тие исходного кода Windows, либо от- версия Windows XP с индексом N, в ко- процессу в Южной Кореи. Антимоно-
дельных его элементов. Однако 1 но- торой отсутствовал Media Player. польное ведомство страны признало
ября 2002 года суд отклонил их пред- 16 ноября 2005 года Microsoft об- Microsoft виновной и обязало компа-
ложение. ратилась за помощью в Министерс- нию выплатить Daum Communications
В июле 2003 года закончилось тво юстиции США, дабы та вмешалась 32 млн. долларов за ведение нечест-
следствие по коллективному иску шта- в европейский антимонопольный про- ной конкурентной борьбы и наруше-
та Калифорния. Microsoft приняла реше- цесс. Однако чиновники Минюста про- ние антимонопольного законодатель-
ние выплатить 1,1 миллиарда долларов игнорировали просьбу. Тогда компания ства. Кроме того, судебное постанов-
на его урегулирование. Отныне любой призвала другие американские компа- ление предписало компании выпуск
пользователь или организация, купив- нии осудить действия Еврокомиссии, на территории Южной Кореи специаль-
шие продукты компании за шесть лет, тем самым поддержав её в антимоно- ной версии Windows XP, из которой бу-
начиная с февраля 1995 года, могут по- польных процессах. Спустя месяц Ев- дут исключены программы Messenger
лучить ваучеры стоимостью от 5 до 29 ропейская комиссия посредством пре- и Media Player.
долларов для оплаты покупки програм- дупреждения напомнила Microsoft, что Наконец, последним «очередным»
мных и аппаратных продуктов практи- та не выполнила до конца решение суда заявлением стало решение Еврокомис-

№6, июнь 2007 89


ретроспектива
сии 27 марта 2007 года увеличить сум- за основу которого была взята концеп- надлежавших им акций. В результате
му ежедневного штрафа Microsoft с 2 ция UNIX. Благодаря открытости исход- возникло предположение, что целью
до 5 млн. долларов. Компания до сих ного кода ядра, полученного в резуль- всей затеи было мгновенное повыше-
пор никак не отреагировала на этот тате использования лицензии GPL, сто- ние котировок акций компании и быс-
шаг, впрочем, как и предыдущий. Ду- ронние разработчики быстро написа- трая их продажа с целью наживы. Ещё
мается, об антимонопольных процессах ли необходимое программное обеспе- одна версия, циркулировавшая в то
Microsoft мы ещё услышим, и не раз. чение для превращения Linux в полно- время, – желание руководства SCO
ценную операционную систему (GNU/ продать свою компанию IBM.
Open Source под прицелом Linux). Первые несколько лет своей На протяжении марта SCO вела
В мире бытует мнение, что наиболее жизни эта ОС, развиваемая независи- переговоры с несколькими компани-
уязвимыми для судебных разбира- мыми программистами, практически ями на предмет лицензирования ис-
тельств являются компании, связав- не выходила за университетские сте- ходного кода UNIX System V. Её ста-
шие свою деятельность с програм- ны. Однако на рубеже столетий она на- рания увенчались определённым ус-
мным обеспечением с открытым ис- чала стремительно завоёвывать попу- пехом: в мае 2003 года двое из списка
ходным кодом, например, той же Linux. лярность, «наступая на пятки» различ- потенциальных лицензиатов, Microsoft
Сильная сторона Open Source одновре- ным версиям UNIX. Многие компании и Sun Microsystems, объявили о подпи-
менно является и её слабиной: откры- по достоинству оценили преимущест- сании с SCO соглашения и выплате ей
тый исходный код большинства про- ва операционной системы с открытым 15,5 млн. долларов. Поскольку опера-
грамм значительно облегчает компа- исходным кодом и решили помогать ционные системы Windows NT и Solaris
ниям поиск «зацепок», которые затем Linux в её дальнейшем развитии. Сре- содержали в себе часть кода System V,
можно поставить «на кону» очередно- ди них оказалась и IBM, решившая вло- обе компании подобным образом пы-
го судебного иска. жить в систему один миллиард долла- тались обезопасить себя от возможно-
Наиболее яркий пример – ряд скан- ров, а также интегрировать некоторые го возникновения в будущем правовых
дально известных судебных исков, на- из технологий, заложенных в AIX. Дан- проблем, подобных ситуации с IBM.
правленных компанией SCO Group про- ный шаг и стал той «искрой», вызвав- В это же время SCO разослала пись-
тив всего Linux-сообщества. шей «пожар» между SCO и Linux. ма в 1500 ведущих компаний мира, в ко-
Для начала немного истории. Опе- 6 марта 2003 года IBM была извеще- торых она предупредила об иске про-
рационная система UNIX была разра- на о том, что против неё выдвинут су- тив IBM и необходимости приобретения
ботана в лабораториях Bell Laboratories дебный иск. SCO среди прочего обвиня- лицензии на System V при использова-
компании AT&T ещё в конце 60-х годов ла корпорацию в «незаконном распро- нии Linux. В данную категорию попали
прошлого века. Коммерческой выго- странении коммерческих тайн, нечес- и компании, занимающиеся разработ-
ды в этой операционной системе AT&T тной конкуренции, невыполнении ус- кой дистрибутивов на основе этой ОС.
не искала, скорее наоборот: она лицен- ловий контракта, а также посягатель- Однако наибольший шок у обществен-
зировала исходный код UNIX System V стве на своё имущество». Согласно её ности вызвал тот факт, что, по словам
ряду других компаний, а также предо- данным, IBM незаконно использовала представителей SCO, любой независи-
ставила его университетам для иссле- части исходного кода UNIX, интегриро- мый пользователь Linux потенциально
довательских целей. Одним из лицен- вав его в Linux. Спорными, по мнению мог стать жертвой разбирательства.
зиатов UNIX в 1985 году стала корпо- SCO, оказались следующие компонен- Сообщество OpenSource негодова-
рация IBM, разработавшая свою вер- ты ядра: симметричная мультипроцес- ло: как может компания, не предоста-
сию системы под названием AIX. Спус- сорная обработка (SMP), механизм не- вившая собственные официальные пра-
тя восемь лет AT&T продала все права однородного доступа к памяти (NUMA), ва на исходные коды System V, обвинять
на System V компании Novell, которая, техника блокировки «чтения-копирова- мир в совершении подобного «греха»?
в свою очередь, в 1995 году перепро- ния-обновления» (RCU), а также журна- По словам представителей SCO, коли-
дала их Santa Cruz Operation. лируемая файловая система IBM – JFS. чество «позаимствованных» из SCO
Компания Caldera, неудачно начав- Компания требовала от «Голубого гига- строк равнялось всего нескольким со-
шая свой бизнес в качестве разработ- нта» возмещения ущерба в один мил- тням, однако при 2,44 миллионах строк
чика и дистрибьютора одного из дис- лиард долларов (позже эта сумма бы- кода в ядре Linux v.2.4.2, а также 30
трибутивов на базе Linux, в 2001 го- ла увеличена до трёх, а затем и до пяти миллионах в типичном дистрибутиве на
ду выкупила у Santa Cruz Operation млрд. долларов), изъятия из Linux всего его основе данная цифра была просто
её подразделение, занимавшееся UNIX. «проблемного» кода, а также прекраще- смешной. К тому же вся операционная
На следующий год она изменила своё ния любой поддержки данной ОС. система была написана сотнями и тыся-
название на SCO Group и вместо даль- Сразу после того, как новость об- чами программистов «с чистого листа»,
нейшего продвижения операционной летела земной шар, стоимость акций имеет хорошо задокументированное
системы, приступила к «защите» при- SCO поднялась до 20 долларов за шту- происхождение, а также всю публично
обретённой интеллектуальной собс- ку. Правда, спустя короткий промежу- доступную историю изменений.
твенности. ток времени она быстро опустилась 28 мая 2003 года свою лепту внесла
В 1991 году финский студент Ли- до своего прежнего уровня. Любопыт- Novell, опубликовав пресс-релиз, в ко-
нус Торвальдс (Linus Torvalds) разрабо- ный факт: сразу после повышения цены тором говорилось о ситуации с права-
тал ядро, получившее название Linux, руководители SCO избавились от при- ми SCO на UNIX: «Насколько нам из-

90
ретроспектива
вестно, в соглашении 1995 года не бы- Так что ещё до начала судебно- Что же касается Novell, ещё 29 ию-
ло ни слова о передаче SCO всех ав- го разбирательства с IBM SCO само- ля 2005 года она подала ответный иск
торских прав на эту интеллектуальную стоятельно «вырыла себе глубокую против SCO, обвинив её в клевете, на-
собственность». яму». Впоследствии компания объяви- рушении условий контракта, а также от-
Позднее SCO заявила, что ею бы- ла о прекращении распространения казе от проведения тщательного изуче-
ла обнаружена некая поправка к конт- OpenLinux, а также выступила с заяв- ния документов. Сумма затребованной
ракту, в которой говорилось о переда- лением, гласившим: «За любой исход- компанией компенсации была больше
че части прав на UNIX. Что самое ин- ный код, который, возможно, был выпу- стоимости самой SCO, поэтому в слу-
тересное, Novell копии этого докумен- щен SCO под лицензией GPL, отвечают чае проигрыша она должна была обан-
та у себя не обнаружила. сотрудники компании, сделавшие это кротиться.
22 декабря очередное заявление без необходимой юридичес-
Novell прояснило ситуацию: согласно кой авторизации. В результа-
новому пресс-релизу, к SCO действи- те данный код не может счи-
Сильная сторона Open Source одновременно
тельно могла перейти часть прав, одна- таться легитимным с позиции является и её слабиной: открытый исходный
ко лишь после выполнения компанией GPL-лицензирования». код большинства программ значительно об-
определённых обязательств. К моменту Ещё одной компанией, легчает компаниям поиск «зацепок», кото-
публикации документа время на их осу- ставшей на защиту Linux, рые затем можно поставить «на кону» оче-
ществление уже закончилось. Между стала компания Red Hat. 4 ав- редного судебного иска.
тем, 14 октября Novell не афишируя за- густа она подала иск против
регистрировала часть авторских прав SCO, обвинив её в ущемле-
на UNIX, о чём стало известно лишь нии прав пользователей программно- К декабрю 2006 года стало ясно,
спустя два месяца. В довершение все- го обеспечения с открытым исходным что основные «боевые действия» раз-
го 22 декабря компания опубликовала кодом и Linux в частности. вернутся как раз на поле битвы между
пресс-релиз, в котором признала себя Дальнейшее развитие столь на- SCO и Novell. Исход этого разбиратель-
единственным держателем авторских шумевшего судебного процесса бы- ства и предопределит дальнейшее раз-
прав на System V. Обиженная, SCO 20 ло продолжено 30 сентября 2003 го- витие событий в отношении иска SCO
января 2004 года обратилась в суд, пот- да, когда, согласно решению феде- против IBM. Однако по состоянию на
ребовав от Novell передачи всех заре- рального судьи Дейла Кимболла (Dale начало 2007 года судебные слушания
гистрированных накануне прав. Kimball), SCO был дан месячный срок по этому поводу были всё ещё не пре-
Вернёмся на несколько месяцев на предоставление примеров исход- кращены. Сегодня SCO – фактически
назад, в день 6 августа 2003 года, ког- ного кода из System V, которые, по её банкрот. Согласно отчёту за последний
да IBM подала встречный иск против мнению, были нелегально скопирова- финансовый квартал, опубликованному
SCO. В нём она обвинила компанию ны в Linux и являются предметом су- 17 января 2007 года, в активе у компа-
по нескольким пунктам, большая часть дебного иска. нии осталось менее 13 млн. долларов.
из которых в той или иной форме копи- Срок действия решения Кимбол- С такими показателями SCO уже в се-
ровали таковые в аналогичном доку- ла закончился 1 июля 2005 года, од- редине этого года попросту не сможет
менте, поданном против «Голубого ги- нако даже спустя полтора года SCO продолжать финансировать свои су-
ганта» несколько месяцев назад. Од- так и не предоставила необходимых дебные разбирательства. Как говори-
нако среди них нашлись и два новых данных. Нет, фрагменты кода компа- лось в сказке: «И осталась она у раз-
подраздела, касавшиеся нарушения ния представила ещё осенью 2003 го- битого корыта…»
SCO четырёх патентов IBM, а также да, однако полный список так и не был Борьба за выживание – извечная
лицензии GPL. Небольшого пояснения предъявлен. проблема. Присуща она и современ-
требует как раз второй пункт. В результате в «Постановлении об ным компаниям, работающим в сфе-
До покупки прав на System V глав- уменьшении количества претензий, ре IT. Дабы узаконить свою продук-
ной деятельностью SCO была разра- предъявленных SCO к IBM», которое цию на рынке, уберечь её от посяга-
ботка и продажа собственного дистри- было опубликовано 28 июня 2006 года, тельств конкурентов, а также отсто-
бутива Linux под названием OpenLinux. федеральный судья Брук Велс (Brooke ять своё имя и престиж, фирмам при-
По словам одного из юристов организа- Wells), представляющая новые факты ходится вступать в не менее свирепые
ции Free Software Foundation Эбена Мог- по данному судебному процессу, лиши- и беспощадные войны. Остается лишь
лена (Eben Moglen): «С момента, когда ла SCO прав на предъявление претен- надеяться, что их «поле битвы» никог-
SCO начала, посредством своего дис- зий по 187 из 298 пунктов судебного ис- да не выйдет за стены зала суда.
трибутива, распространять код под ли- ка, мотивируя своё решение их недо-
цензией GPL, она тем самым дала каж- статочной обоснованностью. Оставши- 1. http://www.appleinsider.com.
дому пользователю в мире право на еся 111 пунктов ещё не были рассмот- 2. http://www.theregister.co.uk.
его бесплатное копирование, модифи- рены в суде из-за отсутствия необхо- 3. http://www.zdnet.com.
кацию и распространение. Это непос- димых данных. 4. http://www.cnet.com.
редственным образом касается и ядра После вынесения судьёй Велс про- 5. http://blog.wired.com.
Linux. Компания самостоятельно лицен- межуточного решения акции SCO упа- 6. http://www.usatoday.com.
зировала его всему миру». ли до отметки один доллар за штуку. 7. http://www.wikipedia.org.

№6, июнь 2007 91


книжная полка

HTML и CSS в примерах,


типовых решениях и задачах.
Профессиональная работа
Сергей Соколов
после того как они прочитают основы та, списков, блоков, таблиц, а также
HTML и CSS. фильтры и трансформации для брау-
В «курсе молодого бойца» первым зера Internet Explorer.
делом рассматривается создание эле- В типовых решениях можно найти
ментарной «визитки» с простым фор- рецепты по реализации более слож-
матированием текста, а затем пос- ных вещей. Здесь уже автор, активно
тепенно рассказывается о примене- оперируя знаниями, которые читатель
нии привычных возможностей офор- получил в начале книги, обучает акту-
мления Web-страниц: взаимодействие альным приемам – например, верстке
HTML с каскадными таблицами стилей, на div'ах. Все приводимые листинги
ссылки и изображения, списки, таб- сопровождаются комментарием с име-
лицы, блоки и слои, формы, фреймы, нем файла, который вы найдете на
Книга разделена на 4 части: введе- внедрение скриптов на JavaScript (есть прилагаемом к книге компакт-диске.
ние и «курс молодого бойца», осно- пример парсинга данных из XML).
вы HTML, основы CSS, типовые ре- В части, посвященной основам n
Издательство: «Вильямс»
шения. HTML (версии 4.01), перечислены на- n
Год издания: 2007
При этом знакомиться с предла- иболее популярные теги с многочис- n
Количество страниц: 416
гаемым базовым «курсом», начина- ленными примерами их использова- n
ISBN: 978-5-8459-1192-6
ющимся сразу после краткого пред- ния на практике. Аналогично и для ос- n
Цена: ≈ 232 руб.
ставления общих понятий, неопытным нов CSS – только теперь обзору под- К н и г а п р е д о с т а в л е н а и з д ат е л ь с т в о м
HTML-кодерам рекомендуется только лежат различные свойства текста, цве- «Вильямс».

Фабрики разработки программ:


потоковая сборка типовых приложений,
моделирование структуры и инструменты
Джек Гринфилд, Кит Шорт, Стив Кук, Стюарт Кент,
Джон Крупи
Но примечательно, что оно родилось ходы к моделям и программирование
как попытка добиться всеми желаемых с их использованием, а затем – отдель-
эффектов при разработке ПО – высо- ные программы и линейки продуктов,
ких показателей таких параметров, как компонентые архитектуры, трансфор-
скорость, автоматизация, оптимизиро- мации и их применение.
ванность и качество. В последних же главах подробно
При этом немаловажно, что над описан пример «фабрики ПО» и при-
книгой работали специалисты Microsoft, ведены ответы на часто задаваемые
а уж насколько доверять им в подоб- вопросы (например, проведено срав-
ных вопросах – дело каждого. нение «фабрик» с RAD, MDA), а в при-
По понятным причинам сущест- ложениях – информация по абстрак-
Емкое определение содержимому да- венную часть издания составляет вве- циям и UML.
ется уже в предисловии: «В этой книге дение. И даже в нем само представ-
мы представим путеводитель для пе- ление «фабрик» выдвигается лишь n
Издательство: «Вильямс»
рехода программной индустрии от кус- вслед за продолжительным анали- n
Год издания: 2007
тарного производства к промышлен- зом причин их возникновения и проб- n
Количество страниц: 512
ному...». лем у других существующих техноло- n
ISBN: 978-5-8459-1181-0
Само явление, «фабрики програм- гий и методик. n
Цена: ≈ 396 руб.
много обеспечения» достаточно ново В разделе «Критические иннова- К н и г а п р е д о с т а в л е н а и з д ат е л ь с т в о м
и, возможно, знакомо еще немногим. ции» рассматриваются различные под- «Вильямс».

92
книжная полка

Linux для «чайников», 6-е издание


Ди-Анн Лебланк
Читателя знакомят с основными дистрибутивов, кроме Knoppix), базо-
понятиями из области Linux и Free вая безопасность (здесь же – SSH), ра-
Software и тем, откуда все это бе- бота в bash, некоторые настройки ра-
рет начало. Далее рассматривается бочего стола.
6 дистрибутивов: Fedora Core, Linspire, В четвертой части рассмотрены по-
Mandriva, SUSE, Xandros, Knoppix. пулярные пакеты ПО: текстовые ре-
Для всех, кроме последнего, описан дакторы, OpenOffice.org, мультимедий-
процесс установки (особенно подроб- ные приложения, эмуляторы. В конце
но – для Fedora Core). После этого рас- книги – решение популярных проблем
сказывается о процессе загрузки ус- и способы применения Knoppix.
тановленной операционной системы, Основной минус книги – она не-
представляются основы работы в гра- сколько устарела. Так, например, в ней
фическом интерфейсе (GNOME и KDE) рассматривается установка Fedora
и приводится краткий обзор средств Core 3, а энтузиасты уже активно зна-
настройки рассматриваемых дистри- комятся с Fedora 7. Оригинал был на-
бутивов. писан в 2005 году – за это время мир
Главная отличительная черта издания Вторая часть книги посвящена пок- Linux успел сильно измениться...
соответствует его названию – легкий лючению к Интернету и работе в нем
стиль изложения материала и утом- (Mozilla, Evolution, Gaim). n
Издательство: «Вильямс»
ляющая профессионалов дотошность В третьей части – основы работы n
Год издания: 2007
в описании простейших вещей. в системе: устройство файловой сис- n
Количество страниц: 464
Однако во время чтения подробных темы и управление файлами (Nautilus, n
ISBN: 978-5-8459-1032-5
инструкций невольно вспоминается, Konqueror), установка и обновление n
Цена: ≈ 157 руб.
что так или иначе общение с новичками пакетов программного обеспечения К н и г а п р е д о с т а в л е н а и з д ат е л ь с т в о м
сводится именно к такому уровню. (опять же для всех рассматриваемых «Вильямс».

Linux. Карманный справочник


Скотт Граннеман
цы мануала в сжатом виде. Она пред- мому – grep, так и по именам файлов/
стает в виде добротного и компактно- каталогов – locate и отдельно утилита
го источника информации для тех, кто find), системный мониторинг (ps, top,
начинает или продолжает знакомиться df...), сеть (ifconfig, ping, route...) и попу-
с Linux и кому при этом интересна ко- лярные сетевые клиенты/приложения
мандная строка. (ssh, sftp, rsync, wget...).
Автор, осветив общие моменты В самостоятельные главы вынесе-
работы в консоли и объяснив, как по- ны управление пакетами программного
лучить справку по тем или иным ко- обеспечения (RPM и yum, dpkg и APT) и
мандам, переходит к описанию более Samba для взаимодействия с Windows
сложных приемов: объединение ко- (nmblookup, smbclient, smbmnt). Спра-
манд, перенаправления, межпроцес- вочник содержит подробные (иногда
сный канал, а затем – некоторым воз- даже кажется, что излишне подробные)
можностям bash, упрощающим жизнь примеры, иллюстрирующие действия
(история, алиасы...). Вдобавок к это- тех или иных команд.
му описываются решения различ-
ных задач, сгруппированных по клас- n
Издательство: «Вильямс»
Несмотря на предположение автора, су. Среди них, например, можно выде- n
Год издания: 2007
что этот карманный справочник ока- лить просмотр файлов (cat, less, head, n
Количество страниц: 416
жется полезным и для начинающих, tail) и печать (lpstat, lpr, lpq...), права до- n
ISBN: 978-5-8459-1118-6
и для опытных пользователей, акту- ступа к файлам/каталогам (не забы- n
Цена: ≈ 110 руб.
альность для последних несколько пре- ты suid/sgid, sticky bit), архивация (zip, К н и г а п р е д о с т а в л е н а и з д ат е л ь с т в о м
увеличена. Тем не менее книге уда- tar, gzip, bzip2), поиск (как по содержи- «Вильямс».
лось избежать участи стать очеред-
ной попыткой перепечатать страни- Обзор книжных новинок подготовил Дмитрий Шурупов

№6, июнь 2007 93


подписка на 2007 год

Редакционная подписка
для физических лиц
n Вы можете оформить подписку n Вы можете оформить подписку n Журнал высылается почтой прос-
на любой российский адрес. с любого месяца на любой срок. той бандеролью только после пос-
n При заполнении квитанции обя‑ n В графе «Сумма» проставьте сумму тупления денег на расчетный счет
зательно РАЗБОРЧИВО укажи‑ за выбранное количество номеров. и копии заполненного и оплачен‑
те фамилию, имя, отчество пол‑ Стоимость одного номера журна- ного бланка, отправленной в ре‑
ностью, почтовый индекс и ад‑ ла 150 руб. За 10 месяцев (с марта дакцию по факсу: (495) 628‑82‑53
рес получателя (область, город, по декабрь) – 1500 руб. НДС и поч- или на элек тронный а д рес:
улица, номер дома, номер квар‑ товые расходы включены в стои- info@samag.ru.
тиры), контактный телефон. мость.

94
подписка на 2007 год
Российская Федерация печати «Гасид» (370102, г. Баку, ул. Джавадхана, 21)
n
Подписной индекс: годовой – 20780, полугодовой – 81655 n
Казахстан – по каталогу «Российская Пресса» через
Каталог агентства «Роспечать» ОАО «Казпочта» и ЗАО «Евразия пресс»
n Подписной индекс: 87836 n
Беларусь – по каталогу изданий стран СНГ через РГО
Объединенный каталог «Пресса России» «Белпочта» (220050, г. Минск, пр-т Ф. Скорины, 10)
Адресный каталог «Подписка за рабочим столом» n
Узбекистан – по каталогу «Davriy nashrlar» российс-
Адресный каталог «Библиотечный каталог» кие издания через агентство по распространению пе-
n Альтернативные подписные агентства: чати «Davriy nashrlar» (7000029, г. Ташкент, пл. Муста-
Агентство «Интер-Почта» (495) 500-00-60, курьерская киллик, 5/3, офис 33)
доставка по Москве n Армения – по списку номенклатуры «АРЗИ» через
Агентство «Вся Пресса» (495) 787-34-47 ГЗАО «Армпечать» (375005, г. Ереван, пл. Сасунци Да-
Агентство «Курьер-Прессервис» вида, д. 2) и ЗАО «Контакт-Мамул» (375002, г. Ереван,
Агентство «ООО Урал-Пресс» (343) 375-62-74 ул. Сарьяна, 22)
ЛинуксЦентр www.linuxcenter.ru n Грузия – по списку номенклатуры «АРЗИ» через АО
n Подписка On-line «Сакпресса» ( 380019, г. Тбилиси, ул. Хошараульская, 29)
http://www.arzi.ru и АО «Мацне» (380060, г. Тбилиси, пр-т Гамсахурдия, 42)
http://www.gazety.ru n Молдавия – по каталогу через ГП «Пошта Молдовей»
http://www.presscafe.ru (МД-2012, г. Кишинев, бул. Штефан чел Маре, 134)
по списку через ГУП «Почта Приднестровья» (МD-3300,
СНГ г. Тирасполь, ул. Ленина, 17)
В странах СНГ подписка принимается в почтовых отделе- по прайс-листу через ООО Агентство «Editil Periodice»
ниях по национальным каталогам или по списку номенк- (МД-2012, г. Кишинев, бул. Штефан чел Маре, 134)
латуры «АРЗИ»: n Подписка для Украины:
n Азербайджан – по объединенному каталогу россий- Киевский главпочтамт
ских изданий через предприятие по распространению Подписное агентство «KSS», тел./факс (044)464-0220

Подписные
индексы:

20780*
81655**
по каталогу
агентства
«Роспечать»

87836
по каталогу
агентства
«Пресса
России»
*
годовой
**
полугодовой

№6, июнь 2007 95


СИСТЕМНЫЙ АДМИНИСТРАТОР
№6(55), Июнь, 2007 год
Читайте
в следующем
УЧРЕДИТЕЛИ
Владимир Положевец
Александр Михалев

номере:
РУКОВОДИТЕЛЬ ПРОЕКТА
Петр Положевец

РЕДАКЦИЯ
Исполнительный директор
Владимир Положевец
Ответственный секретарь Групповые политики Разработчики настольных систем
Наталья Хвостова в доменах AD имеют в своём арсенале такие средс-
sekretar@samag.ru Администратору локальной сети по тва как MFC, Gtk, Qt и другие библио-
Технический редактор роду своей деятельности на созна- теки. Обеспечить комфортную жизнь
Владимир Лукин тельность пользователей надеять- веб-разработчику поможет библиоте-
Главный редактор ся не приходится. В связи с этим по- ка Prototype, о ней пойдет речь в июль-
электронного приложения является необходимость обезопа- ском номере журнала.
«Open Source»
сить рабочую среду всего предпри-
Дмитрий Шурупов
Внештатные редакторы
ятия и уберечь пользователей от их Технология NLB:
Алексей Барабанов же бездумных действий. Назидания отказоустойчивость
Андрей Бирюков отдела IT для них, как правило, пус- без лишних затрат
Андрей Шетухин тое сотрясение воздуха, а установ- Решения по обеспечению отказоус-
Рашид Ачилов ка запретов на основе разрешений тойчивости на сегодняшний день ши-
NTFS в средних и крупных предпри- роко распространены и разнообраз-
РЕКЛАМНАЯ СЛУЖБА ятиях – задача слишком объемная. ны: от дорогостоящих аппаратных
тел./факс: (495) 628-8253 В этом случае для выполнения адми- комплексов до недорогих програм-
Евгения Тарабрина нистративных задач в доменах Active мных кластеров. Одним из недоро-
reсlama@samag.ru Directory компания Microsoft предла- гих средств является Network Load
гает использование групповых поли- Balancing, служба, входящая в состав
Верстка и оформление
тик. Подробности – в следующем вы- Windows Server 2003. Об особеннос-
maker_up@samag.ru
Дизайн обложки пуске журнала. тях ее настройки читайте в следую-
Дмитрий Репин щем номере.
Николай Петрочук Библиотека Prototype –
ваш путь в Web-2 BusyBox: швейцарский
По вопросам распространения Требования к веб-разработке посто- нож для встраиваемых
обращайтесь по телефону: янно растут. Если для какого-нибудь Linux-систем
(495) 628-8253 (доб. 120) программиста примером идеального Системные администраторы и пользо-
пользовательского интерфейса явля- ватели UNIX/Linux-систем, несомнен-
107045, г. Москва, ется сайт lib.ru, то обычный пользо- но, привыкли к работе со своей лю-
Ананьевский переулок, дом 4/2, стр. 1
ватель такой аскетизм, скорее всего, бимой командной оболочкой и к стан-
тел./факс: (495) 628-8253
не оценит, и самое страшное – не оп- дартным программным средствам.
Сайт журнала: www.samag.ru
латит. Однако работа, направленная Но их повсеместное использование
ИЗДАТЕЛЬ на повышение удобства и практичнос- не всегда возможно. И тогда на по-
ЗАО «Издательский дом ти пользовательского интерфейса за- мощь приходит BusyBox – упрощен-
«Учительская газета» частую отнимает много времени, ко- ный shell с набором компактных сис-
торое хотелось бы потратить на раз- темных средств. Обзор BusyBox чи-
Отпечатано типографией работку бизнес-логики приложения. тайте в июльском выпуске.
ГП «Московская Типография №13»
Тираж 15000 экз.
Уважаемые читатели!
Журнал зарегистрирован
в Министерстве РФ по делам печати,
Продолжается подписка на 2-ое полугодие 2007 года.
телерадиовещания и средств массо-
вых коммуникаций (свидетельство
ПИ № 77-12542 от 24 апреля 2002 г.). Приобрести новые и старые номера журнала
вы можете через интернет-магазин LinuxCenter.ru.
За содержание статьи ответственность
несет автор. За содержание реклам-
ных материалов ответственность не-
сет рекламодатель. Все права на опуб- Доставка почтой в любую точку России.
ликованные материалы защищены.

96