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

РЕПОРТАЖ 40 Оборудование Cisco

для «самых маленьких»


2 Виртуализация от Citrix – Как подключиться? Как настраивать? Что означают те
новый взгляд на привычные вещи или иные команды?
Итоги Citrix Virtualization Conference 09. Сергей Крутилин
Алексей Бережной
46 Почтовый клиент Alpine
8 В Москве прошла конференция Краткий обзор.
системных администраторов RootConf 2009 Игорь Штомпель
Интересные подробности для тех, кто пропустил ме-
роприятие. БЕЗОПАСНОСТЬ
Дмитрий Шурупов
48 Выбираем антивирус для небольшой сети
 ТЕНДЕНЦИИ На чем остановить свой выбор?
Сергей Яремчук
АДМИНИСТРИРОВАНИЕ
59 Тотальная защита локальных сетей
2 Windows 7: что новенького? Тестируем устройство Dr.Web Office Shield.
Еще не отшумели страсти по Windows Vista, а Microsoft Вячеслав Медведев
уже выпустила бета-версию новой ОС Windows 7.
Андрей Бирюков АДМИНИСТРИРОВАНИЕ «С»
6 Основные изменения в WAIK 60 Обновление конфигурации
для Windows Server 2008 R2/7 Как избавить себя от лишних проблем.
Одновременно с выходом бета-версий Windows 7 Андрей Луконькин
и Windows Server 2008 R2 были представлены и обнов-
ленные инструменты, среди которых – Windows AIK. ЧЕЛОВЕК НОМЕРА
Сергей Яремчук
62 Жизнь в стиле хокку
20 Автоматическая установка Интервью с Максимом Акимовым, главой представи-
Adobe Creative Suite 3 тельства Kerio Technologies в России и странах СНГ.
Уделяем основное внимание выборочной установке Оксана Родионова
пакета.
Иван Коробко ВЕБ-ПРОГРАММИРОВАНИЕ
23 «0-Страйк» 67 JavaFX – Reach Internet Application от Sun
Незаменимые программы для системных админист- Прощай, унылый Swing?
раторов. В декабре 2008 года компания Sun Microsystems пред-
Дмитрий Степанов ставила финальную версию JavaFX – свою платформу
для создания Rich Internet Application, ставшую достой-
24 Делегируем права на перемещение ным ответом конкурентам.
учетных записей пользователей Кирилл Сухов
в Active Directory. Часть 2
На примере создания надстройки нестандартного деле- 74 Приёмы минификации в веб-приложениях
гирования административных полномочий для Windows Любой веб-мастер желает, чтобы его сайт загружался
Server 2003 будут рассмотрены методики разработки быстрее, чем сайт конкурента, поэтому оптимизация -
классов COM на языках сценариев. важный аспект разработки любого веб-проекта.
Вадим Андросов Антон Гришан

3 Синхронизируем данные между РЕТРОСПЕКТИВА


компьютерами с помощью сервисов
сетевого хранения 80 Мал, да удал: мини-комьютер PDP-8
С появлением недорогих лаптопов и ультрадешевых Этот компьютер интересен оригинальными решениями,
неттопов эти «создания» начали плодиться во всех мес- воплощенными при его проектировании, которые мо-
тах моего обитания – дома, в офисе, на даче, диване. гут оказаться поучительными и полезными для совре-
И тогда начались проблемы с синхронизацией данных. менных разработчиков.
Виталий Банковский Алексей Вторников

34 PowerShell. Определяем имя текущего ТВОРЧЕСТВО АДМИНА


домена
При подключении к каталогу Active Directory первый 88 Контейнер
шаг – определение имени текущего домена. Для этого Рассказ.
используется виртуальный объект RootDSE. Станислав Шпак
Иван Коробко
9 СИСАДМИН ТОЖЕ ЧЕЛОВЕК
36 PowerShell. Поиск объектов в каталоге
Active Directory 92 КНИЖНАЯ ПОЛКА
Получение информации из каталога Active Directory
в девяти случаях из десяти сводится к поиску объектов, 39, 45, 90 BUGTRAQ
которые удовлетворяют заданным критериям.
Иван Коробко

№4, апрель 2009 


Виртуализация от Citrix –
новый взгляд на привычные вещи

Всевозможные конференции с презентациями каких-либо продуктов от разных компаний


проходят постоянно. Большинство посетителей привыкли к устоявшемуся формату подобных
мероприятий: «приветственный кофе», затем вступительное слово, презентации, кофе-брейк,
снова презентации, потом обед, еще презентации, второй кофе-брейк, презентации и наконец
прощальное слово, иногда фуршет и розыгрыш призов. Обычно все проходит просто,
предсказуемо и даже обыденно. Но только не в этот раз...
Особенности проведения Конкуренция или сотрудничество». ла выставка спонсорских компаний,
19 марта 2009 года в гостинице «Рэ- Но это частности. Главное, что участ- так или иначе связанных с основной
диссон САС Славянская» состоялась ники получили возможность выбо- темой конференции.
конференция, посвященная технологи- ра просмотреть и прослушать имен-
ям виртуализации – Citrix Virtualization но тот материал, который наиболее Доклады
Conference 09. интересен. С самого начала конференции был
Как известно, при проведении лю- Во-вторых, параллельно с пле- задан очень высокий темп. Я расска-
бых публичных мероприятий наибо- нарной сессией проводились ла- жу о самых ярких понравившихся вы-
лее ценный ресурс – это время. Обыч- бораторные работы по продуктам ступлениях.
но не успели еще обсудить все интере- Citrix XenDesktop и Citrix EdgeSight Первое выступление и собственно
сующие вопросы, а уже расходится по- для XenApp 5. И те участники, кото- открытие выставки провел Карл-Хайнц
ра... В этот раз компания Citrix отош- рых больше интересовала практичес- Варум (Karl-Heinz Warum, Regional
ла от вышеупомянутых традиционных кая часть, получили возможность по- vice-president DACh & CE Citrix System).
форм проведения конференции. щупать новые технологии своими ру- Выступление было предельно кратким
Во-первых, после вступительной ками. и довольно энергичным.
пленарной сессии основная програм- Ну и в-третьих, во время кон- По характеру и стилю оформле-
ма мероприятия была разделена на не- ференции можно было сдать экза- ния пленарная сессия походила ско-
сколько направлений (треков): «Тех- мены на сертификат Citrix Certified рее на шоу, нежели на набор презен-
нический трек», касающийся техни- Administrator (ССА). Данная акция бы- таций. Участники выходили на сцену
ческих деталей, «Бизнес-трек», выде- ла организована «Сетевой Академей под громкую музыку. Практически все
ливший в себе часть, напрямую каса- Ланит». Предварительно зарегистри- выступления были интересны, но что
ющуюся бизнеса, и «Инновационный роваться на экзамен можно было, от- касается иностранных коллег, то их
трек», посвященный новым направле- правив соответствующую заполнен- речь была прямо-таки до предела на-
ниям и технологиям. Надо заметить, ную форму администратору тестово- сыщена эмоциями.
что данное разделение было весьма го центра. Докладчик кратко напомнил при-
условным. В целом подобное разделение не- сутствующим об экономическом кри-
Например, А лександр Светла- только внесло новшества в стандарт- зисе и необходимости снизить за-
ков делал доклад на тему «Интегра- ный подход к проведению конферен- траты и одновременно модернизиро-
ция продуктов Citrix на платформу HP ций, но еще и позволило участникам вать ИТ-структуру, используя продук-
Blade System» в рамках «Бизнес-тре- наиболее полно использовать время цию компании. Честно говоря, на кон-
ка», а в рамках технического трека и ресурсы конференции, выбрав толь- ференции, наверное, не было ни од-
выступили представители от Microsoft ко то, что действительно необходимо. ного выступления, в котором хотя бы
Алексей Мурзов и Алексей Кибкало Помимо основной программы вскользь не упомянули о нынешнем
с докладом на тему: «Microsoft и Citrix: конференции параллельно работа- экономическом кризисе. Судя по все-


му, обсуждение мирового экономического кризиса стало и материалом на актуальную тему мало кого оставил рав-
модной темой, используемой при презентациях абсолют- нодушным.
но любой продукции. Далее было выступление Сергея Халяпина, который на
Наверное, стоит упомянуть несколько основных тези- примере некой компании Citron представил путь возмож-
сов данного доклада. По словам Карла, в 2012 году в мире ной экономии средств.
будет насчитываться порядка 650 миллионов виртуальных Основываясь на том факте, что 80% средств, выделя-
десктопов. И компания Citrix делает все возможное, чтобы емых на ИТ, уходит на поддержку существующей инфра-
эта перспектива получила свое воплощение. структуры и только 20% идет на развитие, было предложе-
Одним из основных преимуществ виртуализации явля- но за счет технологии виртуализации и внедрения терми-
ется независимость от используемой платформы. Так, если нальных решений сократить расходы именно на поддержку,
у пользователя дома компьютер Apple Macintosh, а в ком- оставив инновационные затраты без изменений.
пании в качестве корпоративного стандарта принята плат- Среди возможных путей экономии средств были отме-
форма Microsoft, то не существует особых проблем транс- чены следующие:
лировать рабочий стол с его виртуального PC прямо на эк- n Централизация ресурсов. При внедрении системы вир-
ран домашнего Макинтоша. туализации десктопов XenDesktop достаточно иметь
Докладчик также упомянул о технологии Citrix Cloud считанное количество образов виртуальных машин для
Computing, позволяющей проводить распределенные вы- трансляции виртуальных машин на рабочее место поль-
числения. По его словам, эта новая технология позволит зователя.
осуществить качественный прорыв в области применения n За счет виртуализации и терминализации возможно зна-
информационных технологий и осуществить переход на но- чительно сократить расходы на приобретение, модерни-
вый уровень, в том числе и в применении технологии вирту- зацию, обслуживание и утилизацию офисных компью-
ализации. Несмотря на то что доклад касался общих вопро- теров.
сов и носил скорее вступительный характер, речь доклад- n Также возможно значительно снизить расходы на элек-
чика произвела завораживающее впечатление. троэнергию за счет внедрения более экономичных тон-
Следом подошла очередь выступления Сергея Кузне- ких клиентов взамен «прожорливых» ПК.
цова (Country manager Citrix) и далее – Сергея Халяпина, n Вместо расширения WAN-каналов предлагается исполь-
(SE Team Lead). зовать Repeater (Wanscaler) и Netscaler, что позволяет
Сергей Кузнецов представил доклад на тему «Страте- использовать существующие каналы с максимальной
гия виртуализации Citrix 2009: Новые решения в новых ус- отдачей.
ловиях». Он с энтузиазмом отметил выход новых продук-
тов, таких как: Таким образом, по словам докладчика, общая эконо-
n XenServer 5.0; мия при внедрении современных технологий Citrix способ-
n XenApp 5.0;
n XenDesktop 3.0;
n Repeater (Wanscaler) 5.0.

«Но новое не значит сырое», – сказал Сергей Кузнецов,


отметив тот факт, что номера версий представленных про-
дуктов больше «1.0» (единицы) и базируются на технологи-
ях, проверенных временем и большим количеством пользо-
вателей по всему миру. Поэтому сейчас, во время экономи-
ческого кризиса, когда руководство большинства компаний
задается вопросом: «А что будет, если новое не заработает»,
при покупке продуктов Citrix можно с уверенностью заявить,
что такой проблемы не возникнет. Всего в мире на продук-
тах Citrix работает более миллиона серверов, которые ис-
пользуют более ста миллионов пользователей.
По мнению г-на Кузнецова, в недалеком будущем затра-
ты на обслуживание офисных компьютеризированных ра-
бочих мест не будут превышать затраты на закупку кофе
для офиса. И все это благодаря системам виртуализации,
и в частности таким продуктам, как Citrix XenDesktop.
Упомянул Сергей и о специальных антикризисных мерах
компаний, в частности о переходе новой версии XenServer
на бесплатную основу. С 7 апреля 2009 года данный про-
дукт будет доступен для бесплатного скачивания на сай-
те компании Citrix.
В целом доклад произвел довольно приятное впечат-
Дмитрий Прокопенко, исполнительный директор компании «Виат»,
ление. Энергичный темп совместно с живым изложением на фоне стенда своей компании

№4, апрель 2009 


Что касается демонстрации воз-
можностей использования iPhone
для работы с продуктами Citrix, это вы-
глядело весьма привлекательно. Зри-
телей не могли не впечатлить такие ве-
щи, как экранная клавиатура, увеличи-
вающаяся в размерах, масштабирова-
ние рабочего стола.
Вообще надо отметить, что несмот-
ря на некоторые технические наклад-
ки демонстрации, проводимые Дени-
сом, вызвали неподдельный интерес
и явились, по сути, ярким захватыва-
ющим событием в программе конфе-
ренции.
Надо также отметить, что учас-
тие технических специалистов: Дени-
са Гундарева и Николая Шадрина при-
дало конференции неповторимый от-
тенок живого человеческого общения.
Участники конференции обсуждают новые технологии Вокруг них практически постоянно со-
бирались участники, чтобы задать ин-
на достичь отметки 25% в плане за- монстрации использования iPhone, Де- тересующий вопрос, получить необхо-
трат на поддержание ИТ-инфраструк- нис сказал: димую консультацию или просто обме-
туры, что само по себе не может не ра- – Кстати, я знаю, почему произошел няться контактами. Что касается вы-
довать. разрыв сессии. Это у менеджера был ступлений и демонстраций, проводи-
В общем была нарисована доволь- настроен клиент на iPhone, соответ- мых этими замечательными ребята-
но радужная картина сокращения рас- ственно, он нажимает на иконку и про- ми, то они проходили легко и непри-
ходов при внедрении новых техноло- исходит установка соединения. нужденно, оставляя после себя пре-
гий и повышения качества сервисов, – Сможем ли мы теперь показать красное впечатление.
предоставляемых ИТ-структурой. нашу демонстрацию? – вновь спросил После непродолжительного кофе-
После этого Сергеем Халяпиным, Сергей Халяпин. брейка было представлено несколько
Денисом Гундаревым и Николаем Шад- – Сможем, если наш менеджер пе- очень коротких выступлений, среди ко-
риным были представлены несколько рестанет бегать по залу и нажимать торых запомнился доклад директора
демонстраций: миграция виртуально- разные кнопки, – как ни в чем не бы- по маркетингу BCC Company Алексан-
го офисного десктопа с Windows XP вало ответил Денис, к всеобщему удо- дра Герасимова, который рассказал об
на Windows Vista, использование вольствию зала. особенностях использования продук-
iPhone в качестве тонкого клиента.
Сам дух, стиль проведения конфе-
ренции, энтузиазм участников спо-
собствовали удивительно живой ат-
мосфере общения. Информация вос-
принималась довольно легко, вызывая
положительные эмоции.
Не обошлось и без курьезов. При
демонстрации миграции виртуально-
го офисного десктопа c Windows XP
на Windows Vista произошел разрыв
сессии. Желая поддержать ход де-
монстрации, Сергей Халяпин спро-
сил (далее идет почти дословное ци-
тирование):
– Денис, что у нас сейчас происхо-
дит на экране?
– А это, видимо, кто-то в другом мес-
те подключился к серверу с этой учет-
ной записью..., – не растерявшись, от-
ветил Денис.
Позже, когда закончилась к де- Идут лабораторные работы


ции Citrix в качестве платформы для интеграции. В част-
ности, он отметил некоторые особенности работы компа-
ний в условиях экономического кризиса, в том числе:
n резкое и непредсказуемое изменение бизнес-среды;
n необходимость «ручного управления» (то есть момен-
тальной реакции на создавшуюся ситуацию).

В данных условиях обычная репликация баз данных уже


может не соответствовать молниеносно изменяющимся ус-
ловиям рынка и требуется более быстродейственный под-
ход, такой как терминальные решения.
Также хотелось отметить доклад Сергея Члека, (Product
manager HP Blade System) который представил решения HP
в плане блейд-серверов для виртуализации на базе продук-
тов Citrix. Несмотря на краткость (около 10 минут), выступ-
ление Сергея Члека было весьма информативным. В час-
тности докладчик отметил интеграцию системы виртуали-
зации с ILO (Integrated Lights-Out) и тот факт, что для управ-
ления достаточно обычного интернет-браузера. В конце до-
клада Сергей пригласил посетить стенд компании Hewlett
Packard для более близкого знакомства с решениями на ба-
зе HP Blade System.
Компания «MTC» в лице Владимира Шмелева предста-
вила краткий доклад о возможностях защищенного удален- Денис Гундарев, системный инженер Citrix
ного доступа к ресурсам компании через каналы пакетной
передачи данных (GPRS/EDGE/3G). Суть выступления за- хронного перевода, лично мне показалось несколько уто-
ключалась в современных возможностях, которыми обла- мительным. Большая часть выступления была продублиро-
дают сотовые интеграторы при организации беспроводных вана российскими коллегами, представившими очень ин-
сетей. В качестве примера был рассмотрен вариант с бан- тересные доклады, поэтому некоторые участники конфе-
коматом, который находится вдали от коммуникаций. Так- ренции предпочли в это время осмотреть стенды компании
же был рассмотрен случай организации «ручного управле- Citrix и ее партнеров, представленные на выставке.
ния» для топ-менеджера, находящегося вне офиса. В сво- После завершения пленарной сессии и обеда передо
ем докладе Владимир посоветовал не рассматривать круп- мной встала проблема выбора. Как я уже упоминал, вто-
ного сотового оператора как нечто монументальное, абсо- рая часть конференции была поделена на три трека: «Биз-
лютно негибкое и плохо приспосабливаемое к нуждам от- нес», «Инновационный» и «Технический», которые прохо-
дельной компании. Наоборот, возможности крупных сото- дили одновременно. Поскольку одновременно присутство-
вых операторов (и «МТС» в том числе) позволяют макси- вать в трех различных местах мне показалось весьма за-
мально полно и адаптированно помочь современному биз- труднительным, я выбрал «Инновационный» трек. И не по-
несу в организации его работы. жалел. Программа этого цикла оказалась очень интерес-
После этого, под громкую музыку, с улыбкой на лице вы- ной и познавательной.
шел Фабиан Кинли (Business developer Citrix), который про- Во-первых, был представлен крайне интересный доклад
вел подряд два длительных выступления: «XenApp 5 FP: Но- Николая Шадрина на тему Cloud Computing – новый под-
вые возможности проверенного решения» и «Виртуализа- ход к высоко нагруженным системам. В частности, особен-
ция рабочих станций с Citrix XenDesktop». (Во втором вы- ный интерес вызвал Citrix Netscaler. Как известно, WAN-ка-
ступлении также принимал участие Манфред Майерхофер, налы в России обладают, мягко говоря, весьма скромны-
представитель компании WYSE.) ми возможностями. При этом стоят услуги интернет-про-
Это была длительная, очень эмоциональная речь на ан- вайдеров весьма недешево. И появление нового решения
глийском языке, сопровождающаяся англоязычными слай- в виде устройства, позволяющего не только обеспечить
дами презентации. Чтобы понять выступающего, значи- более качественную связь с регионами, но и оптимизиро-
тельная часть участников конференции прибегала к помо- вать трафик, снизив затраты вызвали значительное ожив-
щи устройства синхронного перевода. Честно говоря, эти ление. Во время этого доклада Николая прямо-таки забро-
доклады оставили несколько неоднозначное впечатление. сали вопросами. Сам по себе доклад был весьма живым
Данное выступление больше походило на упражнение в и впечатляющим.
ораторском искусстве, нежели на деловую презентацию. Во-вторых, представителем компании BCC Борисом
Если бы это выступление продолжалось в течение 10 ми- Королевым были представлены крупицы бесценного опы-
нут, оно воспринималось бы как призыв, как побуждение к та в докладе «Опыт построения защищенной инфраструк-
действию. Но слушать плотный поток эмоциональных воз- туры доступа для ОАО «Сибирская Угольная Энергетичес-
гласов на иностранном языке в течение полутора часов, кая компания». Речь шла о практике использования Citrix
пусть даже временами прибегая к услугам устройства син- Access Gateway.

№4, апрель 2009 


В-третьих, Дмитрий Бессонов на тему «CAD-online от идеи до рабоче- В целом доклад произвел очень
(«Группа компаний «Сквирел») предста- го стола», в котором рассказали о воз- положительное впечатление, живая
вил доклад «Создание виртуальных ра- можностях публикации CAD-системы. речь сопровождалась хорошо подго-
бочих мест в компании «Сквирел». Как Участники в реалии увидели опублико- товленной презентацией. К сожале-
в предыдущем случае, на опыте конк- ванное посредством Citrix XenApp-при- нию, из-за слишком малого количест-
ретной компании было продемонстри- ложение «Компас 3D». В окне обычно- ва оставшегося времени доклад полу-
ровано, как современные технологии го браузера, в данном случае Internet чился очень сжатым. Сразу после до-
могут помочь в сокращении расходов Explorer, были продемонстрирова- клада к Николаю потянулись участни-
на ИТ-структуру. Особенно впечатлило ны возможности использования CAD- ки конференции с просьбой записать
исследование на тему экономии элект- приложения. Продемонстрированная или выслать презентацию, а также за-
роэнергии. По словам докладчика, од- схема работает на одном физическом дать интересующие вопросы.
на из главных проблем работы совре- сервере, на котором развернуты 4 вир-
менного офиса – отсутствие возмож- туальных машины Microsoft Windows Заключение
ности подвести большую электричес- Server 2003. В качестве терминаль- Конференция оказалась весьма заме-
кую мощность. Терминализация спо- ных серверов использовались серве- чательным мероприятием, не только
собна решить эту проблему. Энергопот- ры XenApp на базе виртуальных ма- интересным и познавательным, но и
ребление среднего офисного систем- шин, доступ осуществлялся через Citrix крайне полезным. Информация, про-
ного блока ~150 Ватт. Энергопотребле- Access Gateway. Дополнительно был ис- демонстрированная на презентациях,
ние тонкого клиента WYSE даже в слу- пользован сервер Active Directory. Вся возможность пощупать новые техноло-
чае самой большой нагрузки (напри- система виртуальных машин работает гии во время лабораторных работ поз-
мер, запуск приложений мультимедиа) под управлением Citrix XenServer. волили не только расширить свой кру-
не превышает 15 Ватт. При наличии се- «XenServer – платформа облач- гозор, но и получить ответы на интере-
ти примерно в 100 компьютеров набе- ных вычислений» – последнее вы- сующие вопросы. Несколько участни-
гают приличные цифры. Даже с учетом ступление, которое провел Николай ков конференции из числа моих зна-
повышения потребления мощности при Романовский, представитель компа- комых сообщили мне, что собирают-
вводе в эксплуатацию дополнительных нии «ОЛЛИ». Он рассказал о возмож- ся если не полностью перевести свою
серверов получается минимум двукрат- ностях продукта Citrix Cloud Center C3 систему виртуализации на продукты
ная экономия. Добавим к этому сниже- и преимуществах использования Citrix Citrix, то уж точно намерены скачать
ние затрат на ремонт, обслуживание, XenServer для виртуализации серве- и протестировать предложенное ПО
утилизацию и т. д., и получается весь- ров. Среди указанных преимуществ: для сравнения с продуктами VMware.
ма внушительная экономия. n Производительность на уровне ап- В конце концов, всегда полезно иметь
В-четвертых, Анатолий Бочков, паратной платформы, использует альтернативу, а продукты компании
представитель компании «ОЛЛИ», технологии аппаратной виртуали- Citrix и ее партнеров способны сде-
представил Citrix Branch Repeater. Его зации. лать эту альтернативу поистине блес-
доклад был замечателен тем, что по- n XenServer Tools для улучшения I/O. тящим решением.
мимо презентации нового продукта со- n XenServer изначально 64-битный.
держал интересные детали об особен- n Возможность при помощи XenAPI Алексей Бережной,
ностях передачи данных по TCP-прото- создать настраиваемые решения. фото автора
колу и методах оптимизации WAN-ка-
налов, которые используются при пе-
редаче данных. В частности были рас-
смотрены такие процессы, как TCP
Slow Start и TCP Congestion Control. Так-
же было полезно узнать о различных
методах компрессии трафика. Особен-
но впечатлило сообщение о возмож-
ности сжимать зашифрованный тра-
фик по ICA-протоколу, появившейся
в новой версии Citrix Branch Repeater
(WANscaler).
Несмотря на очень высокий темп
проведения конференции, все же ощу-
щался дефицит времени. Поэтому две
следующие презентации были очень
краткими.
Владимир Высоцкий, представи-
тель компании Softkey, и Олег Зы-
ков, представитель компании «Аскон»,
подготовили совместное выступление Сергей Члек рядом со своим «подопечными» – полкой с блейд-серверами


Реклама
В Москве прошла конференция
системных администраторов
RootConf 2009
13 и 14 апреля в московском конференц-центре «Инфопространство» прошла
профессиональная конференция системных администраторов RootConf 2009 (www.rootconf.ru).
В течение двух дней на мероприятии было прочитано около 50 докладов, проведено 2 мастер-
класса и 1 «круглый стол».

В целом мы RootConf в среднем претендовало фопространства» разместились стен-


Организаторам удалось собрать пред- по четыре выступающих. Что не менее ды компаний, сотрудники которых
ставителей многих известных компа- важно, широкий спектр тем конферен- с удовольствием рассказывали о сво-
ний, ряд заметных деятелей российс- ции позволил затронуть все актуаль- их технологиях и отвечали на вопросы
кой ИТ-индустрии и приятную аудито- ные проблемы и тренды, повседневно посетителей. Если добавить сюда раз-
рию заинтересованных слушателей. встречающиеся системным админис- личные конкурсы для всех желающих
Доклады отбирались довольно тща- траторам разного уровня. и качественную организацию мероп-
тельно – благо, по заявлению орга- Помимо нескольких залов для вы- риятия, получается и вовсе идиллия.
низаторов, на каждый слот програм- ступлений в просторном холле «Ин- Единственным условным недостат-


ком, который, судя по отзывам в Се- начал слишком детально рассказы- ные требования (официально они оста-
ти, помешал прийти на конференцию вать об общих вещах с демонстра- лись такими же, как у Vista, но со слов
многим желающим, стала стоимость цией на схемах, как IP-пакеты прохо- Александра, в действительности – ста-
участия. Впрочем, несмотря на это, бы- дят в стеке от интерфейсного уровня ли ниже), можно выделить существен-
ли зарегистрированы почти 500 участ- до транспортного и обратно, из-за че- ную работу над так называемой фоно-
ников, так что в дни RootConf 2009 го до сетевых реализаций в OpenBSD вой активностью. Если говорить вкрат-
не пустовал ни один из задействован- дело так и не дошло. це, то теперь благодаря так называе-
ных залов. Анд рей Пантюхин из проек та мым сервисам Trigger-Start все служ-
FreeBSD.org поделился своими взгля- бы запускаются только тогда, когда
День первый дами на современное состояние уп- они действительно нужны и будут ис-
Сразу оговорюсь, что поскольку докла- равления программным обеспечени- пользоваться, и останавливаются ана-
дов было много, читались они парал- ем в UNIX-подобных системах, впро- логичным образом.
лельно. Если в первый день для это- чем, акцент на UNIX во многом был Последним «большим» докладом
го было отведено два зала, то во вто- формален (и просто более близок этого дня стало выступление Дмитрия
рой – уже три. Поскольку посетить их автору), поскольку ряд тезисов мож- Завалишина про загадочную опера-
все одному человеку не представля- но в значительной мере обобщить ционную систему «Фантом» (Phantom
лось сколь-нибудь возможным, в обзо- на другие платформы. Автор гово- OS, http://dz.ru/solutions/phantom). Не-
ре я затрону лишь те, на которых я смог рил как о том, что уже есть, развива- смотря на во многом провокационную
присутствовать и которые мне показа- ется и станет популярным в ближай- разработку и понятный скептицизм
лись наиболее интересными. шем будущем (например, p2p-репо- всех, кто про нее впервые слышит, вы-
Итак, выступления в первом зале зитории пакетов), так и о вещах, ко- ступление прошло на одном дыхании,
первого же дня конференции откры- торых принципиально не хватает су- а резкой критики со стороны слуша-
вал Игорь Сысоев из компании «Рам- ществующим средствам. По его мне- телей замечено не было. Идея проек-
блер», всем известный как автор лег- нию, например, было бы неплохо ин- та Phantom OS – в создании принципи-
ковесного веб-сервера nginx. Его до- тегрировать в пакетный менеджер не- ально новой ОС, не отягощенной мно-
клад был посвящен настройке опера- которые возможности управления ре- голетним наследием существующих
ционной системы FreeBSD 7 при ее ис- сурсами (скажем, задавать системные платформ и одаренной нестандартной
пользовании для обслуживания нагру- ограничения конкретным приложени- архитектурой. «Фантом», откуда и про-
женного веб-сервера. Игорь уже делал ям при их установке/конфигурации), исходит ее название, не должна быть
выступление на схожую тему два года обеспечить многоверсионные уста- видна программистам, а процессы
назад на РИТ-2007 (см. «Конференция новки (чтобы появлялась возможность смогут обмениваться данными между
РИТ-2007 собрала веб-разработчиков простого тестирования новой версии собой напрямую, находясь в едином
России» в журнале «Системный адми- ПО на рабочем сервере до ее произ- пространстве памяти и не делая лиш-
нистратор» №5 за 2007 г.), но теперь, водственного применения). Предвидя них операций вроде обращений к за-
с появлением новой стабильной вет- вопросы о том, почему в этом не по- писи/чтению данных на жесткий диск.
ки FreeBSD 7, потребовались опреде- могут современные виртуализацион- Кроме того, все процессы системы бу-
ленные адаптации прошлых рекомен- ные технологии, Андрей довольно ка- дут постоянно находиться в оператив-
даций. Как объяснил автор, к подоб- тегорично заявил, что виртуализа- ной памяти, благодаря чему, например,
ным выступлениям его побудил тот ция – это не решение проблем, а по- система сможет мгновенно загружать-
факт, что если в Сети и появляются пытка обойти их. ся после включения компьютера. До-
статьи на тему оптимизации FreeBSD, Александр Ильичев из Microsoft, за- кладчик поделился проблемами, с ко-
то обычно они сводятся к перечисле- нимающийся продвижением Windows 7, торыми столкнулся при проектирова-
нию различных sysctl без особых ком- постарался рассказать о том, почему нии и создании новой ОС, а также пу-
ментариев. Более того, зачастую при- новая операционная система софтвер- тями их решения. Стоит заметить, что
водимые sysctl противоречат друг дру- ного гиганта стала работать быстрее. законченного продукта еще нет, но не-
гу, а невнимательные читатели могут Впрочем, публике он скорее запомнил- которые наработки у проекта уже при-
этого даже не заметить. Посему Игорь ся благодаря одному забавному ком- сутствуют. На вопрос о лицензирова-
постарался в своем докладе не толь- ментарию, вызвавшему бурную реак- нии Дмитрий ответил, что вопрос ли-
ко приводить какие-то конкретные ре- цию всей аудитории. По его словам, цензирования ядра «Фантома» пока
комендации, но и объяснять их смысл. когда в Microsoft приступили к работе обсуждается, а все остальное авто-
В конце презентации автор пообещал над Windows Vista (2001 год), в компа- ры обещают выкладывать под Open
оформить советы в виде статьи, кото- нии ориентировались на существовав- Source-лицензиями вроде GPL. Проб-
рую в дальнейшем опубликует на сай- ший в то время прогноз, что в 2006 году лему полного отсутствия ПО для но-
те (http://sysoev.ru). средний пользовательский десктоп бу- вой ОС разработчики намерены ре-
Сергей Присяжный из ATMNIS дет оснащен 10-гигагерцовым процес- шить написанием бинарного трансля-
рассказал о сетевой подсистеме сором и 8 Гб оперативной памяти. Как тора байт-кода Java в свой байт-код
OpenBSD, затронув такие темы, как все дружно заметили, это многое объ- и, возможно, созданием POSIX-слоя
сокеты, mbuf, сетевой стек и марш- ясняет... Из нововведений в Windows 7, для совместимости с приложениями
рутизация. К сожалению, докладчик которые позволили снизить ее систем- для UNIX-подобных систем.

№4, апрель 2009 9


Первый день завершился цик- как SMS-маркетинг через почто- та трафика) и duplicity (для созда-
лом блиц-док ладов протяженнос- вый спам. Была приведена краткая ния резервных копий).
тью по 5 мину т. В них можно бы- классификация существующих ре- n Кирилл Колышкин из Parallels
ло ознакомиться, например, с Open шений борьбы со спамом: програм- в подробностях рассказал о воз-
Source-приложениями, используемы- мные, программно-аппаратные, можностях управления ресурсами,
ми в LiveJournal, простым и очевид- hosted service (на домене заказчи- предлагаемыми популярным вир-
ным способом борьбы с вирусами ка изменяется MX-запись, после че- туализационным средством для
с помощью средства виртуализации го все заботы о фильтрации спама Linux – OpenVZ.
VirtualBox (куда установлена Windows) берет на себя удаленный сервер). n Константин Осипов, участвующий
и снапшотов файловой системы ZFS n Филипп Кулин рассказал о проек- в разработке СУБД MySQL, пред-
в исполнении Филиппа Торчинского тировании и реализации неболь- ставил обзор Open Source-набо-
из Sun, видением рабочей среды сис- шого почтового сервера, осно- ра утилит Maatkit, значительно уп-
темного администратора UNIX глаза- вываясь на своем опыте работы рощающих работу с репликацией
ми уже знакомого посетителям Анд- в Peterhost. MySQL-серверов.
рея Пантюхина. n Андрей Чеков из «АстелНет» по-
ведал о разработанном в его ком- Подводя итоги
День второй пании дистрибутиве Asterroid, при- Как уже и было отмечено в начале ре-
Второй день RootConf 2009 оказал- меняемом для организации циф- портажа, на мой взгляд, конференция
ся для меня не таким продуктивным ровой АТС. В его основе – CentOS RootConf 2009 однозначно удалась.
по ряду причин, главная из которых – Linux 5.3 с Asterisk/Callweaver и ком- Это и неудивительно, когда соблюда-
менее интересные темы докладов. мерческий интерфейс от Thirdlane ются все ключевые компоненты подоб-
Тем не менее некоторые доклады сто- PBX. Что интересно, после внедре- ных мероприятий: хорошая организа-
ит выделить: ния непосредственно IP-АТС заказ- ция, интересные докладчики и широ-
n Андрей Никишин из «Лаборатории чику предлагается возможность ис- кий охват тем.
Касперского» поделился своим пользовать этот сервер и для дру-
опытом в области работы со спа- гих целей – с помощью доступных Дмитрий Шурупов,
мом. Особое внимание автор уде- в CentOS стандартных серверных фото предоставлено
организаторами конференции
лил такой современной угрозе, приложений вроде ipcad (для уче-

Реклама

10
Intel передала Linux Foundation Microsoft готовит рынок
управление проектом Moblin веб‑приложений, открывает код
2 апреля стало известно, что компания Intel передала не- ASP.NET MVC
коммерческой организации Linux Foundation право руково- На конференции MIX09 стало известно, что корпорация
дить разработкой своего Linux-дистрибутива Moblin для пор- Microsoft занялась созданием рынка веб-приложений с от-
тативных устройств. крытым исходным кодом, работающих под управлением
Moblin (Mobile & Internet Linux Project) – это Open Source- операционной системы Windows. Помимо самих приложе-
инициатива Intel, запущенная в 2007 году и нацеленная ний через него будут также распространяться сопутствую-
на создание Linux-дистрибутива, ориентированного на ис- щие сервисы и техническая поддержка.
пользование в мобильных устройствах вроде нетбуков Новый рынок веб-приложений Microsoft был представ-
(разумеется, с процессором Intel Atom). До сих пор коор- лен Лорен Куни (Lauren Cooney), менеджером по продук-
динацией проекта занимались сотрудники Intel, но теперь там подразделения Microsoft Web Platform and Standards.
в компании решили, что развитие будет лучше продолжить Примечательно, что раньше Лорен работала в IBM и BEA
в рамках мирового сообщества, доверив его консорциу- Systems над проектами, связанными с Open Source-техно-
му Linux Foundation. И судя по всему, в Linux Foundation логиями, веб-приложениями и языком программирования
настроены серьезно: «С технической поддержкой ува- Java. Теперь под девизом «Make Web not war» она возгла-
жаемых разработчиков Linux-ядра и независимым, сто- вила направление в Microsoft, которое станет новым витком
ронним, руководством проект Moblin нацелен на то, что- развития Microsoft Web Platform – набора серверов, фрейм-
бы стать самой продвинутой и открытой мобильной Linux- ворков и приложений, формирующих платформу, нацелен-
платформой». ную на взаимодействие с популярными и широко распро-
Инициативу поддержали представители ряда Linux- страненными в веб-сообществе Open Source-приложения-
компаний, в числе которых оказались Canonical, Linpus, ми. Веб-приложения для Microsoft Web Platform поставля-
Mandriva, MontaVista, Novell, Red Flag и Wind River. ются со специальным инсталлятором Web Platform Installer,
Примерно через неделю на саммите Linux Collaboration задача которого – упростить процессы их установки и пос-
Summit выступил директор центра Open Source-техноло- ледующего обновления.
гий Intel, который рассказал о планах по совершенствова- Кроме того, Microsoft объявила о запуске галереи
нию Moblin. Была озвучена довольно интересная инфор- Windows Web Application Gallery, которая наглядно демон-
мация: тесты последнего альфа-релиза Moblin 2 показали, стрирует далеко идущие планы корпорации: в новом реше-
что все крупные компоненты платформы (включая графи- нии предусмотрена интеграция с такими веб-приложения-
ческую систему) могут загружаться всего за несколько се- ми, как Acquia Drupal, DotNetNuke и WordPress.
кунд. В связи с этим в Intel намерены вновь сократить об- Вскоре после этого в блоге другого представителя
щее время загрузки системы – теперь уже до двух секунд. Microsoft, Скотта Гатри (Scott Guthrie), появилось объявле-
Стремление к такой цели объясняется новыми открывающи- ние о публикации исходного кода веб-фреймворка ASP.NET
мися возможностями Moblin: например, с такой скоростью MVC 1.0 под Open Source-лицензией Microsoft Public License
загрузки систему можно будет использовать на устройствах (MS-PL). Последняя была одобрена в конце 2007 года груп-
вроде встраиваемых автомобильных компьютеров. пой OSI как лицензия, удовлетворяющая определению Open
Другим важным аспектом в совершенствовании Moblin Source Definition (OSD).
станет пользовательский интерфейс. В прошлом году Intel ASP.NET MVC – это новый фреймворк для языка програм-
купила компанию OpenedHand, стоящую за разработкой мирования ASP.NET, во многом схожий, например, с популяр-
Open Source-фреймворка Clutter. Ожидается, что теперь ным Ruby on Rails для Ruby. Он обеспечивает полный конт-
с его помощью будут создаваться динамические пользо- роль за HTML-разметкой, структурой URL-адресов, упроща-
вательские интерфейсы, использующие анимацию и гра- ет модульное тестирование и способствует использованию
фическое ускорение. модели разработки TDD (test driven development).

Rackable Systems нансовые проблемы у компании ста- Systems, а сумма сделки составила
поглотила компанию SGI ли заметны еще в начале 2006 года, всего 25 миллионов USD – правда,
1 апреля на сайте SGI (Silicon Graphics когда SGI открыто объявила о том, что это не совсем точные цифры, посколь-
Inc.) появился пресс-релиз, соглас- опасается банкротства и одной из ви- ку новый владелец наследия SGI поо-
но которому компанию поглощает димых причин тогда назвала операци- бещал еще и выплатить все ее долги.
Rackable Systems всего за 25 милли- онную систему GNU/Linux: снижение В пресс-релизе заявляется, что «объ-
онов USD. Некоторые могли подумать, доходов SGI стало результатом пере- единенный бизнес предоставит пот-
что это шутка, но ситуация далека хода от собственных технологий к ра- ребителям лидирующие на рынке про-
от таковой. SGI хорошо известна всей бочим станциям на базе процессоров граммно-аппаратные решения». К их
ИТ-индустрии своими суперкомпьюте- Intel Itanium с Linux. Уже в мае 2006 го- основным зонам интереса относят
рами (в свое время она поглотила Cray), да компания и ее американские под- кластерные вычисления на базе x86,
операционной системой IRIX и журна- разделения подали заявление на за- Интернет, облачные вычисления, мас-
лируемой файловой системой XFS, гра- щиту от банкротства. штабируемые центры хранения дан-
фической библиотекой OpenGL. Фи- Теперь SGI стала частью Rackable ных, платформы визуализации.

Подготовил Дмитрий Шурупов по материалам www.nixp.ru


№4, апрель 2009 11
Windows 7:
что новенького?

Андрей Бирюков
Еще не отшумели страсти по Windows Vista и в интернет-сообществах идут нескончаемые
споры о ее преимуществах и недостатках, а корпорация Microsoft уже выпустила бета-версию
новой ОС Windows 7.

С
ам факт столь раннего появле- изучать особенности и нововведения Немного об установке
ния следующей после Windows новой операционной системы можно Я не буду описывать процесс уста-
Vista операционной системы уже сейчас. новки операционной системы, так как
многие истолковали как признание Прежде всего, следует отметить он в целом схож с установкой Windows
Microsoft провала ОС Vista. Ведь прак- что это тестовая (beta) версия опера- Vista, так же минимизировано коли-
тически сразу после официального ционной системы, в связи с чем кате- чество задаваемых перед началом
выхода Vista появились сообщения горически не рекомендуется ставить вопросов.
о разработке новой версии операци- ее в качестве рабочей ОС на «боевые» Однако я приведу некоторые свои
онной системы. Да и быстрое появле- машины. По заявлениям Microsoft, дан- наблюдения относительно самого
ние бета-версии Windows 7 подтверж- ная версия прекращает функциони- процесса установки и нагрузки, со-
дает данные предположения. Однако ровать 1 августа 2009 года. На мо- здаваемой на систему. Данный про-
исполнительный директор Microsoft мент написания данной статьи дист- цесс занимает намного меньше вре-
Стив Балмер опроверг факт провала, рибутив Windows 7 уже не был досту- мени. Так, установка Windows Vista
заявив при этом, «что в Vista есть над пен для бесплатного получения с сай- на VMWare Workstation с выделенны-
чем работать» [1]. По заявлениям то- та Microsoft. ми 756 Мб оперативной памяти заня-
го же Балмера, официальный релиз Я расскажу об основных новов- ла у меня около часа, при этом рабо-
Windows 7 может выйти уже в конце те- ведениях, а потом продемонстрирую тать в основной операционной систе-
кущего года. Несмотря на это, думаю, на практике работу некоторых из них. ме было практически невозможно, так

12
как более 90% аппаратных ресурсов
уходило на обслуживание виртуаль-
ной машины. Для Windows 7 я устано-
вил 512 Мб оперативной памяти, и ус-
тановка при этом заняла немногим бо-
лее получаса. При этом основная опе-
рационная система была вполне рабо-
тоспособна, по крайней мере, я смог
начать писать эту статью.

Интерфейс
После завершения установки и пере-
загрузки (правда, только одной) мы по-
падаем в интерфейс, очень похожий
на стандартное рабочее окно Windows
Vista. При попытке настроить систему
появляется уже знакомое предупреж-
дение User Access Control, технологии,
позволяющей контролировать исполь-
зование пользователями администра-
тивных привилегий.
В качестве интерфейса в Windows 7 Рисунок 1. Создание VHD-диска
применяется модернизированный ва-
риант Vista Aero. Данный интерфейс Например, появившийся в Vista быст- ступных сетей/View Available Network».
поддерживает новую «Панель задач/ рый просмотр приложений в панели Теперь не нужно проходить через мно-
Taskbar», которая сочетает кнопки за- задач, который выводит уменьшенный гие диалоги подключения, чтобы под-
пуска приложений, наиболее часто ис- экран работающего приложения, стоит соединиться к беспроводной сети, те-
пользуемых, с иконками приложений, только навести на него курсор мыши. перь можно быстро выбрать нужную
уже запущенных, так что вам не при- В результате такого быстрого просмот- беспроводную сеть из значка бес-
дётся переключаться между панелью ра вы получаете только приблизитель- проводных подключений в трее. Всё,
задач, меню «Пуск/Start» и панелью ное представление о том, что в данный что вам требуется – выбрать беспро-
«Быстрого запуска/Quick Launch». Так- момент делает программа. Все умень- водную сеть, которую вы хотите ис-
же здесь можно переносить иконки шенные экраны будут отображаться пользовать, после чего нажать кла-
в меню «Пуск/Start» из него, и выби- одинакового размера. вишу «Подключиться/Connect». Если
рать желаемый порядок иконок, не за- В добавление к этому в Windows 7 нужно ввести сетевой ключ защиты,
висящий от порядка, в котором запус- приложения получили собственные то будет предложен соответствующий
каются приложения. Располагать окна места на панели задач, и теперь вы мо- диалог, а если нужно войти через веб-
стало легче: просто перетащите окно жете навести курсор мыши на умень- страницу, то на ней вы и окажетесь.
на верхнюю часть экрана, и оно мак- шенный экран, чтобы просмотреть его Тот же самый список позволяет под-
симально раскроется; переместите ок- в полном размере. ключаться к мобильным широкополос-
но на край экрана, и оно закроется на- Если окно вам больше не требует- ным сетям через 3G-модем или к кор-
половину, чтобы облегчить процесс ко- ся, вы можете закрыть его из предва- поративным VPN-сетям.
пирования или вставки. рительного просмотра, без переклю-
Говоря об интерфейсе, следует от- чения в само приложение. Вкладки Новшества в сфере
метить тот факт, что изначально в сво- в Internet Explorer работают по анало- безопасности
их рекламных сообщениях Microsoft гичному принципу – каждая вкладка Средства безопасности также претер-
активно распространяла слухи об ис- выводится отдельно. пели некоторые изменения по сравне-
пользовании на экране так называе- Однако помимо визуальных эле- нию с Windows Vista. В Vista появил-
мого «кольца команд», позволяющего ментов в новой версии операционной ся целый ряд новшеств: фильтрация,
прокручивать логотипы команд на эк- системы также появились и техничес- как входящих, так и исходящих соеди-
ране, выбирая нужную (по аналогии кие нововведения, о которых я рас- нений, динамические профили, интег-
с iPhone), однако в текущей версии скажу далее. рация с IPSec и поддержка IPv6. Одна-
Windows 7 данный интерфейс не пред- ко активным при этом мог быть только
ставлен, возможно, именно потому, Работа в сети один профиль, и при нескольких под-
что для него требуется слишком мно- Работа с сетями в Windows 7 также ключениях применялся наиболее ог-
го аппаратных ресурсов. претерпела некоторые изменения. раничивающий из них. В Windows 7
Новые возможности визуализации, С помощью так называемых Jump lists это упущение было исправлено – те-
представленные еще в Windows Vista, (списков перехода) можно воспользо- перь несколько профилей могут быть
получили свое развитие в Windows 7. ваться новой функцией «Просмотр до- активными, что позволяет более гиб-

№4, апрель 2009 13


ивало пользователей, и они, как пра- пользовать и в рабочей среде, без ис-
вило, использовали альтернативные, пользования сторонних программ.
более «легкие» проигрыватели. К то- Посмотрим, как можно работать
му же был изменен интерфейс проиг- с виртуальными дисками [2]. Для на-
рывателя в лучшую сторону, добавле- чала создадим виртуальный диск.
ны функции для перезаписи списков Для этого необходимо открыть кон-
воспроизведения. соль управления дисковыми ресур-
сами, которая находится, как и в пре-
Создание виртуальных дыдущих версиях Windows, в разде-
дисков ле Computer Management, далее Disk
Одним из принципиа льно новых Management. Здесь нужно нажать пра-
средств работы с дисковыми ресур- вую кнопку мыши и выбрать Create
сами стала возможность создания VHD (см. рис. 1).
Рисунок 2. Настройки VHD-диска и подключения виртуальных дисков – В открывшемся окне необходимо
VHD-файлов. Причем теперь эти диски задать параметры создаваемого дис-
ко настраивать правила для межсете- можно использовать в качестве обыч- ка. Как видно, этот интерфейс ана-
вого экрана. ных накопителей. логичен меню создания виртуальных
Также в Windows 7 теперь можно Использование виртуальных дис- машин в Microsoft Virual PC. Необхо-
шифровать содержимое съемных но- ков дает целый ряд преимуществ: димо указать размещение VHD-фай-
сителей с помощью утилиты BitLocker. n при мультизагрузке операционная ла, его максимальный размер, а так-
Теперь BitLocker поддерживает фай- система остается неизменной; же способ выделения дискового про-
ловые системы FAT32, ExFAT, NTFS, n не требуется отдельный раздел странства: динамическое или фикси-
а также доступ по паролю или смарт- для каждого экземпляра операци- рованное. Несмотря на то что здесь
карте. онной системы; рекомендуется использовать фикси-
n появляется возможность протести- рованное выделение пространства
«Легкий медиаплеер» ровать совместимость оборудова- (VHD-файл сразу имеет заданный мак-
Операционную систему семейства ния и периферии с новой ОС; симальный размер), я обычно исполь-
Windows невозможно представить n удобство резервного копирования зую динамическое выделение, так как
без Media Player, входившего в ее сос- (весь образ операционной системы это помогает сэкономить свободное
тав на протяжении долгих лет. Работа сохраняется в один файл); место на диске (см. рис. 2).
с ним под Vista и XP была примерно n различные образы vhd можно ис- Через некоторое время VHD-диск
одинаковой: запускалось «тяжёлое» пользовать при обучении и на пуб- будет создан. Теперь, нажав на нем
приложение, которое даже для того, личных компьютерах. правой кнопкой мыши, мы можем вы-
чтобы проиграть несколько простых полнить над ним различные действия.
мелодий, интенсивно нагружало про- Раньше VHD-файлы использова- (см. рис. 3).
цессор, занимало много места на эк- лись только виртуальными машинами Выберем Detach. В презентации [2]
ране и в памяти, что не всегда устра- Virtual PC, однако теперь их можно ис- докладчик продемонстрировал, как
можно работать с VHD-дисками с по-
мощью консольных команд. Думаю,
данный опыт будет весьма полезен,
к примеру, в задачах автоматизации
резервного копирования, поэтому раз-
берем пример подробнее.
Итак, откроем командную стро-
ку, для этого в Windows 7 необходи-
мо в разделе Accessories открыть
Command Promt. Далее запускаем ути-
литу diskpart. Для того чтобы ознако-
миться со всеми доступными команда-
ми утилиты, можно указать «?».
Теперь подключим созданный на-
ми виртуальный диск. Для этого не-
обходимо использовать следующую
команду:

select vdisk file=путь_к_VHD_файлу

В ответ мы должны получить со-


Рисунок 3. Действия над созданным VHD-диском общение об успешном открытии фай-

14
ла виртуального диска. Затем вводим не поддерживается компрессия. К со- select vdisk file="путь к файлу"
attach vdisk
команду: жалению, также не поддерживается
загрузка с VHD на съемном носите-
attach vdisk ле. Также есть несколько предосте- После этого необходимо вернуть-
режений при работе с расширяемы- ся в меню установки и продолжить ее.
После этого следует сообщение ми VHD-дисками (вспомните настрой- На этапе выбора диска для установ-
об успешном подключении диска. ки на рис. 2). Свободное место на дис- ки системы нужно выбрать создан-
Теперь можно работать с нашим ке необходимо резервировать заранее ный VHD-диск. Предупреждение о том,
виртуальным диском, как с обычным под максимальный размер, так как при что система не может быть установле-
ресурсом. Например, с помощью сце- загрузке диск будет увеличен до дан- на на данный диск, можно проигнори-
нария сделать резервную копию ка- ного размера. Скорость работы с VHD ровать, установка все равно пройдет
кого-либо бизнес-приложения. Для фиксированного размера будет выше, успешно. После установки на этапе за-
отключения виртуального диска в так как он менее подвержен фрагмен- грузки вы можете выбрать новую опе-
diskpart необходимо ввести команду: тации. Рекомендуемый минимальный рационную систему, установленную
размер диска – 7024 Мб. на VHD-диске.
detach vdisk Некоторые из приведенных огра- Более подробно о работе с VHD-
ничений показались мне несколько дисками вы можете узнать из докла-
Продолжая тему работы с дисками странными (например, невозможность да на сайте [2].
VHD, попробуем развернуть на вирту- загрузки со съемного носителя). Хо-
альном диске операционную систему. чется верить, что в финальной версии Заключение
Это может оказаться полезным, когда Microsoft исправит недостатки. В целом, впечатление от новой опе-
необходимо иметь готовый образ ти- Итак, приступим к созданию загру- рационной системы сложилось поло-
повой операционной системы, исполь- жаемого VHD-диска с операционной жительное. Windows Vista, наделав-
зуемой на рабочих станциях пользо- системой. Сначала необходимо соз- шая несколько лет назад много шума,
вателей или для тестирования ново- дать VHD-диск с помощью действий, на деле оказалась довольно громозд-
го оборудования. Виртуальный VHD- приведенных выше. Для этого нам по- ким решением, требовательным к ап-
диск аналогичен Live CD, загружае- требуется сначала загрузиться с дис- паратным ресурсам. В Windows 7 эти
мым дистрибутивам, которые не вно- ка с дистрибутивом Windows 7. недостатки смогли исправить, улучшив
сят изменений в установленную опе- В первом же окне установки не- работоспособность и функционал.
рационную систему. обходимо запустить командную стро- Однако разработчикам еще есть
Но, прежде чем приступить к со- ку с помощью комбинации клавиш над чем поработать, так что будем
зданию образа операционной систе- <Shift>+<F10>. В открывшемся окне не- ждать выхода новых релизов опера-
мы, необходимо обратить внимание обходимо запустить утилиту diskpart. ционной системы.
на следующие моменты. Далее:
Не сохраняйте файлы VHD в ка- 1. http://www.windxp.com.ru/win7/winfag.
талог Windows, не используйте сло- сreate vdisk file="путь к файлу" ↵ htm – Материал по Windows Vista.
type=fixed maximum=размер диска
во Windows в названии диска. Далее 2. http://www.techdays.ru/videos/1237.html –
имейте в виду, что для дисков VHD Затем: презентации по VHD в Windows 7.

Реклама

№4, апрель 2009 15


Основные изменения в WAIK
для Windows Server 2008 R2/7
Сергей Яремчук

Одновременно с выходом бета-версий операционных систем Windows 7 и Windows


Server 2008 R2 были представлены и обновленные инструменты, среди которых – Windows AIK,
с особенностями которого мы и познакомимся в статье.
П
акет автоматической установ-
ки Windows (WAIK, Windows
Automated Installation Kit) позво-
ляет упростить развертывание опера-
ционных систем Windows за счет интег-
рации приложений, драйверов в уста-
новочный образ и автоматизации са-
мой установки системы. В зависимос-
ти от ОС, которую планируется раз-
вертывать, следует подбирать и вер-
сию WAIK. Предыдущий релиз пакета
назывался «Пакет автоматической ус-
тановки (AIK) для Windows Vista с па-
кетом обновления 1 (SP1) и Windows
Server 2008», на работу с которыми он
собственно и был рассчитан. Уже в нем
появились нововведения по сравне-
нию с версией для XP. В частности
WIM-файл (Windows Image), который
поддерживает редактирование и мо-
жет содержать несколько образов ОС.
Плюс единый файл ответов в форма-
те XML, избавлявший от путаницы. Вы- Изменения в WAIK видны уже начиная с загрузочного меню
ход Windows 7 потребовал и обновле-
ния соответствующих инструментов – n Windows System Image Manager уже нет необходимости. Теперь рас-
WAIK и Microsoft Deployment Toolkit 2010 (Windows SIM, диспетчер образов смотрим использование новинок под-
Beta (ранее пакет MDT назывался системы Windows) – графичес- робнее.
Business Desktop Deployment). Утилиты кий инструмент, предназначен-
из старой версии отказались работать ный для создания файлов отве- Утилита DISM
с новыми сервисными функциями. тов, файлов каталога для управ- Новая утилита DISM, входящая по-
Версия Windows Automated ления компонентами ОС, интегра- мимо WAIK и в поставку Windows
Installation Kit (Windows 7 Beta), как по- ции драйверов, установки допол- 2008R2/7, при работе с образами
казывает название, ориентирована нительных пакетов и приложений Windows 2008R2/7 заменяет, как ми-
на развертывание Windows 7, а так- и так далее; нимум, три утилиты из состава WAIK:
же Windows Server 2008 R2. Устано- n Pkgmgr (Package Manager, менед- Pkgmgr, PEimg и Intlcfg (International
вить пакет можно на Windows Server жер пакетов) – командная утилита, Settings Configuration Tool), плюс мо-
2003SP1/VistaSP1/2008/2008R2/7. Тра- позволяющая создать новый па- жет использоваться в настройке ра-
диционно WAIK распространяется бес- кет (драйвера, языковый) и вклю- бочей системы. К слову, перечислен-
платно, установочные файлы в виде чить его в образ для автоматичес- ные утилиты никуда не делись, поэто-
DVD ISO-образа можно свободно ска- кой установки в процессе развер- му ничто не мешает не менять при-
чать с сайта корпорации Microsoft [1]. тывания. вычек и использовать старые коман-
ды. DISM позволяет добавлять, обнов-
Состав WAIK Плюс в комплект входит докумен- лять, удалять и получать список драй-
В состав обновленного комплекта тация и дополнительные пакеты, необ- веров и пакетов, в том числе и языко-
WAIK входит несколько уже традици- ходимые для установки WAIK в некото- вых, включать/отключать компонен-
онных инструментов: рых системах. ты системы, работать с образами сис-
n WinPE (Microsoft Windows Самым заметным изменением ста- темы и производить некоторые дру-
Preinstallation Environment, среда ло появление в составе комплекта двух гие операции.
предустановки Windows) – загру- новых инструментов: средства мигра- DISM также работает и с WIM-фай-
зочная версия системы, является ции пользовательской среды USMT 4.0 лами Vista и Windows Server 2008 (без
основой при развертывании ОС, (User State Migration Tool) и команд- R2), но нужно быть готовыми, что в этом
можно настроить при помощи ути- ной утилиты DISM (Deployment Image случае и при использовании WAIK в ОС,
лит из состава WAIK; Servicing and Management). отличных от Windows 2008R2/7, часть
n набор утилит PETools – ImageX, Удалён пакет установки слу ж- функций будет недоступна. Правда что-
PEimg и Expand, при помощи кото- бы развертывания Windows – WDS то испортить не получится, так как если
рых создаются и модифицируются (Windows Deployment Services), предна- параметр не поддерживается, пользо-
эталонные образы Windows, в том значенный для обновления RIS. Учиты- ватель получает сообщение об ошиб-
числе интегрируются драйверы, об- вая, что WDS является одной из ролей ке. Например, в Vista и Server 2008
новления и языковые пакеты; в Windows 2008, включать его в WAIK не работает ключ /Online, указываю-

№4, апрель 2009 17


щий, что команду необходимо выполнить в рабочей ОС, этого каждый ключ также имеет дополнительные парамет-
а не с образом. Например: ры. В документации WAIK расписаны все основные момен-
ты по использованию DISM в различных ситуациях. Разбе-
PETools> DISM /Online /Get-Packages рем некоторые из команд, чтобы увидеть разницу.
Образ перед использованием следует смонтировать:
Получаем:
PETools>DISM /Mount-Wim /WimFile:d:\sources\install.wim ↵
DISM does not support servicing Windows Vista or Windows Server 2008 /index:1 /MountDir:c:\img
with the /Online Options.
Поддерживается также и ключ /ReadOnly, показываю-
Формат самой команды и вывода результата в DISM су- щий, что монтировать нужно только в режиме для чтения.
щественно отличается от используемых ранее. Общий син- Для получения списка различных составляющих системы
таксис DISM такой: следует использовать соответствующий ключ: Get-Drivers
(драйвера), Get-Features (компоненты), Get-Packages (паке-
DISM.exe {/image:<path_to_image> | /online} [dism_options] ↵ ты, обновления), Get-Intl (установки локализации).
{servicing_command} [<servicing_argument>]

Например, чтобы получить информацию о WIM-образе, PETools> DISM /Image:c:\img /Get-Drivers | more
PETools> DISM /Image:c:\img /Get-Features | more
при помощи ImageX вводим:
Теперь, чтобы узнать подробнее о конкретном драйве-
PETools> imagex /INFO d:\sources\install.wim ре, вводим:

В ответ получали: PETools> DISM /Get-DriverInfo /driver:oem1.inf

<IMAGE INDEX="1">
<NAME>Windows Vista BUSINESS</NAME>
Это для установленного драйвера, иначе следует ука-
зать полный путь к файлу.
С использованием DISM команда и результат выгля- Команды можно использовать и в рабочей системе:
дят так:
PETools>DISM /Online /Get-Features | more
PETools> DISM /Get-WimInfo /WimFile:d:\sources\install.wim
Index : 1 Теперь, получив нужные названия, отключаем встроен-
Name : Windows Vista BUSINESS
ные игры и активируем роль веб-сервера IIS:

Если нужно обратиться к определенному образу (на- PETools> DISM /Online /Disable-Feature:InboxGames
PETools> DISM /Online /Enable-Feature ↵
пример, первому), следует использовать дополнительный /FeatureName:IIS-WebServerRole
ключ /index:1.
Ключей в DISM используется достаточно много, при по- Для установки или удаления пакетов используется соот-
мощи /? можно увидеть лишь самые востребованные, кроме ветственно Add-Packages и Remove-Package. Но DISM под-
держивает работу только с .cab-, .msu-
и .inf-файлами. Для установки .msi сле-
дует использовать OCSetup, сервис-
паков – Windows Update Stand-alone
Installer (Wusa.exe).
По окончании работы образ следу-
ет размонтировать:

PETools> DISM /Unmount-Wim ↵


/MountDir:c:\img /commit

Если сохранять изменения не пла-


нируется, то вместо /commit использу-
ем /discard. То есть общий принцип ра-
боты с образами остался неизменным.
Но теперь как к образу, так и к рабочей
машине можно применить файл отве-
тов с настройками:

> DISM /Online /Apply-Unattend: ↵


C:\answerfiles\unattend.xml

Параметров у DISM действительно


много, причиной появления этой ути-
DISM имеет достаточно много различных параметров литы, скорее всего, является желание

18
разработчиков дать пользователю уни-
версальный инструмент.

Возможности USMT 4.0


Набор программ USMT предназначен
для настроек ОС, приложений и фай-
лов, индивидуальных настроек поль-
зователей во время переустанов-
ки или при масштабном развертыва-
нии ОС. Как результат ее примене-
ния весь процесс происходит быстрее
и проще, а пользователь в новой сис-
теме сразу попадает в знакомую среду.
USMT 4.0 поддерживает только деск-
топные Windows XP/Vista/7 (за исклю-
чением редакций Starter). Попытка за-
пуска одной из утилит набора в сервер-
ной ОС приведет к ошибке Unsupported
OS version. Возможна миграция с 32
на 64-битные системы, но наоборот
нельзя (очевидно, в этом уже и нет ос- Получаем список драйверов при помощи DISM
трой необходимости).
Вся работа с USMT состоит в использовании двух ути- В сценарии Config.xml (автоматически создается при по-
лит ScanState (сбор файлов и параметров с исходного ком- мощи ScanState /genconfig) появились новые параметры
пьютера) и LoadState (восстановление среды). Теперь к ним и секции. Например, секция <HardLinkStoreControl> позво-
добавлена еще одна – UsmtUtils, при помощи которой мож- ляет настроить Hard Link Migration.
но получить список поддерживаемых алгоритмов шифро-
вания (/ec) или удалить жесткую ссылку из базы, сформи- <Policies>
<HardLinkStoreControl>
рованой ScanState (/rd). <fileLocked>
К ранее поддерживаемому 3DES, в список алгоритмов <createHardLink>c:\Users\* [*]</createHardLink>
<errorHardLink>C:\* [*]</errorHardLink>
шифрования данных, которые можно указывать в пара- </fileLocked>
метре /encrypt (ScanState) или /decrypt (LoadState), добав- </HardLinkStoreControl>
</Policies>
лен AES 128/192/256.
Но самым заметным нововедением USMT 4.0 являет- При этом:
ся так называемая миграция жестких ссылок (Hard Link n createHardLink – указывает на каталоги, для которых
Migration), активируемая параметром /hardlink. Суть ее та- жесткая ссылка создается в любом случае, даже если
кова. Ранее чтобы сохранить и перенести пользовательские файл заблокирован другим приложением;
данные, их вначале каталогизировали, переносили на дру- n errorHardLink – в таких каталогах ссылка на заблоки-
гой ресурс, а затем после установки ОС возвращали все об- рованный приложением файл может не создаваться.
ратно. Учитывая возможные объемы данных, которые хра-
нил пользователь, весь процесс занимал достаточно мно- Для контроля миграции файлов по определенным кри-
го времени и требовал к тому же дополнительного места териям (размер, время создания и модификации и так да-
для хранения информации. Теперь после ввода команды: лее) используется секция MigXmlHelper.FileProperties, поиск
определенных документов на компьютере может быть орга-
> ScanState c:\store /o /c /i: app.xml /i: user.xml ↵ низован при помощи MigXmlHelper.GenerateDocPatterns.
/nocompress /hardlink
Как видите, разработчики пошли по пути унификации
Вместо непосредственного копирования данных в ка- и упрощения использования пакета, что нельзя не при-
талоге c:\store создаются только жесткие ссылки. При пе- ветствовать. Те же, кому хоть раз пришлось работать
реносе ОС жесткий диск будет очищен, кроме файлов, за- с USMT, должны оценить использование миграции жест-
блокированных такими ссылками. В итоге объем копируе- ких ссылок вместо копирования больших объемов инфор-
мых данных и время, затраченное на развертывание сис- мации. В статье затронуты только основные изменения,
темы, значительно уменьшаются. появившиеся в пакете автоматической установки WAIK
Кроме этого, при использовании USMT уже не требует- для Windows 2008R2/7, более подробную информацию о ре-
ся обязательное подключение к домену, а запуск ScanState лизе можно получить на ресурсах TechNet [2].
можно производить из Windows PE. В связи с появлением
Hard Link Migration в команде ScanState предусмотрен но- 1. Бета-версия Windows AIK для Windows 7/2008R2 – http://
вый ключ /vsc, позволяющий задействовать службу тене- go.microsoft.com/fwlink/?LinkId=136976.
вого копирования (Volume Shadow Copy) для захвата забло- 2. Windows Automated Installation Kit for Windows 7 Beta – http://
кированных другими приложениями файлов. technet.microsoft.com/en-us/library/dd349343.aspx.

№4, апрель 2009 19


Автоматическая установка
Adobe Creative Suite 3
Иван Коробко

Несмотря на то что дистрибутивы компонентов


Adobe CS3 созданы на основе MSI,
инсталлятор всего пакета построен на основе
другой технологии, поэтому реализация
автоматической установки выбранных
заранее компонентов этого продукта имеет
ряд особенностей, о которых пойдет речь.
A
dobe CS3 достаточно большой
по размерам пакет, и специа-
листов системной поддержки
с администраторами больше волнует
вопрос не автоматической установки,
а выборочной автоматической уста-
новки. Это обусловлено тем, что ошиб-
ка в выборе перечня устанавливаемых
программ обойдется примерно в час
излишне потраченного времени. По-
этому стоит особое внимание уделить
выборочной установке пакета.

Аргументы файла
setup.exe
Традиционно мастер управления уста-
навливаемых компонентов запускает-
ся с помощью файла setup.exe, кото-
рый поддерживает следующие аргу-
менты:
n --record. Используется для созда- Рисунок 1. Пример файла ответов
ния файла ответов, принимает зна-
чение 0 или 1;
n --silent. Реализует установку при-
ложения в «тихом режиме»;
n --deployment. Обеспечивает уста-
новку с помощью созданного фай-
ла ответов.

Структура файла ответов


Файл ответов представляет собой
текстовый файл в формате XML. Как
любой XML-файл, он содержит стан-
дартный заголовок, в котором указа-
ны используемая версия языка и ко-
дировка файла (см. рис. 1).
Обратите внимание, что все конфи-
гурационные файлы для Adobe Creative
Suite имеют кодировку UTF-8.
Мастер установки по родитель-
скому тегу <Deployment> определяет,
что это файл ответов. В нем находят-
ся два тега, логически разделяющие Рисунок 2. Запись файла ответов
файл на две части. В первом теге –
<Properties> – описываются параметры установки (папка, C:\Program Files\ADOBE CS3</Property>
...
в которой будет находиться CS3, название продукта и т. д.), </Properties>
во втором – <Payloads> – компоненты (Photoshop, Illustrator,
Indesign и т. д.). К часто используемым параметрам можно отнести сле-
дующие:
Тег <Properties> n INSTALLDIR. Путь установки Adobe CS3.
В теге <Properties> содержатся параметры установки прило- n OS64BIT. Принимает значение 0 или 1. Если операцион-
жения. Каждый из них описывается тегом <Property>, в ко- ная система 64-битная (OS64BIT=1), то наряду с 32-бит-
тором название конкретного параметра указывается с по- ной версией Photoshop устанавливается 64-битная.
мощью свойства name, а значение присваивается тради- n StartMenuSubFolder. GUID компонента AdobeMasterColl
ционным способом (см. листинг 1). ectionSuiteen_US_Volume, отображаемого в папке «Уста-
новка и удаление программ», как Adobe Creative Suite 3
Листинг 1. Управление параметрами установки CS3 Master Collection. По умолчанию в Windows XP путь
<Properties> C:\Document and Settings\All Users\Start Menu\Programs\
<Property name="INSTALLDIR"> ↵ Adobe Master Collection CS3.

№4, апрель 2009 21


При ее нажатии вместо установки
приложения будут сформированы два
файла: один для его инсталляции, вто-
рой – для деинсталляции. В обоих фай-
лах содержимое <Properties> идентич-
но, а <Payloads> отличается тем, что
значение в теге <action> с install ме-
няется на remove. Местоположение
файлов показано на последнем ша-
ге (см. рис. 3).

Использование файла
ответов
Файл для автоматического удаления
приложения используется достаточно
редко, поэтому его можно удалить. Уде-
лим особое внимание файлу, обеспе-
чивающему автоматическую установ-
ку пакета. Его имя произвольно, поэто-
му присвоим ему более короткое имя –
Рисунок 3. Местоположение файла ответов deployment.xml. Расположение файла
также не имеет значения. Для удобс-
n eula_EPIC_EULA_ACCEPTED. Всегда равен 1. Обоз- тва использования рекомендуется поместить его в один
начает, что пользователь ознакомился и согласен с ли- каталог с файлом setup.exe (см. рис. 4), обеспечивающим
цензионным соглашением. запуск мастера установки: --mode=Silent --deploymentFile=
n pers_EPIC_SERIAL. Серийный номер, хранящийся в за- Deployment.xml. Рекомендуется эту команду поместить в ко-
шифрованном виде. мандный файл, при этом необходимо помнить, что он дол-
жен запускаться с сетевого хранилища.
Тег <Payloads> Приведенный на рис. 4 листинг командного файла име-
В теге <Payloads> содержится список устанавливаемых ет особенности: поскольку установка выполняется в «ти-
приложений. Каждое из них идентифицируется двумя те- хом» режиме, то трудно понять, завершен процесс уста-
гами: <Payload>, описывающего приложение с помощью новки или нет. Воспользуемся свойством установки воз-
GUID, и <Action>, указывающего производимую с ним вращать код ошибки по завершении процесса и командой
манипуляцию (install, remove). Для инсталляции Adobe «Start / Wait», которая будет выводить CMD-консоль, пока
Photoshop СS3 (v. 10), которому соответствует GUID, рав- работа мастера не закончится. Команда pause позволит
ный {30C4B843-28DA-466F-AFCA-CB0ED153C826}, содер- увидеть код ошибки.
жимое тега <Payloads> описано в листинге 2.
Заключение
Листинг 2. Управление устанавливаемыми компонентами CS3 К сожалению, официальная документация [1] расходится
<Payloads> с действительностью, тому свидетельство – многочислен-
<Payload adobeCode = ↵ ные форумы на эту тему. Я надеюсь, что, прочитав статью,
"{30C4B843-28DA-466F-AFCA-CB0ED153C826}">
<Action>install</Action> на все вопросы по автоматической установке Adobe CS3
</Payload> вам удастся найти ответ.
...
</Payloads>
1. Enterprise Deployment Options for Adobe® Creative Suite 3
Editions and Components – http://www.adobe.com/support/
Создание файла ответов deployment/cs3_deployment.pdf.
Файл ответов можно создать вручную, однако наиболее оп-
тимальное решение – записать выполняемые действия мас-
тера установки в XML-файл. Для включения мастера в ре-
жиме записи необходимо выполнить команду «setup.exe
--record=1». Выполняемые действия ничем не будут отли-
чаться от обычной работы мастера: необходимо согласить-
ся с условиями лицензионного соглашения, затем ввести
серийный номер, сформировать список устанавливаемых
приложений, выбрать путь установки Adobe CS3. Исклю-
чение составляет последний шаг: вместо обычной кноп-
ки «Установить» будет отображена кнопка «[record] Уста-
новить» (см. рис. 2). Рисунок 4. Использование файла ответов при установке CS3

22
«10-Страйк» – незаменимые программы
для системных администраторов
«10-Страйк: Инвентаризация Компьютеров» – про- ратор сети может использовать собственные скрипты
грамма для учёта программного и аппаратного обеспе- в качестве проверок и даже контролировать различные
чения на компьютерах в локальных сетях. Администра- переменные в управляемых коммутаторах по протоко-
тор сети может легко создать базу данных оборудова- лу SNMP. Программа сигнализирует о неполадках с по-
ния и программ, установленных на компьютерах, чтобы мощью звука, экранных сообщений, по e-mail, может за-
всегда иметь под рукой эту важную информацию. пускать внешние программы и службы, а также перезаг-
ружать компьютеры для устранения неполадок.
Но это еще не всё. LANState
содержит развитые средства
администрирования удален-
ных компьютеров: включе-
ние и выключение компью-
теров, получение различ-
ной информации (списки
Нажав пару кнопок, администратор может создать отчё- программ, доступ к реестру,
ты с конфигурациями компьютеров, списками установ- event log и т. п.), рассылка со-
ленных программ, ОС, и лицензий к ним. В программу за- общений. Pro-версия программы имеет встроенный веб-
ложены десятки шаблонов отчётов, можно создать собс- сервер для удаленного доступа к карте сети.
твенные отчёты любой конфигурации, включая сводные
таблицы. «Инвентаризация Компьютеров» имеет раз- «10-Страйк: Мониторинг Сети» – следит за хостами се-
витые средства подсчёта и контроля лицензий програм- ти и оповещает о неполадках, как и LANState, но не име-
много обеспечения. ет графической карты и работает в виде службы.
При повторных проверках компьютеров программа срав-
нивает новую информацию с уже имеющимися данны- «10-Страйк: Схема Сети» – обнаруживает сетевые уст-
ми и заносит изменения в отдельный журнал. Таким об- ройства и строит карту-схему сети. Используя SNMP-
разом, можно легко увидеть, какие программы были до- протокол, программа сама нарисует связи между уст-
бавлены или удалены пользователями, какое железо бы- ройствами.
ло унесено домой.
Системный администратор имеет возможность просмат- 10-Strike Network File Search – позволяет искать фай-
ривать папки автозагрузки, списки процессов и служб лы в локальной сети (в сетевых папках и на FTP-серве-
на компьютерах пользователей, обнаруживать вредо- рах), в том числе в скрытых административных ресур-
носные программы. сах. Новая версия 1.6 под-
При планировании апгрейдов программа позволяет соз- держивает поиск фраз внут-
дать отчёты, содержащие списки компьютеров с недоста- ри файлов.
точным объемом дисковой или оперативной памяти. Pro-версия осуществляет
Сбор информации возможен как средствами WMI без ус- циклический мониторинг,
тановки дополнительных программ на удаленные ком- заносит найденные файлы
пьютеры (при наличии прав администратора), так и с по- в лог, может удалять най-
мощью вспомогательных программ и служб. Для более денные файлы (например,
тщательного анализа администратор может выгрузить вредоносные программы),
данные во внешнюю базу данных. а также содержит веб-сервер для просмотра списка най-
Таким образом, программа «10-Страйк: Инвентариза- денных файлов удаленными пользователями.
ция Компьютеров» позволяет администратору всегда
быть в курсе происходящего на подотчётных компьюте- 10-Strike Connection Monitor – программа мониторинга
рах, контролировать безопасность и лицензионную чис- подключений к общим папкам, позволяет узнать, кто, ког-
тоту программ, создавать отчёты. да и что скачивал. Программа ведет лог подключений
и оповещает администратора о различных событиях. Pro-
10-Strike LANState – программа мониторинга серверов версия программы реализована в виде службы.
и компьютеров в сети, позволяющая визуально наблю-
дать текущее состояние сети в любой момент времени. Дмитрий Степанов
Администратор может вовремя узнать о произошедшем
сбое (разрыв связи, завершение места на диске серве- ***
ра, останов службы, и т. п.) и устранить проблему с ми- Для всех программ доступны для скачивания
нимальными потерями времени. LANState отслеживает
состояние хостов, папок, файлов, баз данных, процессов
оценочные русскоязычные версии (под Windows)
и служб на компьютерах сети. Дополнительно админист- по адресу: http://www.10-strike.com/rus.
Реклама
Делегируем права на перемещение
учетных записей пользователей
в Active Directory
Часть 2. Реализация основных функций

Вадим Андросов

В этой части статьи на примере создания надстройки нестандартного делегирования


административных полномочий для Windows 2003 Server рассмотрим методики разработки
классов COM на языках сценариев (VBScript). Также подробно рассмотрим программный
доступ к спискам контроля доступа (ACL).
Главный класс надстройки
Итак, было решено разбивать процесс переноса пользова‑
телей на этапы: извлечение из целевого отдела, ожидание
принятия в целевой отдел, принятие в целевой отдел. Кро‑
ме того, важную роль играет еще один необязательный этап:
отмена перевода пользователя на этапе ожидания.
В соответствии с этими этапами и будем разрабаты‑
вать необходимые функции.
Предлагаемая надстройка является достаточно слож‑
ной, и в ходе ее реализации потребуется разработать ряд
функций. Этим подпрограммам понадобятся общие дан‑
ные (например, объект пользователя – менеджера по пер‑
соналу).
Одно из решений – использовать глобальные перемен‑
ные, однако разрабатывается библиотека базовых функ‑
ций, которые будут использоваться в надстройке. Способ
их использования пока до конца не ясен, поэтому реали‑
зовывать библиотечные функции, зависящие от контекс‑ Рисунок 1. Подключение библиотеки типов в VBA
та, опасно.
Так, потребуется создать функцию инициализации кон‑ ся с необходимостью использования большого количест‑
текста, а потом не забыть ее вызвать. Также не исключена ва констант ADSI. Раньше, когда их требовалось 2‑3 шту‑
ситуация, что могут потребоваться функции, работающие ки, особой проблемы не было. Достаточно было найти
на основе разных контекстов. в MSDN [1] значения этих констант и заново объявить их
Чтобы прочно и относительно безопасно связать функ‑ в сценарии в виде:
ции с глобальным по отношению к ним контекстом, нужно
оформить библиотеку в виде класса. В этом случае мож‑ Const ADS_RIGHT_DS_DELETE_CHILD = 2
но создавать и затем спокойно использовать любое коли‑
чество его объектов. Назвав их таким же образом, как это было сдела‑
Подробно процесс оформления и регистрации сцена‑ но в стандартных библиотеках, можно было без проблем
риев в виде COM‑классов описан в [3]. пользоваться примерами программ из документации. Од‑
Так будет выглядеть общий каркас разрабатываемо‑ нако такое переопределение стандартных констант явля‑
го класса: ется очень опасной практикой.
Существуют более цивилизованные методы решения
Листинг 1. Каркас класса UserMove.Engine этой проблемы. В VBA это делалось посредством подклю‑
<?xml version="1.0"?> чения необходимой библиотеки (см. рис. 1). Для ADSI она
<component> называется Active DS Type Library.
<registration
description="User moving routines" После этой операции можно пользоваться всеми кон‑
progid="UserMove.Engine" стантами ADSI, не объявляя их самостоятельно. То же са‑
version="1.00"
classid="{5452eeea-6f5e-42e0-b6ce-b99184ea0f68}" мое можно сделать и в сценариях WSH с помощью тега
> reference. Только он требует указания не имени библиоте‑
</registration>
<public> ки, а ее идентификатора (GUID), который можно получить,
‘методы, доступные пользователям класса используя специальные утилиты. Например, для этого мож‑
</public>
<reference guid="{97D25DB0-0363-11CF-ABC4-02608C9E7553}"/> но воспользоваться программой Microsoft OLE/COM Object
<object id="info" progid="ADSystemInfo"/> Viewer, которая поставлялась в комплекте еще с Visual
<script language="VBScript">
<![CDATA[ Studio версии 6 (см. рис. 2).
‘объявление глобальных переменных (контекста объекта) Теперь в сценарии также можно пользоваться констан‑
‘вызовы процедур инициализации объекта
‘реализация методов тами, определенными в библиотеке. Например, следующая
]]> строчка кода приведет к выводу на экран числа 2.
</script>
</component>
msgbox ADS_RIGHT_DS_DELETE_CHILD
Все методы, разрабатываемые в статье, будут поме‑
щаться в этот класс. Возможно и другое безопасное ре‑ Также интерес представляет тег:
шение – отказаться от контекста вовсе и передавать все
необходимое функции в виде параметров. Однако в этом <object id="info" progid="ADSystemInfo"/>
случае практически все функции требовали бы большого
количества параметров, что отрицательно сказалось бы С его помощью объявляется и инициализируется
на читабельности кода. глобальная переменная info класса ADSystemInfo. Того
Для начала обратим внимание на тег <reference же эффекта можно было бы достичь, написав в разделе
guid="…"/>. Начав разрабатывать функции, я столкнул‑ CDATA:

№4, апрель 2009 25


ницы в другую. Дело в том, что в объ‑
екте хранится ссылка на контейнер,
и нужно иметь право на ее измене‑
ние. Право на запись всех свойств
пользователей является явно избы‑
точным для операции переноса, одна‑
ко вполне оправдано для других опе‑
раций, которые входят в обязанности
менеджера по персоналу. Поэтому я
решил не искать здесь более «тонко‑
го» способа наделения полномочиями
(см. рис. 4).

Поскольку требуется написать под‑


программу проверки наличия прав ра‑
боты с несколькими типами объектов,
Рисунок 2. Получение GUID библиотеки их удобно сгруппировать в один мас‑
сив. Инициализироваться он будет
Dim info один раз при создании экземпляра класса надстройки.
Set info = CreateObject("ADSystemInfo")
Рассмотрим метод, который это делает.

Запись в виде тега позволяет наглядно и относительно Листинг 3. Метод инициализации основного класса надстройки
компактно определить глобально используемые объекты. sub initialize()
Ее преимущества проявляются разве что в случае исполь‑ timeZoneOffset = "?"
set re = new Regexp
зования различных языков сценариев при создании одно‑ re.ignoreCase = True
го класса, когда всем им необходим доступ к одной пере‑ re.global = True
delegationClasses = Array(getClassGUID("user"), ↵
менной. Здесь я использовал ее исключительно в иллюст‑ getClassGUID(COMMAND_CLASS), ↵
ративных целях, чтобы показать, что так тоже можно. getClassGUID(DENY_COMMAND_CLASS), ↵
getClassGUID(START_MOVE_COMMAND_CLASS))
end sub
Общие подпрограммы
Начнем с функции, которая будет отвечать на вопрос, а име‑ Итак, можно видеть, что массив, содержащий классы
ет ли текущий пользователь (предполагаемый менеджер для проверки, называется delegationClasses. Также в этом
по персоналу) права на манипуляции необходимыми объ‑ методе инициализируется ряд вспомогательных перемен‑
ектами. Такие проверки придется делать достаточно час‑ ных, используемых в других методах класса. Конечно, все
то, чтобы выбрать правильный режим функционирования они должны быть объявлены выше.
надстройки.
Для начала определимся, что это за необходимые объ‑ dim timeZoneOffset, re, delegationClasses
екты. Для нашей надстройки это экземпляры классов поль‑
зователь (user), команда (UserMoveCommand), команда от‑ Затем нужно не забыть вручную вызвать метод иници‑
мены операции (UserMoveDenyCommand) и команда нача‑ ализации, потому что автоматически этого, к сожалению,
ла перемещения (UserMoveStartMoveCommand). не происходит.
Чтобы избежать трудноуловимых ошибок, имена всех
классов запишем в соответствующие константы. Initialize

Листинг 2. Константы названий классов надстройки Этот вызов просто записывается выше всех объяв‑
Const ROOM_CLASS = "UserMoveWaitingRoom" лений функций. В массиве хранятся идентификаторы
Const START_MOVE_COMMAND_CLASS = "UserMoveStartMoveCommand" классов, так как при анализе списка контроля доступа
Const DENY_COMMAND_CLASS = "UserMoveDenyCommand"
Const COMMAND_CLASS = "UserMoveCommand" необходимы будут именно они. GUID класса пользовате‑
Const CHAIR_CLASS = "UserMoveChair" ля можно найти в MSDN [1]: {BF967ABA‑0DE6‑11D0‑A285‑
Const LINK_CLASS = "UserMoveChairLink"
00AA003049E2}.
Во‑первых, пользователь должен иметь права на до‑ Но для наших классов его там, естественно, нет. При‑
бавление и удаление пользователей из организационной чем это не тот идентификатор, который генерировал‑
единицы. Как выяснилось, для этого необходимо разре‑ ся при создании классов [4]. Для получения GUID класса
шение: по его имени пришлось написать специальную функцию.
n Добавлять и удалять дочерние объекты перечисленных Рассмотрим ее.
типов в организационную единицу (см. рис. 3).
n Право записи свойств объектов. Наличия только преды‑ Листинг 4. Определение GUID класса
дущего набора прав не достаточно для переноса объ‑ function getClassGUID(className)
ектов пользователей из одной организационной еди‑ dim classObj

26
set classObj = getObject("LDAP://schema/" & className) ли, что порядок полученных байт в результате немного
getClassGUID = GUID2Str(classObj.schemaIDGUID)
end function меняется.
Получаемая строка состоит из 4‑х групп. В первую вхо‑
Функция подключается к объекту заданного класса, ис‑ дят первые четыре байта исходной строки в обратном по‑
пользуя провайдер LDAP. Например, путь к классу поль‑ рядке, во вторую – 5‑й и 6‑й байты тоже в обратном (в про‑
зователя имеет вид LDAP://schema/user. Желанный иден‑ грамме это 4‑й и 5‑й элементы массива, поскольку нуме‑
тификатор хранится в свойстве schemaIDGUID получен‑ рация начинается с нуля), затем еще два байта в обратном
ного объекта. Однако он имеет тип Octet String, который порядке, далее два байта в прямом порядке и, наконец,
в VBScript не поддерживается. Для его преобразования последние 6 снова в прямом. Группы должны быть разде‑
в обычную строку используется функция GUID2Str. Рас‑ лены дефисами. Весь идентификатор заключается в фи‑
смотрим теперь ее. гурные скобки.
Несмотря на способ написания и внешний вид, функ‑
Листинг 5. Преобразование Octet String к обычной строке ция корректно работает. Полученные с ее помощью иден‑
Function GUID2Str(Guid) тификаторы дополнительных классов без проблем воспри‑
Dim i, b(16) нимались системой.
For i = 1 To 16
b(i - 1) = Right("0" & Hex(Ascb(Midb(Guid, i, 1))), 2) Переменная re будет использоваться для работы с ре‑
Next гулярными выражениями, а timeZoneOffset – содержать
GUID2Str = "{" & b(3) & b(2) & b(1) & b(0) & ↵
"-" & b(5) & b(4) & ↵ смещение временной зоны для текущего часового пояса.
"-" & b(7) & b(6) & "-" & b(8) & b(9) & "-" Но это потом, а сейчас перейдем к методу проверки пол‑
for i = 10 to 15
GUID2Str = GUID2Str & b(i) номочий.
next
GUID2Str = GUID2Str & "}"
End Function Листинг 6. Проверка прав управления подразделением

function canHeManageOU(ou, user)


Функция выглядит сумбурно, потому что писалась «ме‑ dim canChange, canMoveChild, i
canHeManageOU = true
тодом тыка». С помощью первого цикла строка Octet String
превращается в массив байт b. Для этого с помощью функ‑ for i = 0 to UBound(delegationClasses)
canChange = canDo(ou, user, ↵
ции Midb из нее выделяется один байт в заданном мес‑ ADS_RIGHT_DS_WRITE_PROP, delegationClasses(i), true)
те, который потом преобразуется в число функцией Ascb canMoveChild = canDo(ou, user, ↵
ADS_RIGHT_DS_DELETE_CHILD Or ↵
(возвращает первый байт переданного ей символа). Полу‑ ADS_RIGHT_DS_CREATE_CHILD, ↵
ченное число переводится в шестнадцатеричный формат delegationClasses(i), false)
canHeManageOU = canHeManageOU and ↵
(функция Hex), которому в начало добавляется 0. Послед‑ (canChange And canMoveChild)
нее нужно потому, что каждый байт должен представлять‑ next
ся двузначным шестнадцатеричным числом (1A, FF, D5). end function
Поэтому когда получилось, скажем, F, то ему в начало до‑
бавляется 0. Если число сразу было двузначным, то ноль Функции передается два параметра – объекты «Органи‑
станет третьим лишним символом, который будет отсечен зационная единица» и пользователя, права которого про‑
с помощью функции right. веряются. Функция очень простая, поскольку вся реальная
Эксперименты с системными классами (для которых работа сосредоточена в более низкоуровневых подпрограм‑
мне был известен правильный идентификатор) показа‑ мах, которые будут рассмотрены позже.

Рисунок 4. Право изменения свойств


Рисунок 3. Права на создание дочерних объектов пользователей объектов пользователей

№4, апрель 2009 27


Вся работа метода сводится к последовательной про‑ Подробно рассмотрим работу функции canDo. Ей пере‑
верке необходимых прав для всех объектов массива дается три параметра:
delegationClasses посредством вызовов функции canDo. n oper. Проверяемая операция. То есть то действие, воз‑
Сначала проверяется возможность изменения свойств можность выполнения которого требуется проверить.
объектов (константа ADS_RIGHT_DS_WRITE_PROP), а за‑ Для обозначения действий используются константы
тем – добавления и удаления пользователей из контейне‑ из библиотеки Active DS Type Library.
ра (комбинация констант ADS_RIGHT_DS_DELETE_CHILD n targetClass. Идентификатор целевого класса, допусти‑
и ADS_RIGHT_DS_CREATE_CHILD). То есть всю полезную мость работы с объектами которого проверяется.
работу выполняет функция canDo. Она является вспомога‑ n isInherited. Параметр логического типа. Запись конт‑
тельной и в качестве открытого метода класса не использу‑ роля доступа может описывать как разрешения, отно‑
ется в отличие от canHeManagePath. Чтобы сделать его до‑ сящиеся непосредственно к объекту, к которому при‑
ступным пользователям класса, нужно добавить его в раз‑ креплен ACL, так и его непосредственным потомкам.
дел public описания (см. листинг 1). Разрешение на добавление и удаление пользовате‑
лей из организационной единицы, это относится к кон‑
<method name="canHeManagePath"> тейнеру, поэтому значение этого параметра будет ис‑
<PARAMETER name="ouPath"/>
<PARAMETER name="whoPath"/> тинно. В то же время право на изменение свойств вло‑
</method> женных объектов уже относится скорее к ним, чем
к организационной единице. В этом случае значение –
Метод представляет собой простую обертку для функ‑ ложь. На что влияет параметр, станет понятно из реа‑
ции canHeManageOU (см. листинг 6), которая получа‑ лизации.
ет в качестве параметров не сами объекты, а пути к ним
(ADSI Path). function canDo(oper, targetClass, isInherited)
canDo = false
Dim sec, acl, ace
Листинг 7. Проверка наличия прав управления организационной
единицей
В начале работы функция осуществляет привязку к спис‑
function canHeManagePath(ouPath, whoPath) ку контроля доступа организационной единицы. Для этого
dim ou, user
set ou = getObject(ouPath) нужно сначала подключиться к объекту ntSecurityDescriptor
set user = getObject(whoPath) организационной единицы, а затем уже с его помощью по‑
canHeManagePath = canHeManageOU(ou, user)
end function лучить список DiscretionaryAcl.

В подпрограмме создаются экземпляры необходимых Set sec = ou.Get("ntSecurityDescriptor")


Set acl = sec.DiscretionaryAcl
объектов и вызывается canHeManageOU. Также в классе dim result
определено еще два метода‑обертки для canHeManageOU,
позволяющих проверять права доступа к организационной Затем нужно проверить все записи (ace) списка. Удоб‑
единице текущего пользователя. нее всего это делать с помощью оператора цикла For
Each, основное предназначение которого как раз обход
Листинг 8. Дополнительные функции проверки прав коллекций.
function canCurrentManagePath(ouPath) Проверка каждой записи осуществляется с помощью
dim ou функции checkACE, которая возвращает одну из трех кон‑
set ou = getObject(ouPath)
canCurrentManagePath = canCurrentManageOU(ou) стант (эти константы определяются в классе, их конкрет‑
end function ные значения могут быть любыми, лишь бы разными, у ме‑
function canCurrentManageOU(ou) ня это было 1, 2 и 3):
dim user n CHECK_ACE_SKIP. Проверенная запись контроля дос‑
set user = getObject("LDAP://" & info.userName)
canCurrentManageOU = canHeManageOU(ou, user) тупа не относится ни к проверяемому пользователю,
end function ни к содержащей его группе. Или же запись относит‑
ся к нужному пользователю, но управляет несущест‑
Здесь info – глобальный объект типа ADSystemInfo (см. лис- венными в данном контексте правами, то есть не соот‑
тинг 1). Его свойство username содержит путь к объекту те‑ ветствующими параметру oper. Такие записи при про‑
кущего пользователя. верке игнорируются.
Далее перейдем к реализации функций для работы n CHECK_ACE_YES. Запись относится к проверяемо‑
с ACL. Список контроля доступа (Access Control List) со‑ му пользователю и разрешает действие, заданное
поставлен каждому объекту Active Directory, он состоит в oper.
из набора записей (Access Control Entry или ACE), кото‑ n CHECK_ACE_NO. Запись относится к проверяемо‑
рые собственно и определяют уровень доступа пользова‑ му пользователю и запрещает действие, заданное
теля или группы к ресурсу. Эта тема достаточно обширна, в oper.
при необходимости получить дополнительную информа‑
цию можно из соответствующих источников [1, 2]. Windows Встретив разрешение или запрет операции, функция
предоставляет графические средства редактирования ACL сразу завершает работу, возвращая соответствующий ре‑
(см. рис. 3). зультат. Дальше проверять список нет необходимости. Опе‑

28
рационной системой гарантируется, что запись о явном за‑ торому относится запись. Функция продолжает работу
прете встретится раньше разрешения. Так что, встретив за‑ только в том случае, если это или пользователь, права ко‑
пись с разрешением, можно быть уверенным, что далее за‑ торого сейчас проверяются, или группа, содержащая это‑
писи с запретом этой же операции уже не будет. го пользователя.
В противном случае функция возвращает константу
For Each ace In acl CHECK_ACE_SKIP, извещающую о том, что текущую за‑
result = checkACE(ace, oper, targetClass, isInherited)
пись нужно пропустить.
if result <> CHECK_ACE_SKIP then
canDo = (result = CHECK_ACE_YES)
exit function dim classGUID
end if if isInherited then
classGUID = ace.InheritedObjectType
Next else
end function classGUID = ace.ObjectType
end if

Функция checkACE в качестве первого параметра при‑ Затем в зависимости от значения параметра isInherited
нимает проверяемую запись списка контроля доступа, ос‑ определяется объект доступа. Это или дочерние объекты
тальные параметры передаются от canDo. (используется при проверке прав на добавление и удале‑
Приведенная функция также не относится к самому ние объектов пользователей в организационной единице),
низкому уровню реализации, она использует подпрограм‑ или текущий объект (проверка возможности изменения
му проверки записи контроля доступа checkACE. Рассмот‑ свойств пользователей).
рим теперь и эту функцию. Объект доступа в данном случае – это идентификатор
Логика ее работы и возвращаемые значения уже бы‑ класса, права на манипуляции экземплярами которого пре‑
ли описаны выше, поэтому расскажу об особенностях ре‑ доставляются.
ализации.
if isMask(ace.accessMask, oper) then
function checkACE(ace, oper, targetClass, isInherited)
checkACE = CHECK_ACE_SKIP
if not isTrusteeInteresting(ace.Trustee) then exit function Дальнейшая работа будет выполнена только в том слу‑
чае, если текущая запись контроля доступа описывает про‑
Сначала функция проверяет свойство Trustee записи веряемые права. Нужно убедиться с помощью функции
контроля доступа. Оно определяет субъект доступа, к ко‑ isMask, работа которой будет рассмотрена ниже, что за‑

Реклама

№4, апрель 2009 29


пись содержит информацию о необходимой операции (па‑ Однако сначала нужно убедиться, что запись содер‑
раметр функции oper). жит в поле trustee объект, относящийся к проверяемому
домену. Дело в том, что кроме записей для пользователей
if ace.AceType = ADS_ACETYPE_ACCESS_DENIED then и групп существуют специальные экземпляры, описываю‑
checkACE = CHECK_ACE_NO
exit function щие доступ для различных системных объектов (например,
end if NT AUTHORITY\ENTERPRISE DOMAIN CONTROLLERS),
if ace.AceType = _ которые при решении текущей задачи нужно пропускать.
ADS_ACETYPE_ACCESS_ALLOWED then Функция завершает работу и возвращает ложь (это зна‑
checkACE = CHECK_ACE_YES
exit function чит, что текущая запись «не интересна»), если в значении
end if Trustee не содержится имени домена.

Далее проверяем, что целевой объект представляет со‑ set trusteeObj = getObject("WinNT://" & ↵
replace(trustee, "\", "/"))
бой интересующий нас класс (его идентификатор переда‑
ется в качестве параметра функции). Затем происходит привязка к объекту Trustee. Обрати‑
те внимание, здесь я использую провайдер WinNT. Он ме‑
if classGUID = targetClass then нее функционален, чем LDAP, однако в данном случае бо‑
if ace.AceType = _
ADS_ACETYPE_ACCESS_DENIED_OBJECT then лее удобен, так как позволяет привязываться к объектам,
checkACE = CHECK_ACE_NO игнорируя их положение в структуре предприятия. В на‑
exit function
end if личии имеется только имя Trustee в домене. Чтобы вос‑
пользоваться провайдером LDAP потребовалось бы сна‑
if ace.AceType = _
ADS_ACETYPE_ACCESS_ALLOWED_OBJECT then чала произвести поиск объекта в иерархии, чтобы устано‑
checkACE = CHECK_ACE_YES вить его отличительное имя (DN), что в данной ситуации
exit function
end if обернулось бы только неоправданным разрастанием ко‑
да. Функция replace требуется здесь для того, чтобы при‑
end if
end if вести имя Trustee к виду, пригодному для привязки с по‑
end function мощью провайдера WinNT. Собственно оно почти подхо‑
дит, за исключением того, что нужно заменить обратный
Основная логика работы уже рассмотрена, осталось слеш на прямой.
только несколько вспомогательных функций. isMask –
функция логического типа, возвращает истину, если в по‑ if trusteeObj.class = "Group" then
ле (первый параметр) установлен заданный флаг (второй
параметр): Далее, если Trustee – группа (еще это может быть прос‑
то другой пользователь), нужно проверить с помощью ме‑
function isMask(mask, flag) тода isMember принадлежит ли ей текущий пользователь,
isMask = (mask and flag) <> 0
end function если принадлежит, то функция возвращает истину.

Рассмотрим последнюю вспомогательную функцию – if trusteeObj.isMember("WinNT://" & ↵


info.domainShortName & "/" & ↵
isTrusteeInteresting. Она возвращает истину, если субъект user.samAccountName) then
доступа записи контроля доступа относится к проверяе‑ isTrusteeInteresting = true
exit function
мому пользователю. end if
end if
function isTrusteeInteresting(trustee) end function
isTrusteeInteresting = false
Итак, в этой части статьи были рассмотрены вопросы
if trustee = (info.domainShortName & "\" & ↵ создания класса COM на языке программирования сценари‑
user.samAccountName) then
isTrusteeInteresting = true ев. Также были освещены базовые аспекты работы со спис‑
exit function ками контроля доступа. В следующей статье будет продол‑
end if
жена разработка надстройки. Будет реализована програм‑
Пользователь содержится в поле trustee записи конт‑ мная модификация списков контроля доступа и автомати‑
роля доступа в виде «ДОМЕН\ПОЛЬЗОВАТЕЛЬ». Провер‑ ческое делегирование полномочий.
ку этого случая и осуществляет первый условный опера‑
тор. Если пользователь совпал с проверяемым, функция 1. msdn.microsoft.com.
завершает работу, возвращая истину. 2. Чарли Рассел, Шарон Кроуфорд, Джейсон Джеренд. «Windows
Однако одной такой проверки недостаточно: запись мо‑ server 2003 +SP1 и R2. Справочник администратора». – М.: Из‑
жет относиться не только к пользователю, но и к содержа‑ дательство «ЭКОМ», 2006 г. – 1424 с.
щей его группе. 3. Don Jones, Jefferey Hicks. «Advanced VBScript for Microsoft
Windows Administrators». – Washington: Microsoft Press, 2006 г.
dim trusteeObj 4. Андросов В. Делегируем права на перемещение учетных за‑
if instr(1, Trustee, ↵
info.domainShortName) <> 1 then exit function писей пользователей в Active Directory. Часть 1. Постановка
задачи. //Системный администратор, №2, 2009 г. – С. 16‑21.

30
Синхронизируем данные
между компьютерами
с помощью сервисов
сетевого хранения

Виталий Банковский
С появлением недорогих лаптопов и тем более ультрадешевых неттопов эти «создания»
начали плодиться во всех местах моего обитания – дома, в офисе, на даче, диване и так далее.
И тогда начались проблемы с синхронизацией данных между компьютерами. Знакомо?

И
вот тогда, чтобы окончательно Начало работы пользуемся богатыми возможностями
не сойти с ума с синхронизаци- Стоит отметить легкость установки семейства Linux, а именно – програм-
ей данных на всех этих устрой- клиента DropBox даже на Linux-подоб- мой cryptfs. Эта программа позволяет
ствах, я задался вопросом, как хранить ных системах. Для того чтобы начать прозрачно шифровать каталоги, при-
на каждом из них актуальную копию использовать систему, нужно проде- чем зашифрованные файлы и катало-
моих данных. Хранение данных на од- лать всего несколько шагов: ги также представлены в виде файлов
ном сервере или постоянное копирова- n Зарегистрироваться на сайте http:// и каталогов.
ние данных с помощью rsync я отмел drivebox.com. Итак, приступим. В папке ~/.Dropbox/
как неудобное и, как следствие, нера- n Скачать и установить, следуя инс- создаем каталог Private, куда будут
ботающее решение. трукциям на сайте поставщика, размещаться наши уже зашифрован-
Немного побродив по Интернету, клиентское программное обеспе- ные данные. Также создаем каталог,
я обнаружил, что шустрые предпри- чение, предварительно получив его например, ~/Dropbox.Open, куда мы бу-
ниматели мира сего уже пришли мне с вышеуказанного сайта. дем размещать наши файлы в откры-
на помощь с тремя наиболее интерес- n Перезапустить менеджер файлов том виде. Затем монтируем каталог
ными продуктами: Nautilius. ~/Dropbox/Private на каталог ~/Dropbox.
n DriveBox; Open с помощью программы encfs:
n LiveDrive; При этом в домашней папке поль-
n SkyDrive. зователя появится каталог .DriveBox, encfs ~/.Dropbox/Private ↵
~/Dropbox.Open
в который и нужно размещать файлы
Краткие сравнительные характе- для их синхронизации с другими ком- Если такая процедура происхо-
ристики смотрите в таблице. пьютерами. дит в первый раз, то будет задан воп-
Увы, я не смог дать 5 баллов сер- рос по выбору глубины шифрования,
вису DropBox по причине отсутствия Безопасность и также будет предложено задать па-
асимметричного шифрования. Как я уже говорил, при стандартном роль для шифрования данных. Анало-
Будучи заядлым пользователем использовании наши данные попада- гично повторяем процедуры установ-
операционной системы Linux, я похо- ют на сервис DropBox и уже там шиф- ки и монтирования на всех остальных
ронил для себя LiveDrive и SkyDrive руются. Конечно, при таком способе компьютерах, которые должны содер-
и приступил к использованию про- хранения есть вероятность сбоя сер- жать синхронизированные данные.
граммы DropBox. виса, и данные могут быть доступ-
В начале эксплуатации я также пос- ны другим пользователям, не говоря Использование
тавил себе задачу, чтобы на сервис уже о ситуациях, когда данные с сер- зашифрованных данных
хранения данных мои файлы отправ- виса воруют хакеры или инсайдеры. Для того чтобы программы на разных
лялись в зашифрованном виде. Для устранения этого недостатка вос- компьютерах использовали данные

№4, апрель 2009 31


из сетевого хранилища, необходимо перенести файлы этих Сравнение сервисов сетевого хранения
программ в папку ~/Dropbox.Open. Например, для синхро- DropBox LiveDrive SkyDrive
низации системы мгновенных сообщений licq мы перено- Windows Да Да Да
сим папку ~/.licq в каталог ~/Dropbox.Open и создаем сим- Linux Да Нет Нет
волическую ссылку:
MacOS Да Нет Нет

mv ~/.licq ~/Dropbox.Open/ Шифрование между клиентом и сервисов Да Да Да


ln -s ~/Dropbox.Open/.licq ~/.licq Шифрование данных на стороне сервиса Да Нет Нет данных

Аналогично поступаем и с остальными нашими про- Субьективная оценка сервиса 4 0 0


граммами.
n RVM.
Повышаем безопасность
Будучи системным администратором, я все-таки побоял- Эти библиотеки доступны по адресу ftp://ftp.coda.cs.cmu.
ся расположить наиболее критичные данные на публич- edu/pub/coda/linux/src и устанавливаются стандартным спо-
ном сервере, пусть даже и в зашифрованном виде. При- собом, последовательно выполняя три команды:
чин для этого несколько:
n Так как на сервере будут хранится файлы стандартных ./configure
make
программ, то злоумышленнику будет проще взломать make installing
пароль, если он возьмет зашифрованный файл с сер-
виса DropBox и незашифрованный стандартный файл,
используемый в одной из наших программ. Включение поддержки Coda в ядре системы Linux
n Сохранность данных. Если сотрудники вашей компании Модуль поддержки файловой системы Coda входит в стан-
пользуются таким сервисом, то невозможно централи- дартное ядро Linux, включение которого находится в раз-
зованно управлять созданием архивных данных поль- деле File systems, Network filesystem. На момент написания
зователей. статьи я использовал ядро Linux версии 2.6.24.2 на клиен-
n Политика безопасности многих компаний запрещает те и 2.6.22.12 на сервере. После включения поддержки не-
размещать важные данные в каком-либо виде на сер- обходимо загрузить модуль в ядро или перегрузить сервер,
верах сторонних компаний. если этот модуль «coda» вкомпилирован в новое ядро.

При наличии «собственного» защищенного сервера Установка и настройка демона Coda


и канала VPN для подключения к этому серверу можно ис- Как обычно, получаем исходные коды демона Coda по ад-
пользовать кеширующую файловую систему Coda. ресу ftp://ftp.coda.cs.cmu.edu/pub/coda/linux/src, компилиру-
Coda использует локальный кеш для доступа к данным, ем и устанавливаем:
когда сетевое подключение к серверу потеряно, при этом
сохраняя список изменений в локальных файлах. Когда со- tar -xzvf coda-x.x.x.tar.gz
cd coda-x.x.x
единение восстановлено, локальный клиент Coda синхро- ./configure
низирует локальные данные с сервером. make
make install
С программой можно ознакомиться на домашней стра-
нице проекта по адресу http://www.coda.cs.cmu.edu, а теперь На момент написания статьи была использована вер-
мы сосредоточимся на процедурах установки, настройки сия 6.9.4 демона Coda.
и использования. Далее нам необходимо настроить серверную часть про-
На своих рабочих компьютерах я использую Debian, тог- граммы Coda. Для этого в состав программы входит ути-
да как мой «собственный» сервер с Coda работает под дис- лита vice-setup, которая при запуске задаст несколько воп-
трибутивом CentOS, поэтому описание процедуры установ- росов:
ки и настройки будет ориентировано на эти дистрибутивы. Путь, где программа Coda будет хранить свои рабо-
При таком «зоопарке» мне пришлось обратится к установ- чие файлы:
ке программы Coda из исходных кодов.
What is the root directory for your coda server(s)? [/vice]

Процедура установки программы Coda Является ли данный сервер главным сервером. Про-
Программа Coda состоит из трех подсистем: грамма Coda поддерживает многосерверную конфигура-
n серверная часть; цию в режиме репликации:
n клиентская часть; Is this the master server, aka the SCM machine? (y/n) y
n поддержка в ядре на сервере и клиенте.
Настройка идентификации для коммуникации меж-
Установка и настройка серверной части ду несколькими серверами Coda и между клиентом Coda
Предварительно получаем и устанавливаем следующие и сервером:
библиотеки: Пароль для идентификации между серверами Coda:
n LWP;
n RPC2; Enter a random token for update authentication : **********

32
Пароль, который должны указывать клиенты для иден- Далее необходимо настроить и подключиться к серверу
тификации на сервисе Coda: с сервисом Coda с помощью утилиты venus-setup:
Enter a random token for auth2 authentication : ***********
venus-setup servername.domain.com
Пароль, который нужно использовать при работе с ути-
литой volutil. Эта утилита с помощью вызовов RPC позволя- где servername.domain.com – имя сервера или IP-адрес сер-
ет удаленно работать с томами файловой системы Coda. вера, где мы установили сервис Coda. При запуске програм-
мы будут заданы два вопроса:
Enter a random token for volutil authentication : **********
Имя сервера, которое мы уже указали в качества пара-
Так как я являлся единственным пользователем, то ис- метра для утилиты venus-setup:
пользовал один и тот же пароль для всех трех подсистем
Default realm for authentication:
идентификации. Подробнее о системе репликаций файло-
вой системы Coda и об управлении томами можно прочи- Размер локального кэша (эквивалентен размеру хра-
тать на домашней странице проекта по адресу http://www. нимых на сервере данных) в килобайтах:
coda.cs.cmu.edu.
Amount of diskspace used for caching:
Идентификатор данного сервера Coda, произвольное
между 0 и 255, исключая 0,127 и 255. Я использовал 100. По завершении работы этой утилиты можно увидеть
следующее сообщение:
Enter an id for the SCM server. (hostname server.domain.com)
22:25:17 Mounting root volume...
The serverid is a unique number between 0 and 255.
You should avoid 0, 127, and 255. 22:25:17 Venus starting...
serverid: 100
22:25:17 /coda now mounted.
Создание учетной записи администратора Coda. Нуж-
но указать ID и имя учетной записи пользователя, который Это значит, что файловая система Coda успешно смон-
уже существует в системе: тирована в каталог /coda. Но перед началом работы необ-
ходимо пройти идентификацию на сервере, чтобы мы мог-
Enter the uid of this user: 1000
Enter the username of this user: cooluser ли записывать в этот каталог. Для этого существует утили-
та clog, которая запускается следующим образом:
Указание имени файла, где будут храниться лог-фай-
лы. Coda поддерживает разделы raw на системах хране- clog username
ния и обычные файлы на файловой системе.
где username – имя учетной записи пользователя службы
What will be your log file (or partition)? /home/coda/log
Coda на сервере Coda. При этом будет запрошен пароль,
Задание файла, где будут храниться данные: причем нужно использовать тот же пароль, который был за-
дан при настройке программы Coda на сервере:
Where is your data file (or partition)? /home/coda/data
Enter a random token for auth2 authentication:
Далее будут заданы вопросы про размер данных и мак-
симального количества файлов, затем утилита завершит Если все было сделано правильно, то наше хранилище
настройки и запустит серверные подсистемы программы на сервере будет смонтировано в каталог /coda/servername.
Coda. domain.com/. В этот каталог и нужно записывать наши дан-
Если все нормально было установлено и настроено, ные, которые должны быть синхронизированы между ком-
то мы должны получить сообщение об успешной установ- пьютерами.
ке и запуске серверной части программы Coda: Также существует возможность использования клиента
Coda для семейства операционных систем Windows XP, NT,
That seems to have worked...
используя среду Cygwin. Более подробно об этом можно по-
If you have a working Coda client you should now be able to читать по адресу http://www.coda.cs.cmu.edu/windowsnt.html.
access the new Coda realm
У меня не было возможности рассказать об этом подроб-
нее по причине «финальной кончины» Windows XP на мо-
- cfs lv /coda/servername.domain.com/ ем компьютере.
В этой статье я показал два подхода к синхронизации дан-
ных между несколькими компьютерами, и вам решать, какой
enjoy Coda.
из вариантов наиболее подходит в вашей ситуации.
for more information see http://www.coda.cs.cmu.edu.
1. http://www.coda.cs.cmu.edu.
Установка и настройка программы Coda 2. http://en.wikipedia.org/wiki/Coda_(file_system).
на клиентском компьютере 3. http://dropbox.com.
Аналогично устанавливаем библиотеки LWP, RPC2, RVM, 4. http://skydrive.com.
программу Coda, включаем поддержку файловой систе- 5. http://www.livedrive.com.
мы Coda в ядре. 6. http://www.coda.cs.cmu.edu/windowsnt.html.

№4, апрель 2009 33


PowerShell. Определяем имя текущего домена

Иван Коробко
При подключении к каталогу Active Directory первый шаг – определение имени текущего
домена. Для этого используется виртуальный объект RootDSE.

P
owerShell позиционируется компанией Microsoft лом, доступных пространствах имен, поддерживаемой вер-
как скриптовый язык, поддерживающий библиоте- сии LDAP и др. Первоначально объект RootDSE был опре-
ки .Net Framewok и призванный заменить существую- делен в RFC 2251 [1] как часть спецификации LDAP вер-
щие VBScript и JScript. Принципиальное отличие PowerShell сии 3.
от своих предшественников – поддержка объектно-ориен- Для подключения к RootDSE используется бессервер-
тированного программирования. ное подключение. Чтобы определить имя домена, исполь-
Знакомые с управлением Active Directory знают, что на зуется локатор контроллера домена, который находится
VBScript или JScript доступ к каталогу Active Directory на каждом контроллере. Доступ к объекту осуществляет-
осуществляется с помощью ADODB, а при использо- ся анонимно.
вании .Net Framework – с помощью библиотеки System.
DirectoryServices. Определение имени текущего домена
Поскольку PowerShell в первую очередь ориентирован На практике виртуальный каталог RootDSE используется
на работу с .NET Framework, то администраторам придет- для определения имени текущего домена, а также косвен-
ся узнать основы программирования в Visual Studio в об- ным образом для определения принадлежности сервера
легченном варианте. к тому или иному сайту.
Как известно, существуют три варианта обозначения
Способы подключения к Active Directory имени домена:
Для доступа к каталогу Active Directory используется один n RDN (Relative Distinguished Name) – относительное уни-
из двух провайдеров: WinNT или LDAP. Первый из них ис- кальное имя, например DC=ISLAND,DC=RU;
пользовался в доменах Windows NT и в настоящее время n FQDN (Fully Qualified Domain Name) – полное домен-
используется для совместимости. Основным протоколом ное имя или DNS-имя, в котором компоненты разделе-
доступа к Active Directory является LDAP. В связи с этим ны точкой, например ISLAND.RU;
провайдер WinNT рассматриваться не будет. n NetBIOS-имя – обычно первая часть DNS-имени доме-
на, например ISLAND.
Виртуальный каталог RootDSE
Виртуальный объект RootDSE является точкой входа в лю- На практике для управления объектами Active Directory
бой домен, который содержит информацию о домене в це- с помощью провайдера LDAP используется имя домена,

34
записанное в RDN-формате. Домен
имеет древовидную структуру, в кото-
рой доступны несколько пространств
имен. Каждое из них имеет свою точ-
ку входа:
n defaultNamingContext. Описывае-
мое этим параметром пространство
имен используется для управления
учетными записями пользователей,
групп, контейнеров и других объек-
тов в оснастке Active Directory Users
and Computers.
n sсhemaNamingContext. Данным
параметром описывается место-
положение схемы домена. Подключение к проекту библиотеки System.DirectoryServices
n configurationNamingContext. Со-
держит RDN-путь к разделу, содержащему путь к кон- Первый способ рассматриваться не будет, поскольку
фигурации леса текущего домена. его скорость работы по сравнению со вторым оставляет
n rootDomainNamingContext. Значением параметра яв- желать лучшего.
ляется RDN-путь к корню домена (домен, который был Для реализации второго способа необходимо к создан-
создан первым в лесу). ному в Visual Studio проекту подключить библиотеку System.
DirectoryServices (см. рисунок).
Имя текущего домена является значением параметра
defaultNamingContext. Поскольку PowerShell представляет Листинг 2. Определение RDN-имени домена (VB.NET)
собой нечто среднее между Visual Studio и VBScript, то рас- Imports System.DirectoryServices
смотрим управление объектом RootDSE с помощью трех
...
языков программирования (VB.NET, VBScript и PowerShell), Dim obj As New DirectoryEntry("LDAP://RootDSE")
чтобы наглядно показать все преимущества PowerShell. Dim domain As String = ↵
obj.Properties("defaultNamingContext").Value
Удаленное подключение к каталогу Active Directory (про- MsgBox (domain)
вайдер LDAP) обеспечивается с помощью Active Directory
Services Interface (ADSI). В VBScript для этого используется Несмотря на то что PowerShell поддерживает COM-объ-
функция GetObject(), в качестве аргумента которой фигу- екты, рекомендуется отдать предпочтение библиотекам
рирует путь к объекту. В PowerShell для решения идентич- .NET Framework, поскольку скорость работы сценария в этом
ной задачи вместо функции GetObject() в квадратных скоб- случае увеличится. Для получения имени домена все так же
ках указывается ключевое слово ADSI, а в кавычках, сле- используется библиотека System.DirectoryServices, однако
дующих далее, – путь к объекту. ее нет необходимости подключать, поскольку многие по-
Определение RDN-имени текущего домена с помощью пулярные библиотеки сразу доступны после запуска обо-
виртуального объекта RootDSE состоит из двух этапов. лочки PowerShell. Листинг сценария очень похож на листинг
Первый этап – получение доступа к RootDSE, второй – чте- VB.NET (см. листинг 3).
ние строкового значения параметра defaultNamingContext.
На языке VBScript для этого используется функция Листинг 3. Определение RDN-имени домена (VB.NET)
GetObject(), аргументом которой является путь к виртуаль- $obj=[ADSI]"LDAP://RootDSE"
ному объекту: LDAP://RootDSE, и чтение значения с помо- $domain=$obj.defaultNamingContext
$domain
щью функции GET, аргументом которой в свою очередь яв-
ляется имя параметра (см. листинг 1). Обратите внимание: все имена переменных в PowerShell
начинаются с символа доллара ($).
Листинг 1. Определение RDN-имени домена (VBScript) Как видно, листинг по своему объему сопоставим с лис-
Set obj = GetObject("LDAP://rootDSE") тингом на VBScript, а по скорости работы – с VB.NET.
domain = obj.Get("defaultNamingContext")
MsgBox domain
Заключение
Эту же операцию в VB.NET можно осуществить двумя После того как определено имя текущего домена, вы по-
способами: лучаете доступ ко всему каталогу Active Directory. Степень
n с помощью COM-объекта. Так же как и в VBScript, дозволенности определяется правами, выданными сис-
осуществляется вызов функции GetObject() и с по- темным администратором. В общем случае доступны по-
мощью метода GET – чтение значения параметра иск объектов, на которые есть соответствующие разреше-
defaultNamingContext; ния, и чтение их свойств.
n с помощью класса DirectoryEntry, входящего в состав
библиотеки Directory Services .Net Framework (см. лис- 1. RFC2251 – Lightweight Directory Access Protocol (v3) – http://www.
тинг 2). faqs.org/rfcs/rfc2251.html.

№4, апрель 2009 35


PowerShell. Поиск объектов в каталоге
Active Directory

Получение информации из каталога


Active Directory в девяти случаях
из десяти сводится к поиску объектов,
которые удовлетворяют заданным
критериям.

Иван Коробко
В
каталоге Active Directory объек- Таблица 1. Типы объекта в Active Directory
ты хранятся в иерархической Комментарий Тип объекта Значение Фрагмент поискового запроса
структуре, поэтому для получе- objectClass
ния доступа к нужному объекту необ- Учетная запись компьютера Computer Top (&(objectClass=Computer)
Person
ходимо указать к нему путь в форма- OrganizationalPerson
те RDN. Обычно местоположение объ- User
Computer
екта неизвестно или оно может изме-
ниться, поэтому программный способ Контакт, используется в почтовых Contact Top (&(objectClass=Contact)
приложениях Person
поиска объекта/объектов по задан- OrganizationalPerson
ным условиям – самое эффективное Contact
средство для определения его место- Группа безопасности Group Top (&(objectClass=Group)
нахождения. Group
Учетная запись пользователя, InetOrgPerson Top (&(objectClass=InetOrgPerson)
Иерархическая структура не совместимая с доменами
Windows 2K
Person
OrganizationalPerson
каталога Active Directory User
InetOrgPerson
Иерархическая структура каталога
Active Directory обычно формирует- Папка дерева каталогов OU Top (&(objectClass=OrganizationalUnit)
Active Directory OrganizationalUnit
ся с помощью специфических объек-
Опубликованный в Active Directory Printer Top (&(objectClass=PrintQueue)
тов – контейнеров (Organizational Unit), сетевой принтер Leaf
которые имеют префикс «OU=». Кон- ConnectionPoint
PrintQueue
тейнеры, образующие домен, име-
ют префикс DC (Domain Component). Опубликованная в Active Directory Shared Folder Top (&(objectClass=Volume)
сетевая папка Leaf
Большинство других объектов кроме ConnectionPoint
корня домена имеют префикс «CN=» Volume

(Common Name). Учетная запись пользователя, User Top (&(objectClass=Person)


совместимая с доменами Windows NT Person (!(objectClass =Computer)))
Однако и здесь существует исклю- OrganizationalPerson
чение: служебные контейнеры также User
имеют префикс «CN=». Контейнер (папка), создаваемая Container Top (&(objectClass=Container))
Тип объекта определяется набо- в каталоге Active Directory Container
по умолчанию
ром элементов массива objectClass.
Корень домена RootDSE Top (&(objectClass=DomainDNS)
Поиск объектов осуществляется по Domain
заданным критериям. Чаще всего од- DomainDNS
ним из заданных критериев является
тип объекта. n Область поиска. Область, или глу- указанного в первой части запроса.
В таблице 1 приведены типы объ- бина, поиска определяется с помо- Поиск по вложенным объектам бо-
ектов и соответствующие им значе- щью свойства SearchScope. лее низких уровней не производит-
ния элементов массива objectClass. n Критерии поиска. Задаются с по- ся. В поиск не попадет и сам кон-
При составлении запроса необходи- мощью свойства filter. тейнерный объект.
мо учитывать пересечения элемен- n Сортировка элементов. С помо- n SubTree (obj.SearchScope=2) – по-
тов массива. щью метода sort и его свойств за- иск осуществляется по всем вло-
Ярким примером является запрос дают поле и направление сорти- женным объектам. В поиск при
поиска всех учетных записей компью- ровки. этом не попадает сам контейнер-
теров и пользователей. Оба класса от- ный объект. Эта область поиска за-
носятся к классу person, однако учет- Область поиска дана по умолчанию.
ные записи компьютеров дополнитель- Поиск объекта может быть осущест-
но входят в класс Computer (см. таб- влен в одной из трех областей: Таблица 2. Операторы фильтра поиска
лицу 1), именно поэтому для выбор- n Base (obj.SearchScope=0) – по- Оператор Значение
ки всех учетных записей необходимо иск осуществляется по корневому = Эквивалентно
в фильтре это учесть: (&(objectClass= объекту, указанному в первой час- ~= Примерно равно
user)(!objectClass=Computer)). ти запроса. Всегда возвращается
<= Меньше или равно
Поиск объектов в Active Directory либо один объект, либо пустой на-
при помощи библиотек .NET Framework бор объектов. Эта область поиска >= Больше или равно
осуществляется с помощью клас- используется чаще всего для про- > Больше
са DirectorySearcher, относящегося верки на существование объекта, < Меньше
к пространству имён System.Directory указанного в запросе. & И
Services. n OneLevel (obj.SearchScope=1) –
| ИЛИ
Процедура поиска имеет несколь- поиск осуществляется только
ко характеристик, основные из кото- по непосредственным дочерним ! НЕ

рых: объектам контейнерного объекта, * Любое количество любых символов

№4, апрель 2009 37


Критерии поиска ем фильтр (&(name=А*)). С помощью символа «*» обозна-
При составлении критерия, или, как его еще называют, чают произвольное содержимое. Объединив оба филь-
фильтра поиска, используют выражения, строящиеся по оп- тра в один, получим: (&((objectClass=user)(name=А*))
ределенным правилам, а именно (см. таблицу 2): (!(objectClass=Computer))).
n каждое выражение должно быть заключено в скобки; После определения всех необходимых атрибутов поис-
n в выражениях допускается использование операторов ка необходимо запустить процесс поиска с помощью од-
сравнения: «<», «<=», «=», «>=» и «>'; ной из функций: FindAll() или FindOne().Поскольку объек-
n допускаются составные выражения, образуемые с по- тов заведомо больше одного, то в данном случае рекомен-
мощью префиксных операторов: «&», «|», «!»; дуется использовать FindAll().
n между оператором и операндами пробелы не допуска- Чтение элементов осуществляется с помощью цикла
ются. For...Next. Массив – коллекция SearchResults, возвращае-
мая функцией FindAll(), элемент коллекции – SearchResult.
Приведу несколько характерных примеров фильтров: Для чтения свойств найденных объектов необходимо
n (name=А*). Результатом поиска являются все объекты, получить доступ к его пространству имен с помощью ме-
имена которых начинаются с буквы «А». тода DirectorySearcher и, наконец, с помощью параметри-
n &((objectClass=person)(!objectClass=computer)). Бу- зированного свойства (Parameterized property) Properties()
дут возвращены все объекты, принадлежащие к классу получить требуемое значение.
person и не принадлежащие к классу computer, то есть В листинге 1 приведен рассмотренный пример на язы-
все учетные записи пользователей. ке VB.NET, а в листинге 2 – на PowerShell.

Встречаются случаи, в которых необходимо в качестве Листинг 1. Поиск объектов по заданным критериям (VB.NET)
значений указывать служебные символы, например звез- Dim obj As New DirectorySearcher("LDAP://RootDSE")
дочку, скобку и др.
obj.SearchScope = SearchScope.Subtree
Чтобы реализовать эту возможность, нужный символ obj.Filter = "(&(objectClass=person)(name=a*) ↵
требуется заменить на соответствующее ему кодовое зна- (!objectClass=computer))"
чение, приведенное в таблице 3. obj.Sort.PropertyName = "cn"
obj.Sort.Direction = SortDirection.Ascending
For Each element As SearchResult In obj.FindAll()
Сортировка элементов Dim obj2 As DirectoryEntry = ↵
Сортировка элементов осуществляется с помощью ме- element.GetDirectoryEntry()
msgbox obj2.Properties("cn").Value)
тода sort, поддерживающего два свойства: PropertyName Next
и Direction.
С помощью свойства PropertyName производится на- В листинге 2 код отличается. Значительные измене-
значение поля, по которому будет осуществляться сорти- ния в сторону упрощения претерпевает вывод значений
ровка, а с помощью Direction – направление. элементов полученного массива. В отличие от классичес-
В случае Sort.Direction=0 осуществляется упорядочи- кого For.... Next, в PowerShell можно использовать инструк-
вание от «А» до «Я», при Sort.Direction=1 – в обратном по- цию foreach-object или короткий псевдним % (знак процен-
рядке. та). В этом случае доступ к элементам массива осущест-
вляется с помощью специальной переменной «$_».
Пример поиска объектов
в Active Directory Листинг 2. Поиск объектов по заданным критериям
(PowerShell)
Приведу пример поиска всех учетных записей пользовате-
ля на букву «А». Дополнительно выполним сортировку вы- $obj = new-object DirectoryServices.DirectorySearcher ↵
("LDAP://RootDSE")
водимых данных от А к Я по полю name. Рассмотрим алго-
ритм работы сценария. $obj.SearchScope = "Subtree"
$obj.Filter = "(&(objectClass=person)(name=a*) ↵
Сначала необходимо вызвать объект DirectorySearcher (!objectClass=computer))"
и указать точку монтирования к каталогу Active Directory. За-
$obj.Sort.PropertyName = "cn"
тем укажем область поиска – весь каталог Active Directory: $obj.Sort.Direction = "Ascending"
SearchScope = subtree.
$obj.FindAll() | %{
Таблица 3. Служебные Критерий поиска логичес- $obj2=$_.GetDirectoryEntry()
символы, используемые $obj2.cn
в фильтрах поиска ки складывается из двух эле-
ментов: в первом выберем все
Символ Значение учетные записи пользовате-
* \2a лей. Это можно сделать, ука- Заключение
( \28 зав фильтр (&(objectClass=user) Подводя итог написанному, необходимо сказать, что поиск
) \29
(!(objectClass=Computer))). объектов – очень мощное средство. Грамотно составлен-
Вторым критерием из всех ный запрос, верно определенные области поиска и сорти-
\ \5c
найденных учетных записей ровка позволят с легкостью формировать сложнейшие от-
NUL \00 отберем начинающиеся с бук- четы, на составление которых могло бы уйти гораздо боль-
/ \2f вы «А». Для этого использу- ше времени.

38
Множественные уязвимости в Wireshark Множественные уязвимости в Kerberos
Программа: Wireshark версии до 1.0.7. Программа: Kerberos 5.x.
Опасность: Высокая. Опасность: Высокая.
Описание: 1. Уязвимость существует из-за ошибки формат- Описание: 1. Уязвимость существует из-за ошибки разыме-
ной строки в PROFINET/DCP (PN-DCP) диссекторе при об- нования нулевого указателя в функции spnego_gss_accept_
работке названий станций, содержащих символы формат- sec_context() в файле src/lib/gssapi/spnego/spnego_mech.c.
ной строки. Удаленный пользователь может с помощью Удаленный пользователь может аварийно завершить ра-
специально сформированного пакета вызвать отказ в об- боту демона с помощью«NegTokenInit-токена, содержаще-
служивании или выполнить произвольный код на целевой го специально сформированные ContextFlags.
системе. 2. Уязвимость существует из-за ошибки в функции
2. Уязвимость существует из-за ошибки в LDAP-дис- get_input_token() в реализации SPNEGO. Удаленный поль-
секторе. Удаленный пользователь может с помощью спе- зователь может вызвать повреждение памяти и аварийно
циально сформированного LDAP-пакета аварийно завер- завершить работу демона и также получить доступ к важ-
шить работу приложения. Уязвимость распространяется ным данным.
только на Windows-платформы. 3. Уязвимость существует из-за математической ошиб-
3. Уязвимость существует из-за ошибки в Check Point ки в функции asn1buf_imbed() в ASN.1-декодере. Удален-
High-Availability Protocol (CPHAP)-диссекторе. Удаленный ный пользователь может аварийно завершить работу kinit
пользователь может аварийно завершить работу прило- или KDC.
жения. 4. Уязвимость существует из-за ошибки в функции
4. Уязвимость существует из-за ошибки при обработке asn1_decode_generaltime(), которая позволяет освободить
Tektronix .rf5-файлов. Удаленный пользователь может с по- неинициализированный указатель через некорректную
мощью специально сформированного .rf5-файла аварийно DER-кодировку. Удаленный пользователь может выпол-
завершить работу приложения. нить произвольный код на целевой системе.
URL производителя: www.wireshark.org. URL производителя: web.mit.edu/kerberos/www.
Решение: Установите последнюю версию 1.0.7 с сайта про- Решение: Установите исправление с сайта производителя.
изводителя.
Множественные уязвимости в ClamAV
Переполнение буфера в IBM Access Программа: Clam Antivirus версии до 0.95.1.
Support ActiveX-компоненте Опасность: Высокая.
Программа: IBM Access Support ActiveX 3.20.284.0 и более Описание: 1. Уязвимость существует из-за ошибки при
ранние версии. обработке файлов, запакованных с помощью UPack. Уда-
Опасность: Высокая. ленный пользователь может аварийно завершить рабо-
Описание: Уязвимость существует из-за ошибки провер- ту приложения.
ки границ данных в методе GetXMLValue() в библиотеке 2. Уязвимость существует из-за ошибки проверки гра-
IbmEgath.dll. Удаленный пользователь может с помощью ниц данных в функции cli_url_canon() в файле libclamav/
специально сформированного веб-сайта передать слиш- phishcheck.c. Удаленный пользователь может с помощью
ком длинный аргумент уязвимому методу, вызвать пере- специально сформированных ссылок вызвать перепол-
полнение стека и выполнить произвольный код на целе- нение буфера и выполнить произвольный код на целевой
вой системе. системе.
URL производителя: www.ibm.com. URL производителя: www.clamav.net.
Решение: В настоящее время способов устранения уязви- Решение: Установите последнюю версию 0.95.1 с сайта
мости не существует. производителя.

Использование небезопасного метода Переполнение буфера в Ghostscript


в SAP GUI KWEdit ActiveX-компоненте Программа: Ghostscript 8.64, возможно, другие версии.
Программа: SAP GUI 6400.1.1.41, возможно, другие версии; Опасность: Высокая.
SAP GUI 7100.1.1.43, возможно, другие версии. Описание: Уязвимость существует из-за ошибки проверки
Опасность: Высокая. границ данных во время декодирования сегментов слова-
Описание: Уязвимость существует из-за наличия небезо- ря символов JBIG2 в библиотеке jbig2dec. Удаленный поль-
пасного метода SaveDocumentAs() в Kweditcontrol.KWEdit.1 зователь может с помощью специально сформированного
ActiveX-компоненте (KWEDIT.DLL). Удаленный пользова- PDF-файла вызвать переполнение динамической памяти
тель может с помощью специально сформированного веб- и выполнить произвольный код на целевой системе.
сайта получить доступ к важным данным и скомпромети- URL производителя: www.ghostscript.com.
ровать целевую систему. Решение: В настоящее время способов устранения уязви-
URL производителя: www.sap.com. мости не существует.
Решение: Установите последнюю версию с сайта произ-
водителя. Составил Александр Антипов

№4, апрель 2009 39


Оборудование Cisco
для «самых маленьких»
Большинство системных
администраторов знают,
что существует сетевое
оборудование под торговой
маркой Cisco. При первой встрече
с данным оборудованием
у многих появляются
вопросы: как подключиться,
как настраивать и что
означают те или иные
команды. Статья поможет
начинающим разобраться
в терминологии, методах
начального конфигурирования
и с возникающими вопросами.

Сергей Крутилин
И
так, начнём с простейшего. Ваша организация при-
обрела маршрутизатор Cisco 871 для следующих за-
дач: доступ в Интернет, сервис для автоматического
назначения IP-адресов локальным ПК (DHCP), публикация
внутреннего почтового сервера.
Вы распаковываете коробку с новым оборудованием
и видите перед собой устройство, внешний вид которого
представлен на рис. 1.
Первый вопрос – как подключиться? Достаточно прос-
то – в комплекте с оборудованием идёт «шнурок» синего
цвета (консольный кабель, см. рис. 2), его нужно подклю-
чить одной стороной (разъём RJ45) к порту с названием
Console, а другой стороной к COM-порту вашего ПК. Рисунок 1. Внешний вид устройства
Для управления оборудованием нам понадобится про-
грамма, к примеру, Hyper Terminal в Microsoft Windows («Глав- ролей для различного оборудования смотрите по адресу
ное меню → Программы → Стандартные → Связь»). Запус- http://www.phenoelit-us.org/dpl/dpl.html).
каем Hyper Terminal, вводим название подключения (к при- В данном режиме выполняются основные действия кон-
меру, Cisco), затем нажимаем ОК, на втором окне выбира- фигурирования, такие как настройка сетевых интерфейсов,
ем требуемый COM-порт, затем настраиваем Hyper Terminal, правила брандмауэра и т. д.
как показано на рис. 3, и нажимаем ОК. Теперь включаем Для просмотра текущей конфигурации маршрутиза-
маршрутизатор. На экране появится окно загрузки с при- тора выполните команду «show config» (или сокращённо
мерно следующим содержанием: «sh conf»). Просматривать конфигурацию можно при помо-
System Bootstrap, Version 12.2(11r)YV3, RELEASE SOFTWARE (fc2)
щи клавиши пробела.
Technical Support: http://www.cisco.com/techsupport Для настройки основных параметров необходимо ис-
Copyright (c) 2004 by cisco Systems, Inc.
C800/SOHO series (Board ID: 29-129) platform with 65536 Kbytes of main memory пользовать команду «configure terminal» (или сокращён-
program load complete, entry point: 0x80013000, size: 0x753404
Self decompressing the image : ##############################################
но «conf t»).
############################################################################# Рассмотрим пример настройки.
################ [OK]

После распаковки образа Cisco IOS (Internetwork Пункт 1. Сетевые интерфейсы


Operating System) и загрузки всех компонентов вы оказы- В привилегированном режиме просматриваем доступные
ваетесь в пользовательском режиме, который обознача- интерфейсы (не забывайте поставить пробел после зна-
ется знаком «>» (Router>). Помимо подключения по кон- ка «|»):
соли, возможно также удалённое подключение по telnet
или ssh. Настройка подключения по telnet будет рассмот- Router#sh conf | include interface
рена чуть позже. Пользовательский режим предназначен
для отладочных целей, таких как ping, подключения к дру- Получаем примерно следующие результаты:
гим маршрутизаторам и прочее. При вводе вопроситель-
ного знака вы получаете весь список команд. В дальней- interface Ethernet0
interface Ethernet1
шем вы часто будете использовать систему справки. Рас- interface FastEthernet1
смотрим пример. interface FastEthernet2

Router>show ? где:
aaa Show AAA values n Ethernet – это физические интерфейсы, которым мож-
aal2 Show commands for AAL2 но присваивать IP-адреса;
appfw Application Firewall information
auto Show Automation Template n FastEthernet – это так называемые линки (ссылки)
backup Backup status на внутренний интерфейс, IP-адреса данным линкам
bgp BGP information
присваивать нельзя.

Router>show ip ? Заходим в режим конфигурирования и настраиваем


accounting The active IP accounting database интерфейсы:
admission Network Admission Control information
aliases IP alias table Router#conf t
arp IP ARP table
as-path-access-list List AS path access lists Enter configuration commands, one per line. End with CNTL/Z.
auth-proxy Authentication Proxy information

Выбираем интерфейс Ethernet 0 («interface Ethernet 0»):


Помимо пользовательского режима, существует при-
вилегированный режим. Для доступа к нему необходимо Router(config)#int et 0
ввести команду enable и пароль (стандартные имя поль-
зователя и пароль обычно Cisco, список стандартных па- Присваиваем интерфейсу IP-адрес и маску подсети:

№4, апрель 2009 41


Router(config-if)#ip address 192.168.5.3 255.255.255.0 Пункт 2. Смена стандартного пароля
и настройка telnet
Нажимаем <CTRL> + <Z> для выхода из режима кон- По умолчанию telnet отключён на маршрутизаторах Cisco.
фигурирования: В первом пункте мы настроили внутренний интерфейс на ис-
пользование IP-адреса 192.168.5.3 и при попытке подключе-
Router(config-if)#^Z ния посредством telnet увидим следующее сообщение:
Router#
4d01h: %SYS-5-CONFIG_I: Configured from console by console
C:\>telnet 192.168.5.3
Cохраняем конфигурацию («write memory»): Trying 192.168.5.3 ... Open
Password required, but none set
Router#wr mem [Connection to 192.168.5.3 closed by foreign hos

Конфигурация маршрутизатора хранится в 2 файлах: Заходим в режим конфигурирования и выполняем сле-


n running-config – текущая конфигурация маршрутиза- дующие команды:
тора;
n startup-config – конфигурация, применяемая при за- Router#conf t
Router(config)#line vty 0 4
грузке. Router(config−line)#login

% Login disabled on line 66, until 'password' is set


После внесения изменений в конфигурацию вы также % Login disabled on line 67, until 'password' is set
можете выполнить команду «copy run start» («copy running- % Login disabled on line 68, until 'password' is set
config startup-config»). Также будет полезным сохранять кон- % Login disabled on line 69, until 'password' is set
% Login disabled on line 70, until 'password' is set
фигурацию на внешний TFTP-сервер (Trivial File Transfer
Protocol) (к примеру, этот – http://tftpd32.jounin.net). Выпол-
ним следующие команды. Устанавливаем пароль samag:
Выбираем копируемую конфигурацию:
Router(config−line)#password samag
Router#copy tftp: startup-config
Пробуем подключиться к маршрутизатору:
или
C:\>telnet 192.168.5.3
Router#copy tftp: running-config User Access Verification
Password:samag
Router>
Вводим IP-адрес TFTP-сервера:

Address or name of remote host []?192.168.5.1 Устанавливаем пароль samagsecret для доступа к при-
вилегированному режиму (enable):
Задаём имя сохраняемого файла:
Router#conf t
Router(config)#enable secret samagsecret
Source filename []?cisco871-strat-config

Рисунок 2. Консольный кабель Рисунок 3. Настройка Hyper Terminal

42
Создаём пользователя user с паролем samaguser:

Router(config)#username user secret samaguser


Router(config)#^Z
Router#wr mem

Пробуем подключиться к маршрутизатору:

C:\>telnet 192.168.5.3
User Access Verification
Username: user
Password:samaguser
Router>enable
Password:samagsecret

Пункт 3. Настраиваем доступ в Интернет


для внутренних пользователей при помощи NAT Рисунок 4. Вывод справки
(Network Address Translation – трансляция
сетевых адресов) Router(config)#ip route 0.0.0.0 0.0.0.0 ↵
внешний_IP-адрес_шлюза_провайдера ↵
Создаём пул с публичными IP-адресами или адресом (ip route 0.0.0.0 0.0.0.0 a.b.c.d)
(на эти адреса будут отвечать внешние устройства сети –
отправленные пакеты данных должны возвращаться к ис- Далее как обычно:
точнику отправки).
Предположим, что провайдер выделил вашей орга- Router(config-if)#^Z
Router#wr mem
низации внешний пул IP-адресов: 1.2.3.4-1.2.3.6 с маской
255.255.255.248, тогда пул с названием Internet будет вы-
глядеть так: Пункт 4. ACL – списки доступа
Используем один внешний адрес: n <1-99> – стандартные списки доступа;
n <100-199> – расширенные списки доступа;
Router#conf t n <1100-1199> – расширенные 48-битные списки доступа
Router(config)#ip nat pool Internet 1.2.3.4 1.2.3.4 ↵
netmask 255.255.255.248 по MAC-адресам;
n <1300-1999> – стандартные списки доступа (дополни-
Либо используем несколько внешних адресов: тельные номера);
n <200-299> – списки доступа, основанные на типах про-
Router#conf t токолов;
Router(config)#ip nat pool Internet 1.2.3.4 1.2.3.6 ↵
netmask 255.255.255.248 n <2000-2699> – расширенные списки доступа (дополни-
тельные номера);
Теперь создаём список доступа (Access Control List, ACL) n <700-799> – 48-битные списки доступа по MAC-адре-
с перечислением адресов подсетей, которым разрешён вы- сам;
ход в Интернет. Более подробно списки доступа рассмот- n dynamic-extended – расширенные ACL, зависящие
рены ниже. от времени;
n rate-limit – специфические ACL, построенные на оцен-
Router(config)#ip access-list 10 permit 192.168.5.0 ↵ ке лимитов.
0.0.0.255

Настраиваем правила трансляции для IP-адресов внут- Рассмотрим наиболее часто используемые.
ренней подсети, используя ACL: Стандартный список доступа (присваиваем 10-й номер
списку и разрешаем доступ пятой подсети):
Router(config)#ip nat insi\de source list 10 pool ↵
Internet overload Router(config)#ip access-list 10 permit 192.168.5.0 ↵
0.0.0.255
Определяем, на каких интерфейсах будет входящий/
исходящий NAT: Создаём список доступа с определением протокола,
в частности, TCP (рекомендуется создавать «зеркальные»
Router(config)#int et 0 списки доступа). Разрешаем обмен трафиком между хос-
Router(config-if)#in nat inside
Router(config-if)#int et 1 тами a.b.c.d и w.x.y.z:
Router(config-if)#in nat outside
Router(config)#ip access-list 101 permit tcp ↵
host a.b.c.d host w.x.y.z
Настраиваем шлюз по умолчанию: Router(config)#ip access-list 101 permit tcp ↵
host w.x.y.z host a.b.c.d
Router(config)#ip route 0.0.0.0 0.0.0.0 et 1 ↵
(ip route 0.0.0.0 0.0.0.0 Ethernet 1)
Примечание: нельзя удалять в режиме конфигурирова-
или ния одну из строчек ACL при выполнении команды.

№4, апрель 2009 43


Router(config)#ip nat inside source static ↵
tcp 192.168.5.2 25 a.b.c.d 25 extendable

где:
n 192.168.5.2 – адрес почтового сервера;
n a.b.c.d – внешний IP-адрес нашего маршрутизатора.

Пункт 6. Реализуем поддержку раздачи


динамических IP-адресов для локальной подсети
(DHCP)
Создаём пул DHCP-сервера:

Router(config)# ip dhcp pool Office

где Office – имя создаваемого пула.


Определяем, какую подсеть будет обслуживать DHCP-
сервер:
Рисунок 5. Пример использования системы справки
Router(config-dhcp)# network 192.168.5.0 255.255.255.0
Удалим список доступа под номером 101:
Задаём имя домена для клиентов DHCP:
Router(config)# no ip access-list 101 permit tcp ↵
host a.b.c.d host w.x.y.z Router(config-dhcp)# domain-name samag.ru
Создаём расширенный список доступа с именем
SamagACL: Назначаем шлюз по умолчанию:

Router(config)# ip access-list extended SamagACL Router(config-dhcp)#default-router 192.168.5.3

Разрешаем прохождение TCP-трафика между хоста- Примечание: адрес шлюза должен быть из подсети кли-
ми a.b.c.d и w.x.y.z: ентов, в нашем случае это подсеть 192.168.5.0.
Настраиваем список DNS-серверов для выдачи клиен-
Router(config-ext-nacl)# permit tcp host a.b.c.d ↵ там локальной подсети:
host w.x.y.z

Для удаления одного из правил в списке доступа вы- Router(config-dhcp)# dns-server 192.168.5.2
полняем команду:
где 192.168.5.2 – адрес внутреннего DNS-сервера.
Router(config-ext-nacl)# no permit tcp host a.b.c.d ↵ Устанавливаем срок аренды выданных IP-адресов
host w.x.y.z
на 7 дней:
Список доступа по портам. Разрешаем прохождение
входящего/исходящего трафика на 80 TCP-порт: Router(config-dhcp)#lease 7

Router(config)#access-list 111 permit tcp any any eq 80 Исключаем адреса из пула для предотвращения конф-
ликтов (серверам присваиваем статические IP-адреса):
где eq – определение номера порта.
Также можно вместо цифр вводить имена для распро- Router(config)# ip dhcp excluded-address 192.168.5.3 ↵
192.168.5.4
страненных портов, к примеру: Router(config)#^Z
Router#wr mem
Router(config)#access-list 111 permit tcp any any eq WWW

Полный список доступных имён смотрите в справке Заключение


данной команды: Теперь наш маршрутизатор способен предоставлять ПК
внутренней подсети доступ в Интернет, сервис DHCP, поч-
Router(config)#access-list 111 permit tcp any any eq ? товый сервер способен принимать почту с внешних адре-
сов на 25-й порт.

Пункт 5. Перенаправляем входящий трафик 1. http://cisco.com/en/US/support/index.html.


на внутренние серверы 2. http://www.faq-cisco.ru.
К примеру, мы хотим опубликовать 25 TCP-порт (электрон- 3. http://www.ciscolab.ru.
ная почта). Делается это следующей командой: 4. http://ru.wikipedia.org/wiki/Cisco.

44
Уязвимости в Microsoft ISA Server Множественные уязвимости в Cisco IOS
и Forefront Threat Management Gateway Программа: Cisco IOS 12.x.
Программа: Microsoft Forefront Threat Management Gateway Опасность: Средняя.
Medium Business Edition; Microsoft ISA Server 2004; Microsoft Описание: 1. Уязвимость существует из-за ошибки в фун-
ISA Server 2006. кционале Cisco Tunneling Control Protocol (cTCP). Удален-
Опасность: Средняя. ный пользователь может с помощью специально сформи-
Описание: 1. Уязвимость существует из-за ошибки при об- рованных TCP-пакетов аварийно завершить работу cTCP-
работке состояния TCP-сессии в механизме МСЭ для веб- сервера. Уязвимости подвержены версии 12.4(9)T и выше
прокси и Web publishing listener. Удаленный пользователь с включенной инкапсуляцией Cisco Tunneling Control Protocol
может с помощью специально сформированного TCP-паке- (cTCP) для EZVPN-сервера.
та заставить Web listener не принимать новые запросы. 2. Уязвимость существует из-за неизвестной ошибки
2. Уязвимость существует из-за недостаточной обра- в функционалах Cisco IOS WebVPN и Cisco IOS SSLVPN
ботки входных данных в аутентификационном компоненте (SSLVPN). Удаленный пользователь может с помощью спе-
HTML-форм (cookieauth.dll) в ISA Server и Forefront TMG. Уда- циально сформированных HTTPS-пакетов аварийно завер-
ленный пользователь может с помощью специально сфор- шить работу устройства.
мированного запроса выполнить произвольный код сцена- 3. Уязвимость существует из-за утечки памяти в функ-
рия в браузере жертвы в контексте безопасности уязвимо- ционалах Cisco IOS WebVPN и Cisco IOS SSLVPN (SSLVPN).
го сайта. Для успешной эксплуатации уязвимости должен Удаленный пользователь может через SSLVPN-сессию пот-
быть включен Web publishing, и аутентификация через HTML- ребить всю доступную память.
формы должна быть включена на Web listener, который ис- 4. Уязвимость существует из-за неизвестной ошибки
пользуется по умолчанию. Уязвимость не распространяет- в Cisco IOS при включенном Mobile IP NAT Traversal или
ся на Microsoft ISA Server 2004. Mobile IPv6. Удаленный пользователь может с помощью
URL производителя: www.microsoft.com. специально сформированных пакетов прекратить обра-
Решение: Установите исправление с сайта производителя. ботку трафика устройством.
5. Уязвимость существует из-за неизвестной ошиб-
Множественные уязвимости ки в Cisco IOS SCP-сервере. Злоумышленник может за-
в IBM WebSphere Application Server писать произвольные файлы на устройство независимо
Программа: IBM WebSphere Application Server версии от настройки CLI. Для успешной эксплуатации уязвимости
до 7.0.0.3. требуются действительные учетные данные и доступ к CLI
Опасность: Средняя. и SCP-сервер должен использовать ролевые списки кон-
Описание: 1. Уязвимость существует из-за недостаточной троля доступа.
обработки URL в /ibm/console/. Удаленный пользователь мо- 6. Уязвимость существует из-за неизвестной ошибки
жет выполнить произвольный код сценария в браузере жер- при обработке TCP-пакетов. Удаленный пользователь мо-
твы в контексте безопасности уязвимого сайта. жет с помощью специально сформированной последова-
2. Уязвимость существует из-за того, что временные ис- тельности TCP-пакетов вызвать перезагрузку устройства.
правления, которые переписывают существующие или созда- Для успешной эксплуатации уязвимости требуется пол-
ют новые файлы, устанавливают для них привилегии 777. ное трехкратное рукопожатие TCP для соответствующе-
3. Уязвимость существует из-за неизвестной ошибки, го TCP-порта.
которая может привести к тому, что процесс JAX-RPC WS- 7. Уязвимость существует из-за неизвестной ошибки
Security некорректно проверит подлинность UsernameToken. в реализации Session Initiation Protocol (SIP). Удаленный
4. Уязвимость существует из-за неизвестной ошибки пользователь может с помощью специально сформирован-
в спецификации цифровых XML-подписей. Подробности ного SIP-сообщения вызвать перезагрузку устройства.
уязвимости не сообщаются. 8. Уязвимость существует из-за ошибки при обработке
URL производителя: www-01.ibm.com/software/webservers/ UDP-пакетов. Удаленный пользователь может с помощью
appserv/was. специально сформированного UDP-пакета заблокировать
Решение: Установите последнюю версию 7.0.0.3 с сайта доступ к интерфейсу устройства.
производителя. 9. Уязвимость существует из-за неизвестной ошибки
при обработке IP-сокетов. Удаленный пользователь мо-
Переполнение буфера в FreeBSD жет запретить устройству принимать новые подключения
Программа: FreeBS 7.0, 7.1. или сессии, потребить большое количество памяти и про-
Опасность: Низкая. цессорного времени или вызвать перезагрузку устройст-
Описание: Уязвимость существует из-за ошибки провер- ва. Для успешной эксплуатации уязвимости требуется пол-
ки границ данных в ktimer. Локальный пользователь мо- ное трехкратное рукопожатие TCP для соответствующе-
жет перезаписать произвольные участки памяти и выпол- го TCP-порта.
нить произвольный код на целевой системе с привилегия- URL производителя: www.cisco.com.
ми учетной записи root. Решение: Установите исправление с сайта производителя.
URL производителя: www.freebsd.org.
Решение: Установите исправление с сайта производителя. Составил Александр Антипов

№4, апрель 2009 45


Почтовый клиент Alpine

Игорь Штомпель
Производительность компьютеров стремительно увеличивается, требования программного
обеспечения к системным ресурсам растут. Как быть в ситуации, когда нет возможности
модернизировать аппаратную составляющую компьютерной системы, а оптимизация
программного обеспечения стала насущной необходимостью? Одним из выходов из данного
положения может стать внедрение Alpine.

В
конце 2005 года началась разра- dpkg -r alpine n <P> (Printer) – переход в режим на-
ботка почтового клиента Alpine стройки печати.
на базе проекта Pine. Послед- Итак, программа установлена. Тот, n <N> (Newpassword) – установка
ний был создан в недрах Вашингтон- кто вынужден использовать устарев- и смена пароля.
ского университета и выпущен под шее оборудование или предпочитает n <C> (Config) – большинство общих
несвободной лицензией [1]. Товарный работать в консоли, получил всю необ- настроек Alpine.
знак – Pine на данном этапе стал ме- ходимую функциональность для рабо- n <S> (Signature) – создание и редак-
шать группе Pine Team в ее желании ты с электронной почтой. Теперь про- тирование сигнатур, которые будут
реорганизовать исходный код и рас- грамму необходимо настроить для ра- добавляться в каждое новое созда-
пространять программу. Обязатель- боты с почтовыми серверами. Запуска- ваемое и отправляемое письмо.
ства, связанные с товарным знаком, ем наш новый почтовый клиент: n <A> (AddressBooks) – настройка
и новые устремления разработчиков и редактирование адресных книг.
привели к тому, что был запущен про- alpine n <L> (collectionLists) – здесь вы
ект – Alpine [2]. Свое детище разработ- можете группировать ваши папки
чики выпустили под лицензией Apache При работе с программой мож- для лучшей организации электрон-
License, Version 2.0, сделав возможной, но использовать как клавиши управ- ной почты.
в отличие от Pine, редистрибуцию мо- ления курсора + <Enter>, так и заре- n <R> (Rules) – назначение различ-
дифицированных версий программы. зервированные клавиши, назначение ных правил на базе шести подкате-
Мы рассмотрим установку, на- которых всегда отображается в ниж- горий: для отображения элементов
стройку, отправку и получение почты ней части экрана программы. После MESSAGE INDEX цветом, фильтра-
на примере дистрибутива Debian GNU/ старта Alpine мы увидим следующее ции сообщений, назначения ролей
Linux 4.0. В последнем имеется два (см. рис. 1). (например, разные подписи для раз-
«мощных» почтовых клиента для рабо- Для получения справки необхо- личных адресатов) и другого.
ты в консоли – Mutt и Alpine. По своей димо нажать клавишу <?> (HELP), n <D> (Directory) – настройка Alpine
функциональности оба клиента схожи, для создания и отправки сообщения для использования с сервером ка-
но, как представляется на наш субъек- <C> (COMPOSE MESSAGE), для про- талогов LDAP.
тивный взгляд, Alpine выделяется бо- смотра сообщений в текущей актив- n <K> (Kolor) – установка пользо-
лее удобным интерфейсом. Скачиваем ной папке (папка, которая открывалась вательских цветов для различных
пакет alpine_2.00_i386.deb с этой стра- последней) клавишу <I> (MESSAGE частей почтового клиента.
ницы – http://www.washington.edu/alpine/ INDEX), для просмотра списка папок n <M> (S/MIME) – настройка исполь-
acquire. Alpine, в репозиториях Debian <L> (FOLDER LIST), для просмотра ад- зования S/MIME для проверки под-
Etch 4.0, находится в Backports в виде ресной книги <A> (ADDRESS BOOK), писанных сообщений, расшифров-
пакета версии 1.10, которая перекоче- для выхода из программы нажимаем ки сообщений, а также для подпи-
вала в основной репозиторий Debian <Q> (QUIT). си или шифрования исходящих со-
Lenny 5.0. Переходим в консоль, полу- Для перехода в режим конфигура- общений.
чаем права администратора и выпол- ции программы, как видно на рис. 1, n <Z> (RemoteConfigSetup) – нас-
няем команду: надо нажать клавишу <S>. В данном тройка удаленной конфигурации,
режиме, изображенном на рис. 2, например, для использования
dpkg -i alpine_2.00_i386.deb пользователь получает широкие воз- с сервером, работающим по про-
можности для настройки программы: токолу IMAP.
Впоследствии, если появится не- n <E> (Exit Setup) – мы вернемся n <X> (eXceptions) – настройка ко-
обходимость, программу можно будет в главное меню Alpine, которое рас- манды-переключателя, которая ме-
удалить следующим способом: смотрели выше. няет поведение других команд.

46
Нажимаем <C> и переходим в ре-
жим настройки своей учетной записи.
Заполняем поле Personal Name – ваше
имя, отображаемое в поле «От» перед
почтовым адресом писем, которые вы
отправляете.
В User Domain указываем имя до-
мена почтового сервера, то, что в ва-
шем почтовом адресе следует за име-
нем пользователя. Например, ес-
ли почтовый адрес выглядит так –
имя@gmail.com, то доменом почтово-
го сервера будет – gmail.com.
В поле SMTP server (for sending)
прописываем имя почтового сервера
для отправки электронных писем. На-
пример, для почтового ящика на сер-
вере gmail.com – smtp.gmail.com.
В Inbox Path указываем – pop.gmail. Рисунок 1. Старт программы Alpine
com/user=имя@gmail.com/pop3/ssl.
Для использования imap-сервера
вместо /pop3/ssl необходимо прописать
/imap/ssl и, конечно, pop.gmail.com из-
менить на imap.gmail.com.
Для задания Alpine пути к локаль-
ному архиву входящей почты использу-
ется поле Incoming Archive Folders. Ука-
жем в нем, например: /home/имя/mail,
что означает – почта будет сохранять-
ся в домашнем каталоге пользователя
в директории mail. Последнюю необхо-
димо создать перед началом настрой-
ки почтовой программы. Все настройки
завершены. Нажимаем клавишу <E>
и попадаем в главное меню.
Подключимся к почтовому серверу.
Для этого переходим к списку папок
<L>. Нажимаем <Enter> на Incoming-
Folders, а затем на INBOX, отвечаем
«Да» (Y) на вопрос «Re-open folder to Рисунок 2. Окно конфигурирования Alpine
check for new message?» (открыть вхо-
дящие с проверкой получения новых ма), Cc (адреса, на которые отправить трумент для работы с электронной поч-
сообщений?). Вы увидите список со- копии письма), Attchmnt (приложение), той, процесс настройки и работы с ко-
общений из папки «Входящие» на поч- Subject (тема письма). Заполняем тело торым познавательный и интересный.
товом сервере. сообщения после Message Text. В данной статье мы затронули толь-
Для сохранения письма в локаль- Если требуется прикрепить файл ко «верхушку айсберга». Читателям
ную папку saved-messages необходимо к письму, то перемещаем курсор на лю- будет интересно узнать, что програм-
нажать «S». Чтобы вернуться к преды- бое поле заголовка письма, например, му использует создатель ядра опера-
дущему экрану, надо нажать «<» (со- To, нажимаем «^J» (<Ctrl> + <J>) и про- ционной системы GNU/Linux – Линус
ответственно «>» – вперед). Перехо- писываем путь к файлу. Например, Торвальдс [3]. Приглашаем вас в мир
дим в Mail, где находятся локальные если файл arch.zip хранится в корне Alpine!
папки: sent-mail (отправленные сооб- домашнего каталога пользователя,
щения), saved-messages (сохраненные то прописываем: /home/arch.zip. 1. http://www.washington.edu/pine/overview/
сообщения). Для отправки письма нажимаем legal.html.
Подготовим и отправим письмо. «^X» (<Ctrl> + <X>), вводим имя поль- 2. ht t p: // w w w.was hin gto n.e du /alp ine /
Находясь в главном меню, переходим зователя и пароль, и все – сообщение overview/story.html.
в COMPOSE MESSAGE или нажима- отправлено. 3. h t t p : / / w w w . l i f e h a c k e r . c o m . a u /
ем клавишу <C>. Заполняем поля To Несколько слов в заключение. tips/2008/01/31/lifehacker_australia_
(электронный адрес получателя пись- Alpine – это свободный и гибкий инс- interview.html.

№4, апрель 2009 47


Выбираем антивирус для небольшой сети

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

У
читывая, что в каталогах одного тановки, настройки и контроля за об- ме, более предпочтительны, так как
поставщика имеется несколько новлениями, придется выполнять вруч- они обеспечивают централизованное
комплексных решений, рассчи- ную. В итоге все старания могут быть управление, упрощенную процедуру
танных на сети разного размера, чтобы сведены на нет, например, если поль- развертывания, контроль за работой
не перебирать все, определимся с па- зователь отключил монитор или базы агентов и выполнением всех предус-
раметрами будущей сети. Пусть это бу- по разным причинам вовремя не обно- мотренных заданий и политик, уста-
дет небольшая сеть на 50 рабочих мест, вились. Хотя сегодня в небольших ор- новку обновлений с единой локаль-
имеющая файловый и почтовый серве- ганизациях еще нередко можно встре- ной базы, экономя интернет-трафик,
ры, выход в Интернет защищает шлюз. тить системного администратора, бе- создание отчетов и так далее.
Использование «обычных» персональ- гающего с флешкой, обновляющего В статье вы не найдете тестов ан-
ных антивирусов для защиты тако- таким образом антивирусные базы. тивирусных движков и информации о
го количества систем крайне неудоб- Специализированные решения, количестве записей в базе. Основное
но, ведь все операции, начиная с ус- построенные по клиент-серверной схе- внимание уделено особенностям реа-

48
лизации антивирусных продуктов 7 по-
пулярных разработчиков, подходящих
для решения нашей задачи, – компо-
нентам, возможностям клиентского
модуля и централизованного управле-
ния. Ориентировочная цена приведена
в таблице 1. Окончательную цену со-
ставить тяжело, так как на её формиро-
вание может повлиять срок лицензии
(на два года – дешевле), количество
одновременно покупаемых продуктов
или лицензий на одно решение, скид-
ки и акции магазинов и так далее. Что-
бы легче было определиться и увидеть
отличия, основные параметры сведе-
ны в таблицу 2.
Сразу отвечу на два вопроса, ко-
торые, скорее всего, возникнут у чи-
тателя. Да, вполне возможно устано-
вить шлюз, файловый и почтовый сер-
вер на *BSD или GNU/Linux, для защи- Консоль управления Kaspersky Administration Kit
ты которого использовать свободный
антивирус ClamAV. Таким образом не-
сколько уменьшить итоговую стои-
мость, хотя и за счет некоторой де-
централизации управления. Такие ре-
шения неоднократно рассматривались
на страницах журнала, поэтому ес-
ли есть соответствующий опыт, мож-
но самостоятельно собрать нужную
систему из «кирпичиков». Также час-
то рекомендуют на компонентах сети
сервер/шлюз/ПК использовать анти-
вирусы разных разработчиков. Неко-
торый смысл в этом есть, так как всег-
да существует вероятность, что во вре-
мя очередной эпидемии одна из ком-
паний среагирует чуть быстрее. Да и
мне неоднократно попадались виру-
сы, в том числе и старые, которые оп-
ределялись далеко не всеми движка-
ми. Но суммарная стоимость будет вы-
ше, а вот говорить о том, что приме-
нение двух антивирусов вдвое увели-
чит защиту, не приходится. Посколь-
ку, точно следуя логике, «одна среа-
гирует быстрее», нужно согласиться
с тем, что непременно другая среаги- Консоль администратора Dr.Web Enterprise Suite
рует медленнее.
организаций и защищающих рабочие и имеет все необходимое для реше-
«Лаборатория станции и смартфоны, файловые, поч- ния такой задачи.
Касперского» товые серверы и шлюзы. Кроме этого Непосредственно на рабочих стан-
«Лаборатория Касперского» для защи- предлагаются и продукты для защиты циях и серверах, подлежащих защите,
ты корпоративной сети любого масш- отдельных узлов сети. Для целостной устанавливается специализирован-
таба и сложности предлагает линейку защиты сети любого масштаба пред- ная версия антивируса. Здесь следу-
продуктов, объединенных общим наз- ложен Kaspersky Total Space Security, ет отметить весьма большой список
ванием Kaspersky Open Space Security. который может состоять из 17 ком- систем и решений: рабочие станции
KOSS состоит из четырех решений, понентов (полный список на http:// (Windows, Linux), мобильные системы
ориентированных на разный уровень www.kaspersky.ru/total_space_security) (Windows Mobile, Symbian), файловые

№4, апрель 2009 49


серверы (Windows, Linux, NetWare), сов- нескольких связанных друг с другом на установочном компакт-диске и стра-
местной работы (Exchange 2003/2007, серверов администрирования с под- нице загрузки продуктов «Лаборато-
Lotus Notes/Domino), почтовые серверы держкой их иерархии. рия Касперского». Для небольшого
(Sendmail, Qmail, Postfix, Exim) и шлю- Особенностью решения Kaspersky офиса его возможностей вполне до-
зы (Microsoft ISA Server, Check Point Administration Kit является объедине- статочно, и во время установки он об-
FireWall) и другие. ние в логическую сеть всех подклю- наруживается автоматически без лиш-
Для централизованного управления ченных к серверу администрирова- них донастроек.
используется Kaspersky Administration ния компьютеров, а также подчинен- Принцип лицензирования в продук-
Kit, фактически состоящий из трех со- ных серверов. Такая сеть не связана с тах KOSS самый простой – указыва-
ставляющих, которые необязательно топологией физической сети, хотя при ем количество систем, на которые бу-
должны быть установлены на одном автоматическом ее формировании за дут установлены компоненты, вне за-
компьютере: основу берутся текущие сетевые на- висимости от того, рабочая это стан-
n оснастки MMC – выполнение на- стройки. Каждая группа может иметь ция или сервер, и без подсчета поч-
строек и получение информации свои политики и настройки. Таким об- товых ящиков или пользовательских
о состоянии защиты; разом, очень просто создать конфигу- аккаунтов.
n агент администрирования – обес- рацию системы защиты, удовлетворя-
печивает взаимодействие между ющую любым условиям. «Доктор Веб»
сервером и установленным на ком- Для работы сервера администри- Компания «Доктор Веб» предлагает
пьютере антивирусным приложе- рования необходим SQL-сервер. Здесь несколько комплексов защиты, объ-
нием; подходит MySQL, Microsoft SQL Server единенных под названием Dr.Web
n сервер администрирования – не- 2000/2005/2008, Microsoft SQL Server Security Suite. И в отличие от продуктов
посредственное управление рабо- 2000 Desktop Engine (MSDE) или SQL «Лаборатория Касперского» каждое
той агентов и лицензиями, хране- Server 2005 Express Edition. ориентировано на применение исклю-
ние настроек, сбор информации. Как видите, все составляющие чительно в своей сфере: настольные
Kaspersky Administration Kit зависят системы, почтовые и файловые серве-
Интерфейс консоли локализован от платформы. ры, Интернет и SMTP-шлюзы, мобиль-
и достаточно прост в освоении. Пре- Подготовленная версия MSDE 2000 ные устройства и так далее. В контекс-
дусмотрена одновременная работа SP 3 для Administration Kit доступна те статьи нас будет интересовать:

Редактор конфигурации в ESET Remote Administrator Console

50
n Dr.Web Enterprise Suite (ES) – за- навливается на все защищаемые ком- n вручную при помощи у тилиты
щита рабочих станций и серверов пьютеры и сам антивирусный сервер. drwinst – подходит для большинст-
под управлением Windows 98-Vista, Агент включает все, что пользователи ва сетей;
с возможностью централизованно- привыкли видеть в продуктах Dr.Web, – n удаленно при помощи ES-консоли –
го управления; антивирусный сканер, файловый мо- в документации сказано, что лучше
n Dr.Web для файловых серверов нитор SpIDer Guard, почтовый фильтр подходит не для массового развер-
Windows/UNIX/Novell NetWare; SpIDer Mail. Именно поэтому во избе- тывания, а при обычной работе, хо-
n Dr.Web д ля интернет- шлюзов жание конфликтов на рабочих станци- тя с его помощью установить аген-
UNIX; ях не должно быть установлено другое та систем на 50 вовсе не проблема-
n Dr.Web для почтовых серверов антивирусное ПО, в том числе другие тично;
UN IX / MS E xchange/ I BM Lotus версии Dr.Web. Кстати, в большинс- n используя возможности Active
Domino. тве рассматриваемых в статье реше- Directory – для этого с сайта сле-
ний уже рабочий антивирус этого про- дует скачать специальный инстал-
Функции последних трех, думаю, изводителя можно просто подключить лятор.
понятны, интерес может вызвать ES. к серверу для централизованного уп-
Это решение также имеет клиент-сер- равления, что довольно неплохо, осо- Обновление агентов и антивирус-
верную архитектуру, позволяя управ- бенно в том случае, если за него уп- ных баз производится централизован-
лять удаленными клиентами при по- лачено. но с антивирусного сервера, но аген-
мощи единого графического интер- Специальный компонент позволя- ты, установленные на мобильных сис-
фейса. ет администратору, подключившись темах и находящиеся вне своей сети,
Состоит ES из антивирусного сер- к ним, удаленно просканировать ком- «умеют» обновляться напрямую с сай-
вера (ES-сервера), консоли админи- пьютеры в «тихом» режиме. В этом тов Dr.Web.
стратора, SQL-сервера и ES-агента. случае пользователь вообще не заме- Сервер в базе данных содержит на-
Назначение всех компонентов, в об- тит работу сканера, а администратор стройки агентов, статистику по скани-
щем, аналогично KOSS, отличия со- может наблюдать за проверкой в ре- рованиям и найденным вирусам и про-
ставляет лишь агент. Здесь в отличие альном времени. Для установки аген- чую информацию. В одной сети может
от «Касперского» агент является пол- тов предложено использовать один быть несколько ES-серверов, связан-
ноценным антивирусом, который уста- из трех способов: ных с главным сервером.

Консоль управления продуктами McAfee – ePolicy Orchestrator

№4, апрель 2009 51


чих станций, шлюзов, почтовых и фай-
ловых серверов. Для решения нашей
задачи выбираем три:
n ESET NOD32 Smart Security Business
Edition – сканирование Windows
2000/XP/Vista;
n ESET NOD32 Gateway Security for
Linux/BSD/Solaris;
n ESET NOD32 for MS Exchange Server/
IBM Domino/Linux Mail Server.

Из них Smart Security Business


Edition (SMBE) является комплексным
решением, обеспечивающим защи-
ту как рабочих станций, так и серве-
ров. Его основой является антивирус-
ный модуль ThreatSense, плюс вклю-
чены модули персонального бранд-
мауэра и антиспама. Персональный
брандмауэр обеспечивает сканирова-
ние сетевых соединений на уровне ка-
Основная страница Symantec Endpoint Protection Manager нала, определяет и блокирует многие
типы сетевых атак, отслеживает из-
Архитектура серверной части не- n файловых серверов Windows/UNIX/ менения в исполняемых файлах, уме-
зависима от платформы, что позво- Novell NetWare; ет проверять HTTP- и POP3-трафик.
ляет установить его как на Windows n электронной почты на почтовых Также модуль ThreatSense может ин-
NT/2000/XP/2003 Server, так и на UNIX- серверах под управлением UNIX/ тегрироваться в популярные почтовые
системах – Linux, FreeBSD (5.1-7.0) Microsoft Exchange\Lotus Domino клиенты (MS Outlook, Outlook Express,
или Solaris (х86). В Linux-версии име- (антивирус и антиспам); Windows Mail и другие).
ются пакеты для ASPLinux, Debian Etch/ n интернет-шлюзов UNIX. Реализовано три режима настрой-
Sarge, Fedora Core, SuSE, Mandriva, ки правил фильтрации: автоматичес-
Ubuntu (для некоторых и под 64-битную Также хотелось бы особо отме- кий, интерактивный или устанавли-
систему), а также Linux generic под раз- тить, что это единственное решение, вающийся централизованно на осно-
ные версии Glibc (2.3 – 2.7). В качестве для которого нельзя официальным ве политик. В последнем случае со-
БД может быть использована встроен- путем получить ключ и построить тес- единения, не разрешенные в прави-
ная СУБД (IntDB), подключение через товую платформу, включающую все лах, будут заблокированы. Поддер-
ODBC (для Windows) или PostgreSQL компоненты, и таким образом опре- живается работа с файловыми серве-
(в UNIX). Консоль управления написа- делиться в выборе. При заказе клю- рами на платформах Windows, Novell
на на Java, поэтому ее установка воз- ча для сервера предлагается устано- Netware и Linux/BSD/Solaris.
можна в любой системе, для которой вить Dr.Web для Windows, который под- Для централизованного админист-
доступен JRE не ниже 5.0. Для анти- ходит лишь для агентов и Антивиру- рирования продуктов ESET использу-
вирусного сервера с агентами может су Dr.Web для Windows Mobile. Второй ется Remote Administrator (ERA), состо-
использоваться как протокол TCP/IP, ключ для сервера, несмотря на хоро- ящий из трех компонентов:
так и IPX/SPX/NetBIOS, что позволяет шо налаженную службу технической n сервер ERA (ERA Server, ERAS);
не менять настройки сети. Предусмот- поддержки и мои двухнедельные по- n консоль ERA (ERA Console, ERAC);
рена возможность шифрования и сжа- пытки, я так и не получил. И только n сервер-зеркало – локальный сер-
тия соединения, что позволяет безо- благодаря диску журнала [1], на кото- вер обновлений.
пасно администрировать сеть через ром нашелся нужный файл, удалось
Интернет и экономить трафик. проверить Dr.Web Security Suite в ра- В сети может функционировать лю-
Кроме этого имеется несколько боте. Если так добивается тестовых бое количество серверов, поддержи-
готовых комплектов для организаций ключей любой клиент, желающий по- вается репликация данных на основ-
разного размера, в том числе и об- смотреть на решение вживую, то, при- ной (родительский) сервер. При по-
разовательных учреждений. Под на- знаюсь, подход компании несколько мощи ERAS можно выполнять уда-
шу задачу подходит комплект Dr.Web непонятен. ленную установку и удаление антиви-
«Универсальный», обеспечивающий руса, настраивать параметры его ра-
защиту: ESET боты и создавать зеркало обновле-
n рабочих станций Windows (Антиви- На сайте компании ESET для корпора- ний. Администратор определяет, какая
рус Dr.Web Enterprise Suite) – от 5 тивных клиентов предлагается 6 про- информация и с какой периодичнос-
до 100 (шаг 5 станций); дуктов, обеспечивающих защиту рабо- тью будет передаваться на родитель-

52
ские серверы автоматически, а какая в котором реализована антивирусная n McAfee WebShield SMTP – SMTP-
только по запросу. ERAS функциони- защита для всех компонентов – рабо- шлюз, осуществляющий скани-
рует как служба, поэтому для его ус- чих станций, интернет-шлюза, почто- рование входящего и исходящего
тановки понадобится компьютер с ОС вого и файлового сервера. В табли- почтового трафика, с интегриро-
Windows на ядре NT (NT4, 2000, XP, це показано, что кроме антивирусов ванным контент-фильтром.
2003). Для хранения данных ERAS ис- сканирующий движок обнаруживает
пользует MDAC (Microsoft Data Access и spyware, но только Partial (частично). Централизованное управление за-
Components), кроме того, некоторые В состав пакета включены: щитой осуществляется при помощи
элементы сохраняются в отдельных n McAfee VirusScan Enterprise – ан- ePolicy Orchestrator (ePO). Его задача,
файлах в каталоге Storage. Кстати, ли- тивирус для рабочих станций и сер- в общем, аналогична другим подоб-
цензионное соглашение не наклады- веров Windows; ным решениям: управление настрой-
вает на количество ERAS никаких огра- n McAfee  NetShield  for  Netware – ками антивирусов, установка обнов-
ничений, лицензия NOD32 SS BE тре- антивирус для серверов Novell лений через центральное хранилище
буются только для клиентских компью- Netware; Software Repository, получение при по-
теров или автономных, файловых сер- n McAfee  VirusScan  Command  мощи AV Informant отчетов о работе за-
веров под управлением Windows OS, Line – антивирус командной строки щиты и отдельных компонентов. Адми-
Novell и Linux. для систем DOS, Windows и различ- нистратор может задавать единую по-
ных вариантов UNIX-систем, вклю- литику безопасности, включая нали-
McAfee чая Linux; чие патчей безопасности от Microsoft
C нужными продуктами McAfee не так n McAfee GroupShield for Microsoft  для всех систем или отдельных групп.
легко сразу определиться, и в этом Exchange – антивирус для серве- EPO построен по клиент-сервер-
очень помогает страница McAfee SMB ров Microsoft Exchange 2000/2003/ ной схеме, напоминающей Kaspersky
Product Comparison [2]. Здесь в двух 2007; Administration Kit, то есть в клиентские
вкладках Protection Type и Protection n McAfee  GroupShield  for  Lotus  системы кроме непосредственно про-
Area довольно просто выбирать про- Domino – антивирус для Lotus дукта, осуществляющего защиту, ус-
дукт, удовлетворяющий нужным ус- Domino от версии 6.0.3, работаю- танавливается небольшой по размеру
ловиям. Для нашего примера наибо- щего под управлением Windows агент. Агент, получая команды от сер-
лее подходит пакет McAfee Active Virus 2000/2003 или Solaris от 2.6, IBM вера и отсылая отчеты, осуществля-
Defense. Это комплексное решение, AIX 4.3.3/5.1/5.3; ет непосредственное управление на-

Окно настроек консоли F-Secure Policy Manager

№4, апрель 2009 53


Портал F-Secure PSB с клиентом F-Secure PSB Workstation

Консоль Safe'n'Sec Admin Explorer с подключенным клиентом

54
стройками клиентской программой.
Мобильные системы производят об- Safe'n'Sec Enterprise программы, для которых еще нет сигнату-
новления сигнатур при подключении Еще один продукт, о котором бы хотелось ры в антивирусных базах. Еще один плюс
к локальной сети или самостоятельно вкратце рассказать, подходит под вы- Safe'n'Sec – не требуется постоянное об-
через Интернет. Для установки ePO двинутые требования лишь частично, но, новление баз. Кроме обычной, существу-
на сервер понадобятся компьютер учитывая его возможности и стоимость, ют версии клиентской программы, содер-
под управлением Windows 2000 SP4/ умолчать не имею права. Речь идет о сис- жащие антивирусный модуль Dr.Web и мо-
2003 SP1/2/R2, консоль Windows 2000/ теме предотвращения вторжений (HIPS, дуль защиты от программ-шпионов. В этом
XP/2003/Vista. В качестве SQL-серве- Host Intrusion Prevention System) Safe'n'Sec случае обеспечивается и лечение заражен-
ра для небольших организаций реко- Enterprise, разрабатываемой российс- ных файлов.
мендован Microsoft SQL Server 2005 кой компанией S.N.Safe&Software (http:// Централизованное управление обеспе-
Express Edition, поддерживается SQL www.safensoft.ru). В отличие от других про- чивается при помощи двух программ:
Server 2000/2005. Сегодня доступны грамм обзора она не является антивиру-  Safe'n'Sec Admin Explorer – консоль уп-
две версии ePO: в 3.6.1 консоль реа- сом как таковым. В клиентских модулях равления, используемая для удаленно-
лизована в виде MMC, в 4.0.0 – в виде Safe'n'Sec Timing Client используется собс- го администрирования системы безо-
веб-сервиса. Во втором варианте для твенная технология проактивной защиты пасности;
взаимодействия с сервером использу- V.I.P.O. (Valid Inside Permitted Operations),  Service Center – сервер, при помощи ко-
ется протокол HTTP/HTTPS, что позво- основанной на разграничении системных торого непосредственно производится
ляет работать через Интернет с любой привилегий при работе компьютера. управление клиентскими программа-
платформы. После установки клиент сканирует сис- ми, их централизованное обновление
В политиках ePO также задают- тему, создает профиль приложений и фор- и создание отчетов и оповещение ад-
ся установки для программ-антишпи- мирует список доверенных программ (кон- министратора о возникновении опре-
онов и персонального брандмауэра тролируется хеш SHA-256). При появлении деленных событий.
McAfee Desktop Firewall. Кроме продук- активности, затрагивающей целостность
тов McAfee, ePO поддерживают и неко- системных файлов или реестра, а также В качестве СУБД используются MSDE
торые версии Symantec Norton Antivirus нового процесса, соответствующая опе- 2000 SP3, MS SQL 2005 Express Edition
для серверов и рабочих станций. рация блокируется, а пользователю вы- или MS SQL Server от 2000 SP, поддержи-
дается запрос на ее подтверждение. Та- ваемые ОС Microsoft Windows 2000SP3/
Symantec ким образом, технология, используемая в XP/2003/Vista. Клиентская лицензия на 50
Продукция Symantec довольно хоро- Safe'n'Sec, позволяет блокировать любые рабочих мест, включая Admin Explorer
шо известна ИТ-специалистам, те, кто известные и неизвестные вредоносные и Service Center, составляет 27600 руб.
работал в Windows 9х, хорошо помнят
антивирус Norton AntiVirus, обновлен- вать доступ пользователей и работа- Manager устанавливаются на ОС
ная версия которого выпускается этой ющих программ к процессам, файлам Windows от 2000, в качестве SQL-ба-
корпорацией до сих пор. Сегодня для и каталогам, контролировать элемен- зы данных может быть использова-
небольших компаний предложен па- ты ОС и реестра, модулей и элемен- на как встроенная, так и MS SQL 2000
кет Symantec Endpoint Protection Small тов операционной системы и приложе- SP3/2005. Кроме этого, для установ-
Business Edition 11.0, фактически состо- ний. За дополнительную плату досту- ки потребуется наличие IIS. Встроен-
ящий из двух решений: пакета Symantec пен модуль Symantec Network Access ная БД на основе Sybase рекоменду-
Endpoint Protection 11.0 (SEP) и антиви- Control, обеспечивающий проверку ется при подключении до 100 клиен-
руса Symantec Mail Security for Microsoft систем и определяющий на основе по- тов и автоматически устанавливается
Exchange (Symantec Mail Security for лученных данных права доступа к се- при выборе режима инсталляции сер-
SMTP/Domino/Enterprise Edition). ти и ресурсам. вера управления «Простой». При соб-
Клиент SEP является логическим Список под держиваемых к ли- людении всех требований установка
продолжением Norton AntiVirus и обес- ентских машин и серверов довольно сервера достаточно проста, в ее ходе
печивает защиту от вирусов и шпион- большой: ОС Windows 2000/XP/2003/ можно указать другой порт для веб-
ских программ, фильтрацию открыто- Vista/2008 (разных редакций), Linux сайта доступа, с которого скачивает-
го и шифрованного сетевого трафика, (Red Hat Enterprise Linux от 3.x, SuSE ся клиент управления. По окончании
система защиты от атак Generic Exploit Linux Enterprise (server/desktop) от 9.x, установки запускается мастер пере-
Blocking позволяет блокировать угро- Novell Open Enterprise Server (OES/ носа и развертывания, который по-
зы эксплуатирующих уязвимости, инс- OES2), Ubuntu от 7.x и Debian 4.x), а так- может развернуть антивирус на кли-
трумент VxMS (Veritas Mapping Service) же VMWare ESX 2.5, 3.x. Что немало- ентских системах и перенести группы
позволяет обнаруживать руткиты. Кро- важно, все ОС могут быть как 32, так и и политики с родительских серверов
ме сигнатурного анализа, модуль про- 64-битных версий. Особо отмечено, Symantec AntiVirus.
активной защиты Proactive ThreatScan что Itanium не поддерживается (как и В критериях поиска клиентов мож-
обнаруживает заразу на основе анали- всеми остальными решениями). но указать более 30 параметров, вклю-
за поведения приложений. Админист- Управление осуществляется с еди- чая имя пользователя, компьютера,
ратор имеет возможность контроли- ной консоли. Сервер и консоль управ- группу, IP-адрес и даже такие, как час-
ровать и при необходимости блокиро- ления Symantec Endpoint Protection тота процессора, версия BIOS и так да-

№4, апрель 2009 55


Таблица 1. Приблизительные цены системы защиты для 1 шлюза, 50 рабочих станций, 1 файлового сервера, 1 почтового сервера
(предоставлены ЗАО «Софткей» (http://www.softkey.ru)

Производитель Адрес Состав решения Стоимость отдельных  Суммарная стоимость  Варианты


компонентов готового решения
«Лаборатория http://www.kaspersky.ru Kaspersky Total Space Security 53 комп х 2837 руб стоимость подписки –
Касперского» на 1 год – 150361 руб.
Dr.Web Enterprise Suite на 50 ПК х 625 руб = Комплект «УНИВЕРСАЛЬНЫЙ-50»,
или 31250 руб. лицензия на 12 месяцев
«Антивирус Dr.Web для Windows» Dr.Web ES (Антивирус) 50 рабочих
станций + «Dr.Web® для Windows-
серверов» + «Dr.Web защита почты
(Антивирус+Антиспам)» 50 почт.
ящиков + «Dr.Web для интернет-
шлюзов» на 50 ПК, на 12 месяцев –
45250 руб.
«Антивирус Dr.Web «Защита на 50 ящиков 20250 руб. –
«Доктор Веб» http://www.drweb.com бизнеса (решения для почтовых (лицензия 12 месяцев) 111750 руб.
серверов)»
Или «Dr.Web Антивирус+Антиспам на 50 пользователей –
для почтовых серверов UNIX, 26250 руб.
MS Exchange, IBM Lotus Domino»
«Антивирус Dr.Web для интернет- на 50 ПК 20000 руб –
шлюзов» (лицензия 12 месяцев)
«Dr.Web для файловых серверов» 7000 руб –
(лицензия 12 месяцев)
ESET NOD32 Smart Security на 52 ПК 66600 руб. –
Business Edition
ESET NOD32 Gateway Security на 50 ПК 22450 руб. –
ESET http://www.esetnod32.ru 105437 руб.
for Linux/BSD/Solaris
Антивирус NOD32 Exchange на 50 ящиков 16387 руб. –
Mail Server
McAfee Active Virus Defense на 53 ПК х 2104.53 руб. 111540.09 руб. –
McAfee http://www.mcafee.com/ru ProtectPLUS (Perpetual License
with 1yr Gold Software Support)
Endpoint Protection 11.0 на 53 ПК 47222.47 руб. –
http://www.symantec.com/
Symantec Symantec Mail Security на 50 ящиков 80660.97 руб. –
ru
for Microsoft Exchange 33438.50 руб.
F-Secure Anti-Virus Small Business 2144.35 руб. х 52 = –
Suite 111506.2 руб.
Или F-Secure Protection Service 825.00 руб х 52 = 139111.2 руб. –
F-Secure* http://www.f-secure.ru
for Business 42900 руб. или 70505 руб.
F-Secure Internet Gatekeeper 552.10 руб х 50 = –
27605 руб.
* Цена составлена по данным http://www.f-secure.ru, http://www.anysoft.ru и http://www.netsecret.ru

лее. Также хочется отметить наличие Состоит SBS из 4 компонентов: n F-Secure Policy Manager – систе-
удобного и понятного инструмента со- n F - S e c u r e   A n t i - V i r u s   C l i e n t 
ма централизованного управле-
хранения и восстановления базы сис- Security – интегрированное ре- ния, контроля, обновления и на-
темы защиты. шение для Windows 98/ME/NT4.0/ блюдения за работой систем бе-
2000/XP, включающее антивирус, зопасности.
F-Secure антишпион, брандмауэр, сканер
Решения F-Secure для малого и сред- руткит BlackLight и систему конт- Anti-Virus Client Security поддер-
него бизнеса [3] включают в себя все роля поведения HIPS DeepGuard. живает также Cisco NAC (Network
необходимые программные продукты, Обеспечивается проверка POP3/ Admission Control), применение которой
позволяющие защитить от вирусов ра- SMTP/IMAP4/HTTP-трафика; позволяет гарантировать, что подклю-
бочие станции, мобильные устройства, n F-Secure  Anti-Virus  for  Windows  чающаяся к сети система будет удов-
файловые и почтовые серверы, шлю- Servers – защита файловых сер- летворять требованиям всех политик
зы. Для удобства выбора представле- веров Windows NT4.0/2000/2003 компании.
ны готовые комплекты. Для наших ус- (32/62-бит) от вирусов, шпионско- Policy Manager построен по клиент-
ловий наиболее подходят два реше- го ПО и потенциально опасных про- серверной схеме, в которой управле-
ния: F-Secure Anti-Virus Small Business грамм; ние настройками производится уда-
Suite (SBS) и F-Secure Protection Service n F-Secure  Anti-Virus  for  Microsoft  ленно, при помощи терминала, но есть
for Business (PSB), каждое по-своему Exchange – контроль исходящих свои особенности. Так, графические
интересно. Лицензия на SBS ориенти- и входящий сообщений Microsoft отчеты создаются в модуле, имеющем
рована на 5-99 систем. Exchange 2000/2003/2007; название F-Secure Policy Manager Web

56
Таблица 2. Возможности антивирусных систем

Производитель «Лаборатория «Доктор Веб» ESET McAfee Symantec F-Secure Anti-Virus F-Secure Protection
Касперского» Small Business Suite Service for Business
Управление ОС Windows Кроссплатформен- Windows 98/ Windows (версия Windows Windows 2000/ Поддерживают-
ное. Любая систе- Me/2000/XP 3.x) или WEB (4.x XP/2003 ся Internet Explorer
ма, поддержива- версия) 6.x или свежее
ющая JRE не ни- с разрешенными
же 5.0 JavaScript и cookies
Firefox 2.x, или све-
жее с разрешен-
ными JavaScript
и cookies, Profile
Editor требует Java
RE 1.6
Консоль  + + + – + – +
локализация
Сервер  Microsoft Windows Windows NT 4.0/ Windows на ядре Windows 2000/2003 Windows 2000/ Windows 2000/ Нет
управления ОС NT/2000/2003/2008/ 2000/XP/2003/2008, NT/2000/XP/2003 2003/2008 2003/XP(для не-
XP/Vista Linux, FreeBSD большого количес-
(до 7.0), Solaris тва соединений),
(x86 и Sparc) Linux
для 32- и 64-бит-
ных систем
СУБД MySQL, Microsoft Встроенная, под- Внутренняя MS SQL Server Встроенная, Встроенная Нет
SQL Server 2000/ ключение через 2000/2005/2005 MS SQL 2000SP3/
2005/2008, MSDE, ODBC, PostgreSQL Express Edition 2005
SQL Server 2005
Express Edition
Клиент ОС Windows, Linux, мо- Windows 95/98/Me/ Windows 2000/XP/ Windows 98/ME, ОС Windows Windows 98/ME/ Microsoft Windows
бильные системы NT/2000/XP/Vista Vista NT 4.0 SP6, 2000, 2000/XP/2003/ NT4.0/2000/XP 2000/XP/Vista
(Windows Mobile, (32-бит) 2003, XP, Vista, Vista/2008 разных (32-bit). Отдельная (32-бит)
Symbian) 2008 (в том чис- редакций и Linux возможность под-
ле Core Server); (Red Hat Enterprise ключения Linux
Windows Terminal Linux от 3.x, SuSE
Server от NT; Linux Enterprise
Microsoft Cluster (server/desktop)
Server (MSCS); от 9.x, Novell Open
XP Tablet PC, Citrix Enterprise Server
MetaFrame 1.8 (OES/OES2), Ubuntu
& XP; EMC Celerra от 7.x и Debian 4.x),
File Server а также VMWare
Novell Netware ESX 2.5, 3.x.
UNIX-системы в ко-
мандной строке
Клиент- Антивирус, проак- Антивирусный ска- Антивирус, бранд- Антивирус, частич- Антивирус, бранд- Антивирус, бранд- Нет
возможности тивная защита, за- нер, файловый мо- мауэр, антиспам, но Adware мауэр, проактив- мауэр антишпион,
щита файловой нитор, почтовый блокировка мно- ный модуль, защи- сканер руткит, кон-
системы, брандма- фильтр, «тихий» гих типов сете- та почты, контроль троль поведения
уэр с IDS/IPS, про- режим сканиро- вых атак, контроль процессов и при- (HIPS), Cisco NAC
верка POP3, IMAP, вания файлов ложений, Symantec
MAPI, NNTP, HTTP. Network Access
Антифишинг и ан- Control
тиспам
Почтовый сервер Sendmail, Qmail, UNIX/MS Exchange/ UNIX/MS Exchange/ Microsoft Exchange SMTP/Domino, Microsoft Exchange Нет
Postfix, Exim, IBM Lotus Domino IBM Lotus Domino 2000/2003/2007; Linux, Microsoft 2000/2003/2007
Exchange 2003/ Lotus Domino Exchange 2007
2007, Lotus Notes/ от 6.0.2 для
Domino Windows 2000/2003
Файловый  Windows, Linux, Windows/UNIX/ Windows, Novell Windows NT/2000/ То же, что и клиент Windows NT4.0/ Windows 2000/2003
сервер Samba, NetWare Novell NetWare Netware/ Linux/ 2003/2008 2000/2003 Server (32-бит)
*BSD/Solaris (32/62-бит)
Интернет-шлюз Microsoft ISA UNIX Linux/*BSD/Solaris SMTP-трафик, ус- Весь трафик SMTP/HTTP/FTP Нет
Server, Check Point тановка на Windows
FireWall NT/2000/2003

Reporting. Благодаря наличию готовых антивирусных баз в удаленные офисы В том случае, если заявленной
шаблонов администратор может быс- используется специальный компонент функциональности не хватает, мож-
тро найти системы, в которых не уста- F-Secure Policy Manager Proxy. но использовать и другие продукты
новлены последние обновления, про- Policy Manager поддерживает ус- F-Secure, которые обеспечивают защи-
верить настройки безопасности и так тановку на Windows Server 2000/2003 ту рабочих станций и файловых серве-
далее. Заявлено, что один сервер мо- (XP, только консоль), есть и Linux-вер- ров на Linux, серверов Citrix, мобиль-
жет управлять установкой ПО на 15 ты- сия, ориентированная на установку ных устройств и так далее. Все они
сяч узлов. При необходимости в одной в: Red Hat Enterprise Linux 3/4, SuSE поддерживают управление при помо-
сети можно использовать несколько Linux 9/10, SuSe Linux Enterprise Server щи F-Secure Policy Manager. Хотя ко-
серверов. Для отправки обновлений 9 и Debian Sarge 3.1. нечная цена такого решения, вероят-

№4, апрель 2009 57


контроля приложений и спама. Центра-
лизованное управление производится
при помощи простого интерактивного
портала через Интернет. Сам портал
размещен на серверах F-Secure, поэто-
му отдельной системы для его установ-
ки не требуется, а сам портал доступен
из любого места в любое время.
Пользователю для доступа к порта-
лу выдается код подписки (subscription
code), который используется при ре-
гистрации. Аналогичный код подписки
вводится во время установки клиентов
(инсталляционные пакеты скачивают-
ся с портала). Система управления до-
статочно проста и к тому же локализо-
вана. Настройки производятся при по-
мощи профилей безопасности, сразу
после подключения доступны 7 пре-
дустановленных профилей для раз-
личных типов систем (1 – для серве-
ра, 2 – ноутбуки и 4 – офисные маши-
Модуль контроля приложений F-Secure блокирует неизвестные процессы ны). Отсутствие сервера обновлений
в локальной сети не увеличит трафик.
но, будет чуть выше. В частности, в нашем примере Secure Агент автоматического обновления при подключении к Ин-
Anti-Virus Small Business Suite следует дополнить F-Secure тернету скачивает файлы на одну рабочую станцию, отку-
Internet Gatekeeper, который предназначен для использова- да они распространяются на другие системы.
ния в интернет-шлюзах и обеспечивает фильтрацию почто-
вого (SMTP) и HTTP/FTP-трафика, а также контроль досту- Заключение
па, спама и содержимого. Итак, все системы защиты, несмотря на некоторую схожесть
Теперь следующий продукт – F-Secure PSB, доступный в архитектуре, все же очень отличаются по функциям и сто-
в двух версиях: Standard и Advanced. Это решение несколь- имости. На общем фоне выделяется решение от Symantec
ко иного рода. Возможности клиентской части F-Secure PSB и «Касперского» – оснащенный клиент для нескольких плат-
Workstation, предназначенной для защиты рабочих станций форм, удобная консоль, но первый обойдется гораздо де-
и серверов, работающих под управлением Windows, в об- шевле. Если говорить об экономии средств, то здесь не-
щем, аналогичны Client Security. То есть содержит средства плохо выглядят F-Secure PSB и Safe'n'Sec Enterprise. Учи-
защиты от вирусов, шпионского ПО и руткитов, имеет встро- тывая, что для F-Secure PSB не нужен свой сервера управ-
енный брандмауэр, средства предотвращения вторжений, ления с СУБД, это уменьшает стоимость и упрощает адми-
нистрирование, его можно рекомендовать для небольших
групп, не имеющих своего штатного администратора. Для
сети, в которую входят Windows-системы, можно пореко-
мендовать комплект Dr.Web «УНИВЕРСАЛЬНЫЙ», правда,
здесь нужно помнить, что за продление лицензии, вероят-
но, придется заплатить полную стоимость. Хотя у продук-
тов Dr.Web есть еще один плюс – клиент и сервер управле-
ния независимы от платформы, а работа агента практичес-
ки «незаметна». Решения ESET и F-Secure SBS находятся
примерно на одном уровне. Но первый хорошо знаком на-
шему пользователю, кроме того, консоль управления ло-
кализована, второй меньше стоит. McAfee впечатляет вы-
бором клиентских платформ, но сам клиент сильно отста-
ет по сравнению с другими решениями.

1. Архивный диск журнала «Системный администратор» – http://


www.samag.ru/disk.
2. McAfee SMB Product Comparison – http://shop.mcafee.com/
ProductRecommender.aspx.
3. Решения F-Secure для малого и среднего бизнеса – http://www.
При появлении нового процесса Safe'n'Sec блокирует его
выполнение до принятия решения пользователем f-secure.ru/small_businesses/products_a-z.

58
Тотальная защита локальных сетей
В этот раз на тестирование в редакцию попало устройство Dr.Web Office Shield. Устройство
от именитой фирмы предназначено для обеспечения антивирусной защиты локальных сетей.
Не секрет, что подобных устройств существует достаточно много – многие антивирусные
компании имеют их в своих продуктовых линейках. Но в отличие от своих конкурентов
Dr.Web Оffice Shield в дополнение к функциям защиты почтового и интернет-трафика может
защищать еще рабочие станции и серверы, так как в состав программного обеспечения
устройства входит хорошо себя зарекомендовавший продукт от компании «Доктор Веб» –
Dr.Web Enterprise Suite. Явными преимуществами можно назвать то, что аппарат обладает
весьма скромными размерами, нетребователен в обслуживании и рассчитан на обслуживание
неквалифицированным персоналом – в сопровождающих поставку инструкциях все этапы
настройки расписаны достаточно подробно и богато проиллюстрированы. На этом преамбулу
считаем законченной и приступаем непосредственно к тестированию.

С
разу после распаковки уст- танавливаем работу данного сервиса послать тот же псевдовирус в качестве
ройство согласно инструкции на странице «Сервер DHCP», на кото- вложения. Работа же сервиса фильтра-
было подк лючено в локаль- рую можно перейти из расположенно- ции спама становится заметной прак-
ную сеть через разъем LAN1, которо- го справа меню. Привычная для многих тически сразу – весь приходящий спам
му по умолчанию соответствует ад- администраторов функция прямого ре- по умолчанию помечается префиксом.
рес 192.168.1.100. Настройка устройст- дактирования списка сервисов в уст- Переходим в соответствии с ин-
ва полностью проходит через веб-ин- ройстве отсутствует, так как необходи- струкцией к проверке Dr.Web Enterprise
терфейс, поэтому в качестве первого мость их функционирования во многом Suite. Установку агентов защиты мож-
шага открываем в браузере страницу зависит от функционала, прописанно- но проводить как вручную, так и авто-
https://192.168.1.100:1000 и загружаем го в лицензионных ключах, и их простое матически – через консоль. Как обыч-
полученные лицензионные ключи. Воп- включение может привести к различно- но, проводим установку вручную, путем
реки всем ожиданиям выполнение этой, го рода проблемам. Поскольку диапа- запуска «drwinst 192.168.10.7». Правда,
казалось бы, достаточно простой зада- зон нашей локальной сети отличается вопреки инструкции не копируем не-
чи вызвало ряд затруднений, так как от используемого в устройстве по умол- обходимые файлы на каждую рабочую
браузер от Microsoft (IE7) отказался их чанию, то выбираем «Сетевые интер- станцию, а просто монтируем сетевой
загружать, и загрузку пришлось выпол- фейсы» и меняем адрес LAN на рабо- ресурс. Установка успешно прошла на
нять с помощью Firefox. Как ни стран- чий – в данном случае 192.168.10.7. На- MS Windows XP Home, MS Windows XP
но, в дальнейшем при выполнении на- жимаем «Применить» и дожидаемся Prof и MS Windows Vista Home. Все ус-
строек ни в IE7, ни в Firefox проблем за- обновления страницы веб-интерфейса. тановленные клиенты обновились,
мечено не было. Здесь же необходимо В Dr.Web Оffice Shield, также по умол- станции были перезагружены, и защи-
отметить, что для устройства важен по- чанию, реализована защита беспро- та локальных компьютеров заработа-
рядок загрузки ключей – вначале необ- водных сетей и VPN. Поскольку ни то ла в штатном режиме. Устанавлива-
ходимо загрузить enterprise.key, затем ни другое нам не нужно, то отключаем ем консоль Enterprise Suite, с которой
agent и только потом drweb. Как пояс- их соответственно на страницах «Сете- в дальнейшем будем проводить на-
нили разработчики, это связано с осо- вые интерфейсы» и «Настройки VPN». стройку параметров работы антивирус-
бенностями реализации функционала Так как настройки DNS и WAN в дефол- ной защиты сети. Также, вопреки инс-
в вошедших в состав устройства про- тном состоянии нас устраивают, то под- трукции, опять ничего копировать не бу-
дуктов компании. После загрузки клю- ключаем кабель WAN к LAN3. Устройс- дем, а просто подключаем сетевой ре-
чей в веб-интерфейсе становятся до- тво получает адрес по DHCP, исходя- сурс \\192.168.10.7\\public как диск и за-
ступными страницы настроек. щий шлюз и внешние DNS. пускаем drweb-*-consolewindows.exe
Первым делом меняем пароль, уста- Проверяем фильтрацию веб-трафи- прямо оттуда. После установки пере-
навливаем, если это необходимо, пра- ка. Меняем настройки рабочей стан- таскиваем иконку консоли на рабочий
вильное системное время и выбира- ции с DHCP на ручные, указываем ус- стол и запускаем консоль, как указано
ем удобный для нас язык локализации. тройство в качестве исходящего шлю- в инструкции.
По умолчанию устройство способно ра- за и пытаемся загрузить тестовый ин- Итак, испытания показали, что ус-
ботать в качестве основы локальной се- фицированный файл со страницы http:// тройство удовлетворительно работает
ти – на нем запущены серверы DHCP www.eicar.org/anti_virus_test_file.htm. и может быть рекомендовано для ис-
и DNS. Поскольку в нашей сети сервер Результатом данной попытки являет- пользования при условии точного соб-
DHCP уже есть, то переходим на стра- ся уведомление о блокировке – что и людения приложенных инструкций.
ницу «Настройки DHCP» и снимаем требовалось получить. Для тестирова-
соответствующую галочку. Просто ос- ния сервиса фильтрации почты можно Вячеслав Медведев

№4, апрель 2009 59


Обновление конфигурации.
Как избавить себя от лишних проблем

Андрей Луконькин
Редко какая организация может работать в типовой программе. Рано или поздно понадобятся
изменения или обновления. И вот когда сначала вносятся изменения, а потом возникает
потребность в обновлении, тогда и возникает вопрос – а как же обновить базу, если
в конфигурацию уже были внесены свои корректировки?

П
режде всего нужно определить- ции ничего подобного не нужно, то со- Как говорится в современной поговор-
ся с целью обновления, то есть ответственно и необходимость прове- ке: «Бэкап лишним не бывает. Прове-
ответить на вопрос: «А зачем дения работ по обновлению ставится рено – это каждый раз так!».
мы хотим это сделать?». Как правило, под вопрос. В этом случае, возможно, Следующим важным шагом бу-
к новым релизам прилагается описа- стоит дождаться выхода последующих дет определение, насколько база от-
ние внесенных изменений и добав- релизов для экономии времени и де- личается от типовой (а возможно, она
ленного функционала. Например, ес- нег, а также для снижения риска появ- и полностью типовая!). Для этого нуж-
ли фирма «1С» выпустила новую вер- ления ошибок. но сравнить текущую рабочую конфи-
сию программы, в которой только по- Если всё же пришли к выводу о не- гурацию с типовой конфигурацией той
явилась возможность ведения уче- обходимости проведения обновления же версии (релиза).
та по добровольным взносам в ПФР конфигурации, то в первую очередь де- n Узнать номер релиза рабочей ба-
и ничего более, а в вашей организа- лается резервная копия базы данных. зы (пусть это будет 1.2.20.2).

60
n Установить типовую конфигурацию
такой же версии и сохранить кон- Рисунок 1. Для «тонкого» обновления одновременно используется 4 окна
фигурацию в файл (меню «Конфи-
гурация → Сохранить конфигура-
цию в файл»), назовем его «типо-
вая 1_2_20_2.cf».
n В конфигураторе рабочей базы
провести сравнение (меню «Срав-
нить, объединить с конфигураци-
ей из файла») с сохраненным нами
файлом «типовая 1_2_20_2.cf».
n Если получили сообщение «Конфи-
гурации идентичны», значит, нам
повезло, используется полностью
типовая база и обновить ее мож-
но через меню «Конфигурация →
Поддержка → Обновить конфигу-
рацию». Если же появилось окно
сравнения с указанием отличаю-
щихся объектов, то нужно присту-
пать к следующему этапу работы. Рисунок 2. Окно сравнения модулей. Отображаются только отличающиеся части модуля

Итак, мы выяснили, что в базу вно- объектов («Список»), можно смело за- голову в попытках вспомнить «меняли
сились изменения, и обычное обновле- пускать объединение в 1-м окне. Пос- мы тут что-то или нет».
ние может испортить наши доработки. ле проверки появится окно сравнения Во-вторых, если соблюдать некото-
Чтобы сохранить их, выясним, какие и объединения, в котором нужно снять рые нехитрые правила, то количество
именно изменения были, с точностью галки с тех объектов, которые входят измененных типовых объектов можно
до объекта. После этого проведем ак- в «Список». свести к минимуму.
куратное, «тонкое» обновление. Затем начинается самое интерес- n По возможности не изменять стан-
Обычно я использую режим «4 кон- ное – аккуратно вручную обновляем дартные процедуры. Создайте об-
фигуратора» (см. рис. 1). Что же это измененные объекты. То есть в 1-м кон- щий модуль, в котором будут раз-
такое? фигураторе вносим изменения, кото- мещаться созданные или изменен-
n 1-е окно конфигуратора: наша ра- рые видим в окне сравнения 3-го кон- ные вами процедуры и функции. Та-
бочая база (номер релиза 1.2.20), фигуратора. Чем 8-я версия платфор- ким образом, все изменения све-
которую необходимо обновить. мы выгодно отличается от 7.7, так это дутся только к одной строке вызо-
Здесь мы будем частично объеди- тем, что есть возможность видеть раз- ва нужной процедуры.
нять с типовым релизом, частич- личия в модулях с разбивкой по про- n Если нужно скорректировать форму
но вносить что-то руками в модули цедурам. То есть выводится не один документа, справочника или обра-
и править формы. огромный текст (например, глобаль- ботки, роль или интерфейс, то луч-
n 2-е окно конфигуратора: в нем ный модуль в 7.7), в котором найти од- ше создать копию и её уже изме-
открыто окно сравнения нашей ра- ну-единственную измененную строч- нять под свои нужды.
бочей базы с типовым релизом той ку достаточно проблематично, а толь- n Печатные формы и отчеты могут
же версии (1.2.20). Таким образом, ко те процедуры, в которых были кор- храниться во внешних файлах.
мы выявим, какие объекты нельзя ректировки (см. рис. 2). n Оставляйте комментарии в текс-
обновлять автоматически, т.к. они После окончания процесса обнов- тах модулей. Этим вы избавитесь
отличаются от типовых. Назовем ления лучше будет провести хотя бы от вопросов «кто, когда и зачем это
это «Список». небольшое тестирование функциона- менял?».
n 3-е окно конфигуратора: сравне- ла программы, хотя бы тех объектов,
ние типового релиза 1.2.20 и ново- которые изменялись ранее самостоя- Конечно, важно понимать смысл
го типового 1.2.21. Здесь наглядно тельно и обновлялись вручную. того или иного действия, и лучше со-
будут видны все изменения, кото- ставить небольшой план действий пе-
рые предлагает фирма «1С». Как можно облегчить ред началом работы. Например, доба-
n 4-е окно конфигуратора: типовая себе жизнь, если часто вить сначала базовые объекты (конс-
конфигурация нового релиза 1.2.21, вносятся изменения в базу? танты, перечисления) и только потом
чтобы отсюда можно было копиро- Для этого, во-первых, в номере релиза справочники, документы и регистры.
вать объекты, процедуры или от- измененной базы ставится отличитель- Но помните, что всегда есть архивная
дельные куски кода программы. ный знак, например «*». Это будет оз- копия (она просто обязана быть!), ко-
начать, что конфигурация отличается торая не оставит организацию без ин-
Имея точный список измененных от типовой, и тогда не придется ломать формационной базы.

№4, апрель 2009 61


Ж и зн ь
в с тил е
х о к ку

Для меня общение – это когда один человек


обменивается своей мудростью с другим. И не
важно, считают ли оба собеседника себя мудрецами, много
ли они говорят друг другу или просто молча улыбаются, глядя на
ребенка, который носится по детской площадке… Житейской мудрости
можно научиться по‑разному… Мне кажется, что, завершив интервью с главой
представительства Kerio Technologies в России и странах СНГ Максимом Акимовым, я не
только получила очередной материал для публикации, но и поняла для себя что‑то очень важное.
Ч
то именно, трудно сформулиро- ко меня настраивал: МФТИ – это вы- ти по прежнему пути и в той же «ком-
вать. Размышляя над записанны- сокий уровень. пании». Однако уже на старших кур-
ми на пленку короткими, емкими, – Что самое интересное в науке? – сах Максим Акимов осознал – ему
четкими ответами Максима, я догада- спрашиваю я. не по пути с теми, кто добивается ус-
лась, наконец, что они мне напомина- – Это возможность понимать вещи. пеха в науке. А главное:
ют – хокку или хайку, танки, философ- Любое явление природы… Вот падает – В тот момент люди делились
ские лаконичные вирши японской по- капля. Можно просто на нее смотреть, для меня на два типа: одни работают
эзии. Знаете, некоторые любители га- а можно попытаться понять, почему с информацией – люди науки, и дру-
дают по этим стихам, пытаясь угадать, именно так она падает, какова форма гие работают с другими людьми – за-
что готовит им судьба… капли, как она разбрызгивается, ка- нимаются продажами, маркетингом
Тридцатилетний Максим Акимов кую форму принимает на поверхнос- и так далее. На тот момент я «наел-
рассказывал о своей судьбе, вернее, ти, куда упала. То есть взгляд на мир ся» общением с людьми информации,
о маршрутах, которыми он шел до сих немного меняется. мне казалось, что они живут в каком-
пор по жизни. И мне показалось весь- Родители очень поддерживали то нереальном мире, построенном ими
ма любопытным показать и вам эти Максима в студенческие годы, горди- самими и имеющим довольно косвен-
маршруты, связав их с бессмертны- лись им – сын всегда хорошо учился. ное отношение к реальности. Мне за-
ми строками. Очень были рады, когда на последних хотелось в реальную жизнь.
курсах МФТИ Максим поехал на ста- И он пошел в реальную жизнь,
О родительской мудрости жировку в Штаты. Пока был за океа- где царят не фундаментальные законы
ном, начал прощупывать почву – хо- и абстрактные теории, а цифры прибы-
тел остаться в аспирантуре, уже поч- лей и убытков, графики роста произ-
ти договорился с одним профессором водства, где каждый день можно ви-
из Гарварда. Размышлял о том, чтобы деть результаты своего труда.
осесть в Америке, вывезти туда доч- Питомец МФТИ еще ни разу не по-
ку, близких… И вдруг – планы изме- жалел о своем выборе… Даже когда
нились. Максим отказался не толь- выяснилось, что знания, полученные
ко от перспективы жить в США, но и в вузе, в новой профессии «не рабо-
Родной город Максима – древний от профессии, которой учился в ву- тают»:
Борисоглебск Воронежской облас- зе. Такой поворот родителей огорчил, – Меня слегка разочаровывало, ког-
ти. Слышите, какое удивительное на- конечно, – получается, сын упустил да я после института начинал работать,
звание? Борис и Глеб – русские свя- шанс хорошо устроиться в жизни, за- пытался использовать продвинутые
тые, в их честь на слиянии рек Воро- ниматься серьезным делом – наукой… методы анализа и понял, что это все
на и Хопер была построена в нача- Они сейчас иногда спрашивают Мак- не нужно. В бизнесе важнее понима-
ле XVIII века церковь, отсюда имя по- сима: «Не жалеешь, что тогда не уе- ние процесса, чем некие зависимости,
селения. Здесь до сих пор не переве- хал в Америку?». выверенные с помощью математичес-
лись густые леса… Наверное, именно – Я каждый раз отвечаю, что не жа- ких формул.
в таких местах рождается понимание лею. По-моему, они уже смирились, – Однако Максим совершенно уве-
красоты… И – огромное мальчишес- улыбается «беглец». рен – учился и стажировался в Шта-
кое желание познавать мир. Ему пот- А Москва… Она стала почти род- тах не зря!
ворствовал отец: ной – столько лет уже здесь. Труд- – Я приехал в Москву из другого го-
– Он много рассказывал в детстве, но представить, как можно работать рода. Учеба была тяжелая, и она дала
что такое звезды, как они «работают», не в столице, такое уж теперь у Мак- мне навыки преодоления сложностей,
почему дерево плавает, а железо то- сима Акимова дело – для него требу- преодоления себя. Заставить себя что-
нет. Вещи банальные, но открываю- ются масштабы и возможности мега- то делать, и делать много, те же самые
щие, как устроен мир. полиса. экзамены сдавать – это закаляет. Пос-
Максим рано понял, что ответы ле такой «тренировки» очень многие
на вопросы дает наука. Физикой заин- О мудрости выбора вещи в жизни видятся проще, не вы-
тересовался в 9-м классе – участвовал зывают страха.
в олимпиадах, даже на всероссийском Кстати, последние сомнения начи-
уровне, занимал призовые места. Ку- нающего менеджера развеял его пер-
да поступать? Конечно, в Московский вый начальник, к которому Акимов
физико-технический институт, где луч- пришел наниматься на работу:
ше всех учат физике. Ему не наскучило познавать мир. – Это тоже было иностранное пред-
– Может быть, один из факторов, Просто Максим в какой-то момент по- ставительство. Я спросил: «Что луч-
почему я поступил именно в этот инс- нял, что он не хочет заниматься на- ше: если я пойду в аспирантуру учить-
титут – когда-то мой папа тоже зани- укой. Его сферой была физика твердо- ся дальше или сразу пойду работать
мался физикой, участвовал в олимпиа- го тела. Конечно, он мог добиться ус- к вам?». А он спросил в ответ: «Как ты
дах, но в последний момент не решил- пеха благодаря трудолюбию и упорс- думаешь, кого я возьму с большей
ся поехать поступать в Москву. Одна- тву. Если бы оставалось желание ид- охотой – аспиранта, который ничего

№4, апрель 2009 63


– А дальше?
– Посмотрим. Наверное, в конеч-
ном итоге это приведет к какому-то
своему делу.
Это не личные планы, это – про-
гноз.

О, мудрый руководитель!

Сегодня Максим Акимов отвечает


за бизнес компании Kerio Technologies
на ее крупнейшем рынке – в России.
Он руководитель и уже не учится, а сам
делится опытом с коллегами.
– Я впервые столкнулся с такой си-
туацией… То есть я действительно по-
нимаю, что у меня есть, что дать этой
компании, причем не только в России,
но и в глобальном масштабе. Это свя-
зано и с организацией, и с процессами
внутри компании, и с направлениями
развития. Работа в большой компании
накладывает отпечаток, накапливает-
ся «багаж» умений – от того, как пра-
вильно планировать маркетинговые
компании до организации внутренних
бизнес-процессов, знаний – касатель-
но скорости ответов, технологических
приоритетов развития.
не умеет в этой области, но облада- рое способствует успеху... Я, навер- Работа в Kerio не могла не привлечь
ет огромными амбициями, или голо- ное, все-таки умный. Мне так кажет- моего героя. И дело тут не в том, ко-
дного студента, выпускника институ- ся. Не скажу, что я легко общаюсь нечно, что Максиму Акимову хотелось
та, у которого мозг еще не засорен вся- с людьми. В социальном плане я че- почувствовать себя «боссом». Гла-
кой дребеденью и у которого есть же- ловек довольно закрытый. Не могу ва представительства, убежден он, –
лание учиться дальше?». Так я попал сказать, что мне очень нравится пос- «должность, подразумевающая очень
в свою первую компанию. тоянно общаться. Есть мера, которой большой процент креатива и очень
Карьера выстраива лась стре- мне достаточно. Но во время общения серьезную ответственность за все,
мительно – помощник менеджера, на работе я хорошо понимаю, что че- что происходит».
channel-менеджер, ответственный ловеку надо. На этот счет у Максима есть целая
за работу как в России, так и в Южной, – Я слушаю и осознаю – говорит теория (сказывается все-таки научное
Восточной Европе, за связи с верти- серьезно, но, можно сказать, – с науч- прошлое):
кальными рынками. ной точки зрения. Ведь с чем я пришла – Есть две стороны. Одна сторо-
Интересуюсь: к Максиму? С задачей проанализиро- на – личностные качества, напря-
– Талант в сфере организации биз- вать его собственную личность. И вот мую не связанные с опытом работы.
неса открылся у вас внезапно или вы мне выдают результаты «ученого ис- И здесь дело в той ответственности,
предполагали его в себе? следования»… И это «исследование» которую человек хочет и может на се-
Максим улыбается и отвечает так, показывает, что сегодня Максим Аки- бя брать. Потому что если ответствен-
что сложно понять сразу, шутит он или мов встал на новую ступеньку разви- ности не хватает, я, по крайней мере,
говорит серьезно: тия – стал руководителем. начинаю добирать со стороны, смот-
– Я думаю, что единственный – Я думаю, что я буду развиваться рю, что можно еще сделать, чтобы по-
мой талант, вернее, качество, кото- именно в этом направлении. чувствовать «кайф» работы. Ведь са-

64
мое большое удовольствие от работы них. В то же время он требует по мак- Мудрый в горы
состоит в том, что есть какое-то дело, симуму с подчиненных, чтобы они его не пойдет?
я его делаю, и оно получается. Это од- не «подставили» перед высшим на-
на часть. Вторая часть связана с про- чальством. А вообще есть такая пос-
фессиональными навыками. Как я го- ловица, что лучшие руководители –
ворил, опыт работы в большой компа- это те, которых мы не замечаем. Мо-
нии дает очень много. В той компании гу добавить, что меня коробило, ког-
нас довольно много учили. Моя работа да мои начальники не признавались
связана в основном с общением с пар- в своих ошибках. Когда человек что- Проследить маршрут человеческой
тнерами, с теми, кто продает наши ре- то делает неправильно и пытается вину судьбы – не так сложно. В общем-то
шения. В предыдущей компании нас свалить на своих подчиненных, это не- можно и единичные поступки челове-
учили, как правильно общаться с та- красиво… ка объяснить. А вот найти причины, до-
кими людьми и как их заинтересовы- Руководящий стиль самого Акимо- копаться, почему человек именно та-
вать. Основная идея – channal-ме- ва во многом определен спецификой кой, какой он есть, сложно… Да и нуж-
неджер – человек, который общается частной компании. Теплая, семейная но ли это? Максим Акимов в свое вре-
с партнерами, должен быть не только обстановка, в которой просто не при- мя увлекался психологией, посещал
продавцом своих решений, но и свое- живаются формализм и бюрократия, различные тренинги, даже круг дру-
го рода советником по бизнесу. Он принятые в крупных фирмах с их не- зей составился именно из психологов –
должен хорошо разбираться в биз- избежным дресс-кодом и проверка- людей, которые близки по духу, по ми-
несе, которым занимается компа- ми. Пять минут опоздания – серьезная ровосприятию. Но объясняет ли это ха-
ния. Топ-менеджер компании-партне- провинность… Нет, в российском пред- рактер Максима, его личность? Навер-
ра предпочитает общаться с channal- ставительстве Керио все весьма либе- ное, только отчасти…
менеджером на одном языке. Если я рально, нет драконовских норм и зако- Хотя мне кажется, что интерес
приду и стану просто рассказывать, нов. Однако в такой домашней обста- к проблеме информационной безопас-
какие у нас хорошие продукты, пар- новке важно не расслабиться до рас- ности проистекает именно из любви
тнер не будет слушать. Если же я на- хлябанности и ничегонеделания. Если к психологии. Сам Максим признает:
чну беседовать с ним о его бизнесе, ты с утра не в офисе, это не страшно, – По многочисленным оценкам, сей-
о том, каковы его приоритеты в раз- главное – чтобы работа была сдела- час основные угрозы для предприятий
витии компании и как мы можем ему на вовремя, качественно и чтобы на- в области информации проистекают
помочь, то это совсем другой подход. чальник мог с тобой в любой момент от внутренних сотрудников, а не от вся-
Отношение к нам будет совсем другое. связаться. ких там хакеров, вирусов и так далее.
Нас этому учили на курсах и на прак- И, кстати, такие же требования Работники компаний сами заносят ви-
тике. И я стараюсь выступать, при- предъявляет к самому Максиму Аки- русы. Поэтому есть два кардинально
ходя к партнерам, не только как пос- мову высшее руководство: противоположных пути, как вести се-
тавщик наших решений, но и как экс- – Формальных требований нет. Сво- бя в такой ситуации. Либо максималь-
перт в нашей отрасли. Я им даю новые бода довольно большая. Позиция ме- но контролировать своих сотрудников,
знания, информацию о том, что де- неджмента такова: если человек от- установить слежку, прочитывать элект-
лают наши партнеры в других стра- ветственен за какой-то участок рабо- ронную почту. Либо, наоборот, де-
нах. После маржи, которую они име- ты, что он там делает – это его дело, монстрировать полное доверие к лю-
ют на наших продуктах, это наиболее нужно только ставить в известность дям, создавать условия, чтобы им бы-
полезная часть нашего сотрудничест- высшее начальство. … Согласитесь – ло невыгодно вести себя неправильно
ва – советы, взгляд со стороны на их разумно. или заниматься диверсиями... Очень
бизнес. Я могу оценить, что они дела- Кстати, а по поводу дресс-кода много дебатов сейчас идет.
ют правильно, а что нет. И этот под- Максим не может забыть одну забав- – А на ваш взгляд, как правильно?
ход я стараюсь сейчас внедрить в на- ную историю: – Я считаю, что должна быть какая-
шей компании. – Когда я пришел в первый раз то золотая середина. Доверяй, но про-
Став руководителем, Максим по- на собеседование в эту компанию, веряй.
дошел к новой роли взвешенно и ра- разговаривал с нашим старшим ви- Да, с точки зрения сотрудников,
зумно. Он старается взять самое луч- це-президентом, я был в костюме, он – слежка – это ужасно, но руководите-
шее из увиденного – столько началь- в футболке. Уже после собеседования ли считают, что это полезно, благода-
ников прошло перед глазами, и у каж- он рассказал мне, что агентство, кото- ря таким мерам они пресекают случаи
дого было чему поучиться. Даже не- рое организовывало собеседование, кражи, утечки информации.
кий портрет «идеального» руководи- спросило его, каков дресс-код для че- Разумный подход. Похоже, в слу-
теля «нарисовался»: ловека, который придет устраиваться чае Максима Акимова он распростра-
– Это буфер между подчиненны- на работу, и он ответил: «Главное, что- няется на всю его жизнь. Если руково-
ми и высшим менеджментом. То есть бы человек был одет». Культура компа- дитель российского представительс-
он как может защищает своих под- нии такова, что люди не «напрягают» тва компании Kerio отдыхает – то в го-
чиненных и старается выбить макси- себя ненужными вещами. И в общении рах: сноуборд зимой, пешие походы
мально благоприятные условия для с партнерами это помогает. летом. Не только потому, что это ин-

№4, апрель 2009 65


тересно, красиво, но и потому, что эф- примерно методика. Это надо – инфор- не знаешь, что случится в следующий
фективно. мации все больше, приходится много момент. Они показывают историю, ко-
– Я много раз сравнивал ощущения читать по менеджменту... В художест- торая может иметь десять смыслов,
от отдыха в кресле у телевизора и в го- венной литературе что нравится? «Ти- а может ни одного – смотришь как кар-
рах. В горах неделя – это месяц жиз- хий Дон» оставил сильное впечатле- тинку. Гораздо больше эстетического
ни, у телевизора неделя – это два дня. ние. Я его читал раза три в своей жиз- удовольствия получаешь.
Голова тяжелая... ни, очень нравится. Фантастику тоже И уж, конечно, Максиму Акимову
Такой же разумный подход к собс- читаю – Хайнлайн, Кларк. его повседневная деятельность вовсе
твенному здоровью: Театральные и кинопристрастия не кажется фантастикой. Но я уже так
– На тренажерах скучно. Стараюсь у Максима не тривиальные. Такой «че- привыкла спрашивать об этом у своих
раз в два дня делать зарядку. Десять ловек разумный», как он, уж, конечно, героев, что в очередной раз не удер-
минут с утра. Это довольно прагматич- не будет тратить время на «пафосные» жалась…
ная вещь. Мне трудно заниматься чем- походы по модным спектаклям и куль- Максим терпеливо объяснил свою
то, что правильно в социальном аспек- товым фильмам. точку зрения:
те, но не дает ничего лично мне. Я прос- – Я всегда любил театры неболь- – Здесь есть два аспекта. Один – по-
то заметил, что если я десять минут шие и не очень классические. МХАТ нимать, как оно устроено и как работа-
с утра позанимаюсь, то становлюсь ак- им. Горького мне всегда казался мрач- ет. И другое – это дело продавать. Я пы-
тивнее, у меня настроение улучшается. ным. Островский повергал в какую-то таюсь понять, что нужно нашим заказ-
После зарядки я себя лучше чувствую. депрессию… А вот театр «Сфера» не- чикам, и понять, как мы подходим под
Абсолютно прагматичный подход. большой и в то же время очень душев- их нужды. Фантастики тут особой нет.
И совершенно в логике прагматич- ный. Более реальные персонажи в пос- Хотя когда я читаю хронологию разви-
ного поведения Акимова – его занятия тановках. Сейчас реже получается вы- тия технологий и понимаю, как много
на курсах скорочтения. бираться, больше в кино хожу. было сделано, возникает такое ощу-
– Преподаватели курсов, на кото- – А что в кино? щение. Но не часто. Я больше прагма-
рых я сейчас занимаюсь, утверждают, – Люблю корейские фильмы. Во- тик в этом плане.
что повысится не только скорость, но и первых, они очень красивые, во-вто-
качество чтения. Дают тексты, после рых, не такие предсказуемые, как аме- Текст: Оксана Родионова,
них надо ответить на вопросы – такая риканские. В корейском кино никогда фото: Евгения Тарабрина

66
JavaFX – Reach Internet Application от Sun
Прощай, унылый Swing?

Кирилл Сухов
5 декабря 2008 года Компания Sun Microsystems представила финальную версию JavaFX –
свою платформу для создания Rich Internet Aplication, ставшую достойным ответом
конкурентам.

Е
сли вспомнить историю созда- плеты продемонстрированы Гослингом вилась технология Flash, использова-
ния интернет-приложений, при- при презентации браузера WebRunner ние клиентских возможностей браузе-
дется признать за компани- в далёком 1994 году. С тех пор про- ра (Javascript, DOM) вылилось в тер-
ей Sun первенство в создании Rich шло много всяких событий, интернет- мин WEB-2, а апплеты как технология,
Internet Application. Первые Java-ап- приложения росли и изменялись, поя- в общем, не сильно изменились. За-

№4, апрель 2009 67


но основная его роль, декларируемая Sun – «апплет ново-
го образца», основное отличие которого от обычных аппле-
тов – возможность самостоятельного существования. В са-
мом деле, JavaFX-программа вполне может быть оформле-
на в качестве обычного апплета, но этот апплет можно вы-
тащить из содержащей его страницы, закрыть последнюю
и продолжить работу (Drag-to-Install).
В общем, такой продукт является интернет-приложени-
ем, только потому, что через Глобальную сеть происходит
доставка его потребителю, а также по причине наличия воз-
можности активного взаимодействия через Интернет с сер-
вером. Ну а в обычной несетевой, ипостаси эти приложе-
ния мало чем уступают обычным настольным.
Приложение JavaFX, естественно, использует для рабо-
ты Java-машину (см. рис 1). Как следствие оно может ис-
пользовать классы и объекты Java, импортировав соответ-
Рисунок 1. Архитектура платформы JavaFX ствующие пакеты.
Технология позволяет легко встраивать в приложение
няв прочное положение на мобильных устройствах, на де- мультимедиа данные, анимацию и различные визуальные
сктопах, они так и не получили заметного распростране- эффекты. Связывание данных облегчает построение эф-
ния. Положение осложнилось с появлением таких мощ- фективных интерактивных интерфейсов.
ных конкурентных технологий, как Adobe Flex/Air, Microsoft Используемый скриптовый язык JavaFX Script поня-
Silverlight. тен и прост в освоении (см. врезку «JavaFX Script – крат-
С другой стороны, имело место недовольство потреби- кий обзор»). Он обладает обширными средствами для де-
телей возможностями средств Java (Swing, Java2D), для раз- кларативного описания, имеет необходимые встроенные
работки графического пользовательского интерфейса. Осо- объекты.
бенность ситуации была в том, что эти средства вполне поз- Впрочем, не особенно хочется превращать обзор в рек-
воляли в теории создавать GUI любой сложности и «кра- ламную листовку, лучше давайте попробуем возможности
сивости», но процесс этот никак нельзя было назвать лёг- JavaFX на практике.
ким и эффективным. Возникла необходимость в простом
средстве проектирования интерфейсов, которым может Начинаем работу
быть скриптовый декларативный язык. Для разработки на JavaFX существуют специальные ин-
струменты, но сначала попробуем написать тестовое при-
Явление JavaFX ложение, воспользовавшись обыкновенным текстовым ре-
Впервые технология была представлена на конферен- дактором.
ции JavaOne в мае 2007 года. В декабре 2008 года вышла Прежде всего на вашей системе должен быть установ-
JavaFX 1.0, включающая в себя средства разработки – лен пакет JDK (Java Development Kit) версии 5 или 6 (пос-
JavaFX 1.0 SDK, плагин для NetBeans IDE 6.5 и JavaFX 1.0 ледняя по многим причинам предпочтительнее). Если это
Production Suite – набор инструментов для экспорта гра- не сделано, скачиваем пакет по адресу http://java.sun.com/
фических объектов в приложения JavaFX. Была пред- javase/downloads/index.jsp и устанавливаем его. Теперь ска-
ставлена также бета-версия эмулятора JavaFX 1.0 Mobile, чиваем и устанавливаем JavaFX SDK (http://java.sun.com/
для разработки JavaFX-приложений для мобильных плат- javafx/downloads). Инсталляция не должна вызвать осо-
форм. JavaFX TV – среда для запуска приложений на те- бых вопросов.
левизионной платформе, планируется к запуску в нача- Для проверки работоспособности среды в консоли вы-
ле 2010 года. полним команду javafxc, без параметров:
На настоящий момент (апрель 2009 года) вышла вер-
сия JavaFX 1.1, включающая мобильный профайл, позво- C:\Sun>javafxc
ляющий запускать JavaFX-приложения на мобильных уст- javafxc: no source files
ройствах. Usage: javafxc <options> <source files>
use -help for a list of possible options
На недавно открытом официальном сайте (JavaFX.com)
можно видеть примеры готовых приложений на основе но- C:\Sun>
вой технологии, предоставленных с исходным кодом.
JavaFX потихоньку входит в нашу жизнь. Если результат отличается, в первую очередь следует
проверить, добавлен ли путь к JavaFX SDK в переменную
Что это? окружения PATH.
Что конкретно представляет Теперь напишем нашу первую программу. Создадим
собой JavaFX-приложение? файл testfx.fx следующего содержания:
Оно вполне может работать
как продукт Java web start, Рисунок 2. Здравствуйте import javafx.stage.*;

68
import javafx.scene.*;
import javafx.scene.text.*; Stage {
import javafx.scene.paint.*; title: "JavaFX-калькулятор"
import javafx.scene.effect.*; width: 300
height: 500

Stage {
title: "Hello FX" scene: Scene {
width: 250 content:[ Text {
height: 80 x: 20 y: 60
scene: Scene { font: Font { size: 36}
content: Text { fill: Color.GREEN
x: 10 y: 30 effect: DropShadow{ offsetX: 3 offsetY: 6}
font: Font { size: 24 } content: "2 * 2 = 4"
fill: Color.GREEN }
effect: DropShadow{ offsetX: 3 offsetY: 3} ]
content: "Hello FX!"
} }
} }
}

Похоже на предыдущий пример. Мы импортировали


Скомпилируем этот класс командой javafxc: необходимые классы, создали окно приложения, описа-
ли основной фрейм, создали там пока единственный эле-
C:\Sun>javafxc testfx.fx мент (в терминах JavaFX – нод) – Text. После текста до-
бавим описание кнопки, используя встроенный объект
И запустим соответственно командой javafx: Rectangle:

C:\Sun>javafx testfx Rectangle {


fill: Color.SILVER
x: 10
Результат можно наблюдать на рис. 2. y: 80
width:60
Теперь давайте разберёмся, что мы тут натворили. height: 40
С командами компиляции и запуска всё ясно – это пря- arcWidth: 20
arcHeight: 20
мые аналоги утилиты javac и команды java. Первые строч-
ки кода также хорошо знакомы любому Java-программис- }
ту – это импорт необходимых классов из соответствую-
щих пакетов. И надписи на ней:
Далее идёт то, что называется «декларативным син-
таксисом». Что это такое? Если очень коротко, то особен- Text {
x: 35
ность заключается в том, что программа не задаёт поша- y: 110
говую инструкцию реализации алгоритма работы, а опи- font: Font { size: 24}
fill: Color.GREEN
сывает объекты, полученные в виде конечного результа- content: "1"
та. При этом описываются свойства и поведение объек- }
тов, в том числе и интерактивное. Впрочем, об этом далее,
в более сложных примерах. Попробуем скомпилировать и запустить результат при-
Пока всё просто: объект Stage представляет собой ок- ведёнными выше командами, и полюбуемся чудным одно-
но приложения с соответствующими свойствами (title, width, кнопочным калькулятором (см. рис. 3).
height), значения которых определяются в последующих
строчках. Далее внутри его описывается объект Stage –
своего рода фрейм, содержащий другие объекты. Вер-
нее, в данном случае один визуальный объект – Text, кото-
рый также снабжен описанием своих свойств (положение,
шрифт, цвет). Помимо их описания к тексту применён эф-
фект тени, причём как шрифт, так и эффект также имеют
свои описания.
Как видим, тут всё очень просто и интуитивно понятно.
Впрочем, давайте попробуем написать маленькое, но дейс-
твительно полезное приложение. Что нам нехватает в ми-
ре ERP-систем и SOA-приложений? Разумеется, красивого
калькулятора! Вооружимся описанием языка и вперёд.
Сначала опишем калькулятор с индикатором:

import javafx.stage.*;
import javafx.scene.*;
import javafx.scene.text.*;
import javafx.scene.paint.*;
import javafx.scene.effect.*; Рисунок 3. Для калькулятора Рисунок 4. Теперь кнопок
import javafx.scene.shape.*; маловато кнопок достаточно

№4, апрель 2009 69


Ну дальше всё просто – описываем одну за другой Не останавливаемся. Нам нужно рабочее приложение,
все остальные кнопки... Что? Объекты? Массивы? Всё так, следовательно, после нажатия на клавиши текст в индика-
и хоть мне и платят за количество печатных знаков, я всё- торе должен меняться. Для этого сначала введём глобаль-
таки программист и не могу не унифицировать процесс. ную переменную, которая содержит текст индикатора, и не-
Для начала создадим следующий класс: много изменим его код:

class CalcBatton{ var cont="";


var cx: Number; class CalcBatton{
var cy: Number ; …...................................
var ctext: String; effect: DropShadow{ offsetX: 3 offsetY: 6}
var group= Group{ content: bind cont
content: [ }
Rectangle {
fill: Color.SILVER
x: cx В данном случае мы воспользовались ключевой воз-
y: cy можностью JavaFX Script – связыванием данных (data
width:60
height: 40 binding). Теперь любое изменение переменной cont сразу
arcWidth: 20 же будет отображено на индикаторе калькулятора. Теперь
arcHeight: 20
cursor: HAND внесём изменения в код кнопки, дабы описать её реакцию
effect: DropShadow{ offsetX: 3 offsetY: 6} на клик мышкой:
},
Text {
x: cx + 25 effect: DropShadow{ offsetX: 3 offsetY: 6}
y: cy + 30 onMouseClicked: function(evt: MouseEvent):Void {
font: Font { size: 24} but="{but}{ctext}";
fill: Color.GREEN if({ctext}=="C"){
content: ctext but="";
}]} }
} }
}

В данном случае мы объединили в одну группу кноп- Как видно из кода, при нажатии на клавишу <C> про-
ку и надпись на ней, создав класс, экземплярами которо- исходит очистка индикатора. Конечно, следует также про-
го будут кнопки калькулятора. Переменные класса уста- писать реакцию на нажатие <=>, вызывающее вычисление
навливают надпись на кнопке и её абсолютное располо- результата, но это я предоставляю для реализации чита-
жение (вообще говоря, в JavaFX присутствуют менеджеры телю. Сама по себе задача вполне ординарная. Мы же тут
размещения, но для простого приложения с фиксирован- заняты другим – стараемся «сделать красиво». Продол-
ным числом компонентов можно ограничиться и абсолют- жая действовать в этом направлении, «оживим» кнопки,
ным позиционированием.) заставим их нажиматься. Для этого введём ещё два атри-
Теперь создадим массив кнопок: бута нашего класса:

def bt1=CalcBatton{ cx: 10, cy: 80,ctext: "1"} var gradx= 3;


def bt2=CalcBatton{ cx: 80, cy: 80,ctext: "2"} var grady= 6;
def bt3=CalcBatton{ cx: 150, cy: 80,ctext: "3"} var group= Group{

...
Эти переменные будут отвечать за размеры эффекта те-
def bt9=CalcBatton{ cx: 10, cy: 180,ctext: "9"} ни, при изменении которых и создаётся эффект нажатия:
def bt0=CalcBatton{ cx: 80, cy: 180,ctext: "0"}

def bt_add=CalcBatton{ cx: 150, cy: 180,ctext: "+"} cursor: HAND


def bt_sub= CalcBatton{ cx: 220, cy: 180,ctext: "-"} effect: DropShadow{ offsetX: bind gradx offsetY: ↵
def bt_mul=CalcBatton{ cx: 10, cy: 230,ctext: "*"} bind grady}
def bt_div=CalcBatton{ cx: 80, cy: 230,ctext: "/"}
def bt_res=CalcBatton{ cx: 150, cy: 230,ctext: "="}
def bt_del=CalcBatton{ cx: 220, cy: 230,ctext: "C"} Как видите, мы опять используем связывание. И связы-
var buttons=[bt1.group,bt2.group,bt3.group, ваем мы их с типичными действиями пользователя. Пишем
bt4.group,bt5.group,bt6.group,
bt7.group,bt8.group,bt9.group, в коде объекта Rectangle:
bt0.group,bt_add.group,bt_sub.group,
bt_mul.group,bt_div.group,bt_res.group, onMousePressed: function(evt: MouseEvent):Void {
bt_del.group]; gradx=0;
grady=0;
И разместим этот массив на «сцене» приложения: }

onMouseReleased: function(evt: MouseEvent):Void {


Stage { gradx=3;
... grady=6;
scene: Scene { }
content:[ Text { },
...
},buttons
]} Осталось только навести ещё немного гламура (не забы-
}
вая, кстати, импортировать необходимые классы), и каль-
После компиляции должна получиться картинка, сход- кулятор готов. Полный код (без вычислительных функций)
ная с рис. 4. приведён ниже:

70
import javafx.stage.*; def bt_res=CalcBatton{ cx: 150, cy: 230,ctext: "="}
import javafx.scene.*; def bt_del=CalcBatton{ cx: 220, cy: 230,ctext: "C"}
import javafx.scene.text.*; var buttons=[bt1.group,bt2.group,bt3.group,
import javafx.scene.paint.*; bt4.group,bt5.group,bt6.group,
import javafx.scene.effect.*; bt7.group,bt8.group,bt9.group,
import javafx.scene.paint.Color; bt0.group,bt_add.group,bt_sub.group,
import javafx.scene.shape.*; bt_mul.group,bt_div.group,bt_res.group,
import javafx.scene.layout.HBox; bt_del.group];
import javafx.scene.layout.VBox; Stage {
import javafx.scene.Cursor.*; title: "FX Калькулятор"
import javafx.scene.Node.*; width: 300
import javafx.scene.input.MouseEvent; height: 500
scene: Scene {
class Calc{ content:[ Text {
// здесь «вычислительная» часть x: 20 y: 60
} font: Font { size: 36}
fill: Color.GREEN
def cl= Calc{}; effect: DropShadow{ offsetX: 3 offsetY: 6}
def fil_bt=LinearGradient { content: bind cont
startX: 0.0, startY: 0.0, endX: 0.0, endY: 1.0, ↵ },buttons
proportional: true ]
stops: [ fill: LinearGradient {
Stop {offset: 0.0 color: Color.WHITE}, startX: 0.0, startY: 0.0, endX: 0.0, endY: 1.0, ↵
Stop {offset: 1.0 color: Color.SILVER} proportional: true
] stops: [
} Stop {offset: 0.0 color: Color.WHITE},
var cont=""; Stop {offset: 1.0 color: Color.LIGHTGREEN}
var sum=0; ]
class CalcBatton{ }
var cx: Number ; }
var cy: Number ; }
var ctext: String;
var gradx= 3;
var grady= 6; Результат – на рис. 5.
var group= Group{
content: [
Rectangle { Что ещё?
fill: fil_bt
x: cx Какие возможности JavaFX остались за рамками этого не-
y: cy большого примера? Прямо скажу, немало. Начнём с того,
width:60
height: 40 что в палитре среды присутствует множество графичес-
arcWidth: 20 ких примитивов. Это геометрические фигуры (вроде ис-
arcHeight: 20
cursor: HAND пользуемого нами Rectangle), градиенты (линейный гра-
effect: DropShadow{ offsetX: ↵ диент мы использовали для заливки калькулятора и кно-
bind gradx offsetY: bind grady}
onMouseClicked: function(evt: MouseEvent):Void { пок), различные графические эффекты. JavaFX позволяет
if({ctext}=="C"){ работать с готовыми изображениями, используя их в сце-
but="";
} нах и применяя к ним различные фотоэффекты, как-то за-
else{ тенение, смещение, размытость, трансформация и так да-
but="{cont}{ctext}";
} лее, причём применять в любой комбинации.
} Средствами JavaFX легко достигается анимация объек-
onMousePressed: function(evt: MouseEvent):Void {
gradx=0; тов (каюсь, хотел включить эту важную функциональность
grady=0; в наш калькулятор, но вовремя остановился) и встраива-
}
onMouseReleased: ется видео. Вот как просто это делается:
function(evt: MouseEvent):Void {
gradx=3; Stage {
grady=6; title: "My Media Player"
} scene: Scene{
}, content: MediaComponent {
Text { mediaSourceURL: mediaUrl
x: cx + 25 volume: 0.5
y: cy + 30 visible:true
font: Font { size: 24} mediaPlayerAutoPlay: true
fill: Color.GREEN }
content: ctext }
}]} }
}
def bt1=CalcBatton{ cx: 10, cy: 80,ctext: "1"} Поддерживаются все форматы, которые поддержи-
def bt2=CalcBatton{ cx: 80, cy: 80,ctext: "2"} вает платформа, на которой исполняется приложение,
def bt3=CalcBatton{ cx: 150, cy: 80,ctext: "3"}
def bt4=CalcBatton{ cx: 220, cy: 80,ctext: "4"} при этом используются «родные» кодеки этой платфор-
def bt5=CalcBatton{ cx: 10, cy: 130,ctext: "5"} мы. Если не находится нужного кодека, используется
def bt6=CalcBatton{ cx: 80, cy: 130,ctext: "6"}
def bt7=CalcBatton{ cx: 150, cy: 130,ctext: "7"} встроенный кроссплатформенный кодек On2 от компании
def bt8=CalcBatton{ cx: 220, cy: 130,ctext: "8"} On2 Technologies.
def bt9=CalcBatton{ cx: 10, cy: 180,ctext: "9"}
def bt0=CalcBatton{ cx: 80, cy: 180,ctext: "0"} Разумеется, всё вышеперечисленное можно применять
def bt_add=CalcBatton{ cx: 150, cy: 180,ctext: "+"} в различных комбинациях. Примеры применения с исход-
def bt_sub=CalcBatton{ cx: 220, cy: 180,ctext: "-"}
def bt_mul=CalcBatton{ cx: 10, cy: 230,ctext: "*"} ным кодом можно найти на сайте технологии JavaFX – http://
def bt_div=CalcBatton{ cx: 80, cy: 230,ctext: "/"} www.javafx.com/samples.

№4, апрель 2009 71


На рис. 6 показан один Пример из руководства:
из них – вращающийся трёх-
мерный куб, каждая грань var total;
var title;
которого работает как ви- def parser = PullParser {
деопроигрыватель, в кото- documentType: PullParser.XML;
input: anInputStreamThatContainsXML;
ром можно открыть отдель- onEvent: function(event: Event) {
ный видеофрагмент. if (event.type == PullParser.START_ELEMENT) {
if (event.qname.name == "ResultSet" ↵
Разумеется у средства and event.level == 0) {
для создания RIA есть ин- total = event.getAttributeValue ↵
(QName{name:"totalResultsAvailable"});
с трументы д ля пос трое - }
ния именно интернет-при- } else if (event.type == PullParser.END_ELEMENT) {
if (event.qname.name == "Title" ↵
ложений. and event.level == 2) {
Прежде всего это объект title = event.text;
}
javafx.io.http.HttpRequest, }
предоставляющий API }
}
для асинхронного взаимо- parser.parse();
действия с HTTP-сервером parser.input.close();
Рисунок 5. Приложение println("results: {total}, title: {title}");
готово и даже работает (да, да, тот самый AJAX).
Очень полезным представ- Предусмотрена также работа с RESTFul Web Services
ляется javafx.data.pull.PullParser многопоточный парсер до- (технология Representational State Transfer), встроенные
кументов, с возможностью задания функции обратного вы- парсеры XML и JSON, интеграция с JavaScript и техноло-
зова (callback) в качестве параметра. гией LiveConnect.

JavaFX Script – краткий обзор Это же касается и наименований функ- Имеется и знакомый по Java «пустой»
В небольшом приложении я попытаюсь ций. Сами они задаются так: тип Void (регистр – не опечатка), впрочем,
дать краткий обзор языку JavaFX Script, function addTwo(a:Number):Number{ при объявлении функции, не возвращаю-
ровно до такой степени, чтобы читатель return a+2; щей значение, его можно опустить.
}
разобрался с кодом примера. Для перечисляемых данных предусмот-
Следует сразу оговориться, что JavaFX println(addTwo(4)); рен тип последовательности (sequencesy),
Script – это не Java, и вообще он имеет Как видим, разительное отличие син- обладающий необходимыми методами:
с Java довольно мало общего. Вторая ого- таксиса Java, заключается в указании ти-
var colors: String[] = ["Green", ↵
ворка – пусть вас не смущает слово Script па возвращаемого значения не до, а после "Red","Gray"];
в его названии. Он не является языком сце- объявления функции. То же и с её аргумен- insert "Black" into colors;
insert "Blue" after colors[1];
нариев в том смысле, в котором им явля- тами. Возможно, причины такого синтакси-
ется, например JavaScript, ничего общего ческого финта кроются в том, что продукт // теперь последовательность такая:
// ["Green","Red","Blue","Gray",
он не имеет с такими интерпретируемы- создавался с оглядкой на Adobe Flex. Впро- // "Black"];
ми «скриптовыми» языками, как PHP или чем, бог с ними, с грязными домыслами.
delete "Gray" from colors;
Ruby. Прежде всего это декларативный В языке присутствуют встроенные ти- delete colors[2];
язык. На практике это обозначает, что для пы данных – String, Number, Integer, Boolean
// теперь:
построения приложения мы не описыва- и Duration, которые также являются и объ- // ["Green","Red",Black"];
ем объекты и их методы, а определяем ектами типов.
var nums = [1..100];
объекты сцены, определяем их атрибуты При определении типа String могут ис-
(в том числе поведение, реакцию на со- пользоваться как двойные, так и одинар- В последнем случае генерируется
бытия). Но всё по порядку, сначала осно- ные кавычки. Для подстановки переменных последовательность из целых чисел, от 1
вы синтаксиса. или выражения внутри строки используют- до 100.
ся фигурные скобки:
Основные типы данных var name='john'; Классы и объекты
JavaFX имеет статическую типизацию – println(«Hello {name}!»); Классы в JavaFX определяются следую-
тип переменной (они задаются с помощью Типы Integer Number, предназначены щим образом:
ключевого слова var) определяется при её для представления целочисленных значе- class myObject{
инициализации: ний и числа с плавающей точкой соответ- var name: String;
var city: String;
ственно. Boolean, как несложно догадать- var myRectangle: Rectangle;
var name;
var age; ся, может принимать значения true или false.
name="John"; function print_name() {
Он используется в управляющих конструк- println("Name: {name}");
age=35
циях (if, else), которые имеют традиционный }
Константы задаются с помощью клю- для Java синтаксис. Вопросы тут может вызвать только тип
чевого слова def. Правила наименова- Тип Duration используется для представ- данных Rectangle. Это один из многочис-
ний переменных и констант схожи с язы- ления временных отрезков, например: ленных встроенных классов JavaXF, про-
ком Java. var a = 10s; // 10 секунд смотреть его свойства и методы можно

72
Среда разработки код, и SVG Converter, позво-
Такой пример, как наш калькулятор, вполне можно написать ляющий сохранять графику
в простом текстовом редакторе, но современный процесс в формате JavaFX.
разработки (несмотря на мнение отдельных гиков) требует После знакомства с воз-
удобной и эффективной IDE, с возможностью отладки, про- можностями JavaFX, естес-
файлинга, рефакторинга и управления проектами, а так- твенно, встаёт вопрос: ка-
же желательно с интеграцией с системой контроля версий ковы её перспективы? Ка-
и многим другим. И тут хорошие новости для программистов, кое место она может занять
привыкших работать в среде NetBeans. Начиная с версии 6.5 в быстро меняющемся ИТ-
при установке соответствующего плагина теперь можно ра- мире? Сейчас на этот воп-
ботать с JavaFX-проектами с неменьшей эффективностью, рос, наверное, никто отве- Рисунок 6. В каждой грани
независимый видеофрагмент
что и с Java, используя дизайнер форм и прочие инструмен- тить не может. Но в целом (если хватит оперативки)
ты IDE. Приверженцы другой популярной среды разработки, платформа, имеющая все
Eclipse, не остались обижены, плагин для работы с JavaFX ключевые средства для построения RIA, с возможностью
доступен по адресу http://kenai.com/projects/eplugin. использования накопленных Java-наработок и уже сейчас
Впрочем, это всё для программистов, для дизайнеров же имеющая вполне современные средства разработки, вы-
подготовлен набор инструментов под общим названием глядит очень многообещающе.
JavaFX Production Suite. Это плагины для пакетов Adobe
Photoshop и Adobe Illustrator, позволяющие сохранять мно- 1. Официальный сайт JavaFX – http://javafx.com.
гослойные приложения в формате JavaFX (Save as JavaFX). 2. Материалы по JavaFX на сайте российских разработчиков Sun
Он включает инструмент JavaFX Graphics Viewer, который Microsystems – http://developers.sun.ru/javafx.
позволяет использовать графику без компиляции в байт- 3. Русскоязычная wiki по JavaFX – http://ru.jfx.wikia.com/wiki.

в документации по API JavaXF (http://java. ных (data binding). Это возможность связать println("стал: {User}");
};
sun.com/javafx/1.1/docs/api). любой параметр с динамически изменяю-
Объекты описываются так: щейся переменной. Такой код будет служить индикатором,
Лучше всего применение связывания печатая сообщения всякий раз при изме-
def myObj = myObject {
name: "Vasya"; видно на примере: нении значения переменной User.
city: "Moscow"; var side= 15;
number:5;
} На сцене
Scene {
def myRectangle = Rectangle { content: [ В основе любой программы на JavaFX на-
fill: Color.GREEN SwingSlider {
width:60 ходится объект Stage, представляющий
minimum: 0
height: 40 maximum: 50 собой древовидную структуру, содер-
} value: side radius ↵ жащую в себе другие объекты приложе-
with inverse
Первый из вышеприведённых объек- vertical: false ния. Каждый узел такой системы, пред-
тов является экземпляром произвольного }, ставляющий собой наследника от класса
пользовательского класса, второй – встро- Rectangle { javafx.scene.Node, может также содержать
енного класса Rectangle. Вполне допусти- fill: Color.GREEN в себе объекты.
мы и композиции объектов: width: bind side Класс Node является полноценным кон-
height: bund side*2 тейнером, характеризующийся размерами,
def myObj=myObject { }
name: "Vasya"; ] системой координат и реагирующим на со-
city: "Moscow"; } бытия мыши. Объекты, от него образован-
number: "95050";
myRectangle: Rectangle { В данном случае объект SwingSlider ные, можно трансформировать, объеди-
fill: Color.GREEN (стандартный скрол бар) определяет зна- нять в группы, применять к ним (как к отде-
width:60
height: 40 чение переменной side, с которой, в свою льным, так и к группам) различные дейст-
} очередь, связаны размеры сторон объекта вия или графические эффекты.
}
Rectangle (прямоугольник). Таким образом, Доступ к содержимому «Сцены» про-
Обращение к свойствам и методам пользователь может менять размеры фигу- изводится через объект Scene, для до-
объекта происходит посредством точеч- ры, перемещая указатель скрола. бавления на нее необходимых объектов,
ной нотации: Ещё од ин интерес ный механизм следует импортировать соответствующие
println( myObj.myRectangle.x); JavaFX – триггеры, то есть конструкции, классы и описать объекты и их поведение
println( myObj.=print_name()); представляющие собой блоки кода, ис- внутри Scene.
Такие необходимые элементы ООП, полняемые по какому-либо событию. При- Дальше – смотрите пример, приведён-
как наследование и модификаторы дос- мер того, как привязать блок кода к значе- ный в статье.
тупа, также наличествуют. нию переменной: Подробные уроки по языку JavaFX
var User = "Misha" on replace ↵ Script, на русском языке доступны на пор-
Связывание данных oldValue { та ле разработчиков Sun. По а д ресу
println("Пользователь ↵
Ключевой элемент языка JavaFX Script – изменился"); http://developers.sun.ru/documents/javafx/
возможность динамической привязки дан- println("был: {oldValue}"); FXTutorials.

№4, апрель 2009 73


Приёмы минификации
в веб-приложениях

Антон Гришан
Любой веб-мастер желает, чтобы его сайт загружался быстрее, чем сайт конкурента, поэтому
оптимизация – важный аспект разработки любого веб-проекта.

П
онятие оптимизации охватывает огромное коли- Табличная верстка без использования стилей:
чество вопросов, начиная от настройки веб-серве-
ра, заканчивая алгоритмами обработки данных. Одно <html>
<head>
из направлений оптимизации – минификация. Здесь и да- <title>Пример: табличная вёрстка vs DIV-ная ↵
лее под термином «минификация» будем понимать вид оп- вёрстка</title>
</head>
тимизации, направленной на уменьшение размеров резуль- <body>
тирующего HTML/CSS/JS-кода без изменения внешнего ви- <table width="720px" border="0" align="center" ↵
cellpadding="0" cellspacing="0" ↵
да и функционала веб-страницы. style="margin-top:30px">
<tr>
<td colspan="3" align="center">Шапка ↵
Минификация HTML-кода сайта, логотип</td>
Результатом работы большинства веб-приложений являет- </tr>
<tr valign="top">
ся HTML-документ. Чем короче код, тем быстрее его загру- <td width="200px">Левая колонка</td>
зит клиент. Рассмотрим несколько приемов, позволяющих <td width="320px">Центральная колонка</td>
<td width="200px">Правая колонка</td>
минимизировать размер результирующего кода. </tr>
</table>
</body>
Верстка страниц без использования таблиц </html>
(Tableless)
Мощное средство минификации HTML-кода – верстка стра- Размер кода: 482 байта.
ниц на базе DIV-тегов и таблиц стилей (CSS). В отличие Верстка на базе DIV-тегов с использованием стилей:
от табличной верстки данная методология имеет множес-
тво преимуществ, одно из которых – существенное сокра- <html>
<head>
щение размера HTML-кода. <title>Пример: табличная вёрстка vs DIV-ная ↵

74
вёрстка</title> использования кэша браузера и приемов минимизации
<link rel="stylesheet" type="text/css" ↵
href="/main.css" /> HTTP-запросов.
</head>
<body>
<div id="head">Шапка сайта, логотип</div> Удаление символов, не влияющих на отображение
<div id="content"> документа
<div id="cLeft">Левая колонка</div>
<div id="cCenter">Центральная колонка</div> HTML-код содержит множество символов, не влияющих
<div id="cRight">Правая колонка</div> на отображение документа в браузере пользователя:
</div>
</body> n символы перевода строки (\r и \n), табуляции (\t);
</html> n несколько идущих подряд пробелов, пробелы между ат-
рибутами тегов;
Размер кода: 384 байта. n необязательные кавычки вокруг значения атрибута тега;
Если сравнить размер среднестатистической HTML- n HTML-комментарии <!-- -->.
страницы, сверстанной с помощью таблиц, и аналогичной
страницы, сверстанной на базе DIV-элементов и каскадных Наличие табуляций, переносов строки и комментари-
таблиц стилей, можно заметить, что размер первого вариан- ев делает код удобочитаемым для человека, но не влияет
та не сильно отличается от второго, если ко второму доба- на отображение страницы в браузере и индексацию сайта
вить размер таблицы стилей. Однако таблица стилей в от- поисковыми системами.
личие от содержания страницы статична и кэшируется брау- Удаление символов, не влияющих на отображение до-
зером, поэтому загружается единственный раз, при первом кумента, позволяет сократить размер HTML кода на 3-20%.
обращении к сайту. Таким образом, при каждой последую- Данным приемом активно пользуются такие титаны, как
щей загрузке страницы сайта экономия трафика (и време- Google.com и Yandex.ru (убедиться в этом можно посмот-
ни) будет сопоставима с размером таблицы стилей. рев HTML-код главной страницы поисковиков).

Вынос JavaScript и CSS в отдельные файлы Минификация HTML-кода с помощью PHP


Большинство современных веб-приложений для постро- Рассмотрим пример простейшего минификтора HTML-ко-
ения интерактивного интерфейса использует множество да, построенного на базе PHP. Принцип работы заключа-
таблиц стилей и JavaScript. Существует два способа под- ется в удалении из HTML-кода символов \n \r \t и незнача-
ключить JS/CSS-код к HTML-документу: щих пробелов.
1. Включение JS/CSS-кода в тело HTML-документа.
«За»: <?php
function htmlCompressor($html) {
n не требует отдельного HTTP-запроса для загрузки JS/ return preg_replace('/(?:\n\s*|\s\s+)/i', '', $html);
CSS-кода; }
ob_start("htmlCompressor");
n возможность динамической генерации JS/CSS-кода. ?>
<html>
<head>
«Против»: <title>Example: simple html compressor</title>
n размещение JS/CSS-кода в теле документа увеличива- </head>
<body>
ет размер HTML-кода; <h1>Hello World!!!</h1>
n не используется механизм кэширования, поэтому каж- HTML document here
</body>
дый раз при запросе документа пользователь будет пов- </html>
торно загружать JS/CSS-код. <?
ob_end_flush();
?>
2. Подключение внешних файлов, содержащих JS/
CSS-код. Результатом исполнения данного скрипта будет HTML-
«За»: код, имеющий вид:
n сокращение размера HTML-документа;
n при повторном обращении к документу браузер исполь- <html><head><title>Example: simple html compressor ↵
</title></head><body><h1>Hello World!!!</h1> ↵
зует кэш, что позволяет избежать повторной загрузки HTML document here</body></html>
JS/CSS-кода.
В примере объявлена функция htmlCompressor, отве-
«Против»: чающая за сжатие HTML-кода, переданного в аргументе.
n осложняет динамическую генерацию JS/CSS-кода; Используем ob_start() для буферизации результата рабо-
n требуется HTTP-запрос для загрузки каждого JS/CSS- ты приложения. Перед отправкой пользователю результа-
файла. тов работы приложения минимизируем с помощью функ-
ции htmlCompressor() хранящийся в буфере HTML-код.
Оба варианта обладают своими достоинствами и недо- Протестируем работоспособность метода, применив
статками. Включение JS/CSS-кода в тело документа име- компрессор к HTML-коду различных сайтов (см. таблицу 1).
ет смысл, если код генерируется динамически. В осталь- Из результатов теста видно, что степень сжатия зависит
ных случаях вынос кода во внешние файлы положительно от стиля кодирования. В среднем использование простей-
сказывается на скорости загрузки веб-документа за счет шего HTML-минификатора позволяет сократить размер до-

№4, апрель 2009 75


Таблица 1. Результаты применения компрессора к HTML-коду различных сайтов ются один раз и при повторном запросе
Адрес страницы Размер до сжатия (байт) Размер после сжатия (байт) Компрессия подключаются из кэша браузера.
http://vkontakte.ru 7129 6689 6.17 % Однако высокая скорость первой
загрузки сайта дает существенное пре-
http://whatismyip.com 10795 9749 9.69 %
имущество, потому что многие поль-
http://torrents.ru/forum/index.php 140935 117007 16.98 %
зователи, просматривая результаты
http://anekdot.ru 29619 26543 10.39 %
выдачи поисковых систем, открыва-
http://lenta.ru 112099 107856 3.79 % ют найденные страницы во множес-
Среднее сжатие: 9.40% тве вкладок (окон) браузера и зна-
комятся с информацией по мере за-
кумента на 9,4%. Остается множество резервов для увели- грузки сайтов. Поэтому если сайт загружается быстрее,
чения степени сжатия. чем сайт конкурентов, то вероятность того, что вы полу-
n Удаление комментариев из HTML-кода. чите нового клиента, существенно повышается. Минифи-
n Удаление необязательных пробелов внутри тега (напри- кация JS/CSS позволяет существенно увеличить скорость
мер: <div title="hello world"class="menu"id="mainMenu">). первой загрузки сайта.
Минифицированный код абсолютно нечитаемый, поэто-
Используя оставшиеся резервы, можно увеличить сред- му разумно иметь две версии:
нюю степень сжатия примерно до 19% (этот параметр зави- n Версия для разработчиков. Код содержит все необхо-
сит от стиля кодирования документа). Некоторые алгорит- димые комментарии и визуальную разметку, что обес-
мы минификации HTML удаляют необязательные кавычки печивает читабельность. Используется в момент разра-
вокруг значения атрибута тега, например, так: ботки приложения.
n Версия для публикации. Код имеет минимальную дли-
<div title="hello world" class=menu id=mainMenu> ну, что обеспечивает высокую скорость загрузки.

Данная методика допустима для HTML-документа, Рассмотрим несколько популярных утилит, позволяю-
так как не противоречит стандарту, но крайне нежелатель- щих осуществить автоматический перевод JS/CSS-кода
на для XHTML. С точки зрения стандарта XML, кавычки вок- из версии для разработчиков в версию для публикации.
руг значения атрибута тега обязательны, поэтому удаление
их чревато не только появлением ошибок при проверке до- JavaScript
кумента с помощью W3C-валидатора (http://validator.w3c.org), В большинстве своём минификаторы для уменьшения раз-
но и возникновением потенциальных проблем при исполь- мера JavaScript кода делают две операции:
зовании DHTML (нарушение структуры документа). n удаляют символы, не влияющие на исполнение кода;
Корректное удаление комментариев из HTML-докумен- n заменяют длинные названия локальных переменных
та не имеет побочных эффектов, однако для корректного на более короткие.
выполнения требуется учитывать ряд специфических слу-
чаев, когда удалять строку, которая похожа на коммента- Протестируем работу наиболее известных JS-ми-
рий, нельзя. нификаторов на примере большого JavaScript-файла
Пример: (URLForward.js, размер 61773 байт), взятого из реального
проекта (см. таблицу 2).
<!--[if lte IE 6]><style type="text/css" media="all"> ↵ Рекордный уровень компрессии показал минификатор
@import url(http://www.domain.tld/css/ie6.css); ↵
</style><![endif]--> Bananascript. Такой большой отрыв от конкурентов объяс-
няется тем, что помимо стандартного алгоритма минифи-
<script language="JavaScript">
<!-- кации JS-кода разработчики данного сервиса добавили ал-
alert('<!--'); горитм компрессии, основанный на замене длинных повто-
alert('Меня удалять нельзя!');
alert('//-->'); ряющихся последовательностей байтов.
//--> Однако Bananascript не является оптимальным выбо-
</script>
ром. Сервер перед отдачей JS-кода пользователю упаку-
Можно разработать алгоритм, позволяющий коррект- ет данные с помощью gzip. Поэтому важно, чтобы полу-
но обрабатывать все возможные случаи, однако он будет чившийся в результате минимизации и упаковки код имел
достаточно сложен и потребует от сервера дополнитель- минимальную длину. Проведем еще один тест, в котором
ных ресурсов (процессорное время и память). Вызов ал- сравним лидирующие в предыдущем тесте минификато-
горитма минификации HTML осуществляется при каждом ры с учетом длины кода после упаковки с помощью gzip
запросе страницы, потому при разработке алгоритма не- (см. таблицу 3).
обходимо найти баланс между степенью сжатия и нагруз- Из последнего теста видно, что наименьший размер ко-
кой на сервер. да получается в результате использования связки Packer +
gzip, затем идет YUI Compressor + gzip, и на последнем мес-
Минификация скриптов и таблиц стилей те Bananascript + gzip.
Большинство разработчиков не уделяют внимания оптими- В первом тесте лучший результат продемонстрировал
зации внешних JS/CSS-файлов, так как эти файлы загружа- Bananascript, он же продемонстрировал худший результат

76
во втором. Данное явление можно объ- Таблица 2. Результат работы наиболее известных JS-минификаторов
яснить тем, что Bananascript уже со- № JavaScript-минификатор Размер до сжатия Размер после Экономия (байт,%)
держит алгоритм компрессии, поэтому (байт) сжатия (байт)
повторное сжатие малоэффективно. 1 Online Compressor Tool 61773 28242 33531 (54.28%)
Таким образом, лучший резуль- http://compressor.ebiene.de

тат продемонстрировал Packer + gzip. 2 Bananascript 61773 11608 50165 (81.21%)


http://www.bananascript.com
Из личного опыта (использую данное
решение более года) могу сказать, 3 JSMin 61773 29047 32726 (52.98%)
http://crockford.com/javascript/jsmin
что данная связка работает достаточ-
4 Dojo ShrinkSafe 61773 25856 35917 (58.14%)
но стабильно и никаких побочных эф- http://dojotoolkit.org/docs/shrinksafe
фектов не обнаружено.
5 Packer 61773 17009 44764 (72.47%)
http://dean.edwards.name/packer
Таблицы стилей (CSS) 6 YUI Compressor 61773 22711 39062 (63.23%)
Таблица стилей – важная часть HTML- http://developer.yahoo.com/yui/compressor
документа, отвечающая за визуали-
зацию страниц. Существует множество способов миними- .c1,.c3{color:#FFF;font-weight:700}. ↵
c2{font-weight:lighter;color:#FFF;background:blue; ↵
зировать размер CSS-кода без изменения внешнего ви- border:0;margin:18px}
да документа.
Рассмотрим некоторые способы на примере следую- Оба фрагмента кода работают одинаково, но первый код
щего CSS-кода: занимает 312 байт, а второй 109 байта (на 65,06% меньше).
Для удобства перевода CSS-кода из версии для разра-
/* Описание стиля */ ботчика в версию для конечного пользователя существует
.c1 { множество утилит, выполненных в виде прикладных про-
color:#FFFFFF; грамм и online-сервисов. Сравним несколько популярных
font-weight: bold;
} online-сервисов для компрессии CSS-кода. В качестве тес-
тового примера возьмем CSS-код, приведенный в начале
.c2 {
font-weight: lighter; этого раздела (см. таблицу 4).
color: rgb(255,255,255); Из результатов теста видно, что не все компрессо-
background-color:blue;
border:none; ры работают одинаково эффективно. Лучше остальных
margin-top: 18px; с задачей минификации тестового CSS-кода справились
margin-right: 18px;
margin-bottom: 18px; Robson CSS Compressor и Online CSS Optimizer. Эти сер-
margin-left: 18px; висы, в отличие от остальных, сумели объединить описа-
}
ние CSS-классов с1 и с2, за счет чего удалось увеличить
.c3 { процент сжатия.
font-weight: bold;
color: #FFFFFF; Утилиты оптимизации CSS, как и любое другое про-
} граммное обеспечение, не свободны от ошибок. Убедитесь
в том, что выбранный компрессор корректно обрабатыва-
Минимизируем приведенный выше CSS-код с помощью ет вашу таблицу стилей.
следующих преобразований:
n удалим комментарии; Компрессия HTTP-трафика
n удалим незначащие пробелы и символы перевода стро- Наиболее ощутимый эффект по ускорению загрузки сайта
ки, табуляции; дает компрессия трафика. Это принципиально иной способ
n удалим точки с запятой перед закрывающей скобкой уменьшения результирующего кода, идея которого заклю-
описания класса; чается в компрессии данных перед отправкой пользователю
n объединим классы, имеющие одинаковое описание с помощью алгоритмов сжатия, известных браузеру поль-
(c1 и c3); зователя (чтобы браузер мог получить исходный документ).
n преобразуем код цвета в шестнадцатеричный формат Данный способ крайне эффективен и позволяет сократить
(из rgb(255,255,255) в #FFFFFF); размер передаваемых данных в среднем на 70%.
n используем краткую запись шестнадцатеричного кода Компрессия трафика и минификация HTML/CSS/JS-ко-
цвета, заменим #FFFFFF на #FFF; да не взаимоисключающие техники, скорее наоборот, ис-
n сократим запись атрибутов класса: пользованные совместно, позволяют добиться наилучших
 заменим «margin-top:18px;margin-top:18px;margin- результатов.
top:18px;margin-top:18px» на «margin:18px;»; Подавляющее большинство браузеров умеет работать
 заменим «border:none;» на «border:0;»; со сжатым трафиком, но не все, кроме того, некоторые по-
 заменим «font-weight:bold;» на «font-weight:700;»; исковые роботы не поддерживают компрессию. Иногда
 заменим «background-color:blue;» на “background: браузер поддерживает компрессию, но в запросе к серве-
blue;». ру не поступает заголовок Accept-Encoding, такое бывает,
потому что некоторые Proxy/Firewall вырезают данное по-
В результате преобразований получим код: ле из запроса пользователя. Поэтому, прежде чем сжи-

№4, апрель 2009 77


мать данные, нужно убедиться, что клиент сможет их рас- ритмов LZ77 и Хаффмана. Deflate свободен от патен-
паковать. тов. Успешно применятся во многих утилитах и форма-
Другими словами, компрессия трафика возможна толь- тах данных (например, графические файлы PNG).
ко при условии, что от пользователя получен список поддер- n Gzip (http://tools.ietf.org/html/rfc1952). Формат данных,
живаемых алгоритмов компрессии и минимум один из них построенный на базе алгоритма сжатия Deflate.
известен серверу. В соответствии с протоколом HTTP/1.1
названия алгоритмов перечислены через запятую в поле Другими словами, gzip – это deflate + некоторые заголов-
Accept-Encoding заголовка HTTP-запроса. ки, специфичные для формата gzip. Исходя из этого, можно
предположить, что для обоих алгоритмов уровень компрес-
GET /index.html HTTP/1.1 сии и скорость работы примерно одинаковы. В Интернете
Host: www.domain.tld
Accept-Encoding: gzip, deflate есть статьи, в которых говорится о том, что алгоритм deflate
User-Agent: SomeBrowser/1.0 существенно быстрее (вплоть до 40%), чем gzip. Я провел
собственное тестирование обоих алгоритмов, в ходе кото-
На основании этого заголовка сервер определяет, ка- рого значительных различий по скорости работы или уров-
кой метод сжатия можно использовать. Если заголовок ню сжатия обнаружить не удалось.
Accept-Encoding отсутствует или перечисленные алгорит-
мы неизвестны серверу, то компрессия не должна приме- Компрессия данных с помощью веб-сервера
няться. Большинство веб-серверов умеют выполнять компрессию
Для правильной интерпретации данных браузер дол- данных перед отправкой. Например, в Apache для этого су-
жен знать, какой метод компрессии использовал сервер. ществуют модули, позволяющие выполнять компрессию
Для этого сервер обязан добавить в заголовок ответа по- на лету. Наиболее известные из них:
ле Content-Encoding, содержащее название использован- n mod_gzip (http://sourceforge.net/projects/mod-gzip);
ного алгоритма сжатия. n mod_deflate (http://httpd.apache.org/docs/2.0/mod/mod_
deflate.html).
HTTP/1.1 200 OK
Server: Apache
Content-Type: text/html Подробную информацию об установке и настройке мо-
Content-Encoding: gzip дулей моно найти на сайтах проектов. Оба модуля вы-
Content-Length: 36439
полняют одну и ту же работу с минимальными отличия-
[Данные сжатые cпомощью gzip] ми, однако mod_deflate начиная со второй версии сервера
Apache вошел в официальный дистрибутив и призван за-
Компрессия полезна для несжатых данных, в основном менить mod_gzip. Подробную информацию об установке
для HTML/CSS/JS-кода. Форматы изображений, аудио/ви- и настройке модулей можно найти на официальных сай-
деопотоки, PDF-документы, как правило, уже содержат дан- тах проектов.
ные в сжатом виде, поэтому повторная компрессия мало-
эффективна и приводит к необоснованной трате процес- Компрессия в PHP-приложениях
сорного времени. Для того чтобы функции компрессии были доступны в PHP,
необходимо установить расширение zlib. В большинстве
Алгоритмы компрессии данных Deflate и Gzip случаев данное расширение установлено.
В мире существует множество алгоритмов, пригодных Во всех рассмотренных ниже примерах компрессия
для компрессии HTTP-трафика. Для того чтобы алгоритм осуществляется с учетом полученного от клиента заголов-
мог быть использован для компрессии трафика, необходи- ка Accept-Encoding. Если заголовок в запросе отсутствует,
мо выполнение следующих условий: то компрессия не применяется, иначе используется один
n компрессия выполнялась без потери данных; из поддерживаемых клиентом алгоритмов компрессии
n алгоритм известен браузеру и серверу. (обычно gzip, реже deflate). Название использованного ал-
горитма будет передано клиенту в поле Content-Encoding
Наибольшей популярностью пользуются алгоритмы: HTTP-заголовка.
n Deflate (http://tools.ietf.org/html/rfc1951). Алгоритм сжа- 1. Компрессия с помощью ob_gzhandler(). Компрес-
тия данных без потерь, использует комбинацию алго- сия трафика осуществляется внутри PHP-приложения сле-
дующим образом.
Таблица 3. Результат работы JS-минификаторов плюс gzip-компрессия
<?php
№ JavaScript-минификатор Размер до сжатия Размер после Размер после ob_start("ob_gzhandler");
(байт) сжатия (байт) минификации + ?>
gzip-компрессии (байт) Hello world!
1 Без минификации 61773 n/a 61773 <?
ob_end_flush();
2 Bananascript 61773 11608 6569 ?>
http://www.bananascript.com
3 Packer 61773 17009 5500
http://dean.edwards.name/packer С помощью оператора ob_start()
4 YUI Compressor 61773 22711 5555
включается режим буферизации вы-
http://developer.yahoo.com/yui/compressor вода, то есть данные, выводимые при-

78
ложением во время работы, отправля- Таблица 4. Сравнение нескольких online-сервисов для компрессии CSS-кода
ются не прямиком в браузер пользо- № CSS-минификатор Размер до сжатия Размер после Экономия
вателя, а в специальный буфер. В ка- (байт) сжатия (байт) (байт,%)

честве обработчика буфера указана 1 Ручное сжатие 312 109 203 (65.06%)
функция ob_gzhandler, которая отве- 2 CSS Compressor 312 225 87 (27.88%)
чает за компрессию данных перед от- http://shygypsy.com/cssCompress

правкой пользователю. 3 CSS Formatter and Optimizer 312 143 169 (54.17%)
http://www.cleancss.com
2. Прозрачное сжатие с исполь-
4 CSS Drive CSS Compressor 312 215 97 (31.09%)
зованием библиотеки zlib. Суть ме- http://www.cssdrive.com/index.php/main/csscompressor
тода заключается в том, что всю ра-
5 Robson CSS Compressor 312 116 196 (62.82%)
боту по компрессии трафика выпол- http://iceyboard.no-ip.org/projects/css_compressor
няет интерпретатор PHP. Данный под- 6 Online CSS Optimizer 312 123 189 (60.58%)
ход позволяет включить режим комп- http://www.cssoptimiser.com
рессии данных без внесения измене-
ний в код приложения. Результат работы обоих методов одинаков, однако вто-
Для активации автоматической компрессии необходи- рой более предпочтителен, так как не требует модифика-
мо прописать в конфигурационном файле php.ini следую- ции приложения для включения режима компрессии дан-
щие директивы: ных. Использование одновременно обоих методов невоз-
можно (не имеет смысла) и приводит к появлению сооб-
zlib.output_compression = On щения вида:
Warning: ob_start() [ref.outcontrol]: output handler 'ob_gzhandler'
Если не используется режим буферизации, то дан- conflicts with 'zlib output compression' in /home/www/test.php on
ные в браузер передаются порциями по 4 Кб, упакован- line 8
ные с помощью gzip. Изменить размер порции можно с по-
мощью zlib.output_compression, указав вместо On нужный Заключение
размер в байтах. Существует множество приемов, позволяющих применять
компрессию не только к HTML-документам, но и к CSS/JS-
zlib.output_compression = 1048576 коду. Однако в отличие от HTML-кода CSS/JS в большей ме-
ре статичные данные, которые должны кэшироваться брау-
Передача файла, разбитого на порции, негативно вли- зером, поэтому компрессия CSS/JS важна только для пер-
яет на общий уровень компрессии и повышает нагрузку вой загрузки сайта.
на процессор. Желательно передавать сжатый файл цели-
ком. Для этого необходимо включить буферизацию: 1. Общее описание понятия «минификация» – http://en.wikipedia.
org/wiki/Minification_(programming).
output_buffering = On 2. Технология Tableless – верстка HTML-страниц без таблиц –
zlib.output_compression = On
http://en.wikipedia.org/wiki/Tableless_web_design.
С помощью директивы zlib.output_compression_level 3. Советы по построению высокопроизводительных веб-прило-
можно установить необходимый уровень компрессии. Па- жений – http://developer.yahoo.com/performance/rules.html.
раметр может принимать значения от -1 до 9, где -1 означа- 4. Обсуждение примера реализации HTML-минификатора на ба-
ет, что сервер сам выбирает уровень компрессии, 0 – ком- зе PHP – http://forum.dklab.ru/viewtopic.php?t=26182.
прессия отсутствует. 5. Тестирование инструментов для сжатия CSS – http://webo.in/
articles/habrahabr/14-minifing-css.
output_buffering = On 6. Тестирование инструментов для сжатия JS – http://webo.in/
zlib.output_compression = On
zlib.output_compression_level = 5 articles/habrahabr/11-minifing-javascript.
7. Расширение Zlib для PHP – http://ru.php.net/manual/en/
Если нет доступа к php.ini, то аналогичного эффекта book.zlib.php.
можно добиться, прописав в файле .htaccess следующие 8. Модуль deflate для Apache – http://httpd.apache.org/docs/2.0/
команды: mod/mod_deflate.html.
9. Модуль gzip для Apache – http://sourceforge.net/projects/
php_flag output_buffering On mod-gzip.
php_flag zlib.output_compression On
php_flag zlib.output_compression_level 5

№4, апрель 2009 79


Мал, да удал: мини-комьютер PDP-8
А вы ноктюрн сыграть могли бы
на флейте водосточных труб?

Владимир Маяковский

Что бы вы ответили человеку, который


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

Алексей Вторников
О
днако если обратиться к событиям 60-х годов XX ве-
ка, то обнаруживается, что такое программное обес-
печение было разработано. И разработано, кстати,
вполне успешно, что доказывает опыт эксплуатации весь-
ма больших и опасных объектов.
Рассматриваемый в этой статье компьютер интересен
не столько с исторической точки зрения, сколько оригиналь-
ными решениями, воплощенными при его проектировании,
которые могут оказаться поучительными и полезными для
современных разработчиков как программного, так и аппа-
ратного обеспечения.

Пролог и dramatic personae


Вначале были мини-компьютеры PDP-4 (1962) и PDP-5
Рисунок 1. Передняя панель (панель управления)
(1963), разработанные выдающимся инженером и иссле- мини-компьютера PDP-8/I
дователем Гордоном Беллом (Gordon Bell). PDP-5 был экс-
периментальным проектом, но его архитектура оказалась Во-первых, потому что DEC полностью переключилась
столь удачной, что было произведено около 1000 экземп- на выпуск 16-битных мини-компьютеров PDP-11 (впослед-
ляров, что для опытных образцов необычно много. Работы ствии 32-битных компьютеров VAX).
было решено продолжить, и в 1965 году на основе PDP-5 Во-вторых, в связи с бурным развитием микроэлектро-
Уэсли А. Кларком (Wesley Allison Clark) и Чарлзом Э. Мол- ники стало возможным производить основные компонен-
наром (Charles Edwin Molnar) был разработан мини-ком- ты компьютеров – процессор и память – с гораздо мень-
пьютер PDP-8. шими затратами.
PDP-8 выпускался американской корпорацией Digital Стойки PDP-8 стали постепенно исчезать, сменяясь
Equipment Corporation (DEC) до второй половины 70-х годов более новыми, более мощными и более дешевыми ком-
прошлого столетия в различных модификациях (PDP-8/S, пьютерами, и настал день, когда PDP-8 был снят с произ-
PDP-8/I и проч.), отличавшихся в основном объемом ус- водства. PDP-8 продолжали «трудиться» еще несколько
тановленной памяти, элементной базой и набором пери- лет, но все было кончено – компьютер уходил в прошлое.
ферийного оборудования (см. рис. 1). В ряде стран выпус- Но для своего времени PDP-8 оказался настоящим про-
кались клоны PDP-8 (например, мини-ЭВМ «Электрони- рывом – никогда до этого компьютеры не производились
ка-100И», выпускавшаяся в СССР). в таких масштабах.
Интересной особенностью мини-компьютеров PDP-8 С самого начала PDP-8 проектировался как компьютер
(как, впрочем, и большинства компьютеров того времени) общего назначения, пригодный не только для контроля и уп-
было то, что панель управления отражала их внутреннюю равления оборудованием, но и для решения широкого спек-
архитектуру: наборы индикаторов и тумблеров позволяли тра задач: системного программирования (в том числе ОС
следить за содержимым регистров и памяти, а также вво- разделения времени – предтеч современных многопльзо-
дить программы в машинных кодах и управлять ходом вы- вательских ОС), обработки научных и телеметрических дан-
полнения программы. ных, бизнес-приложений и впоследствии даже игр.
На левой панели находилась распечатка машинно- В отличие от других компьютеров той славной эпохи,
го кода для загрузки компьютера; при необходимости PDP-8 производился серийно: всего было выпущено око-
этот код можно было ввести вручную и инициализировать ло 50000 машин.
систему. В производстве PDP-8 был применен ряд технологичес-
На правой панели отображалась текущая выполняе- ких новшеств, которые позволили DEC установить на PDP-8
мая инструкция. цены ниже цен других производителей компьютеров. Ми-
Набор тумблеров (вернее, часть из них) в нижнем ряду ни-компьютеры PDP-8 (впрочем, как и все, что разрабаты-
позволяет управлять специальным регистром (switch register валось и производилось DEC) отличались надежностью,
или SR) для задания пары «адрес памяти + данные» с пос- удобством эксплуатации, широким спектром применения
ледующим их вводом в ячейки памяти. и расширяемостью.
С правой стороны управляющей панели (между инди-
каторами и тумблерами регистра SR) располагались уп- Техническое замечание
равляющие кнопки. В дальнейшем изложении будет широко использоваться
Быстродействие PDP-8 по современным меркам бы- понятие позиционных систем счисления (двоичной, вось-
ло невелико (до 385 тысяч операций сложения в секунду), меричной и десятичной). Читателям, забывшим, что это
что обусловлено, конечно, в первую очередь их элемен- такое (не хочется думать, что найдутся такие, кто о них
тной базой: магнитная память на ферритовых сердечни- ничего не знает), правила перевода чисел из одной сис-
ках и транзисторы в схемах процессора и устройства уп- темы счисления в другую, а также понятия дополнений
равления. В последних модификациях PDP-8 уже приме- до 1 и до 2, рекомендуется освежить свои знания, вос-
нялись интегральные микросхемы, но, к сожалению, век пользовавшись любым приличным учебником информати-
PDP-8 заканчивался. ки; практически любая книга по программированию на ас-

№4, апрель 2009 81


битные байты. Этого, ко- но таким образом? Найдите, например,
нечно, мало по любым мер- восьмеричное и двоичное представле-
кам, в том числе и по мер- ния -1024(10).
Рисунок 2. Слово PDP-8 и порядок нумерации кам времени, когда созда- При переполнении AC регистр L ин-
битов в нем вался PDP-8. По сравнению вертируется (дополняется до 1), то есть
с любым современным ком- его значение меняется с 0 на 1 и об-
пьютером это совершенно ратно. Отсюда следует, что по одно-
Рисунок 3. Регистры L и AC ничтожная величина, одна- му только текущему содержимому ре-
ко ряд архитектурных реше- гистра L нельзя сказать, имело ли мес-
семблере содержит всю необходимую ний и система команд позволили тем то переполнение AC или нет: это зави-
информацию. Без этого многое в ста- не менее превратить PDP-8 в один из сит от его предыдущего состояния. На-
тье останется непонятным. Большую самых успешных компьютеров. Кро- пример, пусть перед операцией при-
помощь могут оказать калькуляторы, ме того, некоторые модели оборудова- бавления 1 регистры AC и L были со-
способные работать в этих системах лись памятью в 8 раз большей, то есть ответственно такими (для нагляднос-
счисления. Система счисления будет 32768(10) ячеек, чего было вполне до- ти мы разбили регистр AC на 4 груп-
указываться в скобках после числа, статочно для решения весьма нетри- пы по 3 бита):
например, 5077(8). виальных задач.
Кое-где будут встречаться упраж- Как и в привычных всем компью- 1 111 111 111 111
нения, требующие самой минимальной терах, в PDP-8 и программы, и данные
подготовки; рекомендую не пренебре- разделяют общую память («архитекту- После прибавления к содержимо-
гать ими и попробовать решить – поль- ра фон-Неймана»). му AC единицы его содержимое ста-
за будет несомненной. нет равным:
Ответы и указания к упражнениям – Одноадресная машина
в конце статьи. Арифметические и логические опе- 1000000000000
рации в PDP-8 выполняются с исполь-
Слова, слова, слова… зованием универсального 12-битного Однако поскольку это число превы-
Первое, что бросается в глаза при зна- регистра – аккумулятора (accumulator), шает 12 бит, то самая левая единица
комстве с PDP-8, это то, что в качестве обозначаемого как «AC». Если опера- оказывается «лишней» и регистр L ин-
основной единицы хранения и обработ- ция (например, сложение или вычита- вертируется с 1 на 0. Окончательно:
ки информации выступают 12-битные ние) предполагает наличие двух опе-
слова. Никаких привычных современ- рандов, то первый из них находится 0 000 000 000 000
ному программисту байтов нет и в по- в AC, а второй – в ячейке памяти. Ре-
мине (разумеется, возможность рабо- зультат операции остается в AC. Таким Именно потому, что в команде мож-
ты с отдельными битами или группами образом, в машинных командах может но сослаться не более чем на один опе-
битов внутри слова имеется – без это- быть использован не более чем один ранд, PDP-8 не позволяет непосред-
го никуда). операнд из памяти; поэтому PDP-8 от- ственно сложить значения из двух яче-
Биты в слове перенумерованы от 0 носится к так называемым одноадрес- ек памяти: для этого обязательно нуж-
до 11 слева направо (см. рис. 2). ным машинам. но использовать пару L-AC, последова-
Такой порядок нумерации битов В дополнение к аккумулятору име- тельно загружая регистр AC содержи-
отличается от нумерации, принятой ется однобитный регистр перено- мым из памяти и выполняя сложение.
в большинстве процессоров, таких, са, обозначаемый через «L» (от англ.
например, как x86. Однако понятно, link). Графически эта пара регист- Предварительные итоги
что это не более чем соглашение. ров изображается следующим обра- PDP-8 представляет собой одноадрес-
Для удобства программирова- зом (см. рис. 3) и кратко обозначает- ный мини-компьютер, оперирующий
ния биты в словах принято разбивать ся как «L-AC». 12-битный AC позволя- 12-битными словами с использованием
на 4 группы по 3 бита в каждой: таким ет хранить числа со знаком в диапа- дополнения до 2 для представления от-
образом, число 110011100010(2) можно зоне от -2048(10) до 2047(10). Разуме- рицательных чисел. Доступное адрес-
записать как 110 011 100 010(2). Обра- ется, это очень небольшие величины, ное пространство (в базовой конфи-
тившись к восьмеричной системе счис- и для обработки больших чисел нуж- гурации) ограничено 4096(10) слова-
ления (системе счисления по основа- но соответствующие операции либо ми (для некоторых моделей PDP-8 ад-
нию 8, использующей цифры от 0 до 7), эмулировать программно (что вовсе ресное пространство расширяется до
немедленно получаем 6342(8). не сложно), либо использовать специ- 32767(10) слов). Все арифметические
Легко видеть, что 12-битные сло- альное оборудование. Отрицательные и некоторые логические операции про-
ва ограничивают диапазон доступ- числа представляются в виде дополне- изводятся над содержимым пары L-AC.
ных адресов памяти значениями ния до 2: 7777(8) = -1(10), 7776(8) = -2(10) При написании программ используется
от 0 до 212-1= 4095(10), то есть всего и так далее. преимущественно восьмеричная сис-
4096(10) ячеек памяти, что составля- Упражнение 1: проверьте, хоро- тема счисления; данные в самом ком-
ет всего 4096*12/8 = 6144 байт, или 6 шо ли вы понимаете, почему отрица- пьютере, разумеется, представляются
Кб в пересчете на «стандартные» 8- тельные числа представляются имен- как двоичные числа.

82
Типы инструкций 128(10) адресов памяти с аб-
Самые интересные решения в архи- солютными значениями от 0
тектуре PDP-8 связаны с памятью – до 127(10)).
доступом и методами адресации. Их Если бит 4 равен 1, то это Рисунок 4. Формат слова, содержащего операцию
я буду описывать параллельно с сис- означает, что смещение ука- работы с памятью
темой команд компьютера: тем самым зывает на адреса, входящие
достигается более ясное понимание в состав той страницы памя-
их взаимосвязи. ти, на которой располагается Рисунок 5. Пример операции
Система команд PDP-8 включает сама команда. Лучше все это
в себя три типа инструкций: инструк- разобрать на небольших примерах. Предыдущее значение, хранившееся
ции, ссылающиеся на память (memory Допустим, аккумулятор содержит в этой ячейке памяти, будет утеряно.
reference insrtuctions, MRI), инструкции значение: Если бит 4 установить в 1, то эта
ввода/вывода (IO) и так называемые команда будет выполнена уже иначе.
микроинструкции (microinstructions). 000000111100(2) = 74(8) = 60(10) Поскольку бит 4 равен 1, а сама ко-
манда располагается на первой стра-
Операции работы с памятью и процессор PDP-8 выполняет команду нице памяти по адресу 200(8), что со-
Как вы думаете, сколько всего опе- (число слева указывает на абсолютный ответствует абсолютному адресу
раций для работы с ячейками памяти адрес расположения команды в памя- 000 010 000 000(2), то после выполне-
предусмотрено в PDP-8? Уверен, боль- ти) (cм. рис. 5). ния команды содержимое AC будет со-
шинству читателей ответ покажется Упражнение 3: какой странице па- хранено по адресу страницы плюс сме-
невозможным: их всего 6! Формат сло- мяти соответствует абсолютный адрес щение внутри страницы, то есть по ад-
ва, содержащего такую операцию, вы- 200(8)? Определите двоичное и деся- ресу 207(8).
глядит так (см. рис. 4). тичное значения адреса этой стра- Предыдущее значение, хранивше-
Биты с 0 по 2 (обозначенные как ницы. еся в ячейке памяти с адресом 207(8),
«КОП») представляют собой код опе- Разберем команду на составляю- будет утеряно. Наконец, в обоих слу-
рации от 0 до 5 (от 000(2) до 101(2)). щие (здесь для наглядности я отступаю чаях содержимое AC после выполне-
Операции работы с памятью перечис- от принятого ранее соглашения разби- ния команды станет равным 0.
лены в таблице. вать слово на 4 группы по 3 бита). Бит 3 (косвенная адресация) поз-
Рассмотрим остальные биты. Бит 3 Первые три бита (011) – это код опе- воляет организовать еще более гиб-
(обозначен на рисунке как «К») – при- рации DCA (выгрузить содержимое AC кий способ доступа к ячейкам памяти.
знак косвенной адресации: если он по указанному адресу, после чего AC Разумеется, использование косвен-
установлен в 1, то содержимое ячей- очистить). ной адресации несколько увеличива-
ки памяти интерпретируется не как Бит 3 равен 0; это означает, что кос- ет время доступа к нужной ячейке па-
операнд, а как адрес операнда. Бит 4 венная адресация не используется. мяти, поскольку, грубо говоря, необ-
(обозначен как «С») – это страница Бит 4 равен 0, что, как мы помним, ходимо найти адрес по адресу (позже,
памяти. Вот здесь нужно остановить- означает страницу 0. при обсуждении механизма подпро-
ся подробнее. Наконец, смещение (биты с 5 по 11) грамм, я вернусь к этому вопросу).
Память PDP-8 (как мы помним, представляет собой число 7(8) = 7(10). Страница 0 доступна всегда и из
в базовом варианте PDP-8 ее размер Как процессор «справится» с такой любого места программы и занимает
составляет 4096(10) последователь- командой? в некотором роде привилегированное
но перенумерованных слов) разбита Главное – это вычислить адрес положение. Остальные страницы на-
на 32(10) страницы, размером 128(10) ячейки памяти, по которому будет со- зываются текущими.
слов каждая. хранено текущее значение аккуму- Биты 3 и 4 могут комбинировать-
Каждая страница, разумеется, лятора. ся в соответствии с логикой програм-
имеет свой номер от 0 до 31(10) (в вось- Так как номер страницы, указан- мы и алгоритмом (то есть возможны 4
меричной записи до 37(8)). Последние ный в команде, равен 0, то смещение способа адресации). Это немного по
7 бит слова, содержащего команды указывает на адрес 000 000 000 007(2) сравнению с современными процессо-
(с 5-го по 11-й), – это смещение адре- (проверьте) и именно по этому адре- рами, но для практических целей впол-
са внутри страницы. су и будет сохранено значение AC. не достаточно.
Упражнение 2: убедитесь, что ука-
Операции работы с памятью
занные 7 бит смещения действитель-
Мнемоника КОП Описание
но могут адресовать 128(10) слов внут-
AND 000 Логическое «И» содержимого ячейки памяти и содержимого AC. Результат – в AC
ри страницы.
Вернемся к биту 4. Очевидно, TAD 001 Сумма содержимого AC и содержимого ячейки памяти. Результат – в АС

что он может принимать только два ISZ 010 Инкремент содержимого ячейки памяти. Если содержимое ячейки памяти стало
равным 0, то пропустить следующую операцию
значения: 0 или 1. Если бит 4 равен
0, то это означает, что смещение ука- DCA 011 Выгрузка содержимого AC в ячейку памяти с последующей очисткой AC

зывает на адреса, входящие в сос- JMS 100 Вызов подпрограммы


тав нулевой страницы (т.е. на первые JMP 101 Безусловный переход

№4, апрель 2009 83


чить скорость вычислитель- Устройства ввода/вывода могут уп-
ных операций. равляться как напрямую, так и по пре-
Программы на PDP-8 по- рываниям (прерывания могут оказать-
лучаются, таким образом, ся необходимыми и для других целей,
Рисунок 6. Формат слова, содержащего операцию
ввода/вывода несколько длиннее анало- например, при разработке операцион-
гичных программ для при- ных систем).
Кроме того, PDP-8 позволяет орга- вычных двухадресных компьютеров Запрещение и разрешение преры-
низовать так называемое автоиндек- с более развитой системой команд. ваний кодируются этой же инструкци-
сирование – полезный способ адреса- Спору нет, такой несколько «пури- ей: для этого достаточно выбрать ус-
ции при организации циклов. Для ис- танский» подход к системе команд воз- тройство ввода/вывода с номером 0.
пользования автоиндексации на стра- лагает на программиста дополнитель- Тогда, если в битах с 9-го по 11-й со-
нице 0 резервируются несколько яче- ные заботы, но давайте вспомним вре- держится комбинация 001(2), то будет
ек памяти. Я, однако, останавливать- мя, когда появился PDP-8. включен режим разрешения прерыва-
ся на этих деталях не буду. Заинтере- Память представляла собой мас- ний, а если комбинация 010(2), то пре-
сованный читатель может найти всю сив миниатюрных ферритовых сер- рывания будут запрещены.
необходимую информацию, обратив- дечников с намотанным на каждом Опытные программисты хорошо
шись к ссылкам, приведенным в кон- сердечнике проводом. При пропус- знают, что программирование уст-
це статьи. кании электрического тока в том или ройств ввода/вывода одна из наибо-
ином направлении ферритовый сер- лее сложных задач, поэтому за неиме-
И это все? дечник мог намагничиваться в одном нием места я не буду больше останав-
Внимательный читатель наверняка из двух направлений – так реализовы- ливаться на обсуждении вопросов вво-
спросит: а как в PDP-8, например, вы- валось хранение информации в двоич- да/вывода в PDP-8 и направляю за-
полнить вычитание – ведь такой опе- ном представлении. Один сердечник интересованного читателя к ссылкам
рации в системе команд не предус- соответствовал одному биту. Неслож- в конце статьи.
мотрено? Верно, не предусмотрено. ный подсчет показывает, какое коли-
И не только вычитания, но ряда дру- чество сердечников содержала память Микроинструкции
гих полезных и необходимых опера- в базовом варианте PDP-8: 12*4096 = Микроинструкции – это, пожалуй, са-
ций, как, например, пересылки дан- 49152(10)! А ведь каждый сердечник мый многочисленный «отряд» опера-
ных из одной ячейки памяти в другую. необходимо было намотать проводом, ций PDP-8. Эти операции не ссылают-
Но так ли необходимо в системе ко- распаять на плате, подвести управля- ся на память, а работают в основном
манд иметь, скажем, команду вычи- ющие шины... Понятно, что борьба шла с парой L-AC. Для всех микроинструк-
тания? Если подумать, то совсем не- за каждый бит памяти и поэтому систе- ций зарезервирован один код опера-
обязательно: достаточно представить ма команд была минимальной – все, от ции: 111(2) = 7(8). Микроинструкции
вычитаемое в виде дополнения до 2 чего можно было отказаться (пусть да- разделены на два класса, отличающи-
и выполнить сложение. Так же прос- же путем дополнительных затрат труда еся один от другого состоянием бита 3:
то решается задача пересылки дан- программиста), исключалось. Сегод- при его нулевом значении биты с 4-го
ных из ячейки памяти А в ячейку памя- ня это трудно представить, но по тем по 11-й задают микроинструкции 1-й
ти В: нужно последовательно очистить временам это был весьма разумный группы, в противном случае – 2-й груп-
содержимое AC (как это сделать я рас- подход. пы. Подробно останавливаться на всех
скажу дальше), загрузить AC данными микроинструкциях я не буду – во-пер-
из ячейки А (см. операцию TAD), а за- Инструкции ввода/вывода вых, их много, во-вторых, их назначе-
тем сохранить содержимое AC в ячей- Для организации ввода/вывода в ние будет понятно из нескольких при-
ку В (см. операцию DCA). PDP-8 предусмотрена одна единст- меров. Рассмотрим две операции пер-
Отдельно необходимо сказать о вы- венная инструкция. Вот ее формат вой группы микроинструкций: очистка
числениях с плавающей запятой. В ба- (см. рис. 6). AC и очистка L. Их мнемоники, соответ-
зовой комплектации PDP-8 поддержи- Из рисунка видно, что код операции ственно, CLA и CLL. В двоичном пред-
вал только целочисленную арифмети- ввода/вывода – всегда 6. Биты с 3-го ставлении (см. рис. 7, 8).
ку, чего для управляющих процессов по 8-й задают устройство (клавиатуру, А в восьмеричном, соответственно,
и научных расчетов было явно недо- принтер, ленточный или дисковый на- 7200 и 7100. Эти две операции можно
статочно. Была разработана специ- копитель и так далее). Всего к PDP-8 объединить в одну, записав как «CLA
альная библиотека для эмуляции этих можно было подключать до 64(10) ус- CLL» (см. рис. 9).
операций. Кроме того, в большинстве тройств (почему?). Скажем, клавиату- Упражнение 4: определите вось-
моделей PDP-8 был предусмотрен спе- ра имеет номер 000011(2). меричный код такой операции.
циальный регистр для расширения ак- Биты с 9-го по 11-й определяют од- Очевидно, что этим достигается
кумулятора AC и позволявший умно- ну из восьми операций ввода/вывода. значительная экономия памяти, пос-
жать и делить большие числа. Путем Обычно предусмотрено до 3-х опера- кольку позволяет объединить в од-
подключения к PDP-8 специальных ций для каждого устройства, но если ном слове несколько инструкций, ко-
блоков операций с плавающей запя- их должно быть больше, то в битах 9-11 торые процессор PDP-8 выполнит, ког-
той можно было значительно увели- остается некоторый «запас». да до них дойдет время.

84
Более подробно останавливать- тальные будут безвозвратно
ся на микроинструкциях в этой статье затерты.
нет смысла – всю информацию чита- Конструкторы PDP-8 на- Рисунок 7. CLA
тель сможет найти по ссылкам в конце шли элегантное, хотя и не-
статьи. Единственное, что нужно отме- обычное, решение: адрес
тить, что операции 1-й группы микро- возврата должен храниться
инструкций «обслуживают» в основ- в самой подпрограмме! Ко- Рисунок 8. CLL
ном пару L-AC, устанавливая в них за- нечно, это не стек (скажем,
данные значения, в то время как опера- при таком способе органи-
ции 2-й группы проверяют содержимое зации подпрограмм неиз-
регистров L и AC на соответствие опре- бежно возникнут проблемы Рисунок 9. CLA CLL
деленным условиям и позволяют орга- с рекурсивными вызовами),
низовать гибкие ответвления и перехо- но зато при таком способе
ды (путем пропуска следующей коман- подпрограмма сама «знает»,
ды в потоке выполнения). Например, куда надо передать управле- Рисунок 10. L-AС
микроинструкция второй группы SZA ние по окончании своей ра-
пропускает следующую инструкцию в боты. Проще показать все это на при- передано управление после исполне-
потоке управления, если содержимое мере (для наглядности в левой колонке ния команды «JMP I SUBST»? Попы-
AC равно 0; вот ее двоичное представ- я указал восьмеричные адреса памяти, тайтесь вручную оттранслировать этот
ление (см. рис. 10). Если содержимое по которым располагается этот фраг- фрагмент программы.
AC равно 0, то инструкция, следующая мент программы) (см. рис. 11). Управление будет передано по ад-
за SZA, будет пропущена. Хотя я и не рассказывал, что из се- ресу, хранящемуся в ячейке памяти
Упражнение 5: определите вось- бя представляет программа на ассем- SUBRT, то есть, как мы помним, по ад-
меричный код этой операции. блере для PDP-8, думаю, ничего слож- ресу 1211(8). Итак, для выхода из под-
ного в примере нет, тем более что все программы и возврата к основной час-
Подпрограммы будет сейчас объяснено. ти программы необходим так называ-
Перед тем как завершить обзор архи- По адресу 1210(8) происходит вы- емый косвенный переход – переход
тектуры PDP-8, имеет смысл немного зов подпрограммы. Подпрограмма на- по адресу, хранящемуся не в самой ко-
задержаться на подпрограммах, их вы- чинается с ячейки памяти, помеченной манде, а в ячейке памяти.
зовах и, главное, на возврате из под- как «SUBRT» (заметьте, что в ассемб-
программ в вызывающий код. лере PDP-8 метки отделяются от ос- Шина OMNIBUS
Причина, почему я на этом оста- тального кода запятыми) по адресу Рассказ о мини-компьютерах PDP-8
навливаюсь, проста – в PDP-8 нет 1240(8). Итак, переход к подпрограм- был бы неполным без упоминания та-
стека. Конечно, его можно эмулиро- ме осуществлен. кой важной его составляющей, как ши-
вать программно, но это совсем дру- Ячейка памяти, имеющая метку на OMNIBUS. Основное назначение
гой вопрос. Главное, что аппаратный SUBRT, предназначена для одной це- шины OMNIBUS состояло в переда-
стек в архитектуре PDP-8 отсутству- ли – в ней удерживается (сохраняет- че команд и сигналов между модуля-
ет. Плохо это или нет, я здесь обсуж- ся) адрес команды, непосредственно ми PDP-8. Физически OMNIBUS пред-
дать не буду (скорее плохо, поскольку следующей за командой вызова под- ставляла собой плату с коннектора-
стек очень уж «полезная» часть архи- программы (в данном случае это ад- ми и слотами для присоединения раз-
тектуры компьютера). Как же в таком рес 1211(8) инструкции «JMP BEGIN»), личных устройств. Коннекторы позво-
случае использовать подпрограммы то есть по существу адрес возврата. ляли организовать доступ к адресной
(вспомните, при обсуждении операций Любое значение, хранившееся в ячей- шине, шине данных памяти и управ-
работы с памятью я перечислил в чис- ке 1240(8) до вызова подпрограм- ления, шине данных, прямой доступ
ле прочих и операцию вызова подпро- мы, будет затерто значением 1211(8). к памяти (доступ к памяти, минуя про-
граммы)? Передать управление под- Фактически подпрограмма начина- цессор), сигналы таймера и так далее
программе, очевидно, несложно: по су- ет выполняться с операции, следую- (всего 96 сигналов).
ти, это безусловный переход в нужную щей за точкой входа в подпрограмму,
точку программы. А вот как вернуться то есть с адреса 1241(8); какую именно
назад, не имея стека, проще говоря – задачу решает подпрограмма в приме-
где и как сохранить адрес возврата? ре, для нас в настоящее время не су-
Можно, конечно, выделить в памя- щественно.
ти определенную ячейку памяти и пе- По адресу 1255(8) – последней ко-
ред вызовом подпрограммы сохранять манде в подпрограмме – находится
в ней нужное значение программно- команда безусловного перехода с ис-
го счетчика. Но если вызовов подпро- пользованием косвенной адресации
грамм несколько, то в этой ячейке бу- (на это указывает символ «I»).
дет сохранено только последнее зна- Упражнение 6: перед тем как чи- Рисунок 11. Программа (фрагмент),
чение программного счетчика – все ос- тать дальше, подумайте – куда будет демонстрирующая вызов подпрограммы

№4, апрель 2009 85


Знакомство с шиной OMNIBUS не- ностями) был отладчик ODT, разрабо- из которых первые 8192 слов предна-
обходимо прежде всего при програм- танный для PDP-5. значались для размещения программ
мировании операций ввода/вывода монитора операционной системы, а ос-
и управления периферийными уст- Компиляторы и интерпретаторы тавшиеся 4096 слов разделялись меж-
ройствами, подключаемыми к PDP-8 Для PDP-8 были написаны компи- ду пользователями системы. TSS/8
(датчиками, приборами и прочее). Пос- ляторы самых распространенных обслуживала одновременную работу
кольку, как я уже упоминал, это одна в то время языков: FORTRAN, ALGOL нескольких пользователей, выделяя
из наиболее сложных задач, стоящих и BASIC. каждому из них необходимые ресур-
перед программистом, заинтересован- Корпорацией DEC был разработан сы (память, дисковое пространство)
ный читатель может обратиться к доку- язык высокого уровня FOCAL, предна- и контролируя их права.
ментации по ссылкам в конце статьи. значенный в основном для инженер-
ных и научных расчетов. Язык позво- Прикладное программное
Программное обеспечение лял не только производить расчеты, обеспечение
Для мини-компьютера PDP-8 и его мо- но располагал средствами построе- Прикладное программное обеспече-
дификаций был создан весьма внуши- ния простейших графиков. Разумеет- ние, написанное для PDP-8, также бы-
тельный объем программного обес- ся, все модели PDP-8 были снабжены ло самым разнообразным. Можно упо-
печения. Существовало объединение интерпретатором FOCAL. мянуть, к примеру, программное обес-
разработчиков и пользователей ПО Из интерпретаторов следует упомя- печение контроля производственных
для мини-компьютеров, выпускавших- нуть язык функционального програм- объектов и процессов, сбора и обра-
ся DEC (не только для PDP-8): DECUS мирования LISP и язык обработки тек- ботки информации, систем телемет-
(Degital Equipment Corporation User's стов SNOBOL. рии и мониторинга, программное обес-
Society). DECUS координировало про- печение для бизнеса и даже игры.
цесс разработки ПО, обеспечивало его Операционные системы Одним словом, PDP-8 славно вы-
участников доступом к существующе- Для PDP-8 были разработаны несколь- полнял свою работу, был надежной
му ПО и к важной технической и тех- ко операционных систем. и простой в обслуживании и управле-
нологической информации. Прежде всего необходимо сказать нии машиной (чего, к сожалению, нель-
Прежде всего я расскажу о сис- несколько слов о самой первой опе- зя сказать о некоторых его клонах, вы-
темном ПО, включавшем ассемблеры, рационной системе для PDP-8: OS/8. пускавшихся во многих странах, в том
компиляторы языков программирова- Эта операционная система была весь- числе и в бывшем СССР).
ния и операционные системы. ма простой, но в то же время и весьма
компактной: резидентная часть OS/8 Ответы и указания
Ассемблеры занимала всего 256 слов памяти. Пре- к упражнениям
Для PDP-8 были разработаны 4 вари- рывания при вводе/выводе не исполь- Ответ к упражнению 2 содержится не-
анта ассемблера. Ассемблер PAL-III зовались. В качестве средства «обще- посредственно в тексте статьи.
представлял собой ассемблер для мо- ния» между пользователем и обору-
делей, оборудованных базовым объ- дованием, OS/8 предоставляла язык Упражнение 1
емом памяти 4096 слов. Его расши- командной строки (concise command Д во ич н о е п р ед с тав л е н и е ч и с л а
ренная модификация MACRO-8 позво- language). -1024(10) определяется следующим
ляла определять в программах макро; Далее, следует упомянуть дис- образом:
ассемблер поддерживал двойную точ- ковый монитор (disk monitor system) – n сначала найдем двоичное пред-
ность арифметических операций, опе- программу управления PDP-8, рас- ставление положительного чис-
рации с плавающей точкой, литералы считанную на ввод команд с исполь- ла 1024(10) = 010000000000(2), за-
и некоторые другие расширения. Ас- зованием терминала. Его функцио- писав его в виде 12-битного слова
семблер PAL-D предназначался исклю- нальность была довольно ограничен- с ведущим 0;
чительно для использования на моде- ной, но, тем не менее, он существенно n затем определим дополнение
ли PDP-8/I совместно с дисковым мо- облегчал работу пользователя с ми- до 1 (заменой 0 на 1 и наоборот):
нитором (disk monitor system). Нако- ни-компьютером PDP-8, системными 1011111111(2);
нец, ассемблер SABR предназначал- программами и периферийным обру- n и наконец прибавим 1 для допол-
ся для программирования на моделях дованием. Дисковый монитор предо- нения до двух: 110000000000(2) =
с объемом памяти больше 4096 слов ставлял весьма широкие возможнос- -1024(10).
и обладал самыми лучшими возмож- ти по работе с файлами, прежде всего Теперь получить соответствующее
ностями. с файлами на жестких дисках, что су- восьмеричное представление совсем
Кроме ассемблеров, с PDP-8 пос- щественно ускоряло и облегчало ра- просто (заменой справа налево групп
тавлялись несколько отладчиков, сре- боту пользователей. из троек двоичных чисел соответству-
ди которых наиболее широкими воз- Третья операционная система, ко- ющими восьмеричными): 6000(8).
можностями располагал отладчик торую я отмечу, это операционная сис- Для проверки сложим начальное
ODT-8 (octal debugging technique), пред- тема разделения времени (time-sharing и конечное двоичные представления;
шественником которого (разумеется, system) TSS/8. Для работы TSS/8 тре- если преобразование выполнено вер-
с гораздо более скромными возмож- бовалось не менее 12288 слов памяти, но, то сумма должна быть равна 0:

86
0100 0000 0000 n бит 4 установлен в 1
1100 0000 0000
-------------- (адресация на текущей
1 0000 0000 0000 странице);
n управление передается
Перенос в несуществующий 13-й по символическому ад-
разряд игнорирутся; таким образом, ресу (метке), располо-
в результате получен 0, и преобразо- женной в ячейке памяти
Рисунок 12. Программа (фрагмент) и результат
вание выполнено верно. 1240(8). Смещение этого ее трансляции в машинный код
Аналогичная проверка для вось- адреса от начала страни-
меричных представлений 2000(8) + цы составляет 1240(8) – 1200(8) = современных компьютеров. О таких
6000(8) = 10000(8) дает тот же самый 40(8) = 0100000(2); объемах памяти и уровне быстродейс-
результат. n все составляющие машинного кода твия, которыми располагают компью-
Примечание: на вопрос, почему определены, и остается их «скле- теры сегодня, разработчики и програм-
игноририруется перенос в 13-й разряд ить» вместе: 100010100000(2) = мисты PDP-8 могли только мечтать.
и не является ли это ошибкой, ответ 4240(8). Но, как всегда и везде, решающее
можно найти, обратившись к литерату- значение имеют не столько техничес-
ре по представлениям чисел в различ- Обратите внимание, что после вы- кие возможности аппаратуры, сколько
ных системах счисления (см. выше). полнения этого кода процессором интеллект, любознательность, усидчи-
PDP-8 в ячейке памяти с адресом вость и квалификация тех, кто с этой
Упражнение 3 1240(8) будет сохранен адрес возвра- аппаратурой работает.
Абсолютному адресу 200(8) соот- та (адрес ячейки памяти 1211(8)). Фак- PDP-8 (как и ряд других компьюте-
ветствует 1-я страница памяти. Со- тически подпрограмма начинает вы- ров той славной эпохи) отчетливо де-
о т в е т с т ву ю щ и е п р е д с т а в л е н и я: полняться с адреса 1241(8). монстрируют, сколь многого можно до-
000010000000(2) или 128(10). Остальные команды транслиру- биться даже при очень скромных ре-
ются аналогично. Обратите внима- сурсах, если приложить к своему де-
Упражнение 4 ние на два момента. Во-первых, код лу голову.
Ответ: 7300(8). по адресу 1240(8) будет оттрансли- История проекта PDP-8 показы-
рован просто в 0. Даже если по этому вает, что почти любую, не решаемую
Упражнение 5 адресу и располагалась какая-то ин- на первый взгляд задачу, можно ре-
Ответ: 7440(8). формация, она будет заменена адре- шить и не нужно для этого, в общем-то,
сом возврата немедленно после входа ничего – «всего лишь» думать. И, же-
Упражнение 6 в подпрограмму. Во-вторых, разберем лательно, нестандартно.
Это упражнение – самое сложное, трансляцию в машинный код команды
но и самое интересное. Читателю, что- возврата из подпрограммы: 1. Большая подборка док ументации
бы его решить, возможно, придется n код операции JMP (биты с 0 по 2): по архитек т уре и программирова-
обратиться к более подробному опи- 101(2); нию мини-компьютеров PDP-8 – http://
санию мини-компьютера PDP-8, ко- n бит 3 установлен в 1 (косвенная ад- bitsavers.org/pdf/dec/pdp8.
торое можно найти по ссылкам в кон- ресация); 2. MS-DOS эмулятор PDP-8 – http://www4.
це статьи. n бит 4 установлен в 1 (адресация wittenberg.edu/academics/mathcomp/
Сначала я приведу результат транс- на текущей странице); bjsdir/PDP8HomePage.htm.
ляции (справа от исходного текста про- n управление передается по адре- 3. По этой ссылке читатель найдет не-
граммы, см. рис. 12), а затем дам не- су, хранящемуся в ячейке памяти сколько эмуляторов PDP-8 – http://www.
которые комментарии: 1240(8). Вычислим смещение ячей- aracnet.com/~healyzh/pdp8emu.html.
Прежде всего обращаю внимание, ки памяти с адресом 1240(8) от на- 4. FAQ по PDP-8 – http://faqs.cs.uu.nl/na-dir/
что программа занимает адреса, от- чала страницы: 1240(8) – 1200(8) = dec-faq/pdp8.html.
веденные для пятой страницы памяти 40(8) или 0100000(2); 5. Страница Д.Джонса с многочислен-
(т.е. в диапазоне от 1200(8) до 1377(8)). n окончательно, получаем ответ: ными ссылками по PDP-8 – http://www.
Иными словами – программа будет 101110100000(2) = 5640(8). cs.uiowa.edu/~jones/pdp8.
загружена не в нулевую, а в текущую 6. Интересная статья, посвященная ис-
(а именно – в пятую) страницу памяти, Когда управление дойдет до это- тории PDP-8 – http://pcmag.ru/solutions/
и это нужно учитывать при ее трансля- го участка, будет осуществлен пере- detail.php?ID=11528.
ции в машинные коды. ход по адресу, хранящемуся в ячейке 7. Эта ссылка не имеет прямого отноше-
Разберем подробно, как транс- 1240(8), в котором уже хранится адрес ния к PDP-8, однако здесь читатель
лируется самая первая команда про- точки возврата, то есть адрес ячейки найдет весьма поучительную историю,
граммы: памяти 1211(8). с которой раньше (да порой и сейчас)
n код операции JMS (биты с 0 по 2): частенько приходилось сталкиваться
100(2); Эпилог программистам – http://www.wasm.ru/
n бит 3 сброшен в 0 (косвенная адре- Разумеется, PDP-8 по своим возмож- article.php?article=onebyte.
сация не используется); ностям не сравним с возможностями

№4, апрель 2009 87


Контейнер
Контейнер. Воскресенье меньше коротышки Второго, и сразу отправился в любимый угол. Как и вче-
Было щекотно. Это первое, что он пом- с ним сдружился, в то время как ника- ра, скоро около него опустился Второй,
нил. Темно и щекотно. И тихо. При этом кого особого дружеского расположе- а за ним Третий и Четвертый. Какое-то
он чувствовал, что в этом мире он ния к Первому не проявлял. Возмож- время Четвертый что-то там бормотал
не один. Но это было лишь смутное но, из-за этого и показался ему зану- себе под нос и фыркал, а потом и он
чувство, на которое не стоило полагать- дой. Первый обиделся и ушел в угол замолчал, охваченный накатившим
ся. Он прошелся вдоль границ контей- контейнера. Скоро к нему подошел чувством единения. Все было как всег-
нера, не обнаружил совершенно ниче- Второй и сел рядом. С другой сторо- да, но к концу дня Первый чувствовал,
го и стал размышлять. Вокруг кипела ны от Второго уселся Третий. Первый что что-то случилось.
жизнь, но она была где-то там, за гра- почувствовал, что они все трое – часть
ницами. Почему-то он понимал, что весь какого-то единого целого. Они сидели Контейнер. Четверг
полон знаний, но пока для него было молча, но это молчание было сродни Этот день был особенным. Предчувс-
больше вопросов, чем ответов. Завтра. молитве, которая их объединяла. Да- твия не обманули Первого – в два ча-
Завтра он станет на день старше, муд- же Третий как-то притих. са ночи ничего не произошло. Никто
рее и, возможно, к тому времени что- – Кто мы и зачем мы здесь? – нако- не появился. Беспокойство первого пе-
нибудь изменится. Так, размышляя, он нец нарушил тишину Первый. редалось всем остальным, и уже к ут-
впал в состояние между сном и медита- Но лишь тишина же и была ему от- ру каждый обитатель контейнера был
цией, и время медленно потекло мимо. ветом. возбужден. «Финансовый воротила»
заявил, что это все последствия ми-
Контейнер. Понедельник Контейнер. Среда рового финансового кризиса, а Тре-
Он не ошибся. В два часа ночи у не- В 2 часа ночи в среду появился очень тий как-то побледнел и что-то лепетал
го, Первого, появилась компания. От- неприятный тип. По крайней мере, про налоговую инспекцию. Слушая это,
куда он узнал, что было два часа но- он показался таким Первому и Вто- Второй принялся вырисовывать на сте-
чи, неизвестно – он просто знал это. рому, в то время как Третий непло- нах контейнера лозунги «Заплатил на-
Он чуть было не проспал этот момент, хо с ним поладил. Четвертый объявил логи – спишь спокойно!» и «Не сдадим
но вовремя почувствовал приближе- себя финансовым воротилой и свысо- дно бивалютной корзины!», бормо-
ние магнитного поля. Новенький ока- ка посматривал на Второго и Третьего. ча при этом про фрилэнс и свободное
зался щупленьким, маленьким коро- На Первого, ввиду его размеров, свы- искусство, которое хоть и может быть
тышкой, Первому даже стало как-то сока смотреть было нельзя, но Первый на службе у государства, но если что –
немного стыдно своих размеров. Те- чувствовал, что новенький считает се- прокормит себя самостоятельно. Пер-
перь их было двое и наконец-то было бя самым важным в контейнере. Когда вый, ввиду своих габаритов, не суе-
с кем пообщаться. Очень быстро они Первый поинтересовался, что значит тился, но ощущал себя отвратительно.
поняли, что замечательно дополняют «финансовый воротила», Четвертый И вот это случилось. Первый почувс-
друг друга, несмотря на то, что внеш- ушел от прямого ответа, но зато ска- твовал приближение магнитного по-
не казались такими разными. Второй зал, что надо ввести в контейнере де- ля, и в ту же секунду над контейнером
был художником, по крайней мере, он нежную единицу, учредить банк, а сам появился его источник. Первый не мог
знал много из этой области. За ни- предложил себя на пост управляющего. видеть что это, но он это чувствовал,
чего не значащей болтовней прошел Третий оживился, сказал, что у него как как почувствовали и все остальные.
еще один день, а ночью они уже вмес- раз есть навыки ведения бухгалтерии Сначала Четвертый замолчал на полу-
те ждали следующего гостя. и он может этим заняться. А у Второго, слове, затем его приподняло и повер-
как оказалось, имеются художествен- нуло так, что он оказался расположен
Контейнер. Вторник ные наработки, из которых он берется горизонтально вдоль контейнера, а за-
И не ошиблись. В 2 часа ночи поя- создать дизайн купюр. Первый почувс- тем будто мелкая дрожь прошла по не-
вился Третий. Размером он был еще твовал свою ненужность и вразвалку му. После этой процедуры ошарашен-

88
ный финансовый воротила шлепнулся шенность связующего звена – Пятого. Офис. Понедельник
вниз, а тем временем то же самое про- В Шестом была какая-то…. завершен- Придя утром на работу, Сергей пер-
исходило с Третьим. Потом со Вторым. ность. Он был разговорчив, но не болт- вым делом проверил бэкап, который
Более тучный Первый оказался не та- лив – с удовольствием отвечал на воп- создавался каждый день в два часа
кой уж легкой добычей для магнитно- росы, но все его ответы сводились к то- ночи. Схема бэкапа была незатейли-
го поля, но вот это произошло и с ним. му, что конец близок и он последний, ва – в воскресенье делался полный
Он ощутил знакомую легкую щекотку, и что все берется из «ниоткуда» и ис- бэкап, а в последующие дни – инкре-
навевающую воспоминания о его по- чезает «в никуда». Ну, проповедник ментальный. Как известно, все админы
явлении тут. Потом впечатление было и есть проповедник. Это даже сначала делятся на две категории – те, кто де-
такое, что все его содержимое быст- позабавило Первого, а потом застави- лает резервные копии, и кто пока еще
ро-быстро перетряхивают. Наконец, ло все же снова задуматься. Поэтому, их не делает. Для Сергея эта поговор-
он так же упал вниз, успев отметить когда все, по заведенной традиции, на- ка была как никогда актуальна – ведь
удаляющееся магнитное поле. Ошара- конец собрались вместе, Первый сно- именно наличие резервной копии дан-
шенные обитатели контейнера сгруди- ва повторил свой вопрос в никуда, ко- ных здорово спасло его, когда на про-
лись в кучу около Первого и подавлен- торый задавал так недавно и в то же шлой неделе в среду поздно вечером
но молчали. В этот раз они как никогда время так давно: рухнул рэйд-массив на файловом сер-
чувствовали свое единство. «Кто мы и зачем мы здесь?» вере. И если бы не контейнер с бэка-
И в этот раз после небольшой па- пом, можно было бы лишиться работы.
Контейнер. узы тишина была нарушена ответом. Сергей понимал всю серьезность свое-
Пятница‑суббота Ответом Шестого. го тогдашнего положения – финансо-
Напуганные обитатели контейнера «Посмотри… В тебе есть все ответы вые аналитики как раз в среду скину-
с нетерпением ждали двух часов но- на все твои вопросы, надо только уметь ли на сервер свежие данные, а в по-
чи. Все было как обычно, и появил- посмотреть в себя. Увидь!» недельник дизайнеры сгрузили туда
ся Пятый. Но он был настолько тощий И Первый увидел! Это оказалось новые векторные макеты. А уж о том,
и к тому же молчалив и безразличен так просто – набор данных, которые сколько тетушек-бухгалтеров поседе-
ко всему, что это еще больше напугало содержались в нем, раскрывался пе- ли бы от известия о пропавшей базе –
первых четырех. Никто не хотел гово- ред его внутренним взором, явив ему страшно подумать! Особенно с учетом
рить ни о случившимся, ни о будущем, прошлое и… будущее. того, что во вторник у бухгалтеров был
и все стало спокойнее, лишь когда напряженный день создания каких-то
они по обыкновению сгрудились вмес- Контейнер. Воскресенье «очередных внеочередных сверхваж-
те. Первый размышлял и поймал себя Первый ждал этого момента. Он уже ных отчетов». Конечно, где-то могли
на мысли, что думает о том, с чего все все понял. Безысходность мучила его, остаться копии, но законы Мерфи еще
началось и чем все кончится. Очевид- он знал, что на самом деле он не пер- никто не отменял. Сергей поежился.
но, подобные мысли приходили в голо- вый и не последний – цикл будет пов- Да, пришлось повозиться, восстанав-
ву не только Первому, потому что, ког- торяться. Но с другой стороны, он так- ливая последовательно инкрименталь-
да на следующий день в два часа ночи же знал, что именно ему и его това- ный бэкап, но зато все закончилось хо-
появился Шестой, обитатели контей- рищам выпала великая честь – быть рошо. «Спасибо», мысленно поблаго-
нера для себя назвали его «проповед- полезными! Другие будут приходить дарил Сергей спасительную резерв-
ник». Он мало чем отличался от Второ- и уходить – но они, они выполнили их ную копию, оставшуюся уже в прош-
го, Третьего или Четвертого, но что-то миссию! Поэтому в душе не было со- лом, поскольку в минувшее воскресе-
в нем было такое, отчего Первый по- жалений. В два часа ночи он почувс- нье бэкап-контейнер был перезаписан
нял – этот особенный. И совсем не по- твовал магнитное поле. Значит все хо- новым содержимым…
тому, что проповедник держался особ- рошо. Все правильно. Последнее, что
няком – этому способствовала отре- он запомнил – было щекотно. Станислав Шпак

№4, апрель 2009 89


Отказ в обслуживании в пакетном Множественные уязвимости в ClamAV
фильтре в OpenBSD Программа: Clam AntiVirus версии до 0.95.
Программа: OpenBSD версии 4.3 и 4.4, возможно, дру- Опасность: Средняя.
гие версии. Описание: 1. Уязвимость существует из-за ошибки при
Опасность: Средняя. обработке RAR-архивов. Удаленный пользователь может
Описание: Уязвимость существует из-за ошибки разымено- с помощью специально сформированного RAR-архива,
вания нулевого указателя в реализации пакетного фильтра содержащего некорректное поле сжатого размера, пре-
«pf» во время трансляции пакетов. Удаленный пользователь дотвратить сканирование потенциально опасных файлов
может с помощью специально сформированного IP-пакета антивирусом.
вызвать панику ядра системы. Для успешной эксплуатации 2. Уязвимость существует из-за ошибки при обработке
уязвимости требуется, чтобы транслирующее правило опре- TAR-файлов. Удаленный пользователь может вызвать за-
деляло протокол с некорректной версией IP. Пример: цикливание приложения.
3. Уязвимость существует из-за ошибки деления на ноль
nmap -sO $хост_за_пределами_МСЭ
при обработке PE-файлов. Удаленный пользователь может
URL производителя: www.openbsd.org. аварийно завершить работу приложения, если в качестве
Решение: Установите исправление с сайта производителя. аргумента приложению передается --detect-broken.
URL производителя: www.clamav.net,
Повышение привилегий Решение: Установите последнюю версию 0.95 с сайта про-
в Trend Micro Internet Security Pro 2009 изводителя.
Программа: Trend Micro Internet Security 2008; Trend Micro
Internet Security Pro 2008; Trend Micro Internet Security Pro 2009. Множественные уязвимости в OpenSSL
Опасность: Низкая. Программа: OpenSSL версии до 0.9.8k.
Описание: Уязвимость существует из-за ошибки провер- Опасность: Средняя.
ки входных данных, связанных с Irp-объектом в методе Описание: 1. Уязвимость существует из-за ошибки при об-
METHOD_NEITHER в драйвере tmactmon.sys. Локальный работке BMPString- и UniversalString-строк в функции
пользователь может с помощью специально сформирован- ASN1_STRING_print_ex(). Удаленный пользователь может
ного IOCTL-запроса выполнить произвольный код на целе- с помощью недопустимой длины кодированной строки за-
вой системе с привилегиями учетной записи SYSTEM. ставить приложение обратиться к некорректному адресу
URL производителя: www.trendmicro.com. памяти и аварийно завершить работу приложения.
Решение: В настоящее время способов устранения уязви- 2. Уязвимость существует из-за ошибки при обработ-
мости не существует. ке атрибутов подписи в функции CMS_verify(). Злоумыш-
ленник может заставить приложение признать некоррек-
Раскрытие данных в PPTP-клиенте тные атрибуты действительными и предотвратить после-
Программа: PPTP Client 1.7.2 и более ранние версии. дующие проверки. Уязвимость распространяется только
Опасность: Низкая. на OpenSSL 0.9.8h и выше с включенным CMS. Для успеш-
Описание: Уязвимость существует из-за того, что функция ной эксплуатации уязвимости злоумышленнику требуется
delete() в pptpsetup создает файл«/etc/ppp/chap-secrets с не- доступ к ранее сгенерированной некорректной подписи.
безопасными привилегиями на доступ. Локальный пользова- 3. Уязвимость существует из-за ошибки при обработке
тель может просмотреть пароли других пользователей. Для ASN1-подписей. Удаленный пользователь может с помощью
успешной эксплуатации уязвимости требуется, чтобы адми- специально сформированного сертификата вызвать отказ
нистратор воспользовался функцией --delete для pptpsetup. в обслуживании. Уязвимость распространяется на системы,
URL производителя: pptpclient.sourceforge.net. где «long» меньше, чем «void *» (например, на WIN64).
Решение: Установите исправление из CVS-репозитория URL производителя: www.openssl.org.
производителя. Решение: Установите последнюю версию 0.9.8k с сайта
производителя.
Переполнение буфера
в IBM Tivoli Storage Manager Отказ в обслуживании в FreeBSD
Программа: IBM Tivoli Storage Manager 5.4.4.0 и более ран- Программа: FreeBSD 7.0, 7.1.
ние версии. Опасность: Низкая.
Опасность: Средняя. Описание: Уязвимость существует из-за ошибки проверки
Описание: Уязвимость существует из-за ошибки про- границ данных во время записи данных в окружение ядра
верки границ данных при обработке сессий в библиотеке в системном вызове kenv(2). Локальный пользователь мо-
adsmdll.dll. Удаленный пользователь может вызвать пере- жет вызвать переполнение буфера и аварийно завершить
полнение динамической памяти и выполнить произволь- работу системы.
ный код на целевой системе. URL производителя: www.freebsd.org.
URL производителя: www-306.ibm.com/software/tivoli/ Решение: Установите исправление с сайта производителя.
products/storage-mgr.
Решение: Установите исправление с сайта производителя. Составил Александр Антипов

90
Зачем нужен сисадмин Технологии уборки
Хочется всех собрать и рассказать, для чего я в компании нужен И очередной перл от моего начальника. Разговор по телефону:
и чем тут вообще занимаюсь. А то порой себя чувствуешь груз- Н: Сходи в серверную, наведи порядок.
чиком, слесарем, электриком, разнорабочим, секретарем ... ко- Я: ОК. Что конкретно?
роче, кем угодно, кроме ИТ-специалиста. Н: Подмети, протри все.
 один раз хотели принести из дома чайник, чтобы я отремон- Я: ОК.
тировал; Н: Сервера все внутри протри влажной тряпочкой.
 как-то просили посмотреть телевизор, почему не работает; Я: ???
 вешать мыльницы, зеркала, рамки, жалюзи; Н: Ну ты их сначала выключи, тряпочку прополоскай и по-
 недавно дали ключ от офиса, сказали, я ответственный; сильней отожми.
 поменять баллон с водой, как я понял, это классика (но в том Я: 8-О.
офисе парней 7, а мне надо спускаться на 5 этажей,... не да- Н: И пылесос там стоит – выкинь его куда-нибудь. Он нам
леко, конечно, но почему никого из них не попросить?); не нужен.
 «бери давай отверточку и быстренько беги к нам собирать Дальше немая сцена...
кресло» (одной из сотрудниц специально заказывали. На от- О том, что системники (и сервера, в частности) вообще-то пы-
каз пригрозили, что позвонят гендиру, он, типа, со мной бу- лесосят, и о том, что существуют салфетки для оргтехники, его,
дет по-другому разговаривать. Сказал, звоните и попросите наверное, не проинформировали, хотя работает в ИТ-индустрии
лучше его это сделать); лет 10 точно.
 (ну а это вообще писк) долго меня уговаривала секретарь по- Люблю разбивать стереотипы.
весить у нее картину. Lord Grey

Я съезжал с этой темы, но... тут звонок из коммерческого от-


дела (примерный разговор): Смена растет
(Она): Когда ты повесишь картину у секретаря? Дочка (6 лет) попросила показать, что внутри системника. Принес
(Я): А ты-то тут каким боком? мать, показал. Дальше пришлось искать оперативку, карты рас-
(Она): Ну ты же не делаешь, когда тебя просит секретарь. ширения, хард, блок питания, флоповод, шлейфы... Второй день
(Я): У меня нет дрели. любимая игрушка, проснулась и сразу мать вытащила. До сих
(Она): Принеси из дома. пор ковыряется – не оттащить. Приволок ей еще штук 5 матерей,
(Я): Дома тоже нет. процы... Теперь требует провод питания, монитор, розетку, корпус,
(Она): Как нет?! Ты же мужчина! клаву и мышь :-))). И главное – чтобы подружка пришла посмот-
(Я): Принеси ты из дома, если у тебя есть. реть. Нашел ей видеокурс по сборке-разборке, смотрела с удо-
(Она): Откуда у меня? Я – девушка. вольствием, но с середины – с начала все уже видела.
(Я): Ты ведь живешь с парнем.
(Она): Ну и что, у него тоже нет. AngelOfDarknesS _
(Я): Ну а почему у меня тогда она должна быть???
(Она): Ладно, если я принесу, ты повесишь картину?
(Я): Если ты принесешь – то я обязательно ее повешу. Трудности последней мили
В конечном итоге дрели так и не появилось, зато на корпора- Предыстория. Значится так: решил я поднять сетку во дворе, на-
те я случайно услышал, как директору рассказывают об отсут- писал объявление – «В нашем дворе будет организовываться ло-
ствии мужчин в компании, и что я специально говорю, что у ме- кальная сеть (ЛВС), всем желающим звонить по номеру такому-то,
ня нет дрели, чтобы ниче не делать. (Вот такой я плохой систем- спросить такого-то» – и расклеил на дверях подъездов.
ный администратор). Сама история: через пару дней мои объявы получили массо-
Но вообще капец, это когда я установил винду знакомой од- вый резонанс в старческом обществе. Возвращаемся с другом
ной из сотрудниц, и мне на следующий день принесли в качестве из лавки и смотрим, картина маслом: управдом собрал вокруг се-
благодарности бутылку водки... бя аккуратным полукругом группу заинтересованных лиц (разве
Добавлю только одно: в парке 6 серверов, порядка 30 тонких что на броневик не залез), и начал вещать о том, что ЛВС – это
клиентов, удаленно админю филиал в Москве и 3 филиала в Санкт- типа домофоны ставить будут при том, что домофоны были уста-
Петербурге. Короче, все видят, как я просто сижу, пялюсь в мони- новлены и разведены, но в эксплуатацию не введены. Мы с дру-
тор. Наверное, делать, значит, нечего. гом бочком-бочком, поближе к стенке :-).
Сеть я все-таки поднял.
PS: Переехал в другой дом, планы те же, писать объявления
Мастер на все руки теперь боюсь, жду рекомендаций.
Стою по правую руку от секретарши, объясняю, куда тыкать, и тут PPS: В доме тоже много пенсионеров.
понадобилось пароль ввести. Говорю его и, чтобы не ждать, как она claso
каждую кнопку будет искать, протянув руку, набираю. Секретарша
с восхищенным взглядом: «А вы и левой рукой умеете…».
По материалам сайта «Сисадмин тоже человек» –
Игнатий Велосипедов http://sysadmin.mail.ru

№4, апрель 2009 91


Linux. Устранение неполадок
Джеймс Киркланд, Дэвид Кармайкл,
Кристофер Л. Тинкер, Грегори Л. Тинкер
Материал ориентирован на два дис- главы рассказывают о предупрежде-
трибутива: Red Hat Linux и SUSE Linux. нии неисправностей: резервном ко-
Для работы с книгой вам потребуются пировании и восстановлении и о паке-
навыки администрирования Linux хотя тах cron и at. Одиннадцатая глава по-
бы на начальном уровне. вествует о подсистеме печати, однако
В первой главе авторы разбирают в книге речь идет в основном о ее уста-
механизм начальной загрузки систе- ревших реализациях и соответствую-
мы, описан как современный загруз- щих командах. Хотя безопасность опе-
чик GRUB, так и LILO. Вторая глава рационной системы представляет со-
посвящена зависаниям и аварийным бой отдельную и большую область зна-
остановам системы, а также методам ний, немного материала по этой теме
выяснения причин этих неисправнос- авторами представлено в двенадца-
тей. Третья и четвертая главы расска- той главе. Проблемам с сетью посвя-
зывают об инструментах настройки щена тринадцатая глава. В четырнад-
Перед вами перевод отличной кни- производительности и мониторинга. цатой рассматриваются проблемы вхо-
ги, оригинал которой вышел в серии В пятой главе речь идет о добавлении да в систему, а заключительная, пят-
HP Professional Series и написан спе- в систему устройств SAN, а также уст- надцатая, рассматривает неполадки
циалистами центра технической под- ройств на шинах USB и PCMCIA. Шес- системы X Window. При этом речь идет
держки компании Hewlett-Packard. тая глава рассказывает о дисковой еще о версии XFree86.
В качестве главного недостатка мож- подсистеме и связанных с ней возмож-
но отметить то, что перевод запоздал ных проблемах. Седьмая глава посвя- n
Издательство: «НТ Пресс»
на три года и часть приведенной ин- щена диагностике выхода устройств n
Год издания: 2009
формации явно устарела. Тем не ме- из строя и их замене. В восьмой речь n
Количество страниц: 496
нее издание заслуживает того, чтобы идет о процессах, их структуре, зави- n
ISBN: 978-5-477-00574-1
вы проголосовали за него рублем. саниях и дампах памяти. Отдельные n
Цена: ≈ 301 руб.

Python в системном
администрировании UNIX и Linux
Ноа Гифт, Джереми Джонс
Кроме того, вам, безусловно, понадо- риваются специфичные для конкрет-
бится машина с установленным Linux ных операционных систем и дистрибу-
или UNIX. Для упрощения работы авто- тивов вопросы. Управление пакетами
ры подготовили свободно распростра- вынесено в девятую главу. Отдельные
няемую виртуальную машину на базе главы посвящены процессам и много-
Ubuntu, которая включает в себя уже задачности, созданию графического
настроенную для работы с книгой сре- интерфейса при помощи PyGTK, со-
ду и приведенные примеры кода. хранности данных и работе с команд-
Первые две главы посвящены ной строкой. В последней главе приве-
введению в язык программирования дены примеры построения приложений
и настройке интерактивной оболоч- для управления DNS-сервером, рабо-
ки IPython. В третьей и четвертой гла- ты с протоколом LDAP и зеркалирова-
вах рассматриваются методы работы ния FTP-сервера.
Издание представляет собой своеоб- с текстом и генерации отчетов. Пятая
разный учебник по программирова- глава рассказывает о методах работы n
Издательство: «Символ-Плюс»
нию для системных администраторов. в Python с сетями. Шестая глава повес- n
Год издания: 2009
Для работы с изданием вам потребу- твует о работе с файлами и каталога- n
Количество страниц: 512
ется знакомство с предметной облас- ми. Седьмая глава посвящена прото- n
ISBN: 978-5-93286-149-3
тью и желательно умение программи- колу SNMP. В восьмой главе рассмат- n
Цена: ≈ 550 руб.
ровать на каком-либо еще из языков
написания скриптов, например bash. Обзор книжных новинок подготовил Андрей Маркелов

92
Изучаем Python, 3-е издание
Марк Лутц
жалению, к моменту выхода изда- Отдельная глава посвящена ООП
ния был доступен лишь альфа-релиз на Python, где автор рассказывает
Python 3.0, поэтому рассматривается про классы, шаблоны проектирова-
уже не самая актуальная версия – 2.5. ния с ними и некоторые дополнитель-
Впрочем, это не помешало автору уде- ные возможности.
лить должное внимание уже наступив- Завершающая часть посвящена
шему будущему Python. исключениям и их использованию.
Первая глава книги – лаконичный В конце каждой главы книги приво-
ликбез, помогающий читателю сфор- дится краткое резюме, а также список
мировать понимание языка Python вопросов для закрепления материала
и его предназначения. (с ответами).
Продолжение вводной части пос- В целом, издание наилучшим обра-
вящено таким темам, как интерпре- зом подойдет тем, кто решил освоить
татор, выполнение программ, работа Python с нуля, но может показаться из-
с Python из консоли. лишне подробным для более опытных
После этого начинается раздел программистов.
Русскоязычная версия очередного из- непосредственного программирова-
дания книги из классический серии ния: доступные в Python типы данных n
Издательство: «Символ-Плюс»
«Learning...» издательства O'Reilly – от- и работа с ними, основные инструк- n
Год издания: 2009
личное подспорье для изучения наби- ции, функции. n
Количество страниц: 848
рающего обороты языка программи- Не остался в стороне и такой важ- n
ISBN: 978-5-93286-138-7
рования Python. ный компонент, как модули: рассмот- n
Цена: ≈ 800 руб.
В ее основе трехдневные практи- рены их использование и создание, К н и г а п р е д о с т а в л е н а и з д ат е л ь с т в о м
ческие курсы автора этой книги. К со- а также пакеты модулей. «Символ-Плюс».

FreeBSD 6. Полное руководство


Брайан Таймэн
ных разработок, но с другой – мож- с ней основам программирования:
но найти и вполне логичное тому объ- на UNIX shell и на Perl.
яснение, учитывая исторические кор- Но основное содержимое книги
ни Mac OS X. отведено двум последующим частям:
Тем не менее это отложило опре- системному администрированию и ра-
деленный отпечаток на стиль изложе- боте с сетью. В них затрагиваются та-
ния и сам материал: текст зачастую кие темы, как файловая система UFS,
ориентирован на неопытных пользо- пользователи/группы, печать (lpd), кон-
вателей, которые впервые знакомят- фигурация ядра, обновление системы,
ся с миром FreeBSD. настройка сетевых служб, PPP, DHCP,
Главным же достоинством книги BIND, Sendmail, связка Apache + PHP +
является широкий охват тем: после Perl + MySQL/PostgreSQL, FTP-сервер,
введения, в котором, помимо прочего, Samba. К руководству прилагается
FreeBSD сравнивается с другими ОС, DVD, на котором можно найти дистри-
автор подробно описывает процесс ус- бутив FreeBSD 6.1 с коллекцией портов
тановки системы. и дополнительными пакетами ПО.
Автором этого подробного руководс- Следующий шаг – использование
тва, посвященного FreeBSD, является FreeBSD как системы для настольно- n
Издательство: «Вильямс»
человек, который, во-первых, явно не го ПК, подразумевающее как общие n
Год издания: 2008
равнодушен к этой операционной сис- аспекты работы с системой, так и зна- n
Количество страниц: 1056
теме, а во-вторых, известен своими ра- комство с базовыми приложениями n
ISBN: 978-5-8459-0741-7
ботами по продукции Apple: Mac OS X, (консольными и графическими). n
Цена: ≈ 705 руб.
iTunes, iPod... Затем читателя обучают работе К н и г а п р е д о с т а в л е н а и з д ат е л ь с т в о м
С одной стороны, довольно необыч- в командной оболочке и связанным «Вильямс».
но видеть серьезную книгу по адми-
нистрированию от любителя подоб- Обзор книжных новинок подготовил Дмитрий Шурупов

№4, апрель 2009 93


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

ɏ ɏ ɏ ɏ ɏ ɏ ɏ ɏ ɏ ɏ ɏ ɏ

 

ɏ ɏ ɏ ɏ ɏ ɏ ɏ ɏ ɏ ɏ ɏ ɏ
 

94
Российская Федерация печати «Гасид» (370102, г. Баку, ул. Джавадхана, 21)
n
Подписной индекс: годовой – 20780, полугодовой – 81655 n
Казахстан – по каталогу «Российская Пресса» через
Каталог агентства «Роспечать» ОАО «Казпочта» и ЗАО «Евразия пресс»
n Подписной индекс: годовой – 88099, полугодовой – 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 *
+ диск с архивом
статей 2008 года

81655
без диска
**

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

88099 *
+ диск с архивом
статей 2008 года

87836
без диска
**

по каталогу агентства
«Пресса России»
*
Годовой
**
Полугодовой
***
Диск вкладывается
в февральский
номер журнала,
распространяется
только на территории
России

№4, апрель 2009 95


СИСТЕМНЫЙ АДМИНИСТРАТОР
№4(77), Апрель, 2009 год

УЧРЕДИТЕЛИ
Частные лица

РЕДАКЦИЯ
Генеральный директор
Владимир Положевец
Ответственный секретарь
Наталья Хвостова
sekretar@samag.ru
Технический редактор
Владимир Лукин
Главный редактор
электронного приложения
«Open Source» Вы знаете, как бороться
Дмитрий Шурупов с «Просачивающейся А дварью»?
osa@samag.ru
Применяете «Чарующий скрипт»?
Внештатные редакторы
Алексей Барабанов Редакция журнала «Системный администратор» представляет
Александр Емельянов
Кирилл Сухов
вам новый админский сувенир для истинных знатоков своего дела –
Василий Гусев карточную игру «AYTCOPCEP».
Андрей Бирюков
Олег Щербаков
Александр Слесарев
В ходе игры участники тянут из колоды карты «Проблем», с которым
Сергей Супрунов им предстоит бороться один на один или с помощниками, используя
подручные средства. Успешное решение «Проблемы» добавляет игроку
РЕКЛАМНАЯ СЛУЖБА
тел./факс: (495) 628-8253 (доб. 120)
уровни. Если вы не считаете себя добрым и милым, то для вас в игре
Дарья Зуморина предусмотрена специальная возможность – сделать гадость другому
reсlama@samag.ru участнику и обойти его в погоне за уровнями.
Евгения Тарабрина
expo@samag.ru
Победителем становится тот, кто быстрее всех
Верстка и оформление доберется до 10 уровня. Остальные подробности об игре,
maker@samag.ru
Дизайн обложки
«Чарующем скрипте», «МегаУтилите» и «Клановом коктейле»
Дмитрий Репин вы сможете узнать из правил игры.
По вопросам распространения
обращайтесь по телефону:
«AYTCOPCEP» – это пародия на жизнь, которая позволит вам
Светлана Зобова ощутить всю прелесть аутсорсинга... но без всей словесной мишуры,
(495) 628-8253 (доб. 120) типа, «утром стулья, вечером деньги…»!
107045, г. Москва,
Ананьевский переулок, дом 4/2, стр. 1 Приобретайте игру «AYTCOPCEP» в редакции.
тел./факс: (495) 628-8253
Сайт журнала: www.samag.ru

ИЗДАТЕЛЬ
ООО «С 13»
Отпечатано типографией
ООО «Периодика»
Тираж 17000 экз.
Тираж электронной версии 62000 экз.

Журнал зарегистрирован в Министерстве РФ


по делам печати, телерадиовещания и средств
массовых коммуникаций (свидетельство ПИ
№ 77-12542 от 24 апреля 2002 г.).
За содержание статьи ответственность несет
автор. Мнение редакции может не совпадать
с мнением автора. За содержание рекламных
материалов ответственность несет рекламо-
датель. Все права на опубликованные мате-
риалы защищены.

96

Вам также может понравиться