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

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

№5(30) май 2005


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

СЬ
www.samag.ru

ЛИ
Почему MS SQL медленно работает?
Ищем причины
ЛИ
ТЯ Е

Ж ПИ
Строим защищенную беспроводную сеть:
ЗА ДНИ

WPA-Enterprise, 802.1x EAP-TLS


НУ

РА КУ
Настраиваем UPS под Linux
ЛЫ ГО

ТИ РАС
Как восстановить
удаленные файлы под BSD
К У ВО

Что важно знать об IP-телефонии

№4(41) апрель 2006

О
танавливаем Symantec Antivirus 9.0
НИ НО

ТР
в корпоративной сети
Эффективно управляем

С
подписной индекс 20780
полями пользователей в AD

БЫ
Контролируем безопасность сети
с помощью OSSIM
КА

Интервью с Ларри Уоллом –


создателем языка Perl
www.samag.ru

Соберите собственный

№4(41) апрель 2006


И
ЬГ
ЬД О
беспроводной роутер 802.11g
РА СКА
ТЕ
К

ИС НН
ЕН
УС

БО
НА ТПУ

ИЛ ДА
ТП

НЧ ЖИ
на ОС Linux
ВО

РА Е О

КО НЕО
АВ СЛ
Л

Л
ХА

ПО
УЕ

ЗА
Как устроена
файловая система reiser4
Так видит журнал читатель, оформивший подписку:
Три способа автоматизировать
№5(30) май 2005
подписной индекс 81655
www.samag.ru

Почему MS SQL медленно работает?


Ищем причины
установку ПО в сети
Строим защищенную беспроводную сеть:
WPA-Enterprise, 802.1x EAP-TLS
Настраиваем UPS под Linux

Управляем инсталляторами
Как восстановить
удаленные файлы под BSD
Что важно знать об IP-телефонии
танавливаем Symantec Antivirus 9.0
в корпоративной сети
Эффективно управляем
полями пользователей в AD
Контролируем безопасность сети

Используем OpenSSL
с помощью OSSIM
Интервью с Ларри Уоллом –
создателем языка Perl

для криптографической
защиты данных
Создаем VPN с помощью
SSL-Explorer
Техническая документация:
ПОДПИШИТЕСЬ И ЧИТАЙТЕ! серверы и сети
Профессиональный прогноз:
Роспечать – 20780, 81655 что ждет сисадминов?
Пресса России – 87836
Интер-почта – тел. (095) 500-00-60
оглавление

2 СОБЫТИЯ БЕЗОПАСНОСТЬ
3 ТЕНДЕНЦИИ 48 Используем средства библиотеки OpenSSL
для криптографической защиты данных
4 РЕПОРТАЖ Несколько практических примеров использования биб-
лиотеки OpenSSL для генерации псевдослучайных чи-
АДМИНИСТРИРОВАНИЕ сел, вычисления хэшей и шифрования данных с ис-
пользованием симметричных и ассиметричных алго-
6 Шесть дней одного года ритмов. Владимир Мешков
Хроника знакомства с CMS «Битрикс: управление сай- ubob@mail.ru
том». Роман Коновалов
info@bitrix.ru 56 Создаем VPN с помощью SSL-Explorer
Виртуальные частные сети в течение последних лет
8 Знакомимся с Gentoo стали очень популярными и среди технологий, на-
Часть 2: базовые настройки правленных на обеспечение безопасности, занима-
и работа с Portage ют третье место – после антивирусов и межсетевых
В вопросах установки Gentoo не сильно-то старается экранов. Именно им бизнес часто полностью доверя-
сделать всё за пользователя, вынуждая его осознанно ет свои секреты. Сергей Яремчук
принимать каждое решение. А как дела обстоят с на- grinder@ua.fm
стройкой и сопровождением системы? Здесь у Gentoo
тоже есть свои особенности. Сергей Супрунов СЕТИ
amsand@rambler.ru
65 Собираем беспроводной роутер 802.11g
16 Как устроена файловая система reiser4 на базе ОС Linux
Многим в ОС Linux нравится не только её открытость, С помощью обычной беспроводной PCI-карты и не очень
стабильность и прочие немаловажные характеристи- мощного компьютера с ОС Linux вы сможете сделать
ки, а, прежде всего, гибкость. В Linux, наверное, нет ни собственную точку доступа 802.11g, по функциональ-
одного компонента, которому нельзя было бы подоб- ности ни чем не уступающую, а кое-где даже и превос-
рать альтернативу. Не являются исключением и фай- ходящую оборудование известных производителей.
ловые системы. Андрей Пешеходов Михаил Платов
fresco_pap@mail.ru platov@cs.vsu.ru

26 Создаем порт для FreeBSD своими руками ДОКУМЕНТАЦИЯ


Часть 2: расширенные возможности
Система сборки программ, используемая во FreeBSD, 72 Техническая документация:
имеет значительно большие возможности, чем те, которые серверы и сети
мы задействовали. Какие это возможности и как их ис- Приходя на новое место работы, каждому системному
пользовать в своих портах? Рашид Ачилов администратору хочется получить пакет исчерпываю-
shelton@granch.ru щей технической документации. И первые по важнос-
ти в этом пакете документы об устройстве сети и сер-
34 Автоматизируем установку веров. Алексей Коршунов
программного обеспечения в сети akeeper@samag.ru
Развертывание программного обеспечения – неотъем-
лемая часть работы системного администратора. Есть IMHO
несколько способов автоматизировать этот процесс.
Андрей Бирюков 76 Перспективы профессии. Автопортрет
mex_inet@rambler.ru Кто такие системные администраторы, почему они этим
занимаются, что ждет их впереди? Попробуем разобрать-
38 Управляем инсталляторами ся в настоящем положении дел и сделать предположения
Сейчас используется несколько основных инсталлято- на ближайшее будущее. Алексей Барабанов
ров для установки программного обеспечения. Очень alekseybb@mail.ru
важным вопросом является автоматизация процесса
установки приложений. Иван Коробко РЕТРОСПЕКТИВА
ikorobko@prosv.ru
84 Надежда умирает последней:
история компании SGI
ЧЕЛОВЕК НОМЕРА Двадцать лет назад в компьютерной индустрии сущес-
твовали лишь две компании с трёхбуквенными назва-
44 Герой нашего времени, ниями, перед которыми благоговела общественность –
или Попытка развенчания мифов Sun и SGI. Что вам известно о последней?
Новое поколение российских предпринимателей уже ро- Дмитрий Мороз
дилось. Они уже занимают ключевые позиции. В том чис- akuji@list.ru
ле и на рынке электронных продуктов. Их не знают, о них
сочиняют мифы. Мифы, которые оказываются несостоя- 92 КНИЖНАЯ ПОЛКА
тельными под натиском фактов. Оксана Родионова
rodion@dol.ru 75, 83 BUGTRAQ

СПЕШИТЕ ОФОРМИТЬ ПОДПИСКУ НА II ПОЛУГОДИЕ 2006 ГОДА!


№4, апрель 2006 1
события
Центральной темой мероприятий Лидеры мирового движения
ИНФОФОРУМА станет «Информационная Open Source примут участие в работе
безопасность и национальная экономика» Второго форума по открытому коду
 Когда: 14-16 июня  Когда: 21-23 июня
 Где: г. Москва, Центр Международной Торговли  Где: г. Москва, МВЦ «Крокус Экспо» (Павильон 2,
(Краснопресненская наб., 12) зал 7)
 Подробности: www.infoforum.ru  Подробности: www.interop.ru

В рамках летнего «ИНФОФОРУМА» будут проведены: Второй форум по открытому коду (II Open Sourсe Forum
 2-я Московская международная выставка-форум «Ин- Russia) в этом году пройдет в рамках международной IT-вы-
формационная безопасность региона, организаций, ставки – INTEROP Moscow 2006. Лидеры мирового движения
граждан» (InfoforumCity-2006). Open Source приедут в Москву, чтобы принять участие в рабо-
 1-я Московская международная выставка-форум «Ин- те форума и обсудить наиболее актуальные проблемы, свя-
теллектуальные решения для экономической безопас- занные с разработкой платформ на основе открытого кода.
ности» (Biforum-2006). Форум откроет г-н Йон «мэддог» Холл (Jon maddog Hall),
 Практические семинары, организуемые генеральными один из основателей движения сторонников открыто-
спонсорами – Microsoft, IBM, Nortel, Sun Microsystems. го кода. Г-н Холл является исполнительным директором
Linux International, автором известнейшей книги «Linux
Центральная тема июньских мероприятий ИНФОФО- for Dummies» и многочисленных статей, посвященных спе-
РУМА – «Информационная безопасность и национальная цифике открытого кода. Он принимал участие в Первом фо-
экономика». руме по открытому коду в 2005 году, успех которого убедил
Состоятся заседания: его в том, что интерес к программному обеспечению на ос-
 Концепции и системы обеспечения информационной нове открытого кода в России достаточно высок.
безопасности современного города (региона). Одним из ключевых докладчиков в рамках INTEROP
 Центры обработки данных: безопасные решения CONGRESS станет Брюс Перенс (Bruce Perens), член со-
для территориально распределенных структур. вета директоров Open Source Risk Management, соучреди-
 Комплексные решения в области обеспечения инфор- тель и директор организации разработчиков Open Source –
мационной безопасности на транспорте. Software in the Public Interest. Именно благодаря ему во всем
 Интеллектуальные технологии и аналитические ре- мире используется термин «Open Source».
шения для управления комплексной безопасностью На форуме выступят такие известные в Open Source со-
на предприятиях ТЭК. обществе люди, как Андрю Мортон (Andrew Morton), один
 Вопросы применение информационных технологий из главных разработчиков ядра открытой операционной
для обеспечения безопасности и содействия торговле. системы Linux, в настоящий момент координирующий раз-
 Вопросы стандартизации в сфере обеспечения инфор- работки ядер ветви 2.6.х. в лаборатории открытого кода
мационной безопасности банковской деятельности. OSDL; Ян Мэрдок (Ian Murdock), исполнительный директор
 Вопросы экономической и информационной безопас- компании Progeny и один из создателей проекта Debian
ности в деятельности бюро кредитных историй. GNU/Linux; Аза Доцлер (Asa Dotzler), ведущий разработчик
 Современные технологии интеллектуального анализа браузера Mozilla Firefox и координатор сообщества Mozilla
данных (Business Intelligence) для управления безопас- Foundation; Зив Сураски (Zeev Suraski), один из разработ-
ностью предприятий и организаций. чиков наиболее популярных языков программирования –
PHP 3.0, PHP 4.0 и PHP 5.0, на основе созданной им Zend
15 июня состоится заседание в здании Государственной Engine и Zend Engine II, а также автор ряда книг по методам
Думы РФ по проблемам законодательного регулирования программирования в PHP; Робин Миллер (Robin Miller), один
в сфере информационной безопасности. из основателей современной интерактивной журналистики,
 Организаторы ИНФОФОРУМА: сейчас работающий главным редактором сети OSTG, кото-
 Комитет Государственной Думы РФ по безопасности; рая составляет основу движения Open Source; Бьёрн Фри-
 Росинформтехнологии; мен-Бенсон (Bjorn Freeman-Benson), технический директор,
 Правительство Москвы; работал с проектами OTI, Amazon.com, Rational, Gemstone.
 Некоммерческое партнерство «ИНФОФОРУМ» при под- Также доклад на тему Open Source Security Lessons пред-
держке аппарата Совета безопасности РФ, ФСБ России, ставит Вице Венема (Wietse Venema), всемирно известный
МВД России, ФСТЭК России, Банка России, АРБ, ТПП создатель TCP Wrapper и почтовой системы POSTFIX, со-
РФ и других федеральных организаций. автор сетевого сканера SATAN, входящий в тройку самых
компетентных экспертов в области IT-безопасности.
Посещение выставки и конференции – по свободно Свой взгляд на перспективы и эффективность использо-
распространяемым приглашениям. Получить информа- вания программного обеспечения на основе открытого кода
цию и заказать приглашения вы можете через Оргкоми- в научных исследования и, в частности, – в области нанотех-
тет – www.infoforum.ru, тел.: 510-71-19, 510-71-99, тел./факс: нологий представит Кристина Петерсон (Christine L. Peterson),
191-99-22, 195-16-78. основатель и вице-президент Foresight Nanotech Institute.

2
тенденции
Kerio создает дистрибьюторскую сеть ми. Теперь в MySQL AB занялись работой над собствен-
в России ным движком. Кроме того, Мартен Микос, исполнитель-
22 марта в Москве прошла совместная пресс-конферен- ный директор MySQL AB, сообщил, что по контракту, за-
ция компаний Kerio Technologies Inc и Softkey с целью ключенному между Innobase и Oracle, последняя обязует-
представить новую стратегию работы компании Kerio ся обновлять движок для хранения InnoDB на тех же усло-
Technologies на российском рынке. виях, что были и до приобретения. «В Oracle не хотят затор-
Необходимость обратить более пристальное внимание мозить наше развитие, и они будут исправлять ошибки, –
на российский рынок была вызвана несколькими причи- заверил он. – Очень здорово, когда у тебя Oracle выступа-
нами. Во-первых, продукты компании активно использу- ет в роли субподрядчика».
ются в России, во-вторых, рынок Центральной и Восточ-
ной Европы активно развивается и является одним из са- Sendmail Inc. может открыть код
мых быстрорастущих рынков ПО в мире. На данный мо- некоторых продуктов
мент в компании считают приоритетной задачей создание Компания Sendmail, продукты которой основаны на свобод-
надежной дистрибьюторской сети. В рамках новой страте- ном программном обеспечении, может открыть код своих
гии развития эксклюзивным дистрибьютором продукции некоторых разработок. Проприетарное ПО, распространя-
Kerio Technologies в России стала компания Softkey. Так- емое компанией, работает с популярным открытым почто-
же представителям прессы были представлены два основ- вым агентом (MTA) Sendmail. Как сообщил Эрик Оллман,
ных программных продукта, рассчитанных на российский главный научный сотрудник компании и автор Sendmail,
рынок – это широко известный прокси-сервер WinRoute исходный код этого ПО может быть открыт. По его словам,
и сервер почтовых сообщений Kerio mailServer. Оба про- открытие кода стоит ожидать уже в нынешнем году, и этот
дукта рассчитаны на использование в организациях сег- процесс может затянуться. Одним из кандидатов на ста-
мента среднего и малого бизнеса (SMB). Данное програм- новление открытым является Mailcenter Store. Среди при-
мное обеспечение создавалось в качестве альтернативы чин для открытия кода программного обеспечения Оллман
продуктам от Microsoft. И если Kerio WinRoute уже заслу- обозначил перспективы увеличения популярности про-
жил репутацию надежного, легко конфигурируемого про- дуктов Sendmail и их более широкое распространение, по-
дукта, то Kerio MailSerrver 6 – это относительно новый про- мощь со стороны, т.е. от людей, которые, увидев исходный
дукт, являющийся полноценной заменой MS Exchange для код, будут находить ошибки и рассказывать о новых идеях
небольших организаций. Этот почтовый сервер поддержи- для улучшения продуктов.
вает SSL-зашифрованные протоколы (IMAP, SMTP, HTTP,
POP3), поддерживает проверку почты одновременно двумя Составил Дмитрий Шурупов
разными антивирусными системами (список антивирусных по материалам www.nixp.ru
программ не очень большой, и российские Dr.Web, и анти-
вирус Касперского в него не попали). Также почтовый сер-
вер имеет два веб-интерфейса – расширенный и mini (для
PDA, мобильных телефонов и медленных интернет-соеди-
нений). Для обеспечения потребностей коллективной ра-
боты сервер включает возможности общего доступа к пап-
кам, задачам и контактам посредством почтового клиен-
та. Почтовый сервер разработан для операционных систем
Windows, Linux и Mac OS X.
Николай Никульшин

Вышла DesktopBSD 1.0


Конец марта ознаменовался первым окончательным ре-
лизом от проекта, задавшегося целью создать простую
в использовании ОС для десктопов на основе FreeBSD.
DesktopBSD 1.0 базируется на релизе FreeBSD 5.5-
PRERELEASE с графической оболочкой KDE 3.5.1 и прос-
тым пакетным менеджером. Среди поддерживаемых сис-
темой языков представлен и русский. DesktopBSD 1.0 выхо-
дит в двух редакциях: на CD и DVD, – которые отличаются
входящим в состав ОС программного обеспечения.

В MySQL готовят замену InnoDB


Несмотря на прошлогоднее приобретение разработчиков
InnoDB корпорацией Oracle, волноваться за MySQL не стоит,
утверждают в компании. InnoDB, один из движков для хра-
нения, используемый в СУБД MySQL, как и альтернатив-
ные ему решения, создавался сторонними разработчика-

№4, апрель 2006 3


репортаж

Впечатления от Oracle Apps Forum 2006


23-24 марта в Москве состоялся уже пятый по счету ежегодный многоотраслевой форум
для руководителей ведущих предприятий России и СНГ. Следуя устоявшейся традиции,
мероприятие прошло в Рэдиссон САС Славянская.

В
этом году форум проходил под системы для Федерального казначейс- нирование цепочек поставок в логис-
лозунгом «Российский ERP-про- тва РФ. Проектов подобного масшта- тических компаниях. Точки эффектив-
рыв», который и обусловил темы ба очень и очень немного. ности», Мария Акчурина – «Oracle JD
основной массы докладов. Тема, не- Во второй половине дня я отпра- Edwards EnterpriseOne для автомати-
сомненно, интересная, а самое глав- вился в конференц-зал, в котором про- зации оптово-торговых холдингов: ре-
ное – актуальная. Эту мысль очень шли два выступления – «Рост стоимос- альный опыт внедрения», Вадим Горбу-
удачно изложил Борис Щербаков (вице- ти компании за счет внедрения ERP- нов – «Бизнес аспекты проектов ERP».
президент Oracle): «Сегодня мы явля- систем» и «Качественные изменения После каждого из выступлений до-
емся свидетелями коренного перелома в управлении компании при внедрении кладчики с энтузиазмом отвечали на
в отношении к ERP-системам на рос- ERP». Опять же информации для пос- вопросы слушателей.
сийском рынке. Информационные тех- ледующего обдумывания и осмысле- После обеда и небольшого пере-
нологии управления перестали быть ния было получено предостаточно. рыва на очереди были завершающие
экзотикой и превратились в необхо- А в это время в кулуарах не утихали форум секции. Для меня наиболее ин-
димое условие для успешной работы дискуссии, да и просто общение среди тересной оказалась «Решение Oracle
в конкурентной среде». гостей форума. для растущего бизнеса». Секция бы-
Торжественное открытие мероп- В последнем «блоке» первого дня ла представлена тремя докладчиками:
риятия проходило в конференц-зале. были представлены следующие до- Елена Благидзе – «Oracle JD Edwards
Тут всех ждал сюрприз. По программе кладчики: Константин Попов с темой Fast Start – первый шаг к высоким ре-
форума первым выступлением долж- «Эволюция ERP-проектов – секреты зультатам», Сергей Ливицкий – «Прак-
на была быть приветственная речь Бо- успешных внедрений», Алексей Ма- тика эффективного управления произ-
риса Шербакова, однако вместо этого рейко – «Разработка Мастер Системы водством» и Мария Акчурина – «Интег-
(вернее сказать, перед этим) свет в за- в программе «Внедрение ERP в группе рация приложений Oracle с целью пос-
ле медленно погас, и на сцену под ди- компаний Связьинвест»», Андрей Бон- троения единого информационного
намичную музыку вышла группа тан- дарь – «Организация проекта по опти- пространства для растущего бизнеса».
цовщиц, и, что называется, действие мизации процесса подготовки финан- Небольшая численность аудитории
началось. Налицо было явное несоот- совой отчетности» и Виктор Чумаков в этой секции способствовала более
ветствие времени, места и действую- с докладом «Аудит процесса внедре- неформальной манере выступлений,
щих лиц, так как весь зал на десять ми- ния ERP как средство эффективного что в конечном итоге пошло на пользу
нут буквально перенесся не то на ка- управления проектом». На этом про- как докладчикам, так и слушателям.
кую-то сумасшедшую рейв-дискотеку, граммы выступлений первого дня бы- На этом завершилась официальная
не то на показ мод. Вот такое веселое ли исчерпаны. Гостей и делегатов фо- часть Oracle Apps Forum 2006.
и неоднозначное начало. рума ожидал гала-ужин. В фойе состоялся небольшой
После всех вступительных речей Программа второго дня была не ме- фуршет для всех желающих. Вот тут,
и выступлений начинались непос- нее насыщена по сравнению с первым. в действительно раскрепощенной
редственно доклады в профильных Так же, как и в предыдущий день, пер- обстановке, c бокалом шампанско-
секциях. вые выступления прошли в конференц- го и проходили основные дискуссии.
Программа первого дня была ус- зале и были «общими». Сложно выде- Было приятно пообщаться со многими
ловно поделена на три части. Для ме- лить какие-либо доклады, разве что людьми, и в том числе завести новые
ня наибольший интерес представляли выступление Ольги Усановой, в кото- знакомства. Сложно подвести какой-
выступления, посвященные ERP-сис- ром она рассказала о процессе внед- то однозначный итог, но одно можно-
теме Oracle JD Edwards EnterpriseOne, рения ERP-системы в телекомпании утверждать смело, мероприятие уда-
в частности, доклады об успешном НТВ. Далее кофе-брейк, и снова раз- лось на все сто процентов. Высокий
внедрении этой системы. Собственно, деление на профильные секции. уровень организации и профессиона-
это и обусловило выбор отраслевых Я выбрал зал «Чехов», в котором лизм докладчиков, не позволил заску-
секций, на которых я присутствовал. проходили выступления по теме «Дис- чать даже сугубо техническим специа-
В первой половине дня среди про- трибуция и логистика». Всего было че- листам, относительно далеким от об-
чих очень запомнился доклад Дени- тыре доклада. Константин Невядомс- ластей управления, консалтинга и про-
са Смирнова, в котором он рассказал кий – «Создание эффективной логис- чих профильных тем.
о проекте создания и внедрения ав- тической модели в дистрибьюторской
томатизированной информационной компании», Алексей Солнцев – «Пла- Александр Байрак

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

Шесть дней одного года


Xроника знакомства с CMS
«Битрикс: управление сайтом»

Роман Коновалов
День первый ботает корпоративный сайт, для сво- обязанности между сотрудниками, до-
Наконец-то одержал первую побе- ей доработки потребует массу време- пущенными к управлению нашим сай-
ду над начальством – убедил купить ни и денег. Ура, начальство сдалось. том. Кажется, понемногу успокоились –
вменяемую CMS. Долго объяснял ше- Первый раз в жизни с радостью наби- поняли, что к чему. А мне предстоит ди-
фу текущую ситуацию, и таки втолко- раю текст гарантийного письма раз- зайном заняться…
вал, что админ на то и админ, чтобы за- работчикам…
ниматься поддержкой железа и други- День третий
ми «хитрыми» делами, но кропать еже- День второй Базовая поставка «Битрикс: Управле-
дневные новости для корпоративного Собираю менеджеров и зачитываю ние сайтом» включает несколько ди-
сайта и переводить западные пресс- приказ начальства о «возложении до- зайнерских заготовок (раздел «На-
релизы (мы занимаемся продажей бы- полнительных обязанностей» на без- стройки системы → Шаблоны сай-
товой техники) – увольте, мне хватает дельников. Бунт пресекаю в зароды- та», см. рис. 2), которые меня нико-
«бюрократии» при общении с бухгал- ше, кратко объясняя механизм рабо- им образом меня не устраивали. Что
терией, где в очередной раз «слома- ты в «Битрикс: Управление сайтом» – же, нам не привыкать, посмотрим, что
лась» вездесущая 1С. не верят. Запускаю стартовую страни- предлагают разработчики. Замеча-
Отчасти подействовал довод об эф- цу CMS, перехожу в раздел «Инфор- тельно! – посредством ссылки «Из-
фективности сокращения ставки мое- мационные блоки» и предлагаю сом- менить» HTML-код шаблона заменя-
го помощника из числа вечных студен- невающимся опробовать новый дви- ется необходимым, и после доработ-
тов, и если снять с моих плеч бессмыс- жок. Особо «продвинутый» менеджер, ки шаблона старый дизайн идеально
ленную «бумажную» нагрузку, то с ос- в свое время предлагавший свои услу- вписывается в структуру обновлен-
тальными заботами админ справится ги в качестве HTML-кодера (дескать, ного сайта.
без чужой помощи. При таком разгово- владею Front Page) начал демагогию Наше мудрое руководство, побро-
ре было грех не указать на фактичес- о тонкостях владения HTML, но через див по сайту разработчиков, решило
кую бездеятельность многочисленно- пару минут успокоился: при создании проявить свои дизайнерские «талан-
го племени менеджеров, которым мож- новых страниц или новостных блоков ты»: как оказалось, девелоперы пред-
но и нужно поручить «бумаготворчес- можно использовать встроенный ви- лагают готовые решения общим чис-
тво», ибо CMS «Битрикс: Управление зуальный редактор, чрезвычайно по- лом несколько тысяч, причем, все это
сайтом» (www.bitrixsoft.ru) позволяет хожий на MS Word. собрано в тематические группы («Ин-
назначить права для публикации но- Слава Богу, с Windows-системным дустриальные», «Армейские», «Книги»
востей и пресс-релизов, причем, тех- «Рабочим столом» менеджеры знако- и т. д.). В ответ на несколько предло-
ническая сторона вопроса не сложнее мы, стало быть, и при использовании жений о замене существующего дизай-
работы в MS Word. «Битрикс: Управление сайтом» получи- на отправляю начальство к партнерам
Окончательно «добиваю» шефа те в свое распоряжение аналогичный компании «Битрикс» – на заказ изгото-
тем, что конкурирующая компания уже инструмент (см. рис. 1). Но вольницы я вят именно то, что душа пожелает, бы-
месяц назад перевела свой веб-ресурс не допущу – для исключения неразбе- ли бы деньги (www.bitrixtemplates.ru).
под чуткое «руководство» Битрикса рихи при работе с сайтом в этой CMS
(системный администратор конкурен- предусмотрено выборочное назначе- День четвертый
тов – мой старый приятель), а мой «са- ние прав доступа к тем или иным мо- Дизайн – дело хорошее, но оптимиза-
мопальный» движок, на котором ра- дулям, посему придется распределить ция сервера для меня важнее, тем бо-

6
на правах рекламы
лее, что никто не отменял аксиому: бу-
дучи загруженным с PHP и другими мо-
дулями, веб-сервер занимает значи-
тельный объем памяти, как разделя-
емой, так и для отдельного процесса.
Стало быть, придется заняться опти-
мизацией, и, если быть точным, умень-
шением размера не только потребляе-
мой памяти, но и числа процессов, од-
новременно необходимых для работы
веб-сервера, а также числа перезапус-
ков процессов (разумеется, потребует-
ся снизить время жизни процессов).
Итак, при работе с «Битрикс: Уп-
равление сайтом» мы имеем большое
число всевозможных модулей, а зна-
чит, желательно исключить из компи-
ляции и процесса загрузки веб-серве-
ра все неиспользуемые модули. В ито-
ге уменьшится размер памяти, не толь-
ко потребляемой веб-сервером при за-
пуске, но и применительно к отдельно-
му процессу (безусловно, PHP должен
работать с веб-сервером как модуль Рисунок 1. Практически все менеджеры знакомы с системным «Рабочим столом».
При использовании «Битрикс: Управление сайтом» эти труженики получат в свое
(mod_php4) и загружаться веб-серве- распоряжение аналогичный инструмент
ром при запуске).

День пятый
Одной из важнейших задач, кото-
рую придется решить, является ми-
нимизация числа запросов, обраба-
тываемых веб-сервером. Наилуч-
шим решением в моем случае ста-
ло создание двухуровневой системы
Front-end+Back-end для обработки за-
просов. Все запросы к веб-серверу
и ко всем его страницам принимают-
ся специальным проксирующим про-
цессом (Front-end), самостоятельно
обрабатывающим все запросы, благо,
с прокси-серверами дефицита нет.
Что касается запросов к контент-
ным страницам, то они будут не кэши-
роваться, а перенаправляться к Back-
end части системы, представляющей
собой обычный веб-сервер Apache,
работающий на нестандартном порту
(например, 88), и отвечающий толь-
ко на запросы с localhost или IP-ад-
реса прокси-сервера. Небольшой со- Рисунок 2. HTML-код шаблона без труда заменяется на необходимый, понадобится
вет: лучше использовать несколько лишь небольшая доработка
внутренних IP адресов типа 127.0.0.2,
127.0.0.3 и т. д. с 80-м портом, иначе минавшийся «продвинутый» любитель веб-проекта. Шеф, узнав о таком сер-
возможны нежелательные редиректы визуальных редакторов вычитал в ма- висе, тут же направил меня в помощь
на неработающий порт у Front-end. нуале, что, работая с «Битрикс: Управ- «манагерам» – дескать, доведи до ума
ление сайтом», маркетологи компании техническую сторону вопроса. Доведу,
День шестой смогут качественно планировать рек- куда я денусь. Зато потом – заслужен-
Все заработало. Казалось бы, теперь ламные акции для привлечения целе- ный отдых…
можно вздохнуть спокойно, ан нет: упо- вых посетителей на страницы своего

№4, апрель 2006 7


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

Знакомимся с Gentoo
Часть II: базовые настройки и работа с Portage

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

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


принимать каждое решение. А как дела обстоят с настройкой и сопровождением системы?
И здесь у Gentoo есть свои особенности.

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

В
первой части статьи мы занимались вопросами уста-
новки Gentoo. Задача нетривиальная, но весьма ин- Не забудьте подправить fstab
тересная. Продолжим знакомство с этим дистрибу- В прошлый раз мы рассмотрели инсталляцию Gentoo. Обрати-
тивом, сегодня на повестке дня вопросы настройки Gentoo те внимание на ещё один важный для успешной перезагрузки
и основы работы с системой Portage. момент – необходимо привести в соответствие с вашими дис-
ковыми разделами файл /etc/fstab, поскольку в базовой систе-
В какое время мы живём? ме он представляет собой просто шаблон. Для того чтобы сис-
Вопрос, скорее, философский, но если его сузить до вопро- тема нормально перезагрузилась, в нём нужно исправить вклю-
са выбора часового пояса, то делается это традиционно: чения «BOOT», «ROOT», «SWAP» на обозначение реальных раз-
делов (строки для файловых систем, которые вы не создавали
# cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime
отдельно, нужно закомментировать или удалить). Впрочем, по-
пытка перезагрузиться без нужных исправлений сразу же ука-
В некоторых руководствах можно встретить рекомен- жет вам на проблему.
дацию вместо копирования создавать символьную ссыл-
ку. Если у вас каталог /usr расположен на корневом разде- Для именования ссылок принимается специальный
ле, то можно поступить и так. Если же /usr вынесен на от- формат:
дельный раздел, то лучше явно скопировать информа-
цию о зоне, чтобы система корректно работала и в слу- <действие><порядок><имя>
чае, когда будет смонтирована только корневая файло-
вая система. где:
 <действие> – буква, указывающая, должен ли данный
А как всё это загружается? сервис запускаться (S) или прекращать работу (K);
Теперь рассмотрим сценарии инициализации системы.  <порядок> – две цифры (от 00 до 99), определяющие
В принципе всё достаточно традиционно для Linux (на то он порядок, в котором будут отрабатываться соответству-
и Linux), то есть управление запуском выполняется на уров- ющие сценарии;
не абстракции, именуемой runlevel. Наиболее часто это пе-  <имя> – краткое наименование сервиса.
реводят как «уровни исполнения», будем и мы придержи-
ваться этого термина. Например, ссылка S15cron в каталоге rc2.d означает,
Если говорить упрощённо, то уровень исполнения оп- что при переходе на runlevel 2 должен запускаться (бук-
ределяет набор сервисов, которые должны быть запуще- ва «S») сервис cron.
ны или остановлены при переходе на тот или иной уровень. В Gentoo всё реализовано несколько иначе. Каталог
Управление сервисами выполняется с помощью сценари- /etc/init.d также присутствует и для тех же целей. Но вот за-
ев инициализации. пуск сценариев и их формат заметно отличаются.
В большинстве дистрибутивов Linux принята следующая Во-первых, каталоги уровней запуска размещаются
схема: в каталоге /etc/init.d размещаются сценарии управ- в /etc/runlevels и имеют более «функциональные» имена:
ления различными службами, а в каталогах rcN.d, где N – boot, default, single, nonetwork. Причём эти имена связаны
номер уровня runlevel, создаются символьные ссылки на со- с конкретным уровнем исполнения лишь в файле /etc/inittab,
ответствующие сценарии. так что вы, при желании, можете переопределить их име-
Конкретное местоположение каталогов rcN.d зависит от на, создать свои уровни и т. д. Единственный каталог, ко-
дистрибутива. Мне встречались следующие размещения: торый не рекомендуется переименовывать – это boot, от-
 /etc/rcN.d (Ubuntu, Knoppix); вечающий за запуск программ на этапе первоначальной
 /etc/init.d/rcN.d (OpenSUSE); загрузки системы.
 /etc/rc.d/rcN.d (уже не помню, где). Во-вторых, отличается формат самих сценариев иници-

Freetoo или GeBSD? это то, чего так не хватает миру Open Source. во FreeBSD не надо!». Как бы то ни было,
Время от времени на страницах различ- Возможно, Gentoo/FreeBSD будет хоро- сейчас проект находится, скорее, в зача-
ных сайтов проскакивают новости об од- шим выбором для администраторов, кото- точном состоянии. Что из этого получит-
ном интересном проекте – Gentoo/FreeBSD. рым по тем или иным причинам необходи- ся – время покажет.
Смысл его – построение системы на осно- мы обе системы, поскольку позволяет уни- Дополнительную информацию мож-
ве Gentoo (инструментарий GNU, система фицировать работу с дополнительным про- но получить на странице проекта: http://
Portage и т. д.), но на ядре FreeBSD. граммным обеспечением. www.gentoo.org/proj/en/gentoo-alt/bsd/fbsd,
В качестве основной причины, побудив- С другой стороны, очень сомнитель- а также по адресу http://en.wikipedia.org/
шей создать столь странный проект, назы- но, что найдётся много желающих серьёз- wiki/Gentoo/FreeBSD.
вается желание распространить Portage но работать с подобной системой. Поль- Справедливости ради замечу, что та-
на другие операционные системы и тем зователи Gentoo и так довольны, а мне- кая же участь постигла и другие BSD-сис-
самым влить в неё «новую кровь» и уско- ние большинства «обладателей» FreeBSD, темы. С другой стороны, подобный «не-
рить её развитие. думаю, хорошо отражает комментарий, здоровый» интерес к FreeBSD проявляет
Безусловно, идея заслуживает внима- который я прочёл на одном из форумов: и Debian (см. http://www.debian.org/ports/
ния. Хотя бы в том плане, что единство – «Я не знаю, что такое Portage, но оно нам kfreebsd-gnu).

№4, апрель 2006 9


администрирование
ализации. Если вы уже заглянули в один из указанных вы- Её синтаксис следующий:
ше каталогов, то заметили, что ссылки здесь называются
просто по имени сервиса. rc-update <действие> [<программа>] <уровень>
А как же тогда управлять порядком их исполнения?
Для этого существует механизм расчёта порядка запуска где:
на основании зависимостей.  <действие> – что нужно сделать (добавить – add, уда-
Если вы просмотрите какой-нибудь из init-сценариев, лить – del, просмотреть – show);
то заметите, что в нём определён ряд подпрограмм. Обя-  <программа> – имя программы (например, vixie-cron);
зательной является подпрограмма start(), отвечающая  <уровень> – имя каталога соответствующего уровня
за запуск сервиса. Зачастую определены также stop(), исполнения (обычно default).
checkconfig() и т. д. Названия говорят сами за себя. Упо-
мянутые выше зависимости определяются в подпрограм- Работа программы заключается в размещении (или уда-
ме depend(). лении) символьной ссылки на сценарий инициализации в ка-
Так вот, в depend() перечисляются службы, от которых талоге соответствующего уровня исполнения. Кроме того,
зависит данный сервис. Выделяют два типа зависимос- при её запуске рассчитывается кэш зависимостей (по умол-
тей – need (обязательная) и use (дополнительная). Програм- чанию соответствующие файлы расположены в /var/lib/init.d/,
ма просто не запустится, если не будет запущена служба, что определяется переменной svcdir в /etc/conf.d/rc), кото-
указанная в строке need. В случае use-зависимости про- рый и используется при загрузке системы.
грамма может работать и без соответствующих сервисов,
но если они в системе присутствуют, то должны быть за- Что бы тут ещё поменять?
пущены первыми. Некоторые глобальные настройки (например, редактор
Если между сервисами нет отношения зависимос- по умолчанию и DISPLAYMANAGER) можно установить
ти, но требуется явно указать порядок их запуска, можно в файле /etc/rc.conf. Он, конечно, играет в системе не та-
в depend() использовать строки before и after. кую решающую роль, как во FreeBSD, но забывать о нём
А что делать, если программа нуждается не в конкрет- не нужно.
ной программе, а просто в сервисе, который может предо- Каталог /etc/env.d служит для установки значений раз-
ставляться одной из нескольких программ? Например, не- личных переменных окружения. Для этого используется не-
которые приложения будут зависеть от службы журнали- сколько файлов, которые обрабатываются в лексикографи-
рования системной информации (syslog), однако реализо- ческом порядке. Если одна и та же переменная задаётся
вана она может быть несколькими программами на выбор в нескольких файлах, силу будет иметь то значение, кото-
администратора. рое будет присвоено последним. Также нужно упомянуть
В Gentoo данная проблема решается с помощью так следующую команду:
называемых виртуальных сервисов, которые описыва-
ются в depend() в строке provide. Например, как syslog-ng, # env-update
так и sysklogd при установке зарегистрируют себя как сер-
вис logger, и тогда для других зависимых приложений до- Она обрабатывает файлы каталога env.d и создаёт ре-
статочно будет указать «need logger». В качестве примера зультирующий файл /etc/profile.env, который затем исполь-
рассмотрим фрагмент файла /etc/init.d/vixie-cron: зуется сценарием /etc/profile (только не поддавайтесь соб-
лазну изменять переменные окружения непосредствен-
depend() { но в нём).
use clock logger
need localmount Файл /etc/profile управляет настройками среды окруже-
provide cron ния. Помимо обработки упомянутого ранее файла profile.env,
}
здесь устанавливаются: переменная PATH, значение umask,
Здесь вы видите, что этот сервис регистрирует себя приглашение командной строки (PS1), редактор по умол-
в качестве виртуального сервиса «cron», обязательно тре- чанию (переменная EDITOR), которая берётся из файла
бует, чтобы были смонтированы локальные файловые сис- /etc/rc.conf, но в принципе ничто не мешает задать её не-
темы(?) и хотел бы, чтобы сервис clock и виртуальный сер- посредственно в profile.
вис logger были запущены до него (если они вообще есть Основные же настройки сосредоточены в каталоге
в системе). /etc/conf.d. Здесь вы найдёте конфигурационные файлы
На основании сведений, содержащихся в depend(), и рас- для задания системного времени (clock) – не забудьте ука-
считывается порядок запуска сервисов. Кстати, установив зать здесь «local» вместо «UTC», имени хоста (hostname),
переменную RC_PARALLEL_STARTUP в файле /etc/conf.d/rc настройки sshd, сети (файл net) и т. д. Ещё один достаточ-
в значение «yes», можно позволить системе параллельно но важный для системы файл, размещающийся в этом ка-
запускать сценарии инициализации, не зависящие друг талоге – rc. Здесь описаны переменные, влияющие на ини-
от друга (на том же принципе основана работа initng). циализацию.
Для управления сервисами служит утилита rc-update. Также нужно упомянуть про каталог /etc/modules.autoload.d.
Мы уже сталкивались с ней в первой части статьи, ког- Здесь, в файле, соответствующем вашему ядру, вы може-
да регистрировали в системе нужные нам утилиты vixie-cron те явно указать загрузку нужных для работы системы мо-
и syslog-ng. дулей, например, драйверов сетевых карт.

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

Нет предела совершенству (например, «euse -i sdl»), удалять  revdep-rebuild: полезная программа
Безусловно, утилита emerge позволяет де- и устанавливать флаги по умолча- для «ремонта» пакетов, например, пос-
лать очень много. Но «чтобы было ещё ве- нию и т. д. ле глобального обновления. Ищет дво-
селее», поставьте пакет gentoolkit.  equery: мощная утилита для получе- ичные файлы, «потерявшие» нужные
Он содержит несколько полезных ути- ния информации по установленным па- для работы библиотеки и зависимые па-
лит, делающих работу с Portage ещё бо- кетам. В частности, можно просматри- кеты и доустанавливает недостающее.
лее приятной: вать список установленных программ
 euse: разработана для работы (equery list), определять принадлеж- Подробности использования каждая из
с USE-флагами. С её помощью мож- ность файла к пакету или список фай- этих программ выведет вам сама, будучи
но просматривать описание флагов лов, входящих в пакет, и т. д. запущенной без параметров.

Также загляните в каталог /etc/modules.d, где разме- или поздно (а если говорить о Gentoo, то буквально с пер-
щается ещё несколько конфигурационных файлов, каса- вых минут работы) вам понадобится установить ту или
ющихся модулей ядра. иную программу.
В Gentoo для этих целей реализована близкая по ду-
Чуть подробнее о сети ху к коллекции портов FreeBSD система Portage. В пер-
Поскольку возможность работать в сети в наши дни вполне вой части статьи уже приводились примеры её использо-
можно считать жизненно необходимой, то подробнее оста- вания, когда устанавливались исходные коды ядра, утили-
новимся на сетевых настройках. та vixie-cron и т. д. Настало время обсудить возможности
Как уже упоминалось, настройки сети можно най- Portage более подробно.
ти в файле /etc/conf.d/net. Это несколько отличается Основное отличие Portage от портов BSD заключается
от общепринятого способа. Например, в SUSE сцена- в том, что в Gentoo не стали ограничиваться управлением
рий init.d/network, запускаясь на соответствующем уров- только сторонними программами – с помощью Portage вы
не, ищет параметры конфигурации в файлах каталога можете собирать/обновлять и базовые компоненты. Кро-
/etc/sysconfig/network. Здесь же все настройки сосредото- ме того, разработчики Portage решили управлять сборкой
чены в одном файле – net. Скорее всего, при первой уста- не с помощью традиционных файлов Makefile, а используя
новке он будет пуст, но зато рядом должен быть файл net. специальные ebuild-скрипты (если заглянуть в один из них,
example, где приведены примеры наиболее типичных на- то будет видно, что он служит для тех же задач – описыва-
строек. Внимательно ознакомьтесь с ним и наберите нуж- ет версии, зависимости, сетевые адреса, где следует ис-
ные строки в файле net. кать необходимые файлы, параметры конфигурации и т. д.).
Например, настройка на статические адреса может вы- И если в той же FreeBSD для комфортной работы с порта-
глядеть следующим образом: ми нужно устанавливать ряд дополнительных программ
(portupgrade, pkg_cutleaves), то Gentoo предоставляет в ва-
config_eth1=("10.0.0.103/24") ше распоряжение одну мощную высокоуровневую утилиту –
routes_eth1=("default gw 10.0.0.254")
emerge, которая обеспечивает доступ практически ко все-
При необходимости присвоить одной сетевой карте му функционалу системы Portage.
несколько IP-адресов (используя механизм alias) или за- Приведу несколько наиболее полезных примеров ис-
дать адреса IPv6, можно их перечислить таким образом: пользования (подробности – в man emerge):

#config_eth0=( # emerge --search apache


# "192.168.0.2/24" # emerge --searchdesc http-server
# "4321:0:1:2:3:4:567:89ac"
#) Так выполняется поиск в дереве Portage – первая строка
демонстрирует поиск по имени пакета, вторая – по описа-
Но этого ещё недостаточно. Нужно обеспечить автомати- нию (можно использовать и регулярные выражения). В при-
ческий запуск сети при загрузке. нципе, дефисы можно и опустить (используя как emerge
Если у вас только один адаптер – eth0, то для его запус- search mc), но лучше чётко видеть, что является командой,
ка уже должен быть сценарий инициализации net.eth0 в ка- а что – аргументом.
талоге /etc/init.d (он является ссылкой на net.lo, размещён-
ный в этом же каталоге). Для других устройств (например, # emerge -pv links
eth1) нужно создать свои ссылки с именем, соответствую-
щим шаблону «net.<устройство>». Ключ -p (--pretend) заставляет emerge вместо реаль-
Ну и с помощью rc-update обеспечить автоматичес- ной работы просто сообщить, какие действия она собира-
кий запуск скрипта при инициализации соответствующе- ется выполнить; использование -v (--verbose) увеличивает
го уровня исполнения. информативность вывода. Помимо всего прочего, в выво-
де этой команды будет дана информация об общем объё-
А если мне нужно больше? ме трафика, который потребуется для закачки всех необ-
Очевидно, что возможностей, заложенных в базовую сис- ходимых пакетов. Настоятельно рекомендую (по крайней
тему, будет недостаточно для полноценной работы. Рано мере, первое время) каждую команду emerge предварять

№4, апрель 2006 11


администрирование
такой же, но с ключом -p: это позволит не только «прики- тановлена последняя стабильная версия, хотя бывают и ис-
нуть» объём закачки, но и убедиться в правильности ис- ключения – зависит от майнтейнера конкретного портежа).
пользуемых флагов. Например, если «emerge -pv links» со- Полный список возможных для установки пакетов можно
общает вам о намерении скачать из Интернета свыше посмотреть в соответствующем каталоге дерева Portage,
60 Мб, то, просмотрев список зависимых пакетов (кото- обращая внимание на ebuild-файлы:
рый выводится здесь же), вы быстро обнаружите ненужные
вам пакеты X11, qt и т. п. Несколько экспериментов с фла- # cd /usr/portage/app-misc/mc
# ls | grep ebuild
гами позволят избежать их установки, отключив флаг sdl:
«USE=”-sdl” emerge links». mc-4-6-0-r12.ebuild
mc-4-6-0-r13.ebuild
mc-4-6-0-r14.ebuild
# emerge -f iproute2 mc-4-6-1.ebuild

С помощью ключа -f (--fetchonly) можно только скачать Есть также пара так называемых классов – system
все необходимые для установки файлы. Это может быть по- и world, – позволяющих, например, одним махом обновить
лезно, если у вас модемное соединение (в этом случае сна- всю систему со всеми установленными программами. Пер-
чала всё скачивается, а затем можно отключиться от сети вый отвечает за работу с базовой системой (без программ,
и потихоньку всё это собирать). Или, если вам нужно уста- установленных пользователем), второй – за все пакеты,
новить пакет на машине, не имеющей выхода в Интернет, включая те, которые подпадают под действие system:
но вы не собираетесь ставить его на свой сервер, опять же
поможет этот ключ. # emerge -u world

# emerge --info Информацию по всем установленным программам мож-


но найти в каталоге /var/db/pkg. Здесь формируется анало-
Данная команда выводит список текущих настроек сис- гичное дерево подкаталогов по категориям, но помимо об-
темы Portage. Наибольший интерес, видимо, будет пред- щего названия программы указывается и её версия. Напри-
ставлять переменная USE, отображающая установленные мер, всю информацию по установленному в системе па-
по умолчанию значения (о ней мы поговорим чуть позже). кету syslog-ng можно будет найти в /var/db/pkg/app-admin/
syslog-ng-1.6.9.
# emerge --newuse mc Система Portage заслуживает отдельной большой статьи
(а то и нескольких), поэтому здесь я просто укажу, на что
Так, можно пересобрать (при необходимости) установ- ещё нужно обратить внимание. Во-первых, существует по-
ленное приложение с учётом изменений, сделанных в спис- нятие защищённых каталогов (например, /etc), т.е. таких,
ке флагов USE (без ключа --newuse пересборка выполнит- где изменения не могут быть выполнены автоматически
ся со старыми флагами). и требуют вмешательства администратора. Сделано это
для того, чтобы не «затереть» при обновлении с такой лю-
# emerge -u gentoo-sources бовью настроенные конфигурационные файлы.
Во-вторых, Portage позволяет управлять одновремен-
Ключ -u (--update) приводит к переустановке указанно- но несколькими версиями одной и той же программы. До-
го пакета, если в этом есть необходимость (например, по- стигается это за счёт использования так называемых «сло-
явилась новая версия). тов» (SLOT).
В-третьих, некоторые пакеты, в которых обнаружены
# emerge --sync ошибки или которые недостаточно протестированы, могут
«маскироваться». Однако при необходимости такой пакет
Эта команда выполняет обновление дерева Portage всё равно можно установить. Подробности можно найти
до актуального состояния. Рекомендуется обновлять в «Руководстве».
Portage хотя бы раз в неделю. Однако с целью экономии Также следует упомянуть об установке бинарных паке-
трафика лучше использовать скрипт emerge-delta-webrsync, тов. Для этого следует задать ключ -k (--usepkg) в коман-
который устанавливается в систему уже известным спо- де emerge, чтобы она попыталась сначала найти двоичный
собом: пакет, и только в случае неудачи приступала к стандартной
инсталляции из исходных кодов. Ключ -K (--usepkgonly) пол-
# emerge emerge-delta-webrsync ностью запрещает использование исходников, требуя обя-
зательного использования двоичного пакета. В частности,
Первый запуск emerge-delta-webrsync приведёт к скачи- этим можно воспользоваться для массовой установки како-
ванию достаточно большого объёма информации (порядка го-то приложения на несколько однотипных систем (собрать
30 Мб), в дальнейшем расход трафика будет небольшим. двоичный пакет позволяет ключ -b команды emerge).
В качестве параметра можно указывать «общее» имя
пакета (например, mc), конкретную версию (app-misc/mc- Флажковая азбука
4.6.0-r14), ограничивать с помощью символов «<», «>» и т. д. Прежде чем говорить о переменной USE, пару слов нужно
верхние и нижние границы версий (по умолчанию будет ус- сказать о зависимостях пакетов. Помимо деления на зави-

12
администрирование
симости сборки (DEPEND) и исполнения (RDEPEND), ко-
торые в большинстве случаев совпадают, каждый зависи-
мый пакет является либо обязательным (без которого дан-
ное приложение вообще не соберётся или не будет рабо-
тать), либо вспомогательным (который не требуется собс-
твенно для работы приложения, но предоставляет ему до-
полнительную функциональность). Рисунок 1. Занимаемся русификацией системы
Так вот, вспомогательными зависимостями (которые
также называют зависимости использования, по анало-
гии со сценариями инициализации) можно достаточно
гибко управлять. Например, если вы не собираетесь ис-
пользовать графическую подсистему, то при установке
Midnight Commander соответствующую поддержку лучше
отключить.
Делается это с помощью переменной USE, например,
так:

# USE=”-X” emerge mc

Знак «минус» перед флагом означает, что соответству-


ющие зависимости использовать не нужно. Рисунок 2. Midnight Commander во всей красе
Если требуется принудительно включить поддержку
того или иного пакета, укажите его без дополнительных
знаков:

# USE=”slang” emerge mc

Несколько флагов разделяются пробелом: «USE=”-X


slang”».
Как можно увидеть в выводе команды emerge --info,
по умолчанию переменная USE имеет достаточно мно-
го значений. Указанная в командной строке, она не пере-
определяет установленное значение, а вносит соответс-
твующие коррективы. Итоговое значение складывается
из следующих значений (в порядке возрастания приорите- Рисунок 3. Не так уж и плох links…
та): глобальные флаги (из /etc/make.globals); флаги профиля  package.unmask: наоборот, размаскирует пакеты, по-
(из /etc/make.profile/make.defaults); флаги из /etc/make.conf; меченные в дереве Portage как Masked, если вы непре-
индивидуальные флаги, описанные в /etc/portage/package. менно хотите их поставить;
use; флаги, установленные в командной строке.  package.use: индивидуальные USE-флаги для отде-
льных пакетов.
Ещё немного про настройки
Познакомившись с Portage подробнее, нужно вернуться не- Есть и другие – читайте документацию.
надолго к настройкам системы и рассмотреть параметры,
влияющие на работу системы управления программами. Мы – русские люди
Работа Portage определяется так называемыми профи- Ещё один важный для российских пользователей (да и во-
лями (profiles), в которых определяются специфические для обще для всех, чей родной язык – не английский) вопрос –
той или иной платформы настройки. Используется тот про- это локализация. В качестве примера рассмотрим исполь-
филь, ссылкой на который является файл /etc/make.profile. зование русской локали и настройку системы на работу
Если вы выбрали Stage3 для правильной платформы, с кодировкой UTF-8 как наиболее перспективной (не хочу
то нужная ссылка уже будет создана. сказать, что она идеальна, но это, похоже, единственный
Если вам необходимо переопределить какие-то пара- путь избавиться от разброда с различными «cp», «koi», «iso»
метры, то исправлять их непосредственно в файлах про- и проч.). Но сначала, отдавая дань традициям, рассмотрим
филя не рекомендуется, поскольку при обновлении дере- настройку koi8-r.
ва Portage все изменения будут потеряны. Для тонкой на- Рабочая кодировка в Gentoo настраивается в двух фай-
стройки предназначен каталог /etc/portage. По умолчанию лах: /etc/conf.d/consolefont, где задаётся используемый в кон-
он пуст (либо вообще отсутствует). Здесь вы можете опре- соли шрифт и (при необходимости) таблица перекодировки,
делить следующие файлы: и /etc/conf.d/keymaps, где указываются нужные раскладки.
 package.mask: используется для маскировки пакетов, Например, чтобы настроить систему на работу с koi8-r, ре-
которые вы не хотите использовать или обновлять; комендуется использовать «CONSOLEFONT=”cp866-8x16”»

№4, апрель 2006 13


администрирование
и «CONSOLETRANSLATION=”koi2alt”» в файле consolefont, # date
а в keymaps добавить следующие строки: Пнд Мар 27 22:34:55 MSD 2006

KEYMAP=”ru4” # touch файл


SET_WINDOWKEYS=”yes” # ls -a

Первой строкой выбирается раскладка (есть и другие, итого 4


см. /usr/share/consolefonts/), затем указываем, что следу- -rw-r--r-- 1 root root 0 Мар 24 16:18 unicode
-rw-r--r-- 1 root root 246 Мар 24 16:17 файл
ет использовать размещение клавиш (в частности, знаков
препинания), принятое в Windows – именно такие метки на- # cat файл
носят сейчас практически на все клавиатуры. Привет!
Последним аккордом будет указание переменной ок-
ружения «LANG=”ru_RU.KOI8-R”», что можно сделать ли- Это пример работы с Unicode-кодировкой.
Можно даже файлы именовать на русском языке.
бо глобально (например, добавив эту строку в файл
/etc/env.d/02locale), либо в настройках конкретных поль- Можно даже немножко пошалить:
зователей.
Однако мы решили использовать UTF-8. Здесь есть не- # alias см=”view”
# см файл
сколько дополнительных моментов. Во-первых, в базовой
системе нет консольных шрифтов, соответствующих этой Только не нужно этим злоупотреблять – всё же компью-
кодировке (по крайней мере, мне их найти не удалось, хо- терный мир не настолько совершенен, чтобы подобная
тя всё подряд и не перебирал). Так что нужно их поставить, «вольность» не обернулась где-нибудь сообщениями об
благо делается это достаточно просто: ошибках. Некоторые приложения, которые были установ-
лены до перехода на Unicode, возможно, придётся пересоб-
# USE=”-X” emerge terminus-font рать (используя ключ --newuse). Например, это может пот-
ребоваться для правильной работы консольного браузера
«Иксы» (X Window) я отключил здесь потому, что пока links. Чтобы нормально заработал Midnight Commander, его
не планирую их использовать (на самом деле, «-X» у меня рекомендуется собирать со следующими флагами:
прописан глобально, в /etc/make.conf, здесь переменная по-
казана для наглядности). Вы, естественно, можете задать # USE=”unicode slang -ncurses” emerge mc
те флаги, которые нужны вам.
Во-вторых, в файле /etc/rc.conf необходимо устано- В итоге вы получите приятный на вид и в целом даже ру-
вить переменную UNICODE в значение «yes», чтобы сис- сифицированный файловый менеджер (см. рис. 2).
тема знала, с чем мы работаем. И, в-третьих, полезно бу- Кстати, чтобы в том же links наслаждаться результатом
дет задать глобальный флаг «USE=”unicode”», если он ещё наших трудов, проделайте следующее:
не установлен.  <Esc> (для перехода в меню) → Setup → Terminal
Далее всё, как и в случае с koi8-r: записываем строку options: [X] UTF-8 I/O
«CONSOLEFONT=”ter-k14n”» в файл /etc/conf.d/consolefont –  Setup → Language → Russian
это один из тех шрифтов, что был установлен выше. Вы-  Setup → Character set → KOI8-R
глядит несколько непривычно (рис. 1), но весьма аккурат-
но; единственное, к чему я в нём ещё не привык – это к рус- Теперь странички будут отображаться кириллицей вмес-
ской «к», которая выглядит как латинская «k», с высоким то транслита (см. рис. 3), да и сам браузер будет общаться
«хвостиком». с вами преимущественно по-русски.
В /etc/conf.d/keymaps соответствующие строки приво- Подробнее о проблемах кириллизации можно почи-
дим к виду: тать в статье Алексея Барабанова «Кириллизация в Linux»
(«Системный администратор», март 2006 г.).
KEYMAP=”-u ru4”
SET_WINDOWKEYS=”yes”
DUMPKEYS_CHARSET=”koi8-r” Счастливого пути!
Итак, мы рассмотрели основы, необходимые для того, что-
Ключик «-u» в раскладке говорит об использова- бы начать работать с Gentoo. Конечно, многие вопросы оста-
нии Unicode. Таблица перекодировки здесь не требуется, лись за кадром (наиболее крупный из них – установка и на-
но нужно указать кодировку, на которую система будет опи- стройка X-Window, хотя эта тема относится уже не столь-
раться (третья строка). ко к Gentoo, сколько к самой графической подсистеме).
Всё – после перезагрузки вы должны получить работа- Тем не менее главное – сделать первый шаг. Я не тешу себя
ющую с русскими (точнее, с кириллическими) буквами кон- надеждой, что сотни и тысячи читателей сразу же бросят-
соль. Переключение с американской на русскую расклад- ся устанавливать эту, в общем-то, довольно специфичную
ку и наоборот выполняется клавишей <CapsLock>. Вы да- (где-то даже странную) ОС. Но если мои статьи позволят
же можете создавать файлы с русскими именами: хотя бы ещё одному человеку найти систему своей мечты,
то я буду считать свою миссию выполненной. В общем:
# echo $LANG
ru_RU.UTF-8 # USE=”gentoo” emerge freedom ;)

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

Как устроена файловая система reiser4

Андрей Пешеходов
Многим пользователям в ОС Linux нравится не только её открытость, стабильность и прочие
немаловажные характеристики, а, прежде всего, гибкость. В Linux, наверное, нет ни одного
компонента, которому нельзя было бы подобрать альтернативу. Не являются исключением
и файловые системы.

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

И
х насчитывается более двух десятков. Между со-
бой они отличаются не только по дисковой структу-
ре и алгоритмам обработки данных, но и по предо-
ставляемой функциональности. Большую часть составляют
так называемые сторонние файловые системы, реализо-
ванные для совместимости, например, vfat, ntfs, UFS, и т. д.
«Родных» же файловых систем для этой ОС, обеспечиваю- Рисунок 1. B+ дерево reiser4
щих все необходимые функции, до недавнего времени бы-
ло пять: ext2, ext3, reiserfs, XFS, и JFS. чиная с нулевого. Максимальное количество блоков на раз-
Сегодня вы познакомитесь с новинкой в этой группе – деле – 264.
файловой системой reiser4, спроектированной Гансом Рей- Раздел начинается с 64 Кб неиспользуемого пространс-
зером и его компанией NameSys. Несмотря на название, тва, оставленного под загрузчики, дисковые метки и про-
эта ФС написана с нуля, хотя и унаследовала некоторые чие служебные надобности.
особенноcти своего «идеологического» предшественни- Далее следует 2 суперблока – главный и форматный, об-
ка – reiserfs. рабатываемый disk_format-плагином. За ними расположен
Помимо традиционных для Linux-ФС функций reiser4 первый bitmap-блок, содержащий битовую карту свободно-
предоставляет пользователям ряд дополнительных воз- го места. Один бит такой карты соответствует одному блоку
можностей: прозрачное сжатие и шифрование файлов, файловой системы, если бит установлен – блок занят, ес-
полное журналирование данных (реализовано только ли сброшен – свободен. Один bitmap-блок содержит карту
в ext3), а также практически неограниченную (за счет пла- для 8*(BLOCK_SIZE-4) блоков файловой системы. Адреса
гинной архитектуры) расширяемость, т.е. способность при- остальных bitmap-блоков считаются по формуле:
спосабливаться к сколь угодно сложным запросам потре-
бителей. bmap_block = 8 * (BLOCK_SIZE-4) * N
Надеюсь, вы обладаете навыками программирования
на языке C и знакомы с базовыми принципами организа- где N – порядковый номер карты.
ции современных файловых систем – без этого понять ма- Сразу за битовой картой расположены journal header
териал будет трудно. и journal footer блоки, используемые алгоритмом журнали-
Примечание: все пути отсчитываются от каталога рования reiser4, а завершает эту последовательность блок
fs/reiser4/ в дереве исходников ядра Linux. статуса файловой системы, содержащий различные пара-
метры ее состояния.
Плагины 64 kb 1-st journal journal FS data
Reiser4 основана на плагинах – внутренних программно- master format
unused bitmap header footer status blocks
superblock superblock
обособленных модулях, предоставляющих пользователям space block block block block ...

возможность максимально адаптировать файловую сис- В памяти любой блок представляется объектом jnode,
тему к своим задачам. описанным в jnode.[ch]. Каждый jnode имеет указатель на
Жестко в драйвер reiser4 зашит только код, занимаю- страницу памяти, содержащую данные соответствующего
щийся работой с диском, поддержкой различных абстрак- ему дискового блока (struct page* pg), указатель на сами
ций и балансировкой дерева, операции же почти над всеми данные (void *data), различные блокировки, счетчики ссы-
объектами файловой системы – как внутренними, так и эк- лок и биты состояния.
спортируемыми, как дисковыми, так и in-memory – реали- Более подробно со структурой каждого из описан-
зованы в виде плагинов и могут быть расширены дополни- ных выше блоков можно ознакомиться на сайте журнала
тельными типами или вовсе заменены пользовательскими www.samag.ru в разделе «Исходный код».
альтернативами. В настоящее время reiser4 не поддержива-
ет динамическую регистрацию плагинов (т.е. для подключе- Дерево файловой системы
ния нового модуля придется перекомпилировать весь драй- Все объекты файловой системы, за исключением суперб-
вер), однако в будущих версиях файловой системы эта воз- лока и битовых карт, представлены листьями единственно-
можность будет реализована. го на всю ФС сбалансированного дерева внешнего поиска –
Reiser4 не имеет жестко определенной ни дисковой, B+ дерева. Такая организация отличает файловые системы
ни алгоритмической структуры, практически любая ее часть семейства reiserfs от аналогов (например, XFS и JFS), име-
может быть легко изменена или дополнена. Я опишу сегод- ющих более традиционную структуру, предусматривающую
ня то, что разработчики называют «format40» – семейство отдельное дерево (а то и не одно – если требуется индекса-
свойств файловой системы, определенных стандартным ция по нескольким параметрам) для каждой совокупности
набором плагинов от NameSys. объектов (например, дерево inodes, extents, и др.).
Детали реализации плагинной инфраструктуры будут Дерево состоит из внутренних и листовых узлов. Внут-
рассмотрены ниже. ренние узлы, в соответствии с заветами классиков, содер-
жат ключи и указатели на потомков (указателей всегда
Блоки на один больше, чем ключей), листья же, расположенные
Раздел reiser4 представляет собой набор блоков фиксиро- на самом нижнем уровне дерева, – ключи и данные, орга-
ванного размера, пронумерованных последовательно, на- низованные в итемы.

№4, апрель 2006 17


администрирование
В связи с тем, что B+ дерево растет вверх, первым ного места, старается соблюдать порядок дерева, нельзя
уровнем считается листовой. Над ним расположен twig- не заметить, что политика назначения ключей прямо вли-
уровень (twig – тоненькая веточка), характерный тем, что яет на производительность файловой системы.
только на нем существуют extent-итемы (см. ниже), далее Структура ключа reiser4 определена в key.h
идут branch-уровни (branch – толстая ветвь) и самый вер-
хний – корневой уровень. Минимально возможная высо- union reiser4_key {
__le64 el[KEY_LAST_INDEX];
та дерева равна 2, то есть корневой узел всегда является int pad;
внутренним. Такое решение сильно упростило код, а поте- };
ри дискового пространства были сочтены незначительны-
ми (см. рис. 1). Ключ представляет собой массив из KEY_LAST_INDEX
Узлы и листья дерева представлены в памяти объекта- 64-битных чисел, логически раскладываемый на поля. До-
ми znode (см. znode.[ch]), организующимися в древовидную ступ к конкретному полю осуществляется по двум пара-
структуру. Znode содержит указатель на jnode, содержащий метрам: индексу элемента в ключе (reiser4 key_field_index)
данные узла, указатели на родителя узла и его соседей в де- и смещению поля в элементе (reiser4_key_field_shift).
реве, указатель на плагин, обрабатывающий данный тип уз- См. key.h:
ла, блокировки, биты состояния и счетчики ссылок.
Абстракция znode необходима не только для поддержки /* Значение каждого элемента этого перечисления есть
индекс в массиве reiser4_key->el */
эффективного кэша узлов – с ее помощью реализуется про- typedef enum {
токол блокирования объектов файловой системы, улучшаю- /* dirid – ObjectID родитесльcкого каталога, расположен
в первом элементе, т.н. major "locale" */
щий производительность операций над деревом. Важность KEY_LOCALITY_INDEX = 0,
этого решения можно оценить на примере reiserfs, не имею-
/* Тип итема, расположен в первом элементе,
щей механизма блокирования элементов дерева. Для син- т.н. minor "locale" */
хронизации в ней используется счетчик fs_generetion, поз- KEY_TYPE_INDEX = 0,
воляющий только установить сам факт изменения дерева. /* Существует только в длинных ключах */
Иногда это приводит к печальным последствиям: если по- ON_LARGE_KEY(KEY_ORDERING_INDEX,)
ток, готовящий балансировку, не успевает зафиксировать /* «Объектная связь», второй элемент */
изменения до того, как дерево было модифицировано дру- KEY_BAND_INDEX,
гим потоком – вся подготовка выполняется заново. /* objectid, второй элемент */
Во время выполнения балансировки дерево модифици- KEY_OBJECTID_INDEX = KEY_BAND_INDEX,
руется по одному уровню за шаг. Во время модификации /* Полный objectid, второй элемент */
некоторого уровня файловая система накапливает изме- KEY_FULLOID_INDEX = KEY_BAND_INDEX,
нения, которые должны быть распространены на следую- /* Смещение, третий элемент */
щий уровень. К примеру, вставка итема (элемента данных, KEY_OFFSET_INDEX,
имеющего уникальный ключ), как правило, вызывает пере- /* Хэш имени, в третьем элементе */
мещение итемов между узлами и требует обновления клю- KEY_HASH_INDEX = KEY_OFFSET_INDEX,
ча по меньшей мере в общем родителе модифицирован- KEY_CACHELINE_END = KEY_OFFSET_INDEX,
ных узлов, а в отдельных случаях может потребовать раз- KEY_LAST_INDEX
} reiser4_key_field_index;
мещения нового узла, указатель на который должен быть
вставлен в узел родительского уровня. После того, как все /* На сколько бит влево должен быть сдвинут элемент
ключа для получения значения конкретного поля */
операции на данном уровне дерева выполнены (т.е. итем typedef enum {
вставлен, узлы переупакованы), процесс повторяется для KEY_LOCALITY_SHIFT = 4,
KEY_TYPE_SHIFT = 0,
накопленных операций на следующем уровне: обновляет- KEY_BAND_SHIFT = 60,
ся существующий или вставляется новый ключ, что также KEY_OBJECTID_SHIFT = 0,
KEY_FULLOID_SHIFT = 0,
может вызвать переупаковку или размещение нового уз- KEY_OFFSET_SHIFT = 0,
ла. При этом могут блокироваться и вовлекать новые уз- KEY_ORDERING_SHIFT = 0,
} reiser4_key_field_shift;
лы, а также выставляться операции для переноса на сле-
дующий уровень. Из определения reiser4_key_field_index видно, что ключ
Одно из главных преимуществ поуровневой баланси- в reiser4 может состоять из трех (короткие ключи) или четы-
ровки дерева состоит в возможности группировать изме- рех (длинные ключи) 64-битных чисел. Размер ключа опре-
нения на родительском уровне и вносить их, в результате,деляет макрос REISER4_LARGE_KEY (см. reiser4.h). Если он
более эффективно. С деталями реализации кода баланси- равен единице, в перечисление, между типом и objectid, до-
ровки можно ознакомиться в файлах carry.[ch]. бавляется элемент ordering. Драйвер может монтировать
только файловые системы с тем размером ключей, с кото-
Ключи рым он был скомпилирован. В настоящее время по умол-
Каждой обособленной части данных или метеданных чанию применяются длинные ключи.
в reiser4 сопоставляется ключ, являющийся ее уникаль- Очевидно, что ключ в reiser4 представляет собой нечто
ным идентификатором. Ключи используются для упоря- большее, чем просто идентификатор – он содержит массу
дочивания и поиска данных в дереве ФС. Исходя из того, дополнительной информации о типе и положении объекта,
что плагин alloc40, отвечающий за распределение свобод- которая нигде не дублируется. Для разных типов итемов

18
администрирование
ключи интерпретируются по-разному. Ключи во внутрен- ет несколько улучшить производительность поиска по де-
них узлах дублируют ключи некоторых итемов twig- и лис- реву в сравнении в key_short.
тового уровней, они используются только при обходах де- Directory items
рева и не интерпретируются. 60 4 7 1 56 64 64
Смысл наименований «major» (ID родительского ката- dirid 0 F H prefix-1 prefix-2 prefix-3/hash
лога) и «minor» (тип объекта) localities заключается в том, 8 bytes 8 bytes 8 bytes 8 bytes
что в дереве объекты физически группируются снача-
ла по dirid (это получается чисто арифметически, т.к. dirid  dirid: ObjectID каталога, в котором расположен описывае-
расположен в самых старших битах ключа), а в пределах мый объект, + 4 бита на тип (0 – KEY_FILE_NAME_MINOR,
этой группы – по типу. То есть элементы одного каталога элемент каталога);
и одного типа в дереве (а скорее всего и на диске) окажут-  F: «волокно» (см. plugin/fibration.c);
ся соседями.  H: 1 – если последние 8 байт содержат хэш; 0 – если
Текущий алгоритм назначения ключей, реализуе- последние 8 байт содержат третий префикс;
мый двумя плагинами – «key_large» (длинные ключи)  prefix-1: первые 7 символов имени файла;
и «key_short”»(короткие ключи), – называется «Plan A»  prefix-2: следующие 8 символов имени файла;
(см. kassign.[ch]).  prefix-3: следующие 8 символов имени файла;
 hash: хэш оставшейся части имени, не попавшей
Короткие ключи в prefix-1 и prefix-2.
Изначально key_short был основным алгоритмом назна-
чения ключей, однако позднее экономию дискового про- Имена файлов короче 23-х символов (7+8+8) полно-
странства, достигаемую с его помощью, разработчики соч- стью помещаются в ключ и именуются короткими. Отличи-
ли незначительной. Был сделан шаг в сторону увеличения тельным признаком таких файлов является бит H=0. Име-
производительности – с алгоритмом key_large. на других файлов называются длинными, бит H=1, первые
Directory items 15 символов имени составляют первый и второй префик-
60 4 7 1 56 64 сы, а последние 8 байт занимает хэш оставшихся симво-
dirid 0 F H prefix-1 prefix-2/hash лов. Благодаря такой структуре ключа элементы каталога
8 bytes 8 bytes 8 bytes
сортируются приблизительно в лексикографическом поряд-
ке, а также существенно сокращается количество коллизий
 dirid: ObjectID каталога, в котором расположен описы- (совпадений хэшей у разных имен), однако, принципиаль-
ваемый файл, + 4 бита на тип; но неустранимых при постоянной длине ключа.
 F: «волокно» (см. plugin/fibration.c); Stat-data items
 H: 1 – если последние 8 байт содержат хэш; 0 – если 60 4 64 4 60 64
последние 8 байт содержат второй префикс; locality id 1 ordering 0 objectid 0
 prefix-1: первые 7 символов имени файла; 8 bytes 8 bytes 8 bytes 8 bytes
 prefix-2: следующие 8 символов имени файла;
 hash: хэш оставшейся части имени, не попавшей  locality id: ObjectID родительского каталога, + 4 бита ти-
в prefix-1. па (1 – KEY_SD_MINOR, stat-data);
 ordering: копия вторых восьми байт ключа родитель-
Короткими в данном случае считаются имена не длин- ского каталога:
нее 15 символов.
Stat-data {
fibration :7
60 4 4 64 64 h :1
prefix-1 :56
locality id 1 0 objectid 0 }
8 bytes 8 bytes 8 bytes
(см. выше);
 locality id: ObjectID родительского каталога, 4 бита  objectid: ObjectID данного объекта.
на тип;
 objectid: ObjectID данного объекта. Такая структура ключа была введена для того, чтобы stat-
Extent и tail items data итемы хранились в каталоге в том же порядке, что и со-
60 4 4 64 64 ответствующие им directory entries. Таким образом улучше-
locality id 4 0 objectid offset на производительность вызовов readdir() и stat().
8 bytes 8 bytes 8 bytes Extent и tail items
60 4 64 4 60 64
 locality id: ObjectID родительского каталога + тип; locality id 4 ordering 0 objectid offset
 objectid: ObjectID данного объекта; 8 bytes 8 bytes 8 bytes 8 bytes
 offset: логическое смещение от начала файла.
 locality id: ObjectID родительского каталога, + 4 бита ти-
Длинные ключи па (4 – KEY_BODY_MINOR, тело файла);
В настоящее время используется по умолчанию; позволя-  ordering: см. выше;

№4, апрель 2006 19


администрирование
 object id: см. выше; ся как разность смещений данного и следующего итемов.
 offset: логическое смещение от начала файла в бай- Не трудно понять, что длина нулевого итема, расположен-
тах. ного в конце узла, равна:

Возможны следующие типы объектов (подробнее – len[0] = node_end – offset[0] +1


в приложении на сайте журнала www.samag.ru в разделе
«Исходный код»): Листья с переменной длиной итемов и ключей (lvar)
Тип minor locality Node Item heads [0,n] Free Key Item bodies [n,0]
header space bodies
Элемент каталога 0 key offset key inherit item offset

stat-data 1
Листья со сжатыми ключами (lcomp)
Имя атрибута файла 2
Node header Item heads [0,n] Free space Item bodies [n,0]
Значание атрибута файла 3
key offset key inherit item offset
Тело файла 4
Key inherit, однобайтное число, показывает, какая часть
Узловые блоки префикса совпадает у данного и предыдущего ключей. Со-
Каждый дисковый блок, содержащий внутренний или лис- ответственно в данном ключе эта часть не повторяется
товой узел дерева, начинается с заголовка узла, состо- для экономии места. Таким образом реализовано своеоб-
ящего из независимой и форматной частей. Независи- разное сжатие ключей.
мый заголовок содержит только идентификатор плагина,
который обрабатывает узел данного типа (стандартно – Итемы
node40-плагин). Форматный заголовок включает служеб- Итем – это обособленная часть данных или метаданных
ную информацию, которая интерпретируется соответству- файловой системы, имеющая сопоставленный ей уникаль-
ющим плагином (количество итемов и свободных байт, раз- ный ключ. Reiser4 поддерживает множество типов итемов,
личные флаги). Определение этих структур данных приве- их набор легко может быть расширен написанием допол-
дено в приложении. нительных плагинов.

Внутренние узлы (idef1) Stat data item


Блок внутреннего узла дерева reiser4 состоит из заголов- Stat data item содержит метаданные для файлов и каталогов.
ка узла, массива внутренних итемов и массива заголовков В чем-то подобен структуре inode других фаловых систем,
итемов, каждый из которых содержит ключ, pluginid и сме- однако в отличие от классического inode stat-data не содер-
щение итема. Оба массива растут к середине. жит никакой информации о размещении на диске данных
описываемого объекта и экспортирует в VFS только атри-
Node header Item heads [0,n] Free space Internal items [n,0]
буты файла, возвращаемые вызововм stat(2).
key pluginid item offset
В reiser4 структура каждого stat-data набирается из не-
Формат внутреннего итема описан в plugin/item/internal.h: скольких равноправных компонентов, называемых расши-
рениями. Специальная битовая карта, имеющаяся в каж-
/* Дисковый формат internal item */ дом stat-data, показывает наличие или отсутствие конкрет-
typedef struct internal_item_layout {
reiser4_dblock_nr pointer; ного расширения. В соответствии с имеющейся структурой
} internal_item_layout; кода обработчики расширений реализованы в виде плаги-
нов типа REISER4_SD_EXT_PLUGIN_TYPE (о типах плаги-
Видно, что это просто указатель на узел-потомок. нов см. ниже. Перечисление возможных типов расширений
приведено в приложении на сайте журнала www.samag.ru
Листья в разделе «Исходный код»).
Листовые узлы расположены на самом нижнем (первом) Структуры соответствующих расширений определены
уровне B+ дерева; поддерживается несколько различных в /plugin/item/static_stat.h.
форматов листьев, оптимальных для тех или иных ситуа- Минимальный stat-data (та самая карта расширений)
ций. позволяет поддерживать легковесные файлы, имеется
Стандартный формат листовых узлов (leaf1) в любом stat-data:
Node header Item heads [0,n] Free space Item bodies [n,0]
typedef struct reiser4_stat_data_base {
key pluginid item offset __le16 extmask;
} PACKED reiser4_stat_data_base;
В состав листа входят node header, обязательный
для всех узлов дерева, массив заголовков итемов и мас- Расширение для легковесных файлов:
сив самих итемов (оба растут к середине). Заголовок ите-
ма вмещает в себя ключ (формат которого определяется typedef struct reiser4_light_weight_stat {
__le16 mode;
политикой назначения (длинные или короткие ключи) и ти- __le32 nlink;
пом итема, которому соответствует ключ), pluginid и 16-бит- __le64 size;
} PACKED reiser4_light_weight_stat;
ное смещение начала тела итема. Длина итема вычисляет-

20
администрирование
Стандартный UNIX-stat, поддерживающий полный на- typedef struct reiser4_cluster_stat {
d8 cluster_shift;
бор атрибутов, возвращаемых вызовом stat(2): } PACKED reiser4_cluster_stat;

typedef struct reiser4_unix_stat { Расширение для атрибутов зашифрованных объектов:


/* owner id */
__le32 uid;
typedef struct reiser4_crypto_stat {
/* group id */ d16 keysize; /* размер секретного ключа в битах */
__le32 gid; d8 keyid[0]; /* ID секретного ключа */
} PACKED reiser4_crypto_stat;
/* время последнего доступа */
__le32 atime;
Расширение точного времени:
/* время последней модификации */
__le32 mtime;
typedef struct reiser4_large_times_stat {
/* время последнего изменения */ d32 atime;
__le32 ctime; d32 mtime;
d32 ctime;
union { } PACKED reiser4_large_times_stat;
/* пара (minor,major) для файлов устройств */
__le64 rdev; Расширение для плагина single directory entry (больше
/* размер в байтах для регулярных файлов */ не используется):
__le64 bytes;
} u; typedef struct sd_stat {
} PACKED reiser4_unix_stat; int dirs;
int files;
Расширение для символических ссылок, содержащее int others;
} sd_stat;
имя, на которое указывает symlink:

typedef struct reiser4_symlink_stat { Tail item


char body[0];
} PACKED reiser4_symlink_stat Tail-итемы содержат сырые данные файлов (это либо це-
лые маленькие файлы, либо «хвосты» больших) и не име-
В этом расширении плагин хранит некоторые парамет- ют форматной структуры.
ры своего состояния:
Extent items
typedef struct reiser4_plugin_slot { Экстенты, в терминах reiser4, – непрерывные участки дис-
__le16 pset_memb;
__le16 id; кового пространства, дескрипторы которых, составляю-
} PACKED reiser4_plugin_slot; щие extent-итем, содержат номер стартового блока учас-
тка и его длину.
Расширение для файлов с нестандартными плагинами Структура экстента определена в plugin/item/extent.h:
также служит для хранения параметров состояния требуе-
мого количества плагинов : typedef struct {
reiser4_dblock_nr start;
reiser4_dblock_nr width;
typedef struct reiser4_plugin_stat { } reiser4_extent;
/* Количество дополнительных плагинов,
ассоциированных с объектом */
__le16 plugins_no; В reiser4 экстенты используются для отслеживания
reiser4_plugin_slot slot[0];
} PACKED reiser4_plugin_stat; только выделенного дискового пространства (в отличие
от других файловых систем, где массивы или деревья де-
Расширение для inode-флагов. В настоящее время это скрипторов свободных участков заменяют битовые карты
просто 32-битная маска, которая при необходимости может занятости блоков) и ссылаются на участки, содержащие
быть заменена на маску переменной длины: данные файлов. В ключах экстентов, принадлежащих од-
ному файлу, равны все поля, за исключением offset (сме-
typedef struct reiser4_flags_stat { щение «куска», описываемого данным экстентом, от на-
__le32 flags;
} PACKED reiser4_flags_stat; чала файла).
Экстент может находиться в одном из следующих со-
Расширение для capabilities: стояний (plugin/item/extent.h):

typedef struct reiser4_capabilities_stat { typedef enum {


__le32 effective; HOLE_EXTENT,
__le32 permitted; UNALLOCATED_EXTENT,
} PACKED reiser4_capabilities_stat; ALLOCATED_EXTENT
} extent_state;

Расширение для хранения размера логического класте- где:


ра (атрибут cryptcompress-объектов). На самом деле хранит-  HOLE_EXTENT: экстент представляет собой «дыру»
ся не сам размер, а его двоичный логарифм, так что размер в файле. «Дыра» может образоваться, например, пос-
находится как: «cluster_size = 1 << cluster_shift». ле вызовов:

№4, апрель 2006 21


администрирование
creat(); ный доступ к данным. Каждый логический кластер сжима-
truncate(4096);
ется независимо от других. Разумеется, кластеры не долж-
В результате чего файл длиной 4 Кб окажется заполнен ны быть слишком большими, чтобы не занимать слишком
неинициализированными данными, выделять под кото- много памяти при попытке что-либо прочитать или записать
рые дисковое пространство бессмысленно (хотя XFS, по произвольному смещению: максимальный размер логи-
к примеру, не только выделяет, но и перезаписывает ческого кластера, поддерживаемый reiser4, – 64K. Это об-
его нулями). При попытке чтения данных hole-экстента стоятельство несколько снижает степень сжатия данных
файловая система динамически «сгенерирует» необ- из-за невозможности создать обширный словарь в про-
ходимое количество нулевых байт и передаст их поль- цессе компрессии.
зователю. Дескриптор такого экстента содержит толь- Логический кластер индекса I – это множество байт
ко его длину и никуда не указывает. данного файла, смещения которых лежат в отрезке
 UNALLOCATED_EXTENT: «виртуальный» экстент, явля- [I*S, (I+1)*S-1], где S – размер логического кластера. В на-
ющийся плодом политики отложеного размещения. По- стоящее время Reser4 поддерживает кластеры с размера-
является в результате добавления данных в файл или ми 4K, 8K, 16K, 32K и 64K, но не меньше PAGE_SIZE). Логи-
при заполнения «дыр». Существует только в памяти и ческий кластер называется частичным, если в нем задейс-
при сбросе, получив от flush-алгоритма реальный дис- твовано меньше S байт.
ковый адрес, превращается в нормальный экстент. Страничный кластер индекса I – это последователь-
 ALLOCATED_EXTEN: обыкновенный экстент. ность страниц, содержащих сырые (несжатые и незашиф-
рованные) данные соответствующего логического класте-
Ctail item ра. Страничный кластер присутствует в памяти во время
Помимо классической реализации регулярных файлов (unix- чтения или записи файла.
file-плагин), reiser4 предлагает и такую, при которой данные Дисковый кластер индекса I – это последовательный
файла хранятся на диске в сжатом и (или) зашифрованном набор итемов какого-либо типа, первый из которых имеет
виде (transparent compression/encryption). Ответственным ключ со смещением, которое вычисляется как функция от I
за эту реализацию является cryptcompress-плагин. Основ- (этим заведует специальный метод итем-плагина). Размер
ная его идея состоит в том, чтобы выполнять сжатие и шиф- дискового кластера определяется как S*N, где N – коэффи-
ровку непосредственно перед сбросом кэшированных дан- циент растяжения крипто-алгоритма, которым зашифрован
ных на диск, экономя при этом процессорные ресурсы в том данный файл (N = 1 для всех симметричных алгоритмов).
случае, когда одни и те же данные, находящиеся в памя- В настоящее время «кластеризованными» являют-
ти, многократно модифицируются одним или несколькими ся только ctail-итемы, структура которых определена
процессами. На современных машинах, оснащенных быс- в plugin/item/ctail.h:
трыми процессорами и большими объемами оперативной
памяти, сжатие данных не ухудшает, а наоборот – увеличи- typedef struct ctail_item_format {
d8 cluster_shift; /* Двоичный логарифм размера
вает производительность файловой системы, т.к. преобра- дискового кластера */
зование данных выполняется сравнительно быстро, а объ- d8 body[0]; /* Тело итема */
} __attribute__ ((packed)) ctail_item_format;
ем дискового трафика сокращается.
Каждое преобразование данных (сжатие, шифрова- Каждый дисковый кластер представляет собой разби-
ние и т. д.) осуществляется некоторым алгоритмом, кото- тые на ctail-итемы сжатые и зашифрованные данные ло-
рый присутствует в reiser4 в виде соответствующего пла- гического кластера в определенном формате, который
гина (т.н. transform-плагин). Нельзя не отметить пользу пла- не представлен какой-либо структурой данных и имеет
гинной архитектуры, при которой поддержка любого же- следующий вид:
лаемого алгоритма компрессии или шифрования сводит-
ся всего лишь к написанию и стандартному добавлению данные {дополнение контрольный_байт контрольная_сумма}
плагина соответствующего типа. В настоящее время до-
ступны transform-плагины для сжатия алгоритмами gzip1 Дополнение служит для выравнивания сжатых данных
и lzo1, шифровать по идее можно любым блочным алго- перед шифрованием, чтобы итоговый размер был кратен
ритмом, поддерживаемым crypto-API Linux-ядра, а также размеру блока крипто-алгоритма. В контрольном байте
aes_ecb, однако поддержка крипто-плагинов до ума еще хранится размер дополнения, увеличеный на 1 (фактичес-
не доведена. ки это размер участка, который потребуется отсечь перед
Cryptocompress-плагин разбивает каждый файл на логи- декомпрессией). Контрольная сумма – это adler32 от вы-
ческие кластеры определенного размера. Этот размер яв- ровненых и зашифрованых данных.
ляется атрибутом данного файла и должен быть назначен Контрольная сумма страхует нас от попытки приме-
перед его созданием. Каждый логический кластер отоб- нить декомпрессию к некорректным данным (последний
ражается в память на соответствующий страничный клас- случай чреват фатальными последствиями, т.к. допуска-
тер, который в свою очередь представлен в сбалансиро- ется использование небезопасных алгоритмов декомпре-
ванном дереве, т.н. дисковым кластером. Сжатые данные сии (которые, как правило, являются наиболее быстрыми).
такого файла хранятся на диске в виде «фрагментов», ре- Контрольная сумма добавляется только в том случае, ког-
ализованных в reiser4 как итемы специального типа (собс- да компрессия была принята (в этом случае итоговый раз-
твенно ctail-итемы), что существенно упрощает произволь- мер данных с учетом контрольной суммы должен быть стро-

22
администрирование
го меньше, чем размер дискового кластера). Если же дан-  элемент каталога – содержит имя объекта и ключ его
ные логического кластера плохо сжимаемы, то результат stat-data итема;
компрессии отвергается, и к выровненому и зашифрова-  stat-data итем – атрибуты;
ному логическому кластеру контрольная сумма не добав-  один или несколько итемов, содержащих тело объ-
ляется. При таком подходе смежные дисковые кластеры не екта – для регулярного файла это extent/tail/ctail итемы,
«накладываются» друг на друга по смещениям в их ключах. для каталога – CDE-итемы; специальные файлы (уст-
Другое важное преимущество состоит в том, что по каждо- ройства, FIFO, и т. д.) тела не имеют.
му дисковому кластеру можно сразу определить, была ли
произведена компрессия или нет. Все итемы, принадлежащие одному файлу, имеют в сво-
При чтении файла по какому-либо смещению в памяти их ключах одинаковые dirid и objectid.
размещаются страничные кластеры соответствующих ин-
дексов. При запросе на чтение какой-либо страницы фай- Журналирование
ловая система размещает в памяти целиком весь странич- Reiser4 поддерживает режим полного журналирования дан-
ный кластер (по смещению конструируется ключ, после- ных и метаданных, обеспечивая также некоторые расши-
довательно находятся и компонуются все ctail-итемы соот- ренные возможности.
ветствующего дискового кластера, после чего происходят Дело в том, что большинство файловых систем осу-
расшифровка, декомпрессия и заполнение страниц сыры- ществляют кэширование записи – модифицированные дан-
ми данными). При этом попытка прочитать немного больше ные не сбрасываются немедленно на диск, а накаплива-
положенного (менеджер виртуальной памяти ничего не зна- ются в кэше. Это позволяет ФС не только лучше контроли-
ет о кластерах) не наносит ущерба и вписывается в общую ровать дисковое планирование, но формировать длинные
концепцию упреждающего чтения. I/O-запросы, которые современными жесткими дисками об-
Подробнее об этом плагине можно почитать в [4]. рабатываются существенно быстрее, нежели группа корот-
ких. В случае сбоя системы из-за этого будут не просто по-
Compound directory item теряны недавние изменения – механизм кэширования мо-
Составной итем каталога состоит (в отличие от single жет поменять местами запросы на запись, в результате че-
directory item, который в настоящее время не используется го более новые данные окажутся записанными, а старые –
и описан здесь не будет) из нескольких элементов катало- потеряны. Это может стать серьезной проблемой для при-
га. Был введен с целью повышения эффективности исполь- ложений, делающих несколько зависимых модификаций,
зования дискового пространства. Дело в том, что все эле- часть из которых будет утеряна, а часть – нет. Такие при-
менты одной директории имеют в своих ключах одинаковый ложения требуют от ФС гарантировать, что либо все, либо
фрагмент – ObjectID родительского каталога. Компоновка ни одно изменение не переживет сбой.
составного итема из нескольких элементов одной директо- Зависимые модификации также могут возникать, ког-
рии позволяет сохранять указанный фрагмент ключа толь- да приложение читает модифицированные данные и затем
ко единожды и тем самым немного сэкономить дисковое производит вывод, например:
пространство. Это решение является особой формой сжа- 1. Процесс 1 пишет в файл А.
тия ключей, т.к. их полноценное сжатие в версии 4.0 не ре- 2. Процесс 2 читает из файла А.
ализовано. Заметьте также, что на диске ключи хранятся 3. Процесс 2 пишет в файл В.
невыровненными, что, по крайней мере на некоторых ар-
хитектурах, повышает нагрузку на CPU при их обработке, Очевидно, что файл B может зависеть от файла A, и, ес-
но опять же экономит место. ли стратегия кэширования поменяет порядок фиксации из-
Дисковая структура CDE-итема такова: менений в этих файлах, после сбоя приложения могут ока-
заться в некорректном состоянии.
Item header Entry headers Entry bodies
Атом – набор блоков, модификации которых должны
count of entries hash offset key name
быть атомарно записаны на диск. Каждое незафиксиро-
Заголовок CDE-итема содержит количество элементов ванное на диске изменение объекта ФС есть атом. Напри-
в каталоге. Заголовок элемента каталога включает часть мер, если приложение добавляет данные в конец файла,
ключа объекта, описываемого данным элементом (хэш име- в атом будет включен блок, содержащий сами новые дан-
ни), и смещение тела самого элемента в итеме. Элемент ные, блок со stat-data итемом, содержащий длину файла
каталога состоит из ключа stat-data итема описываемого и блок, хранящий tail/ctail/extent итем. Если размещен но-
объекта (в действительности нет нужды хранить ключ це- вый блок – в атом добавится также суперблок, хранящий
ликом – т.к. это всегда stat-data, то тип и смещение могут счетчик свободного места, и блок битовой карты (в дейс-
быть опущены. Однако из-за возможности применения дру- твительности алгоритм журналирования суперблока и би-
гих схем назначения ключей здесь зарезервировано мес- товых карт несколько более сложен, см. ниже).
то под целый ключ) и имени объекта. Транскрэш – набор операций, все или ни одна из кото-
рых не переживут сбой системы.
ISSUES Существует 2 типа транскрэшей: read-write и write-only.
Обобщая изложенный выше материал, можно сказать, Если приложение пишет в модифицированный, но еще не
что регулярный файл/каталог в reiser4 состоит из объек- зафиксированный на диске блок, то атомы, воплощающие
тов трех типов: две эти модификации, объединяются в write-only транскрэш.

№4, апрель 2006 23


администрирование
Если приложение читает данные незафиксированного бло- Журналирование метаданных
ка, а затем осуществляет запись – эти 2 атома сливаются Это ограниченный режим работы механизма журналирова-
в read-write транскрэш. ния, при котором атомарной записью защищаются только
Более подробно о реализации описанных выше меха- метаданные файловой системы. В этом режиме блоки дан-
низмов можно почитать в комментариях файлов txnmgr.[ch], ных файла (неформатированные узлы) не затрагиваются
а также в [3]. механизмом журналирования и, следовательно, не нужда-
Низкоуровневые механизмы журналирования реализо- ются в сбросе на диск как результате фиксации транзак-
ваны в wander.[ch] и также достаточно необычны. Начать хо- ции. В этом случае блоки данных файла не рассматривают-
тя бы с того, что reiser4 не имеет журнала (выделенной об- ся членами relocate или overwrite наборов, т.к. они не участ-
ласти на диске) в обычном его понимании. «Странствую- вуют в протоколе атомарных обновлений, а единственны-
щие» журнальные блоки размещаются произвольно, в лю- ми причинами их сброса на диск являются переполнение
бом месте файловой системы. А вместо того чтобы записы- памяти и возраст.
вать журналируемый блок дважды (один раз – в «странству-
ющее» местоположение, второй – в реальное), reiser4 мо- Обработка bitmap-блоков
жет записать блок в новое место, а затем обновить указа- Reiser4 размещает временные блоки для «странствующе-
тель в его родителе. Казалось бы, какая разница – ведь мо- го» журналирования. Это значит, что существуют различия
дификацию родителя все равно придется включать в тран- между содержимым фиксированного bitmap-блока, которое
закцию, однако при журналировании хотя бы трех блоков должно быть восстановлено после сбоя, и содержимым ра-
с общим родителем выгода становится очевидной. Тради- бочего bitmap-блока, который используется для поиска/вы-
ционное решение называется перезаписью блоков, а опи- деления свободных блоков.
санное – переразмещением. Для каждого bitmap-блока в памяти хранятся 2 версии:
Решение о переразмещении или перезаписи принима- WORKING_BITMAP и COMMIT_BITMAP.
ется из соображений улучшения производительности. За- Рабочий bitmap используется просто для поиска свобод-
писывая журналируемые блоки в новые места, ФС избе- ных блоков, если некоторый бит сборшен в рабочей карте,
гает необходимости вносить копию каждого блока в жур- то соответствующий блок может быть выделен. Рабочая
нал. Однако в случае, когда начальная позиция перераз- карта обновляется при каждом выделении блока. Commit-
мещаемого блока является оптимальной, смена его коор- карта отражает изменения, выполненные в уже совершен-
динат может увеличить фрагментацию. ных атомах либо в атоме, который выполняется в данный
Перезаписываемый набор атома содержит все гряз- момент (атомы фиксируются последовательно, и в каждый
ные блоки, не принадлежащие переразмещаемой группе момент времени может работать только один). Commit-кар-
(т.е. блоки, не имеющие грязного родителя, для которых пе- та обновляется только при фиксации атома, т.е. состояние
резапись будет лучшим выходом). «Странствующая» копия блоков, выделенных журналу на время обработки атома,
каждого блока записывается как часть журнала до фикса- в ней никогда не отражается.
ции атома и заменяет оригинальное содержимое блока пос- Наличие двух битовых карт в памяти очень выгодно,
ле фиксации. Заметьте, что суперблок считается родителем т.к. это позволяет нескольким атомам модифицировать
корневого узла, а bitmap-блоки не имеют родителей. Сле- один bitmap-блок.
довательно, они всегда будут обрабатываться как часть пе- Другой дефицитный ресурс в reiser4 – суперблок, со-
резаписываемого набора (существует также альтернатив- держащий счетчик свободных блоков. К нему применяет-
ное определение минимального перезаписываемого набо- ся аналогичная техника, позволяющая многим атомам мо-
ра, который аналогичен обычному за исключением следу- дифицировать этот счетчик.
ющих условий: если по крайней мере 3 грязных блока име-
ют общего чистого родителя, тогда их родитель добавляет- Странствующее журналирование
ся в этот минимальный набор, а сами блоки перемещают- Алгоритм журналирования reiser4 размещает и записы-
ся в relocate-группу. Эта оптимизация будет сохранена для вает странствующие блоки и поддерживает дополнитель-
последующих версий). ные дисковые структуры атома – wander-записи (по 1 бло-
В зависимости от системы и рабочей нагрузки можно ку на запись), каждая из которых содержит общую инфор-
выбрать одну из трех политик журналирования: мацию о транзакции и таблицу отображений странствую-
 Always Relocate – эта политика включает блок в перераз- щих блоков на их реальные координаты.
мещаемый набор в любом случае, сокращая количество Дисковая структура транзакции такова:
блоков, сбрасываемых на диск (оптимизирует запись).
Transaction header, Wander records [0,n]
 Never Relocate – эта политика отключает переразме- 1-st block
Wander record header wander entries [0,n]
щение. Блоки всегда пишутся в оригинальное местопо-
tx_header wander_record_header wander_entry
ложение с журналированием через перезапись, дерево
не изменяется (оптимизирует чтение). В приложении можно посмотреть, как именно опреде-
 Левый сосед – эта политика перемещает блок в близ- лены в reiser4 соответствующие структуры данных.
жайшее к его левому соседу возможное место (в по- Для управления журналом в reiser4 существуют 2 бло-
рядке дерева). Если данная позиция занята некоторым ка, имеющие фиксированное положение на диске: заголо-
блоком выполняющегося атома, политика делает блок вок журнала (содержит указатель на последнюю зафикси-
членом перезаписываемого набора. рованную транзакцию) и journal footer (указатель на пос-

24
администрирование
леднюю сброшенную странзакцию). Атомарная запись за- ражением меток плагинов на внутренние идентификаторы
головка журнала показывает, что транзакция зафиксиро- типа reiser4_plugin_type, хранящиеся в объектах ФС.
вана (т.е. переживет сбой), а запись journal footer – что вы- Метки плагинов имеют значение для пользовательско-
полнены все постфиксационные записи (т.е. транзакция го интерфейса, назначающего плагины объектам, и в буду-
полностью завершена, все блоки записаны по своим мес- щем станут использоваться для их динамической загрузки.
там). После удачной записи footer все странствующие бло- Идентификатор типа reiser4_plugin_type является индексом
ки и wander-записи освобождаются. в статическом массиве plugins[].
В заголовке каждой транзакции и в journal footer-бло- Объект ФС, в соответствие которому поставлен плагин
ке есть место для журналирования полей суперблока, со- некоторого типа, назван без лишних премудростей субъек-
держащих счетчик свободных блоков, количество файлов том этого типа и его конкретной инстанции. С каждым субъ-
в ФС и минимальный доступный ObjectID. ектом плагин может хранить некоторое состояние (для этого
Процесс фиксации атома включает в себя несколько в stat-data есть специальное расширение reiser4_plugin_slot).
стадий: Например, состояние директорного плагина (является инс-
 Подсчитывается размер перезаписываемого набора танцией объектного типа) есть указатель на хэш-плагин.
атома. В дополнение к числовому идентификатору каждый тип
 Вычисляется необходимое количество wander-записей, и каждая инстанция имеют текстовую метку (короткую стро-
размещаются необходимые для них блоки. ку) и определение (длинную строку), жестко кодированные
 Размещаются странствующие блоки и заполняются в массиве plugins[]. По этой паре плагин также может быть
wander-записи. надежно идентифицирован.
 Странствующие блоки и wander-записи направляются С каждым inode (окрытым файлом) ассоциирован це-
на запись. лый набор плагинов. Хранить указатели на них в каждом
 Ожидается завершение I/O. inode – непростительная потеря памяти. Вместо этого reiser4
 Обновляется заголовок журнала: указатель last_ поддерживает несколько глобальных структур данных ти-
commited_tx устанавливается на блок tx_header дейс- па struct plugin_set, каждая из которых хранит набор пла-
твующей транзакции, модифицированный блок заго- гинов для объекта конкретного типа. Inode содержит толь-
ловка журнала направляется на запись и ожидается за- ко указатель на plugin_set своего типа.
вершение I/O. Структуры данных, используемые плагинной инфра-
структурой, а также возможные типы и реализованные ин-
Сброс атома: станции описаны в файлах:
 Перезаписываемый набор атома пишется по оригиналь-  plugin/plugin.[ch]
ным координатам.  plugin/plugin_header.h
 Ожидается завершение I/O.  plugin/plugin_set.[ch]
 Обновляется footer журнала: указатель last_fulshed_tx
устанавливается на блок tx_header текущего атома. Заключение
Footer-блок направляется на запись. Хотелось бы отметить, что за год эксплуатации на моей ра-
 Ожидается завершение I/O. бочей станции reiser4 показала себя достаточно стабильной
 Освобождается дисковое пространство, выделенное и быстрой файловой системой. Всем, у кого есть время, –
странствующим блокам и wander-записям (вносятся из- рекомендую попробовать ее хотя бы на домашней маши-
менения в рабочие битовые карты, на диск ничего не пи- не, где ущерб от возможной потери данных не столь велик
шется). (хотя сам я уже давно не имею с reiser4 ни каких проблем,
багрепорты в рассылку разработчиков поступают еще до-
Нетрудно понять, что, когда процедура восстанов- статочно часто).
ления ищет незавершенные транзакции, она сравнива- В vanilla-ядра драйвер reiser4 пока не включается,
ет значения полей last_commited_tx (заголовок журнала) постоянно доступен только в -mm ветке Эндрю Морто-
и last_flushed_tx (journal footer), и если они не равны – на- на (Andrew Morton): www.kernel.org/pub/linux/kernel/people/
чинает движение по кольцевому списку wander-записей, akpm/patches/2.6.
сбрасывая (flush) все транзакции, которые ФС успела за- На ftp-сайте разработчиков (ftp://namesys.com/pub/
фиксировать до сбоя. reiser4-for-2.6) также можно найти неофициальные reiser4-
Более подробно об описанных выше механизмах можно патчи для некоторых vanilla-ядер, правда, выходят они
почитать в комметариях файлов wander.[ch] и в [3]. с некоторым опозданием и практически не сопровож-
даются.
Плагинная инфраструктура
Все плагины reiser4 классифицируются по нескольким Источники:
типам. Плагины одного типа называются его инстанция- 1. Исходные тексты драйвера reiser4.
ми. Метка в виде пары (type_label, plugin_label) уникальна 2. Hans Reiser «Reiser4 whitepaper» – www.namesys.com/v4.html.
и является глобально устойчивым, видимым пользователю 3. Joshua MacDonald, Hans Reiser, Alex Zarochentcev, «Reiser4
идентификаторм плагина. Внутри ядра поддерживаются transaction design document» – www.namesys.com/txn-doc.html.
массивы, индексами в которых и являются эти числа. Также 4. Edward Shishkin, «Reiser4 cryptcompress regular files» –
поддерживаются статические словари, являющиеся отоб- www.namesys.com/cryptcompress_design.html.

№4, апрель 2006 25


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

Создаем порт для FreeBSD своими руками


Часть II: расширенные возможности

Рашид Ачилов
В первой части статьи мы рассмотрели основные вопросы создания порта для FreeBSD
своими руками. Но система сборки программ, используемая во FreeBSD, имеет значительно
большие возможности, чем те, которые мы задействовали. Какие это возможности и как их
использовать в своих портах?

Расширенные возможности системы Кроме того, в зависимости от заданного набора парамет-


Скромный размер нашего первого порта и его достаточ- ров можно включать или исключать некоторые компоненты.
ная простота не позволила нам рассмотреть все возмож- Это особенно существенно, когда эти компоненты весят де-
ности системы портов. В этом опять же проявляется ее до- сятки мегабайт (например, порт editors/openoffice2).
стоинство – не нужно знать много для построения сравни- Работа с внешними патчами также крайне важна, осо-
тельно простого порта. Но зачастую бывает так, что необ- бенно когда автор программы не желает контактировать
ходимо реализовать некую собственную функцию по обра- и исправлять код. В таком случае патч либо размещается
ботке исходного текста или проверить наличие некоторой непосредственно в дереве портов, либо (как правило, если
программы до начала установки своей. Сразу же возникает он довольно объемный) выкладывается на некоторый сайт
вопрос – пытаться реализовать это своими силами или же и указывается с помощью PATCH_SITES.
это уже было кем-то когда-то реализовано? Задание параметров сборки порта значительно повы-
Расширенные возможности системы сборки портов, ко- шает удобство работы с ним. Многие порты имеют не один
торые мы не использовали в первой части и которые мож- десяток переменных «WITH_FOO=yes WITHOUT_BAR=yes»,
но использовать, это: которые не то, что набрать в командной строке – запомнить
 Многофайловые дистрибутивы с возможностью отбо- непросто! Например, порт graphics/ImageMagick имеет 26 пе-
ра файлов в зависимости от заданного набора пере- ременных типа «WITHOUT_IMAGEMAGICK_SOME=yes». Ес-
менных. ли бы автор порта сделал экран опций, работать с таким
 Внешние патчи, которые можно подключать в зависи- портом было бы гораздо проще.
мости от заданного набора переменных. Дополнение или замена части процедур создания пор-
 Задание параметров сборки порта с помощью полно- та – это крайне важные возможности системы. Перечень
экранного текстового режима OPTIONS, с возможнос- основных шагов системы, выполняемых при создании про-
тью дальнейшего хранения и редактирования этих па- граммы, был уже приведен в [1]. Но возможно ли, скажем,
раметров. установить через систему портов бесплатную програм-
 Дополнение или замена части процедур создания про- му с закрытым исходным текстом? Думаете, нет? Можно.
граммы из порта. И именно для этого были реализованы механизмы допол-
нения и/или замены части процедур сборки порта. Мы рас-
Возможность работы с многофайловыми дистрибутива- смотрим их в соответствующем разделе.
ми позволяет указать, с какого из перечисленных сайтов А теперь пора перейти от слов к делу.
нужно загружать указанный файл. Допустим, программа
состоит из файлов file1.tgz и file2.tgz. File1.tgz присутствует Многофайловые дистрибутивы
только на двадцатом из перечисленных MASTER_SITES, и внешние патчи
в то время как file2.tgz – всюду. Система будет попусту об- Обычно программа состоит всего из одного файла архи-
шаривать девятнадцать сайтов. Это не страшно, когда де- ва. Но порт зачастую состоит не только из архива исход-
лается автоматом, но ужасно нервирует, когда спешишь. ных текстов программы – в него могут входить дополни-

26
администрирование
тельные архивы, файлы данных, файлы драйверов, допол- В данном фрагменте файл gsi-2005-01-20-sorted.txt.bz2
нительные файлы, используемые в процессе построения. будет скачиваться сначала с http://ootrans.i-rs.ru/out, потом
Хорошо, конечно, когда есть свой собственный ftp-сервер, с ftp://ftp.i-rs.ru/pub/openoffice/1.1.4/ru, а файл OOo_1.1.4_
в надежности которого не сомневаешься. infra_patches.tar.gz – сначала с ftp://ftp.i-rs.ru/pub/openoffice/
В этом случае файлы дистрибутива просто перечис- 1.1.4/ru, потом с ftp://ftp.granch.ru/pub/openoffice.
ляются: Когда стоит пользоваться такой возможностью? Когда
порт может состоять из большого количества файлов и хо-
DISTFILES= file1.tar.bz2 \ чется сделать возможность обойтись без загрузки файлов,
file2.tar.bz2 \
file3.tar.bz2 которые не нужны.
Например, это не было сделано в порту editors/openoffice-
при этом все данные файлы будут последовательно за- 1.1, и в результате чего исходные тексты Mozilla Suite (обь-
прошены со всех перечисленных сайтов в MASTER_SITES ема немалого – 35 Мб) загружались независимо от жела-
и с основного сайта FreeBSD, если они не будут обнаруже- ния пользователя ее использовать.
ны. Но что же делать тем, кто не имеет собственных серве- Использование внешних патчей во многом похоже на за-
ров и размещает файлы на публичных хостингах? Для это- грузку файлов исходного кода программы, только здесь ис-
го в системе есть специальная возможность связывания пользуются переменные PATCH_SITES и PATCHFILES:
определенных файлов и определенных сайтов так, чтобы
при поиске файлов система просматривала только неко- PATCH_SITES= ftp://ftp.cis.upenn.edu/pub/xv/
PATCHFILES= ${DISTNAME}.JPEG-patch ${DISTNAME}.TIFF-patch \
торые определенные сайты. Эта возможность называет- croppad.patch grabpatch vispatch \
ся «MASTER_SITES:n». deepcolor.patch gifpatch exceed_grab.patch \
tiff1200.patch gssafer.patch
Возьмем приведенный выше пример. Допустим, у нас
имеются веб-сайты www.foobar.com и www.nichego.net. Сайт Имейте в виду, что патчи, заданные в PATCHFILES, при-
www.foobar.com находится за рубежом, имеет быстрый и на- меняются до применения патчей из подкаталога files! То есть
дежный канал. www.nichego.net находится в г. Тьмутара- последовательность действий будет выглядеть так:
кани и подключен к Интернету через модем на 28.8 кБит.
===> Patching for xv-3.10a_5
Как сделать так, чтобы система брала только file1.tar.gz ===> xv-3.10a_5 depends on file: /usr/local/bin/perl5.8.7 - found
с www.nichego.net, а остальные – с www.foobar.com? Нужно ===> Applying distribution patches for xv-3.10a_5
===> Applying FreeBSD patches for xv-3.10a_5
ассоциировать метки и с файлами, и с сайтами:
Когда стоит использовать внешние патчи? Разработчи-
DISTFILES= file1.tar.bz2 \ ки обычно используют их, чтобы избежать выпуска ново-
file2.tar.bz2:foobar \
file3.tar.bz2:foobar го релиза программы (так обычно поступают разработчи-
MASTER_SITES= http://www.foobar.com/:foobar \ ки Squid – вместо выпуска нового релиза они выкладыва-
http://www.nichego.net
ют патчи значительного обьема), авторы портов, не являю-
Если метка отсутствует, считается, что файл (сайт) щиеся разработчиками программы, – чтобы внести в исход-
имеет метку по умолчанию DEFAULT. Явно задавать ее ный текст изменения, с которыми автор может быть не со-
не следует, разве что требуется перечислить несколько гласен, если они достаточно обьемные и их нельзя помес-
групп и DEFAULT в том числе. Система свяжет DISTFILES тить непосредственно в дерево портов, для расширения
и MASTER_SITES, используя метки, и загрузит файлы функциональности и т. д.
в следующей последовательности: сначала file1.tar.bz2 Следует учесть то, что если патч не создан с использо-
с http://www.nichego.net, потом file2.tar.bz2 и file3.tar.bz2 ванием стандартной процедуры diff, то его нельзя приме-
с http://www.foobar.com. нять описанным методом и необходимо предусмотреть для
Можно было бы сделать, чтобы и файл file1.tar.bz2 тоже него специальную обработку (см. пример в описании пор-
сначала проверялся на http://www.foobar.com, а уже потом – та для OpenOffice).
на http://www.nichego.net. Для этого нужно www.foobar.com
включить также и в группу DEFAULT: Опции
Если программа сложная, то, как правило она предлагает
MASTER_SITES= http://www.foobar.com/:foobar,DEFAULT множество различных вариантов построения – с исполь-
зованием такой-то возможности, без использования та-
Один и тот же файл может входить в несколько групп. кой-то возможности... Некоторые порты сначала проводят
Равным образом в одну группу могут входить несколько «автоматическое обнаружение» некоторых задействуе-
файлов. Естественно, допускается использование подста- мых компонент, а уже потом устанавливают переменные,
новки переменных: включающие или отключающие различные возможнос-
ти, а некоторые оставляют это на усмотрение пользовате-
GSI_VERSION= 2005-01-20 ля. Если пользователь об этом не подозревает, то он мо-
DISTFILES+= gsi-$(GSI_VERSION)-sorted.txt.bz2: ↵
oorus,oorus2 жет так никогда ими и не воспользоваться. Одним из при-
INFRA_PATCHEXT= OOo_1.1.4_infra_patches меров того, как делать ни в коем случае не надо, я считаю
DISTFILES+= ${INFRA_PATCHEXT}.tar.gz:DEFAULT,oorus
MASTER_SITES+= http://ootrans.i-rs.ru/out/:oorus порт graphics/ImageMagick. Мало того, что там 26 перемен-
MASTER_SITES+= ftp://ftp.i-rs.ru/pub/openoffice/1.1.4/ ↵ ных, так еще пользователь даже не оповещается, что они
ru/:oorus2
MASTER_SITES+= ftp://ftp/granch.ru/pub/openoffice вообще есть!

№4, апрель 2006 27


администрирование
иначе ни одна переменная WITH_SOMEWHERE распозна-
на не будет. Обработка же переменных выполняется стан-
дартным образом – с помощью условия if задаются допол-
нительные параметры для configure, зависимости, подста-
новки для pkg-plist и т. д.

.if defined(WITH_SAM_XML)
LIB_DEPENDS+= xml2.5:${PORTSDIR}/textproc/libxml2
CONFIGURE_ARGS+= --with-xml-prefix=${LOCALBASE}
WANT_EXPSAM_MODULES+= xml
PLIST_SUB+= SAMXML=""
.else
PLIST_SUB+= SAMXML="@comment "
.endif

Комбинация проверяемых условий может быть доволь-


но сложной. В качестве примера того, как могут использо-
Рисунок 1. Появилась возможность задавать опции ваться значения опции, лучше всего рассматривать порт
в полноэкранном текстовом режиме
net/samba3 – в нем очень много опций, есть на что пос-
В результате строка запуска сборки порта может выгля- мотреть.
деть, например,таким образом: Ну и наконец самый интересный раздел – замена/допол-
нение стандартных обработчиков Makefile при сборке порта.
# make WITHOUT_IMAGEMAGICK_JPEG=yes ↵ Как уже было сказано в [1], сборка порта состоит из после-
WITH_WINDOWS_FONT_DIR=/tmp/blabla ↵
WITHOUT_IMAGEMAGICK_PNG=yes ↵ довательности выполнения ряда мишеней, которые в свою
WITHOUT_IMAGEMAGICK_BZIP2=yes ... очередь делятся на подмишени pre-something, do-something
и post-something (есть еще специальные мишени, описание
Кроме того, что это просто очень долго набирать, попро- их см .в bsd.port.mk). Для чего это было сделано? Для того
буйте-ка вспомнить, какие там опции задавались при пре- чтобы иметь возможность воздействия на процесс создания
дыдущей сборке полгода назад? Разумеется, это крайне порта – что-нибудь изменить, вывести сообщение, создать
неудобно, и некоторое время назад в системе появилась файл или каталог и т. д. Как следует из названия, подми-
возможность задавать опции в полноэкранном текстовом шени pre-somethnig и post-something выполняются соответс-
режиме (см. рис. 1). твенно до и после мишени something. Например, последо-
Все опции, перечисленные на экране, задаются и от- вательность распаковки будет такова: pre-extract, do-extract,
меняются простым нажатием пробела, результат выбора post-extract. При этом, если подмишень do-something не опи-
будет сохранен и использован при последующих сборках сана, будет выполняться стандартная системная обработка.
порта. В любое время его можно изменить, выполнив ко- Обратите внимание, что, если мишень do-something описа-
манду: на, она замещает стандартную мишень и вся ответствен-
ность за выполнение данного шага ложится на майнтайне-
# make config ра порта, то есть, например, даже если в Makefile, идущем
с программой, есть мишень install, то при наличии в Makefile
Формируется экран опций следующей командой порта подмишени do-install мишень install из Makefile про-
в Makefile: граммы не будет выполнена никогда!
Дополнение стандартных мишеней очень широко исполь-
OPTIONS= LDAP "With LDAP support" on \ зуется для вывода различных сообщений в процессе сборки
ADS "With Active Directory support" off \
CUPS "With CUPS printing support" on \ порта, создания каких-либо файлов и т. д. Например:
WINBIND "With WinBIND support" on \
ACL_SUPPORT "With ACL support" off \ pre-extract:
SAM_XML "SAM with XML support" off @${ECHO_MSG} ""
@${ECHO_MSG} "For debugging information support ↵
Первый параметр задает имя опции, которое потом бу- you should specify"
@${ECHO_MSG} "WITH_DEBUG=yes (press Ctrl-C here ↵
дет использовано в переменной WITH_*. Например, для пер- and start make WITH_DEBUG=yes)"
вого параметра имя переменной будет WITH_LDAP. Второй @${ECHO_MSG} ""
@sleep 2
параметр задает текст комментария, который будет выве- post-deinstall:
ден справа от соответствующей опции, и третий – значе- @${ECHO_MSG} ""
@${ECHO_MSG} "Do not forget delete filter ↵
ние по умолчанию. При указании «on» опция по умолчанию description from /etc/mail/freebsd.mc"
включена, при указании «off» – выключена. @${ECHO_MSG} "and rebuild sendmail.cf file!"
@${ECHO_MSG} ""
Хорошо, опции заданы. Как их обработать? pre-configure:
Прежде всего необходимо отметить, что при использо- .if defined(WITHOUT_RC_NG)
@${SED} -e "s=%%PREFIX%%=${PREFIX}=" ↵
вании OPTIONS включение файла bsd.port.mk следует за- ${FILESDIR}/milter-sid.sh \
менить на: > ${WRKSRC}/milter-sid.sh
.endif

.include <bsd.port.pre.mk> Заменять обработчики мишеней (создавать секции


# processing WITH_SOMEWHERE here
.include <bsd.port.post.mk> do-something) [2] не рекомендует, но тем не менее это единс-

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

№4, апрель 2006 29


администрирование
твенный путь для установки программ с закрытым исход- ливает собственно скрипты идет команда создания катало-
ным кодом, а также скриптов и программ, упакованных га для документации – система сама не будет делать ничего,
нестандартным образом. Например, мне встречалась про- все необходимые каталоги должны быть созданы портом.
грамма, дистрибутив которой был упакован в архив фор- Такая странная форма записи команды означает что:
мата ZIP, внутри котрого находился архив .tar.bz2 и файл  если команда завершается неудачно, например, такой
сигнатуры .sig. Для распаковки нужно было сначала распа- каталог уже существует, то make не прекращает рабо-
ковать архив ZIP, потом проверить сигнатуру, а только по- ту (минус перед командой);
том – распаковывать .tar.bz2.  команда не отображается на терминале (знак @ перед
Но довольно теории. Рассмотрим в качестве приме- командой).
ров два порта, которые были мной созданы в разное вре-
мя – порт для скрипта монтирования сетевых ресурсов Потом идет второй цикл, который устанавливает фай-
Windows при входе в систему mountsmb2 и доработка к пор- лы примеров в каталог, который для этого предваритель-
ту OpenOffice 1.1.4. но создается, создается каталог документации и в него ко-
пируется файл README.FreeBSD.
Mountsmb2 Команда sed подготавливает файл pkg-message к отоб-
Набор скриптов mountsmb2 (там их три) был написан мной ражению. В файле, который распространяется вместе с пор-
достаточно давно и преследовал тольк одну цель – ав- том присутствует макроподстановка %%EXAMPLESDIR%%,
томатически монтировать SMB/CIFS-сетевые ресурсы которая, перед тем как это сообщение будет показа-
от других Samba-серверов и компьютеров под управлени- но пользователю, заменяется на значение переменной
ем Windows. Поскольку это скрипт, написанный на языке ${EXAMPLESDIR}. Чтобы не изменять оригинальный файл
командной оболочки sh, то никакой сборки порта не тре- pkg-message (возможно, в следующий раз установка бу-
буется и именно поэтому этот порт будет рассмотрен в ка- дет проходить с другим значением ${EXAMPLESDIR}), ста-
честве примера. рый файл сохраняется, измененный файл удаляется, ста-
рый файл переименовывается в оригинальное имя. Порт
PORTNAME= mountsmb2 несложный, но он демонстрирует, как можно использовать
PORTVERSION= 0.90.1
CATEGORIES= sysutils net заменяющие подмишени. При создании таких портов сле-
MASTER_SITES= ftp://ftp.granch.ru/pub/other/ дует быть предельно внимательными – помните, что любой
MAINTAINER= shelton@granch.ru каталог, не входящий в стандартное дерево каталогов, опи-
COMMENT= SMB/CIFS shares mounting scripts ↵ санное в bsd.local.mk, имеет право не существовать и дол-
to do it at login
RUN_DEPENDS= findsmb:${PORTSDIR}/net/samba3 \ жен быть предварительно создан.
sudo:${PORTSDIR}/security/sudo \
gawk:${PORTSDIR}/lang/gawk
USE_BZIP2= yes Модификация порта OpenOffice 1.1.4
NO_BUILD= yes С моей точки зрения, порт для сборки OpenOffice editors/
.include <bsd.port.pre.mk>
do-install: openoffice имел множество недостатков, но эти изменения
.for i in smb2awk smb2nsmbrc mountsmb2 я никогда не пробовал отправить во FreeBSD Team для по-
${INSTALL_SCRIPT} ${WRKSRC}/${i} ${PREFIX}/bin
.endfor мещения их в дерево портов. Какие изменения были вне-
-@${MKDIR} ${EXAMPLESDIR} сены мной:
.for i in sudoers .login .nsmbrc .mssmbrc
${INSTALL_DATA} ${WRKSRC}/${i} ${EXAMPLESDIR}  возможность отказаться от сборки Mozilla Suite, нужной
.endfor только для работы с адресной книгой формата Mozilla;
-@${MKDIR} ${DOCSDIR}
${INSTALL_DATA} ${WRKSRC}/README.FreeBSD ↵  возможность загрузить и применить последний (на тот
${DOCSDIR} момент) файл локализации интерфейса;
@${SED} -e "s,%%EXAMPLESDIR%%,${EXAMPLESDIR},g" ↵
-i .old ${PKGMESSAGE}  возможность загрузить и применить внешние патчи, со-
@${CAT} ${PKGMESSAGE} зданные в «Инфра-Ресурс» для версии для Linux.
@${RM} -f ${PKGMESSAGE}
@${MV} ${PKGMESSAGE}.old ${PKGMESSAGE}
.include <bsd.port.post.mk> Порт на самом деле состоит из двух файлов – editors/
openoffice-1.1 и russian/openoffice. Makefile порта russian/
В RUN_DEPENDS перечисляются все порты, от которых openoffice-1.1 достаточно прост:
зависит данный скрипт, а именно GNU AWK, sudo и Samba,
из которой на самом деле нужна только программа findsmb. CATEGORIES= russian
.if !defined (LANG) && !defined(USE_LANG)
«USE_BZIP2=yes» указывает на то, что дистрибутив упако- USE_LANG= ru_RU.KOI8-R
ван программой bzip2. «NO_BUILD=yes» указывает на то, .endif
LANG_LIST= ru_RU.KOI8-R uk_UA.KOI8-U
что программа не требует сборки. Если этого не указать, LANG_PKGNAME= ru
то система будет пытаться выполнить команду make в ката- LANG_EXT= 07
LANG_CONFIGURE_ARG= RUSS
логе порта, не найдет Makefile и аварийно завершится. MASTERDIR= ${.CURDIR}/../../editors/openoffice-1.1
Инсталляцией порт управляет самостоятельно – USE_RUSSIAN_GSI= yes
USE_INFRA_PATCHSET= yes
в Makefile присутствует заменяющая подмишень do-install. .include "${MASTERDIR}/Makefile"
Здесь хорошо видно, как можно организовать цикл, кото-
рый установит несколько файлов, перечисленных в списке, При запуске make в каталоге editors/openoffice-1.1 по-
в указанное место. После первого цикла, который устанав- лучаем OpenOffice c английским интерфейсом и справ-

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

№4, апрель 2006 31


администрирование
кой, при запуске в каталоге russian/openoffice – с русским Для работы с файлом трансляции интерфейса пот-
интерфейсом. Достигается это таким же образом, как лю- ребуется начальная обработка его программой transex3,
бой порт включает в себя bsd.port.mk, – командой .include. что и задается соответствующим параметром.
Только здесь параметром команды является имя так назы- Также устанавливается имя скрипта, который запустит
ваемого «мастер-порта», то есть порта, в котором делается эту программу. Это небольшой скрипт, который будет со-
вся обработка. Это очень широко распространённый прием здан автоматически. Кроме того, задается имя распако-
для крупных проектов – создается один мастер-порт и не- ванного файла трансляции элементов интерфейса и имя
сколько портов, в которых только определяются некоторые программы, которая будет использована для наложения
переменные. Так работают postgresql, openldap, php и мно- патчей.
жество других портов. В приведенном выше примере мной Переходим к реальным действиям:
были добавлены переменные «USE_RUSSIAN_GSI=yes»
и «USE_INFRA_PATCHSET=yes», использование которых .if defined(USE_RUSSIAN_GSI)
@${ECHO_MSG} "===> Extracting russian GSI file"
будет видно в коде из основного порта. Основной порт че- @${MKDIR} ${WRKDIR}/${GSI_DIR}
ресчур громоздок, чтобы приводить его весь, я приведу @${CP} ${DISTDIR}/${DIST_SUBDIR}/ ↵
gsi-${GSI_VERSION}-sorted.txt.bz2 ${WRKDIR}/ ↵
только некоторые фрагменты. ${GSI_DIR}
@cd ${WRKDIR}/${GSI_DIR} && \
${BZIP2_CMD} -d gsi-${GSI_VERSION}-sorted.txt.bz2
.if defined(USE_RUSSIAN_GSI) .endif
MASTER_SITES+= http://ootrans.i-rs.ru/out/:oorus .if defined(USE_INFRA_PATCHSET)
.endif @${ECHO_MSG} "===> Extracting Infra patches set"
.if defined(USE_INFRA_PATCHSET) @${MKDIR} ${WRKDIR}/${INFRA_PATCHDIR}
MASTER_SITES+= ftp://ftp.i-rs.ru/pub/openoffice/1.1.4/ru/:oorus @${CP} ${DISTDIR}/${DIST_SUBDIR}/ ↵
.endif ${INFRA_PATCHEXT}.tar.gz ${WRKDIR}/ ↵
${INFRA_PATCHDIR}
Эти строки были внесены сразу же после списка @cd ${WRKDIR}/${INFRA_PATCHDIR} && \
${TAR} -xzvf ${INFRA_PATCHEXT}.tar.gz
MASTER_SITES. Они задают сервера, откуда будут загру- .endif
жаться необходимые файлы и устанавливают группу, кото-
рая будет впоследствии связана с файлами дистрибутива. Копируем упакованный файл трансляции интерфей-
са из /usr/ports/distfiles/openoffice (задана DIST_SUBDIR)
.if !defined(WITHOUT_MOZILLA) в каталог, который был создан заранее, и распаковыва-
DISTFILES+= ${MOZILLA_PROJECT}:moz \
${MOZILLA_SOURCE}:mozsrc ем его архиватором bzip2. Копируем архив патчей «Инф-
USE_GNOME+= orbit gtk12 ра-Ресурс» в другой, предварительно созданный каталог
.endif
.if defined(USE_RUSSIAN_GSI) и распаковываем его, но уже программой tar. Обратите вни-
GSI_VERSION= 2005-01-20 мание, что все команды параметризированы, – всюду ис-
GSI_DIR= rusgsi
DISTFILES+= gsi-$(GSI_VERSION)-sorted.txt.bz2:oorus пользуется ${PROGRAM}, а не /bin/program!
.endif
.if defined(USE_INFRA_PATCHSET) post-patch:
INFRA_PATCHDIR= infrapatch .if defined(USE_INFRA_PATCHSET)
INFRA_PATCHEXT= OOo_1.1.4_infra_patches @${ECHO_MSG} "===> Patching OOo with Infra patches set"
DISTFILES+= ${INFRA_PATCHEXT}.tar.gz:oorus @cd ${WRKDIR}/${INFRA_PATCHDIR}/${INFRA_PATCHEXT} && \
.endif ${SH} ${INFRA_PATCHER}
.endif
Вот именно эта доработка позволила мне уменьшить
сборку порта часа на два. Задание «WITHOUT_MOZILLA=yes» Дополняем мишень patch подмишенью post-patch, в ко-
исключит из списка DISTFILES файлы исходного кода торой собственно и запускаем скрипт, вносящий изменения.
Mozilla Suite, и, следовательно, загружаться они не будут. Обратите внимание – записать это в две строки нельзя! Ес-
Другие условия дополняют список DISTFILES файлами, ли записать команды cd и запуск скрипта на разных стро-
содержащими модификации интерфейса (gsi-2005-01-20- ках, то запуск скрипта произойдет не из каталога, в кото-
sorted.txt.bz2), и набором патчей от «Инфра-Ресурс», зада- рый перешли командой cd, а из текущего, потому что make,
ют имена каталогов, в которые они будут распаковываться выполнив запрошенное действие, возвращается в каталог,
и привязывают их к серверу в группу oorus. из которого она была запущена. Точно так же выполняют-
ся все другие действия, связанные со сменой каталога, –
# When USE_RUSSIAN_GSI was defined, ensure, that например распаковка файлов.
# PREBUILD_TRANSEX3 and RUSSIAN_GSI were also defined
.if defined(USE_RUSSIAN_GSI)
.if !defined(PREBUILD_TRANSEX3) .if defined(PREBUILD_TRANSEX3)
PREBUILD_TRANSEX3= yes @${ECHO_MSG} "===> Pre-build TRANSEX3"
GSI_PREBUILD= ${WRKDIR}/${GSI_DIR}/btransex @${ECHO} "source ${WRKSRC}/FreeBSDEnv.Set"
.endif > ${GSI_PREBUILD}
.if !defined(RUSSIAN_GSI) @${ECHO} "cd transex3 && build --all && deliver"
RUSSIAN_GSI= ${WRKDIR}/${GSI_DIR}/ ↵ >> ${GSI_PREBUILD}
gsi-${GSI_VERSION}-sorted.txt @${CHMOD} +x ${GSI_PREBUILD}
.endif @cd ${WRKSRC} && PATH="${PATH}:${LOCALBASE}/ ↵
.endif bin:${LOCALBASE}/sbin" && ${TCSH} ${GSI_PREBUILD}
# When USE_INFRA_PATCHSET was defined, ensure, .endif
# that INFRA_PATCHER was also defined .if defined(USE_RUSSIAN_GSI)
.if defined(USE_INFRA_PATCHSET) @${ECHO_MSG} "===> Build russian GSI"
INFRA_PATCHER= ${WRKDIR}/${INFRA_PATCHDIR}/ ↵ @cd ${WRKSRC} && PATH="${PATH}:${LOCALBASE}/ ↵
${INFRA_PATCHEXT}/do_infrapatch bin:${LOCALBASE}/sbin" && ${TCSH} ↵
.endif -c 'source FreeBSDEnv.Set && localize -m -i ru-RU ↵

32
администрирование
-l ${LANG_EXT} -f ${RUSSIAN_GSI}' зависимость от программы без номера в имени. Напри-
.endif
мер: «USE_AUTOTOOLS=libtool:15» задает зависимость
Первая часть задает предварительную сборку програм- от devel/libtool15, но «USE_AUTOTOOLS=libtool» задает
мы transex3, для чего формируется скрипт, затем осущест- зависимость от devel/libtool, что может быть совсем не
вляется переход в каталог с распакованными исходниками одно и то же!
и запуск сборки. Обратите внимание, как передается зна-  USE_GNOME=<список компонентов через пробел> –
чение переменной PATH. Вторая часть задает обработку задает зависимости от перечисленного списка компо-
исходных текстов OpenOffice согласно новому файлу ло- нентов GNOME. Например, приведенная выше строка:
кализации интерфейса. «USE_GNOME+= orbit gtk12» задает зависимости от ком-
Полный текст Makefile из editors/openoffice-1.1 с внесен- понентов devel/orbit и x11-toolkits/gtk12. При задании за-
ными мной изменениями можно скачать с [3]. Этот файл висимостей следует придерживаться разумного мини-
уже не используется как файл порта, но как образец напи- мума – указывать только те компоненты, которые дейс-
сания Makefile, там есть чему поучиться. твительно нужны для работы. Помните, что подключен-
ные компоненты тоже имеют свои зависимости, которые
Некоторые переменные USE_* могут иметь свои зависимости и т. д. – глубина вложен-
Здесь описаны некоторые наиболее часто используе- ности неограничена.
мые переменные USE_*, не упомянутые до сих пор. Пол-  USE_QT_VER=3 – добавляет зависимость от библиотеки
ный список их значительно больше, смотреть его нужно x11-toolkits/qt33 и неявно подключает файл bsd.kde.mk.
в bsd.port.mk.  USE_LINUX={yes|<число>} – добавляет зависимость
 IGNOREFILES= <список файлов> – задает список фай- от порта emulators/linux-base-8, если не указано <число>.
лов, для которых не выполняется проверка контрольной Если <число> указано, то добавляется зависимость
суммы из distinfo. от порта emulators/linux-base-<число>.
 EXTRACT_ONLY=yes – только распаковать файлы дис-  CONFLICTS=<список портов> – содержит список пор-
трибутива, не выполнять никакой работы по сборке. тов, с которыми может конфликтовать данный порт. Кон-
Как правило, в таком порту применяется заменяющая фликт может выражаться в совпадающих именах ката-
подмишень do-install. логов для установки, совпадающих именах файлов, оди-
 RESTRICTED=yes – запрещает помещать собранный наковых TCP/UDP-портах, невозможность сборки одно-
пакет на FTP или распространять на CD-ROM. Как пра- го порта при наличии другого и прочих причинах. Выра-
вило вследствие лицензионных ограничений. Это не та- жение для списка портов может содержать мета-симво-
кая уже редкость, например такое ограничение имеет лы «*?[]!». Например, «apache*-1.3.[012345]».
виртуальная машина Java.
 NO_CDROM=yes – почти то же самое, только разреша- Заключение
ет помещение на FTP. Наша работа закончена, но жизнь продолжается... Мы рас-
 FORBIDDEN=yes – запрещает сборку из-за уязвимос- смотрели основные возможности системы сборки портов.
тей программы. Однако далеко не для каждого порта требуется такое ко-
 IGNORE=yes – запрещает сборку из-за грубых оши- личество работы – для многих несложных программ порт
бок при сборке программы. Фактически используется от начала до конца, включая отсылку во FreeBSD Team, пи-
для прекращения работы системы по каким-либо причи- шется за полдня. Система сборки портов обладает очень
нам (например, неподдерживаемая версия FreeBSD). большими возможностями. Изучать их все нет необходи-
 BROKEN=yes – запрещает сборку из-за различных оши- мости – всегда можно заглянуть в bsd.port.mk, который
бок. и является главным справочником по ее возможностям.
 USE_ZIP=yes – для распаковки использовать zip. В начале файла идет громадный блок комментария, в ко-
 USE_DOS2UNIX=yes – все тексты перекодировать та- тором перечислены все переменные, которые можно ис-
ким образом, чтобы преобразовать переводы строк пользовать, и даны к ним краткие описания, для чего они
из вида DOS в вид UNIX. предназначены. Число программ, которые работают под
 USE_GCC=<номер> – задает номер версии компиля- FreeBSD, постоянно увеличивается, порты для них пишут-
тора GCC. Я помню только один порт, использовавший ся, как мы теперь видим, обычными людьми, и, создавая
эту USE_* – editors/openoffice на 4.х, имевший по умол- новый порт для программы, которая там в данный момент
чанию GCC 2.95.4. отсутствует, мы не только облегчаем себе жизнь, но и по-
 USE_GETOPT_LONG=yes – для 4.х добавляет зависи- могаем сообществу.
мость от libgnugetopt. Для 5.х и выше уже неактуально –
libgnugeopt перенесена в базовую систему. Литература и ссылки:
 USE_PERL=yes, USE_JAVA=yes, USE_PYTHON=yes, 1. Ачилов Р. Порт для FreeBSD своими руками. Часть первая –
USE_RUBY=yes – добавляют соответствующие зави- основные возможности. Журнал «Системный администра-
симости от интерпретатора соответствующего языка. тор», №3, март 2006 г. – 32-38 с.
 USE_AUTOTOOLS=<tool>:<version> – добавляет зави- 2. Руководство FreeBSD по созданию портов – http://www.ru.freebsd.
симость от некоторой программы из GNU Autotools. Ес- org/doc/ru_RU.KOI8-R/books/porters-handbook/index.html.
ли задана и программа и версия, задает зависимость 3. Доработанный Makefile из порта editors/openoffice-1.1 – ftp://ftp.
от конкретной версии, если версия опущена, то задает granch.ru/pub/openoffice/Makefile.OOo.

№4, апрель 2006 33


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

Автоматизируем установку
программного обеспечения в сети

Андрей Бирюков
Установка программного обеспечения – неотъемлемая часть работы системного
администратора. Есть несколько способов автоматизировать этот процесс.

Н
аверное, каждому из вас приходилось оказываться чами. Поэтому об этих продуктах компании Microsoft речь
в ситуации, когда необходимо быстро на всех ма- сегодня вести не будем. Но если у нас есть Active Directory,
шинах в сети установить какое-либо программное то нам доступно такое мощное средство управления про-
обеспечение. Конечно, многие приложения позволяют осу- граммным обеспечением, как Group Policy.
ществлять удаленную установку, автоматическую установ- В Group Policy за установку приложений отвечает ком-
ку с помощью файлов ответов (Unattended setup) или же понента Software Installation and Maintenance, которая есть
с помощью заранее подготовленных образов дистрибути- как в разделе «Computer Configuration → Software Settings»,
ва. Однако в случае, если дистрибутив не содержит каких- так и в «User Configuration → Software settings» (см. рис. 1).
либо средств для автоматического развертывания на боль- Различие между компонентами в этих двух разделах
шом количестве машин, тогда системным администрато- следующее. В Computer Configuration вы можете только на-
рам приходится проводить бесчисленные вечера и выход- значать (Assign) приложение, то есть оно станет доступным
ные дни за установкой данной программы. Предлагаем вам без каких-либо действий со стороны пользователя после
несколько различных способов создания пакетов для авто- следующей загрузки системы. В User Configuration прило-
матизации установки программного обеспечения. жения можно как назначать, так и публиковать (Publish),
при этом после публикации оно становится доступным
Групповая политика как основа из окна «Add/Remove» для пользователей, к которым при-
автоматизации меняется данный объект Group Policy. Назначенные при-
Для начала нам необходимо определиться со средством, ложения становятся доступны после входа пользователя
с помощью которого будет осуществляться автоматичес- в систему.
кое развертывание пакетов. В сети на основе Windows мож- В Group Policy можно конфигурировать целый ряд па-
но использовать несколько различных средств, например, раметров, которые определяют, каким образом происходит
Microsoft Systems Management Server (SMS) или Microsoft развертывание и управление для пакетов ПО. Они опреде-
Operations Management (MOM). Однако это достаточно мощ- ляют, как происходит добавление пакетов к объекту Group
ные и, следовательно, дорогостоящие программные про- Policy, уровень управления установкой, доступный для поль-
дукты, требующие специальной подготовки, и использо- зователей, и приложение по умолчанию для заданного рас-
вание которых оправдано лишь в сетях крупных компаний, ширения имен файлов, а также категории, которые можно
где количество компьютеров исчисляется сотнями и тыся- использовать для группирования приложений.

34
администрирование
Для установки приложения с помощью Group Policy не-
обходимо выполнить следующие действия. Открыть раз-
дел Computer Configuration или User Configuration (в зависи-
мости от поставленной задачи). Затем выбрать «Software
Installation → Action → New → Package…». Тут сразу следует
оговориться, что при развертывании с помощью групповой
политики используемый дистрибутив должен представлять
из себя msi или msp файл. О том, что делать в случае, если
наш дистрибутив не является msi/msp-файлом, мы погово-
рим далее. В появившемся окне необходимо указать файл
пакета (msi или msp). Обратите внимание на то, что необхо-
димо указать не локальный, а сетевой путь к данному фай-
лу, так как в противном случае пакет будет недоступен дру-
гим пользователям. Далее выбираем в зависимости от ви-
да установки Assigned или Published. И все, точка распро- Рисунок 1. Групповая политика домена
странения программного обеспечения готова.

Создаем установочный пакет вручную


Итак, с подготовкой средства для развертывания ПО мы ра-
зобрались. Теперь вернемся к тому, с чего начали, а имен-
но – с создания пакета для автоматической установки при-
ложения. В случае, если дистрибутив устанавливаемой про-
граммы уже содержит msi-файл, то можно считать, что у нас
уже есть установочный пакет и необходимо только пропи-
сать его в Group Policy, как это описано выше. Но рассмот-
рим ситуацию, когда есть только установочный файл, на-
пример, setup.exe, при запуске которого задается много раз-
ных вопросов, требуется указать ряд настроек. В докумен-
тации по Windows в такой ситуации предлагают использоть
ZAP-файлы. Это специальный текстовый файл, который
указывает на программу установки для данного приложе-
ния и может при необходимости запускать сценарии авто- Рисунок 2. Настройки установочного пакета в WinInstalLE
матизированной установки. Однако такой вариант установ- Для начала подготовим сборочную машину, которая
ки имеет целый ряд ограничений (например, назначать при- имеет типовую для вашей сети конфигурацию.
ложения пользователям или компьютерам или устанавли- Прежде чем начать установку приложения, необходимо
вать приложения автоматически при первом вызове) и поэ- сделать снимок (snapshot) системы.
тому используется для устаревших приложений, установоч- В WininstalLE это можно сделать с помощью средс-
ные файлы которых нельзя перепаковывать. тва Discover (раздел «File → Run Discover»). Данная утили-
та произведет сканирование системы (при этом для фай-
Делаем снимки системы лов можно выбрать какой диск сканировать, а также ука-
Другой вариант – это создание установочных пакетов с по- зать исключения в каких каталогах и каких ветках реест-
мощью средств третьих производителей. Здесь сразу сле- ра не надо сканировать). Далее будет сделан снимок сис-
дует оговориться, что создание установочных пакетов са- темы в состоянии «Before», то есть до установки системы.
мостоятельно – занятие достаточно рискованное, так как Авторы программы рекомендуют, чтобы перед запуском
по собственному опыту могу сказать, что не бывает аб- Discover на сборочной машине не было установлено ника-
солютно идентичных пользовательских машин, и поэто- ких дополнительных приложений, то есть только операци-
му то, что на одной системе устанавливается без проблем, онная система, но по-моему, лучше, чтобы на сборочной
на другой может вызвать ошибку, зависание и даже пов- машине была именно типовая конфигурация c типовыми
реждение операционной системы. Поэтому прежде чем при- приложениями, используемыми в вашей сети.
ступать к развертыванию свежесозданного пакета на всех После того как снимок будет создан, надо запустить
машинах домена, надо сначала тщательно протестировать, процесс установки нашего приложения. После того как
устанавливая приложение на нескольких машинах домена, приложение успешно установится и все необходимые из-
как правило, этими «испытуемыми» становятся компьюте- менения и настройки будут внесены, необходимо вновь за-
ры сотрудников ИТ-отдела, так как они наиболее подготов- пустить Discover, но в режиме «Perform the ‘After’ snapshot
лены к различным «сюрпризам». now». После этого снова запустится сканирование, по за-
Но если вас вышесказанное не испугало, то можно при- вершении которого будет произведено сравнение изме-
ступать к созданию установочного пакета. В справочнике нений системы до и после установки, и в результате со-
по Windows 2003 [1] для создания msi-пакетов рекоменду- здан msi-файл, фактически являющийся установочным
ется использовать WinInstalLE 2003 [2]. пакетом.

№4, апрель 2006 35


администрирование
сжать msi-файл. Также в этом разделе можно создать hash
для файлов пакета.
После того как все действия по настройке установочно-
го пакета произведены, для того, чтобы создать msi-файл,
достаточно просто сохранить изменения. В результате по-
лучаем каталог, в котором находится msi-файл и также
группа служебных файлов, которые требуются для уста-
новки. Для развертывания необходимо в Group Policy ука-
зать путь к msi-файлу.
Программа WinInstalLE позволяет создавать устано-
вочные пакеты с помощью сравнения различий в снимках
операционной системы до и после установки приложения.
Такой метод, конечно, удобнее, чем создание всего паке-
та вручную, но требует определенных затрат времени, ко-
торое требуется на осуществление создания и сканирова-
Рисунок 3. Главное меню FLEXnet ния снимков. Кроме того, метод сравнения снимков не всег-
да удобен, так как он не позволяет отслеживать измене-
ния в системе, которые производятся в процессе установ-
ки, а для некоторых бизнес приложений это может оказать-
ся принципиальным.
Для создания пакетов посредством мониторинга изме-
нений воспользуемся другой программой.

Отслеживаем изменения на лету


Программа FLEXnet AdminStudio Professional Edition 7.0 поз-
воляет автоматизировать данный процесс. Данный про-
граммный продукт является коммерческим, испытательную
версию можно получить по адресу [3], предварительно за-
регистрировавшись, правда, следует отметить, что дистри-
бутив довольно большой, около 370 Мб, так как программа
включает в себя массу различных функций.
Рисунок 4. Свойства готового пакета Сборочную машину мы готовим аналогичным образом,
то есть разворачиваем типовую конфигурацию.
При необходимости можно произвести редактирование Итак, после запуска Admin Studio мы попадаем на Start
установочного пакета. После запуска WinInstalLE для ре- Page (см. рис. 3).
дактирования msi-пакета нужно, выбрав опцию «Windows Из всего многообразия предлагаемых функциональных
Installer Package» и нажав правую кнопку мыши, указать возможностей программы нас прежде всего интересует раз-
Packages Directory, затем в появившемся списке выбрать дел «Package setup». В этом разделе нам предлагается сна-
уже созданный пакет (см. рис. 2). чала указать выполняемый файл дистрибутива приложения
В разделе «Files» можно добавить какие-то дополни- (как правило setup.exe), а затем – путь к файлу, содержаще-
тельные файлы, которые необходимо создать в процессе му новый установочный пакет. После этого необходимо на-
установки. Пути ко всем этим файлам необходимо указать жать кнопку «Repackage», которая становится активной пос-
в разделе «Files». Также можно прописать удаление либо ле указания требуемых путей. Следует также отметить, что
перенос каких-либо файлов, для случаев если, например, мы можем использовать два метода мониторинга измене-
требуется заменить устаревшие версии некоторых из них ний в системе – это Installation Monitoring и Snapshot. По умол-
более новыми. чанию предлагается использовать Installation Monitoring, нас
Для приложений, использующих промышленные СУБД, это вполне устраивает. После нажатия «Repackage» нам
есть возможность прописать в системе источник данных предлагается указать номер версии, URL производителя
ODBC. Также можно добавить ярлыки установленной про- и другие описания устанавливаемого приложения. Сове-
граммы на «Рабочий стол». Если приложение требует вне- тую здесь вносить осмысленную информацию, так как по-
сения изменений, то в соответствующем разделе свойств том эти описания будут выводиться в свойствах уже уста-
пакета WinInstalLE можно указать нужную ветвь реестра. новленного приложения. Затем указываем путь, где будут
Аналогично, если необходимо запустить какие-либо сер- храниться файлы, создаваемые в процессе установки при-
висы, создать или внести изменения в ini-файлы. Естест- ложения. После этого запускается установочный файл, и на-
венно, при внесении каких-либо изменений в файл паке- чинается процесс установки нашего приложения. При этом
та вручную необходимо точно знать, к каким последстви- в процессе установки можно указывать необходимые на-
ям они могут привести. стройки, путь для установки, править ярлыки для того, что-
Когда все изменения сделаны, в разделе «Actions» мож- бы приложение было доступно пользователям на рабочем
но воспользоваться опцией Compress, которая позволяет столе и т. д. После окончания установки появится окно с ак-

36
администрирование
тивной кнопкой «Process». Окончательно проверив, что наше же подготовить развертывание с помощью уже упоминав-
приложение корректно установилось и запускается, можно шегося в начале статьи продукта Microsoft SMS.
нажать эту кнопку. Admin Studio произведет анализ измене-
ний и затем запустит Repackager (см. рис. 4). Автоматизация управления лицензиями
Здесь мы можем увидеть все изменения, которые бы- На следующую дополнительную возможность программы
ли сделаны в системе в процессе установки. Меню анало- FLEXnet AdminStudio хотелось бы обратить особое внима-
гично тому, что есть в WinInstalLE, но с той лишь разницей, ние, так как эта компонента представляет нам возможность
что все эти изменения были сделаны автоматически в ре- контроля за лицензированием устанавливаемого програм-
зультате мониторинга процесса установки. Если что-ли- много обеспечения. «Выбрав Prepare Application for license
бо из предложенных изменений нас не устраивает, напри- Management», мы попадаем в окно управления лицензия-
мер, не надо создавать какие-то файлы, то здесь это мож- ми. Для начала нам необходимо указать msi-пакет и в от-
но подправить. Когда все необходимые изменения внесе- крывшемся списке файлов выделить те файлы, которые
ны, для окончательного создания установочного пакета на- отвечают за лицензирование приложения, как правило,
до нажать «Build» и затем сохранить изменения. В результа- это exe-файлы. В разделе «Set Limits» устанавливаем ог-
те выполнения всех вышеперечисленных действий мы по- раничения на количество лицензий, дату окончания дейс-
лучаем готовый к развертыванию msi-пакет. Согласитесь, твия, а также реакцию на случай достижения лимита ли-
такой способ создания установочных пакетов намного эф- цензий. Раздел «define Access» позволяет задать ограни-
фективнее и быстрее предыдущего. чения на доступ к лицензиям для определенных узлов или
пользователей. Наконец, в разделе «Configure Connection»
Дополнительные возможности нужно указать файл лицензий сервера FLEXnet. При пер-
Следует особо упомянуть о дополнительных возможнос- вом запуске эту лицензию необходимо запросить по адре-
тях, которые имеются в FLEXnet Admin Studio. На старто- су, который также указан в данном окне. Завершающим
вой странице Start Page есть возможность для пересбор- этапом в настройке управления лицензированием являет-
ки уже готового установочного пакета Customize Package ся раздел «Finalize Package», в котором необходимо про-
(например, для случаев, когда необходимо внести некото- писать папку, где будут создаваться новые пакеты. Когда
рые изменения не пересобирая при этом все заново). Так- все эти действия выполнены, нажимаем «Build Package».
же эта опция полезна, если требуется создать msi-файл Если все настройки были заданы верно, то мы получим ус-
для изменения исходного дистрибутива. тановочный пакет, лицензионные установки которого мож-
Следующей дополнительной возможностью является на- но контролировать. Для получения отчета по использова-
личие такого средства, как resolve Conflicts, которое позво- нию приложения нужно нажать «Creating application Usage
ляет разрешать конфликты, которые могут возникнуть при reports with FLEXnet Manager». Таким образом, можно ре-
установке нового приложения. Для того чтобы воспользо- шить еще одну задачу системного администрирования –
ваться данной возможностью, необходимо выбрать на стар- контроль за количеством установленных копий данного
товой странице раздел «Resolve Conflicts», далее указать программного продукта.
msi-файл и выбрать тип операции «ConflictSolver Operation».
Стандартным средством является «Detect conflicts for this Вернемся к Group Policy
package». После нажатия «Perform» в открывшемся окне Итак, мы рассмотрели несколько способов создания собс-
нужно нажать «Validation» для запуска процесса провер- твенных установочных пакетов для нашего приложения.
ки содержимого пакета на наличие ошибок. Скорее всего, По моему мнению, FLEXnet Admin Studio является наибо-
список сообщений не будет пуст, хотя это не означает, что лее удобным и функциональным средством разработки
все плохо. Сообщения могут информировать о дублирова- своих msi-пакетов. Пакеты, созданные с помощью обеих
нии некоторых файлов (например, установочные файлы мо- программ, без проблем развертываются в группе, к кото-
гут дублироваться в каталоге LastKnowGood в системных рой применена данная политика. В случае, если приложе-
папках Windows), аналогично могут дублироваться некото- ние по каким-то причинам не установилось на компьютере,
рые записи в реестре. Разрешить обнаруженные конфлик- то причину сбоя следует искать прежде всего в журнале со-
ты можно попробовать с помощью опции «Best Practices». бытий Event Viewer, в Application Log. Не забудьте, что раз-
Также в программе есть возможность определять возмож- мещать установочный пакет нужно в каталоге, к которому
ные конфликты с уже установленными приложениями (раз- есть общий доступ пользователей из сети и, как уже упоми-
дел «Detect Conflicts»), правда, количество известных Admin налось в начале статьи, в настройках Software Installation не-
Studio приложений, к сожалению, оставляет желать лучше- обходимо указать именно сетевой путь, а не локальный.
го. Подробный отчет об обнаруженных в пакете конфлик- Хотелось бы надеяться, что описанные выше способы
тах можно просмотреть, сохранить и распечатать в разде- автоматического развертывания программного обеспече-
ле Reports, причем отчет можно составить как для всего па- ния будут полезны в работе и помогут вам сэкономить вре-
кета, так и отдельно для файлов или реестра. мя при установке большого числа приложений.
Еще есть возможность тестирования пакета с помо-
щью опции Ensure Package Conflicts. Также можно подгото- Использованные источники:
вить пакет к распространению в разделе Prepare package 1. Windows Server 2003. Справочник администратора.
for distribution. В этом разделе можно, к примеру, разместить 2. www.wininstall.com – сайт программы WinInstalLE.
готовый msi-пакет на FTP-сервере, в сетевой папке, а так- 3. www.macrovision.com – сайт программы FLEXnet Admin Studio.

№4, апрель 2006 37


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

Управляем инсталляторами

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

Н
а сегодняшний день существует множество инстал- ся с пакетами обновлений операционной системы или в ка-
ляторов. Для реализации автоматической установ- честве отдельного дистрибутива.
ки программ их запускают с различными парамет- Некоторые версии Windows Installer и Windows несовмес-
рами, иногда параметры установки описывают в файле от- тимы. Это касается Windows 9x и Windows 2k. Ниже приве-
ветов. Рассмотрим наиболее часто используемые из них, дена таблица, с помощью которой можно определить, ка-
сначала описав возможности, касающиеся автоматичес- кую версию Windows Installer и где можно устанавливать
кого управления инсталляторами, а затем примеры их ис- (см. таблицу 1). В настоящее время используется Windows
пользования: Installer 3.1, который можно загрузить с сайта разработчика
 Windows Installer как hotfix: http://support.microsoft.com/?id=893803.
 InnoSetup Для инициализации процесса установки используют
 Nullsoft Scriptable Install System (NSIS) команду:
 Wise Installer
WindowsInstaller- -x86.exe [<options>]
Windows Installer
Windows Installer – это сервис установки и конфигурирова- Параметры запуска приведены в таблице 2.
ния программных продуктов, который входит в состав ОС На каждом компьютере, использующем Windows Installer,
(внешний вид см. на рис. 1). Также он может устанавливать- хранится единая база данных с информацией о каждом

38
администрирование
установленном с помощью этой технологии приложении. Таблица 1. Версии Windows Installer
Она включает файлы, записи в реестре и компоненты. Название продукта Версия продукта Описание
При удалении приложения с машины Installer проверяет ба- Интегрирован в Office2000,
Windows Installer 1.0 1.00.5104.0
зу данных, чтобы удостовериться в том, что не будут уда- дистрибутив
лены файлы, ключи реестра и компоненты, от которых за- 1.10.1029.0 Интегрирован в Windows 2000
Windows Installer 1.1
висят другие приложения. Таким образом, удаление при- 1.10.1029.1 Дистрибутив
ложения становится практически безопасным для других 1.11.1314.0 Интегрирован в Windows 2000 SP1
программ, имеющихся на компьютере. Windows Installer 1.11
1.11.2405.0 Интегрирован в Windows 2000 SP2
Использование технологии Windows Installer дает поль-
1.20.1410.0 Интегрирован в Windows Me
зователям следующие преимущества: Windows Installer 1.2
1.20.1827.1 Дистрибутив
 Более простая и быстрая установка программного
2.0.2600.0 Интегрирован в Windows XP
обеспечения.
 Возможность установки по требованию. Информация 2.0.2600.1 Интегрирован в Windows 2000 SP3

о неустановленных компонентах приложения хранится 2.0.2600.1183 Интегрирован в Windows 2000 SP4


в одном месте, и при обновлении конфигурации про- Windows Installer 2.0 2.0.2600.2 Дистрибутив
граммы нет необходимости переустанавливать все ком- 2.0.2600.1106 Интегрирован в Windows XP SP1
поненты. Интегрирован в с семейством
2.0.3754.0, 2.0.3790.0
 Самовосстановление программ. Хранение инсталля- Windows Server 2003
ционной информации в одном месте позволяет прило- Интегрирован в Windows XP SP2,
Windows Installer 3.0 3.0.3790.2180
жению самовосстанавливаться. Неправильно работа- дистрибутив

ющее приложение может проверить инсталляционные 3.1.4000.1823 Дистрибутив


данные, определить, какие файлы повреждены или от- Windows Installer 3.1 3.1.4000.1830
Интегрирован в с семейством
Windows Server 2003 SP1
сутствуют, а затем восстановить их.
 Возможности отката. Windows Installer позволяет отме- 3.1.4000.2435 Дистрибутив

нять любые изменения в конфигурации как устанавли- Таблица 2. Параметры запуска hotfix
ваемого продукта, так и операционной системы. Это де- Параметр Описание
лает установку программ, поддерживающих технологию
/norestart Не перезагружать компьютер после установки обновления
Windows Installer, намного более безопасным и предска-
Включение «тихого» режима. Во время установки программа не за-
зуемым занятием, чем каких-либо других. /quiet
дает никаких вопросов

/help Вызов справки, содержащей ключи запуска и их описание


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

Взгляд изнутри: файл Msiexec.exe


Windows Installer включает в себя множество файлов, сре-
ди которых присутствует msiexec.exe. Этот файл – не самый
важный компонент в Windows Installer. Всю основную работу
выполняет динамически подключаемая библиотека – msi.dll.
А msiexec.exe служит оболочкой msi.dll, позволяющей:
 Работать Windows Installer как службе ОС.
 Разбирать параметры командной строки и выполнять
соответствующие задачи.
 Устанавливать при выходе уровень ошибки, соответс-
твующий системным кодам ошибок (http://msdn.microsoft.
com/library/default.asp?url=/library/en-us/msi/setup/error_
Рисунок 1. Внешний вид программы, использующий
codes.asp), то есть ошибкам типа ERROR_SUCCESS Windows Installer
и т. д.
 Связать файлы с расширениями .msi с Windows Installer Полный список параметров смотрите на сайте Microsoft.
командой:
Использование Windows Installer
"%SystemRoot%\System32\msiexec.exe" /i "your_filename.msi" на примере Microsoft Office
В настоящее время существует как минимум два способа
автоматической установки Microsoft Office.
Параметры командной строки для Msiexec  Автоматическая установка с настройками по умол-
Параметры командной строки, которые понимает msiexec.exe, чанию. Процесс установки инициализируется следую-
приведены в таблице 3. щей командой:

№4, апрель 2006 39


администрирование
Pro11.msi /qb или Setup.exe /qb зарегистрирован продукт. Впоследствии при установке
Office с этого дистрибутива серийный номер не будет за-
 Автоматическая установка с использованием фай- прашиваться.
ла ответов с расширением MST, который создается
с помощью соответствующего мастера из набора Интеграция пакета исправлений
Resource Kit For Microsoft Office 2003. Установка осу- и обновлений в Office
ществляется с помощью следующей команды: Перед интеграцией в Office, дистрибутив пакета исправле-
ний, скопированный с сайта Microsoft, необходимо распа-
Pro11.msi Transforms=FileName.mst /qb ковать, выполнив команду:

или Office2003SP1-KB842532-fullfile-enu.exe /q /c ↵
/t:С:\Office2003\SP1

Setup.exe Transforms=FileName.mst /qb где С:\Office2003\SP1 – путь, куда будет распаковано со-
держимое архива.
Рассмотрим второй способ установки более подробно. Интеграция в дистрибутив осуществляется с помощью
двух команд:
Подготовка дистрибутива Office
Чтобы во время автоматической установки не запрашивал- MsiExec /p C:\Office2003\SP1\MainSp1f.msp /a ↵
C:\Office2003\Office\Pro11.msi ShortFileNames=True /qb
ся серийный номер, необходимо создать административ- MsiExec /p C:\Office2003\SP1\Owc11Sp1ff.msp /a ↵
ную установку (Setup /a), которая хранит в себе такие важ- C:\Office2003\Office\OWC11.msi ShortFileNames=True /qb
ные параметры, как серийный номер Office; название ор-
ганизации, на которую зарегистрирован продукт. где:
 C:\Office2003\SP1\ – путь к распакованной версии SP;
Создание административной установки  C:\Office2003\Office\ – путь к дистрибутиву Microsoft
Создание административной установки необходимо для ре- Office 2003.
ализации автоматической установки Microsoft Office и воз-
можности интегрировать пакеты исправлений (SP) и обнов- Интеграция обновлений осуществляется по такому же
ления (updates) в дистрибутив. сценарию: сначала необходимо скопировать обновления
По своей сути создание административной установки с сайта Microsoft на жесткий диск, затем распаковать их
является установкой Microsoft Office в специальном режи- и интегрировать в дистрибутив Office 2003.
ме, который инициализируется командой: Стоит отметить, что имена файлов обновлений строят-
ся по следующему принципу:
Setup /a
XXX_KB######_YYY_ZZZ.exe
В процессе установки Office будет запрошен серийный
номер и название организации, на которую должен быть где:
Таблица 3. Параметры командной строки msiexec.exe
Опция Параметры Значение
/I Код пакета / продукта Установить или конфигурировать приложение
Восстановить приложение. Если задана эта опция, msiexec игнорирует значения свойств, заданные в команд-
ной строке. Список по умолчанию для данной опции «pecms».
 p – переустановить, только если файл отсутствует;
 o – переустановить, если файл отсутствует или установлена более старая версия;
 e – переустановить, если файл отсутствует или установлена такая же либо более старая версия;
 d – переустановить, если файл отсутствует или установлена другая версия;
/f [p|o|e|d|c|a|u|m|s|v]Код пакета / продукта  c – переустановить, если файл отсутствует или его сохраненная контрольная сумма не соответствует вы-
численному значению;
 a – переустановить все файлы;
 u – перезаписать все необходимые специфичные для пользователя ключи реестра;
 m – перезаписать все необходимые специфичные для машины ключи реестра;
 s – перезаписать все существующие ярлыки;
 v – запустить с исходного носителя и заново кэшировать локальный пакет
/a Пакет Опция Административной установки. Установить продукт в сети
/x Код пакета / продукта Деинсталлировать продукт
Опубликовать продукт. Если задана эта опция, msiexec игнорирует значения свойств, заданные в командной
строке.
/j [u|m]Пакетили[u|m]Пакет /g Идентификатор языка  u – опубликовать для текущего пользователя;
 m – опубликовать для всех пользователей компьютера;
 g – идентификатор языка
Задать уровень пользовательского интерфейса /q.
 qn – отсутствие интерфейса, в этом случае не показывается никаких окон и не задается никаких вопросов;
данный режим очень удобен для автоматической инсталляции ПО;
/q n|b|r|f
 qb – уровень базового пользовательского интерфейса;
 qr – уровень сокращенного пользовательского интерфейса;
 qf – уровень полного пользовательского интерфейса

40
администрирование
 XXX – версия офиса, для которой предназначено об- Таблица 4. Список параметров запуска инсталляторов Inno Setup
новление; Параметр Описание
 KB###### – номер статьи Microsoft Knowledge Base, в ко- /SILENT, /VERYSILENT Подавление вывода диалоговых окон
торой приведен список исправлений; /NOCANCEL Скрыть кнопку отмены процесса установки
 YYY – тип версии; Управление перезагрузкой после завершения процес-
 ZZZ – языковая принадлежность. /NORESTART
са установки
Передача управления установкой конфигурационно-
/LOADINF="filename"
Итак, для Office 2003 файлы обновлений строятся му файлу
по следующему шаблону: /SAVEINF="filename" Записать в конфигурационный файл сценарий установки
Управление языковыми настройками. Если параметр ука-
/LANG=language
Office2003_KB######_FullFile_Enu.exe зан, сообщение о выборе языка не появляется
/DIR="x:\dirname" Путь установки ПО
Название группы, в которой будут размещены ярлыки
/GROUP="folder name"
в папке «Пуск | Программы»
Создание файла ответов MST
Файл ответа для Microsoft Office можно создать с помо- /NOICONS Не создавать папку с ярлыками в «Пуск | Программы»

щью мастера Custom Installation Wizard, входящего в набор /COMPONENTS Использовать при установке набор по умолчанию
Resource Kit соответствующей версии. /SN Указать серийный номер продукта
Запустив мастер Custom Installation Wizard, необходимо
создать новый MST-файл.
Команда для установки Office в автоматическом режи-
ме будет следующей:

C:\Install\Office\setup.exe transforms= ↵
C:\Install\Office\answer.mst /qb- /noreboot

Использование Windows Installer


на примере Microsoft IE
20 марта 2006 года вышла очередная версия Microsoft
Internet Explorer (IE Beta 2 7.0.5335.5), которая работает
нестабильно. Достаточно часто возникает ситуация, когда
не удается загрузить из сети какой-либо файл, хотя с по- Рисунок 2. Внешний вид Inno Installer
мощью IE 6.x это можно сделать без проблем. При попыт-
ке удалить программу в соответствии с рекомендациями Инсталлятор поддерживает файлы ответов, которые
разработчика, после перезагрузки программа самовос- имеют расширение ISS. После установки инсталлятора
станавливается. их можно найти в каталоге C:\Program Files\Inno Setup 5\
При попытке установить предыдущую версию IE мас- Examples.
тер установки, естественно, сообщает о невозможности, Файл ответа можно сгенерировать к уже готовому про-
т.к. уже установлена более новая версия программы. Од- дукту с помощью ключей, описанных в таблице. Синтак-
ним из решений проблемы является установка IE6 без про- сис файла ответов подробно описан в файле-справке
верки версии c помощью команды: C:\Program Files\Inno Setup 5\ISetup.hlp.
В комплекте установки инсталлятора в каталоге
ie6setup.exe /Q:A /C:"ie6wzd /S:""#e"" /Q:C /R:N /V:I" C:\Program Files\Inno Setup 5\Languages находятся файлы
с расширением ISL, позволяющие инсталлятору поддержи-
вать несколько языков интерфейса.
Inno Setup
Inno Setup – бесплатно распространяемый инсталлятор Использование Inno Setup на практике
для Windows-приложений, разрабатываемый с 1997 года. Рассмотрим использование инсталлятора Inno Setup на при-
Последнюю версию 5.1.6 (18 ноября 2005 г.) можно скачать мере программ Nero Burning Room и WinRar.
по адресу: http://www.jrsoftware.org/download.php/is.exe.
Определить инсталлятор InnoSetup можно очень просто. Автоматическая установка Nero Burning Room
Во-первых, слева приведена одна из двух картинок, а во- Установим и сразу же зарегистрируем программу, указав
вторых, на самом первом экране в меню присутствует ко- серийный номер во время инсталляции с помощью клю-
манда «File | About» (см. рис. 2). ча SN:
Для автоматизации процесса установки ПО рекоменду-
ется использовать команду: c:\Install\Nero\Nero551054.exe /silent /noreboot ↵
/sn=xxxx-xxxx-xxxx-xxxx-xxxx-xxxx /write_sn

setup.exe /SILENT где:


 /silent – обеспечивает автоматический режим установ-
Полный список ключей приведен в таблице 4. ки программы;

№4, апрель 2006 41


администрирование
Таблица 5. Параметры запуска инсталлятора NSIS  /noreboot – не перезагружает рабочую станцию после
Параметр Описание установки программы;
Отключение функции проверки контрольной суммы архива. Работает,  /sn=xxxx-xxxx-xxxx-xxxx-xxxx-xxxx – вместо xxxx-…
/NCRC
если в сценарии установки не используется функция CRCCheck указывается серийный номер продукта.
/S Подавляет все диалоговые окна в процессе установки
/D Задается каталог инсталляции продукта Автоматическая установка WinRar
Для реализации автоматической установки WinRar в ка-
честве параметра необходимо указать ключ /s. В этом
случае WinRar будет ассоциирован со всеми типами архи-
вов, а также будет создана соответствующая группа в ме-
ню «Пуск»:

C:\Install\Wrar\Wrar340ru.exe /s

Если же использовать ключ /silent, то пользователю бу-


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

Nullsoft Scriptable Install System (NSIS)


Как и предыдущий инсталлятор, NSIS (внешний вид
см. на рис. 3) является бесплатным. С его помощью ис-
пользуются такие приложения как DIVX.
Скачать NSIS 2.15 (4 марта 2006г) можно по ад-
ресу: http://prdownloads.sourceforge.net/nsis/nsis-2.15-
Рисунок 3. Внешний вид NSIS setup.exe?download.
Инс та ллятор NSIS ис поль зуют такие приложе -
ния, как WinAmp, SoundForge, Emule, DivX. Скриншоты
см. на http://nsis.sourceforge.net/Screenshots.
Инсталлятор поддерживает файлы ответов, которые
имеют расширение NSI.
После установки инсталлятора их можно найти в ката-
логе C:\Program Files\NSIS\Examples.
Подробное описание скриптового языка можно найти
в файле C:\Program Files\NSIS\NSIS.chm.
Инсталлятор поддерживает параметры запуска, ука-
занные в таблице 5.
Приведем несколько примеров использование инстал-
лятора:

installer.exe /NCRC
installer.exe /S
installer.exe /D=C:\Program Files\NSIS
installer.exe /NCRC /S /D=C:\Program Files\NSIS
Рисунок 4. WIZE Installer

Таблица 6. Сравнение возможностей инсталляторов


Свойство Инсталлятор
Название Windows Installer Inno Setup NSIS
+/–
(Некоторые программы, например, Microsoft Office, используют индивидуальный
Поддержка файла ответов *.ISS *.NSI
мастер создания файлов ответов, с помощью которого настраивается каталог
установки, отмена перезагрузки после завершения процесса инсталляции и т. д.)
Импорт/экспорт параметров
– + –
установки в файл
Управление перезагрузкой после
+/– /NORESTART –
окончания процесса установки
Управление «тихим» режимом
/Q /SILENT /S
установки
Языковой интерфейс /X /LANG –
Директория инсталляции +/– /DIR /D
Серийный номер продукта /I /SN –
ПО, использующее инсталлятор Ghost, MS Office, AcdSee и т. д. Ahead Nero, WinRar WinAmp, SoundForge, Emule, DivX

42
администрирование
Wise Installer start /wait %systemdrive%\install\setup.exe /s
Этот инсталлятор является платным. Его бесплатную
30-дневную версию можно скачать по адресу http://www. Некоторые инсталляторы, например, Inno Setup, пыта-
wise.com/dev_evaluations.asp, зарегистрировавшись на сай- ются запустить программу по окончании процесса уста-
те. Внешний вид программы см. на рис. 4. Автоматическая новки. Если вы устанавливаете несколько программ под-
установка осуществляется с помощью ключа /S. ряд в «тихом» режиме, то это неудобно.
Wize Installer используют такие программы как AdWare, Решить проблему можно с помощью утилиты Taskkill,
AGraber. Приведем пример автоматической установки про- поставляющейся с операционной системой, следующим
граммы AdWare: образом:

C:\Install\Wrar\Adware.exe /s [Setup.bat]
start /wait %systemdrive%\install\filename.exe /SILENT /SP-
taskkill.exe /F /IM filename.exe

Сравнение возможностей инсталляторов


Для быстрой автоматизации установки программ приведем Заключение
таблицу сравнения инсталляторов (см. таблицу 6). Надеюсь, что полученные знания позволят читателю авто-
матизировать установку львиной доли программ и ускорить
Пакетная установка ПО процесс восстановления рабочих станций в сети.
Рассмотрев инсталляторы, необходимо несколько слов
сказать о том, как реализовать установку нескольких про- Ссылки:
грамм в автоматическом режиме. Для этого рекомендуется 1. http://support.microsoft.com/?id=893803
использовать пакетную установку, реализованную, напри- 2. h t t p : / / w w w . m i c r o s o f t . c o m / t e c h n e t / p r o d t e c h n o l /
мер, с помощью BAT-файла. Пользоваться же параллель- windowsserver2003/ru/library/ServerHelp/9361d377-9011-4e21-
ной установкой не рекомендуется, поскольку некоторые 8011-db371fa220ba.mspx?mfr=true
инсталляторы, например Windows Installer, не могут рабо- 3. http://www.microsoft.com/windows/IE/ie7/ie7betaredirect.mspx
тать параллельно. Для того чтобы процесс установки про- 4. http://www.jrsoftware.org/isinfo.php
грамм шел последовательно, необходимо строку установ- 5. http://nsis.sourceforge.net/Main_Page
ки предварять командой start /wait: 6. http://www.wise.com/index.asp

№4, апрель 2006 43


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

Герой нашего времени,


или Попытка развенчания мифов

Новое поколение российских предпринимателей уже родилось. Они уже занимают ключевые
позиции. В том числе на рынке электронных продуктов. Свободные и образованные, патриоты
своей Родины, знатоки европейских языков. Их не знают, о них сочиняют мифы. Мифы,
которые оказываются несостоятельными под натиском фактов.

Миф первый: чении «неопытный», «начинающий». набирает обороты прогресс и есть воз-
«Молодой еще…» Однако опыта человеку, возглавля- можность на это влиять. Наша компа-
Он обижается, когда его называют ющему группу компаний «Мезон.Ру», ния, коллеги в других фирмах опреде-
«молодым» и говорит, что современ- развивающему рынок лицензионного ляют, как будет выглядеть мир в буду-
ная молодежь ему не нравится. Вслух ПО в России, не занимать. И возраст щем. Это наш вклад, и мой лично. Сей-
я возражаю, что 26 лет – это возраст, здесь не при чем. час каждый день случается что-то но-
официально признанный молодежным. Или все-таки возраст – определяю- вое, интересное.
Но вообще-то я с Павлом Фроловым щий фактор? Павел признает: Новый мир очень юн, и его творцы –
согласна. Ведь у нас понятие «моло- – Мне очень повезло, что я родил- ему ровесники. Но они уже построили
дой» чаще всего употребляется в зна- ся именно в это время. Именно сейчас «среду обитания»! И совершенно ре-

44
человек номера
зонно чувствуют себя зрелыми, состо- можно работать! Как лично я переехал но сделанный. «Однако понимает ли
явшимися людьми. на Linux? У меня на ноутбуке стояли Павел, что не скоро читатели журна-
Может быть, это определяющая обе операционные системы. Я так на- ла из сельской глубинки смогут вос-
черта людей поколения Павла Фро- строил свои программы, что они хра- пользоваться услугами интернет-мага-
лова – они не пассивные наблюдате- нили свои данные в одном месте, мне зина?» – размышляю я про себя, лис-
ли, а активные строители. Они вов- было все равно, в какой операцион- тая глянцевые страницы. Вот, напри-
се не понимают тех, кто сидит до- ной системе находиться. В один пре- мер, одна моя знакомая учительница
ма и смотрит MTV. Любители клипов красный день я вернулся из коман- из Республики Коми ездит за 250 км
младше лет на пять, и эта та моло- дировки, подсоединил ноутбук к ло- от дома, чтобы проверить свой элек-
дежь, которая Павлу не нравится. Пу- кальной сети и… Ко мне пришел сис- тронный ящик… Кажется, последнюю
гает. А может быть, руководитель кон- темный администратор и сказал, что фразу я произношу вслух. Павел улы-
курентоспособной компании просто я сейчас рассылаю спам из своего но- бается и говорит, что пора рассказать
чувствует ответственность за судьбу утбука во всю мощь оптоволокна. На- про дирижабли:
своего мира. Ведь бездельники могут чали ловить этот вирус, поставили са- – Однажды в институте я сдавал
его легко разрушить. мые свежие антивирусные троянские экзамен по компьютерным технологи-
программы. Ничего не нашли. А когда ям. Предмет был сложный, множество
Миф второй: через некоторое время зараженный формул.... Первый вопрос был клас-
«Они прагматики…» файл отправили Касперским, они от- сический, а второй – про перспекти-
Конечно, прагматики. На заре «туман- ветили: «Ой, это новый вирус…». Ме- вы развития технологий. И я сказал,
ной юности» Фролов целенаправлен- ня такое состояние безопасности мое- что сейчас надо развивать связь, что-
но создавал бизнес, на котором можно го компьютера абсолютно не устроило, бы в каждый дом в тайге мог прид-
заработать деньги. Он был уверен: не- с тех пор я в Windows не работаю». ти Интернет. А как это сделать? Нуж-
обходимые знания у него есть, все по- Действительно все выглядит впол- ны спутники. Однако вывезти 1 кг по-
лучится отлично. Ведь кто как не он, не прагматично: человек занимается лезного груза на орбиту стоит поряд-
обозреватель компьютерных разделов бизнесом, который знает доскональ- ка 5 тысяч долларов. Спутники тяже-
и интернет-колонок многих СМИ, знает, но, да еще постоянно примеряет на се- лые, весят несколько тонн. Более де-
что нужно потребителям на рынке ин- бя продукцию, выставленную в Интер- шевое решение – дирижабль. Если над
формационных технологий и что надо нет-магазине. Это напоминает ситуа- каждым городом повесить дирижабль
предложить клиентам, чтобы они по- цию: приходите вы в частную стома- и на него поставить ретранслятор, Ин-
няли: именно это им нужно. Увы, пер- тологию, а там доктор сверкает креп- тернет будет во всем городе. Пара ди-
вый год новоявленная компания потер- кими здоровыми зубами. Такому вра- рижаблей накроет всю Москву, на ма-
пела фиаско. Было от чего уйти в де- чу хочется доверять. ленький город хватит одного. Дири-
прессию и забыть навсегда о перво- Реалист Фролов смотрит в буду- жабль можно спустить, отремонтиро-
начальной идее. Но прагматизм сра- щее: чтобы о Linux узнало как мож- вать, поднять назад. Между прочим,
ботал как спасательный круг. Павел но больше потенциальных покупате- Билл Гейтс в свое время уже инвести-
Фролов со товарищи нашли деньги, за- лей, начал выпускать по лицензии бу- ровал пару сотен миллионов долларов
платили самые срочные долги и… на- мажный журнал Linux Format – очень в компании, которые делают такие ди-
чали все сначала. В этот раз в качест- солидный, яркий, профессиональ- рижабли. На этом экзамен кончился,
ве точки отсчета была взята операци-
онная система Linux. Линуксцентр ро- Краткая биография В тот же период вел интернет-колон-
дился в 2000 году и сейчас процвета- Фролов Павел, руководитель проекта ку в журнале «Предприниматель Петер-
ет как один из главных проектов груп- www.linuxcenter.ru. Родился 5 марта 1980 бурга» и разделы новостей в журналах
пы компаний «Мезон.Ру». года в Ленинграде, закончил Санкт-Пе- «BYTE-Россия», «Мир Интернет», «Жёлтые
Преимущества Linux известны. тербургский Государственный Технический страницы Интернет», непродолжительное
Главный рекламный ход Линуксцен- Университет. Факультет технической ки- время был редактором новостной ленты
тра – они продают то, чем пользуют- бернетики (защита информации), факуль- MSNBC News и внештатным редактором
ся сами. Правда, этот «хитрый» ход тет экономики и менеджмента (информа- журнала «Мир Интернет».
не был заранее подготовлен. Просто ционые системы в экономике), аспиранту- С 2000 года возглавляет группу ком-
Павла Фролова и его системных адми- ра – Международная высшая школа управ- паний «Мезон.Ру», которая занимается
нистраторов действительно устраива- ления, тема диссертации – «Конкурентос- электронной коммерцией и активно учас-
ет модель безопасности операционной пособность виртуальных компаний». твует в развитии рынка лицензионного ПО
системы Linux. А постоянные пробле- В 1997-1998 годах работал обозрева- в России (www.mezon.ru). Один из глав-
мы с Windows надоели. телем компьютерных разделов в газетах ных проектов компании – Линуксцентр –
– Создать вирусы под Linux слож- «Утро Петербурга», «Сорока» (Издатель- www.linuxcenter.ru. Другие проекты: жур-
но, и вряд ли они когда-либо приведут ство «Из рук в руки»). С 1998 по 2004 год нал LinuxFormat, выставка LinuxLand, ин-
к таким печальным результатам, к ко- менеджер по интернет-маркетингу «Изда- тернет-радио SunRadio.Ru и интернет-про-
торым приводят вирусы под Windows. тельства Атлант», редактор сетевого обоз- екты Mediacenter.ru, Videocenter.ru, Zwuk.ru,
С каждым следующим годом пробле- рения «Бинокль», главный редактор сайта Kitecenter.Ru.
ма все актуальнее. Скоро будет невоз- www.atlant.ru.

№4, апрель 2006 45


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

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

Павел Фролов с Франсуа Бансийоном, генеральным директором компании Mandriva

операционная система. И уже понят- лонками. Вы придете в офис, где сто- мя интернет-радио SunRadio.ru, где иг-
но, что это Linux, потому что есть такие ят монитор, клавиатура, колонки, есть рает любимая многими солнечная му-
телефоны уже, компания Nokia сдела- «мышка», сядете на стул и у вас авто- зыка. Кстати, популярность Солнечно-
ла. В этом телефоне есть компьютер, матически это все заработает. Приде- го радио привела к неизбежному появ-
в компьютере есть все, что нужно про- те домой, и у вас точно также зарабо- лению «клонов», и не только в Питере,
стому человеку: Интернет, офисный тает ваш телевизор. Вы сможете че- но и в Москве. А дальше придет черед
пакет, электронная почта. Плюс воз- рез ваше маленькое устройство вый- интернет-телевидения, также ориенти-
можность обмениваться мгновенными ти в Интернет, а телевизор использо- рованного на запросы зрителей. Пред-
сообщениями, что-то вроде ICQ, воз- вать в качестве монитора». ставьте себе: фоновый звук и приятное
можность совершать звонки по IP-те- – Похоже на сказку. изображение – солнечные клипы, вин-
лефонии. Этот продукт уже продает- – Это будет через год. Мир меняет- дсерфинг, девушки, увлеченные пляж-
ся в магазинах. Но не в России. И сто- ся сейчас. Мы это видим. ным волейболом. Красота…
ит на Западе такой компьютер не до- Вот так глобальные процессы пре- А что еще? Планов громадье. Идеи
роже 400 долларов. вращаются в проекты конкретных уст- созревают и выходят на свободу. И вы
У этих маленьких устройств будет ройств, удобных людям. Это не случай- тоже мечтайте. Вслух. Кто знает, может
только проблема ввода и вывода ин- но. Ведь хороший предприниматель, быть рядом окажется молодой пред-
формации. Экран маленький, мно- который стремится продать своим по- приниматель, «обросший» мифами,
го текста не разместишь. Мне кажет- купателям именно то, что они требуют, и превратит вашу мечту в осязаемую
ся, по каким-то беспроводным кана- а не то, что залежалось на складе, за- реальность.
лам эти устройства будут соединять- ботиться об усовершенствовании то-
ся с полноценной клавиатурой и ко- вара. «Мезон.Ру» запустил в свое вре- Оксана Родионова

№4, апрель 2006 47


безопасность

Используем средства библиотеки OpenSSL


для криптографической защиты данных

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

С
егодня мы поговорим о библиотеке OpenSSL. Эта сво- раметрах указатель на буфер для хранения сгенерирован-
бодно распространяемая библиотека предоставляет ной последовательности и размер этого буфера. Следую-
в распоряжение пользователя набор утилит, реали- щий код демонстрирует это:
зующих различные криптографические алгоритмы, такие
как Triple-DES, Blowfish, AES, RSA и другие. Листинг 1. Генерация ПСП
Порядок использования утилит был подробно опи- #include <openssl/rand.h>
сан Всеволодом Стаховым в статье «Теория и практика
void main()
OpenSSL» [1]. {
Кроме готовых к применению утилит, библиотека со- int outf;
unsigned char buf[1024];
держит набор функций, с помощью которых пользователь
может разрабатывать собственные программы для крип- if(RAND_bytes(buf, sizeof(buf))) { /* 1 succes, ↵
0 otherwise */
тографической защиты данных или создавать расшире- outf = open("./rnd_bytes", O_CREAT|O_TRUNC|O_RDWR, ↵
ния, не входящие в стандартный набор. Большинство этих 0600);
write(outf, buf, sizeof(buf));
функций достаточно хорошо документированы, и наличие } else printf("-ERR: RAND_bytes\n");
примеров программ значительно облегчает задачу изуче- }
ния порядка их использования.
Не углубляясь в детали реализации алгоритмов, рас- Сохраним этот код в файле rand_test.c и получим испол-
смотрим несколько практических примеров использова- няемый файл формата ELF при помощи команды:
ния библиотеки OpenSSL для генерации псевдослучай-
ных чисел, вычисления хэшей и шифрования данных с ис- gcc –o rand_test rand_test.c -lssl
пользованием симметричных и асимметричных алгорит-
мов. Основное внимание акцентируем на вопросах, кото- После запуска на выполнение файла rand_test в те-
рые, на мой взгляд, недостаточно полно освещены в офи- кущем каталоге будет создан файл rnd_bytes размером
циальной документации и требуют более детальной про- 1024 байта, содержащий сгенерированную ПСП.
работки.
Далее по тексту библиотека OpenSSL будет имено- Вычисление хэшей
ваться просто библиотека, кроме специально оговорен- Хэш – это механизм контроля целостности данных, обла-
ных случаев. дающих специальными свойствами:
 зная сообщение, легко вычислить хэш. Обратная зада-
Генерация псевдослучайной ча нахождения сообщения по известному хэшу являет-
последовательности ся вычислительно-трудоемкой;
Сгенерировать псевдослучайную последовательность  для заданного сообщения хэш является уникальным,
(ПСП) при помощи библиотеки очень просто. Для этого до- т.е. не должно существовать двух разных сообщений
статочно вызвать функцию RAND_bytes, передав ей в па- с одинаковыми хэшами.

48
безопасность
Из всех существующих алгоритмов хэширования на- Листинг 2 демонстрирует порядок использования пере-
ибольшее распространение получил алгоритм MD5. Аббре- численных выше функций для вычисления хэша файла:
виатура «MD» означает Message Digest (краткое изложение
сообщения, или дайджест). В соответствии с этим алгорит- Листинг 2. Вычисление MD5-хэша для файла большого размера
мом, входной текст обрабатывается 512-битовыми блоками, #include <openssl/md5.h>
разбитыми на шестнадцать 32-битовых подблоков. Выхо-
#define BUFSIZE (1025*16)
дом алгоритма является набор из четырех 32-битовых бло-
ков, которые объединяются в единое 128-битное значение. void main(int argc, char **argv)
{
Рассмотрим, как вычисляется хэш сообщения по алгорит- MD5_CTX c; /* контекст хэша */
му MD5 с использованием средств библиотеки. unsigned char buf[BUFSIZE];
unsigned char md_buf[MD5_DIGEST_LENGTH];
Для вычисления хэша библиотека предоставляет в на-
ше распоряжение функцию MD5: /* В командной строке передается имя файла,
для которого вычисляется хэш */
int inf = open(argv[1], O_RDWR);
unsigned char * MD5(const unsigned char *d, ↵
unsigned long n, unsigned char *md) /* Инициализируем контекст */
MD5_Init(&c);
Эта функция принимает три параметра – указатель
/* Вычисляем хэш */
на буфер с исходными данными d, размер этого буфера n for(;;) {
и указатель на буфер для хранения вычисленного хэша md. int i = read(inf, buf, BUFSIZE);
if(i <= 0) break;
Это очень простая в использовании функция, но у нее есть MD5_Update(&c, buf, (unsigned long)i);
недостаток – она пригодна для вычисления хэша данных, }
которые можно полностью разместить в оперативной памя- /* Помещаем вычисленный хэш в буфер md_buf */
ти. Для файлов большого размера вычисление хэша про- MD5_Final(md_buf, &c);
изводится поэтапно. Для этого библиотека предоставляет /* Отображаем результат */
следующий набор функций (см. openssl/md5.h): for(i = 0; i < MD5_DIGEST_LENGTH; i++) ↵
printf("%02x", md_buf[i]);
}
void MD5_Init(MD5_CTX * ctx);
void MD5_Update(MD5_CTX * ctx, const void * data, ↵
unsigned long len); Проверить правильность вычисления хэша можно при
void MD5_Final(unsigned char * md, MD5_CTX * ctx); помощи утилиты md5sum.
В рассмотренном листинге мы обращаемся к функци-
Функция MD5_Init() инициализирует контекст дайджес- ям библиотеки напрямую. В документации рекомендуется
та – структуру, определенную в файле openssl/md5.h: использовать высокоуровневые функции с префиксом EVP
вместо прямого вызова функций алгоритма хэширования.
typedef struct MD5state_st { Разберемся подробнее, что это за EVP-функции.
MD5_LONG A,B,C,D;
MD5_LONG Nl,Nh; Библиотека поддерживает внутреннюю таблицу, в которой
MD5_LONG data[MD5_LBLOCK]; /* MD5_LBLOCK = 16 */ каждый элемент представляет собой структуру, содержащую
int num;
} MD5_CTX; адреса функций алгоритмов шифрования и хэширования,
реализованных в библиотеке. Для работы с высокоуровне-
Инициализация контекста подразумевает его заполне- выми функциями необходимо извлечь структуру требуемого
ние определенными значениями (см. файл md5_dgst.c ис- алгоритма из этой таблицы, получив, таким образом, адреса
ходных текстов библиотеки): его функций. Но прежде эту таблицу необходимо заполнить.
Адреса функций алгоритмов хэширования записываются
#define INIT_DATA_A (unsigned long)0x67452301L в таблицу при помощи функции OpenSSL_add_all_digests(),
#define INIT_DATA_B (unsigned long)0xefcdab89L
#define INIT_DATA_C (unsigned long)0x98badcfeL адреса функций алгоритмов шифрования – при помощи
#define INIT_DATA_D (unsigned long)0x10325476L функции OpenSSL_add_all_ciphers().
int MD5_Init(MD5_CTX *c) Извлечь структуру требуемого алгоритма хэширо-
{ вания из таблицы можно при помощи функции EVP_get_
c->A=INIT_DATA_A;
c->B=INIT_DATA_B; digestbyname(const char * name), где name является символь-
c->C=INIT_DATA_C; ным обозначением алгоритма. Для алгоритма MD5 это будет
c->D=INIT_DATA_D;
c->Nl=0; «md5». Список всех имен приведен в файле openssl/object.h.
c->Nh=0; Результат работы функции EVP_get_digestbyname() сохра-
c->num=0;
return 1; няется в структуре типа EVP_MD:
}
struct env_md_st
{
Функция MD5_Update() вычисляет хэш. Входными па- int type;
раметрами этой функции являются указатель на контекст int pkey_type;
int md_size;
хэша ctx, указатель на блок входных данных data и размер unsigned long flags;
этого блока len. Функция MD5_Final() помещает вычислен- int (*init)(EVP_MD_CTX *ctx);
int (*update)(EVP_MD_CTX *ctx,const void *data, ↵
ный хэш из контекста ctx в выходной буфер md, размер ко- unsigned long count);
торого должен быть равен 16 байт. int (*final)(EVP_MD_CTX *ctx,unsigned char *md);

№4, апрель 2006 49


безопасность
int (*copy)(EVP_MD_CTX *to,const EVP_MD_CTX *from); Листинг 3. Вычисление MD5-хэша файла с использованием
int (*cleanup)(EVP_MD_CTX *ctx); высокоуровневых функций библиотеки

/* FIXME: prototype these some day */ #include <openssl/md5.h>


int (*sign)(); #include <openssl/evp.h>
int (*verify)();
int required_pkey_type[5]; /*EVP_PKEY_xxx */ #define BUFSIZE (1025*16)
int block_size;
int ctx_size; /* how big does the ctx->md_data void main(int argc, char **argv)
need to be */ {
} /* EVP_MD */; EVP_MD_CTX mdctx; /* контекст для вычисления хэша */
const EVP_MD * md; /* структура с адресами функций
Эта структура определена в файле openssl/evp.h. В ее алгоритма */
unsigned char md_value[EVP_MAX_MD_SIZE];
состав входят указатели на функции алгоритма хэширова- int md_len; /* размер вычисленного хэша */
ния. При вызове функции EVP_get_digestbyname() в эти ука-
/* В командной строке передаем имя файла,
затели будут записаны реальные адреса функций библиоте- для которого вычисляется хэш */
ки для работы с выбранным типом алгоритма хэширования, int inf = open(argv[1], O_RDWR);
и в дальнейшем все вызовы функций будут выполняться кос- /* Добавляем алгоритмы хэширования во внутреннюю
венно через эти указатели. Получив адреса библиотечных таблицу библиотеки */
OpenSSL_add_all_digests();
функций, необходимо заполнить контекст для вычисления
хэша – структуру типа EVP_MD_CTX (см. openssl/evp.h): /* Получаем адреса функций алгоритма MD5 и инициализируем
контекст для вычисления хэша */
md = EVP_get_digestbyname("md5");
struct env_md_ctx_st EVP_DigestInit(&mdctx, md);
{
const EVP_MD *digest; /* Вычисляем хэш */
ENGINE *engine; for(;;) {
unsigned long flags; i = read(inf, buf, BUFSIZE);
void *md_data; if(i <= 0) break;
} /* EVP_MD_CTX */; EVP_DigestUpdate(&mdctx, buf, (unsigned long)i);
}

Заполнение контекста выполняется при помощи функ- /* Копируем вычисленный хэш в выходной буфер.
Размер хэша сохраняем в переменной md_len */
ции EVP_DigestInit(). В параметрах этой функции передаются EVP_DigestFinal(&mdctx, md_value, &md_len);
указатели на контекст для вычисления хэша и на структуру,
/* Очищаем контекст */
содержащую адреса функций алгоритма хэширования: EVP_MD_CTX_cleanup(&mdctx);

EVP_DigestInit(EVP_MD_CTX * ctx, EVP_MD * md) /* Отобразим результат */


for(i = 0; i < md_len; i++) printf("%02x", ↵
md_value[i]);
}
Функция копирует структуру «EVP_MD * md» в контекст
дайджеста путем приравнивания соответствующих указа- Универсальность метода использования функций высо-
телей (см. файл crypto/evp/digest.c исходных текстов биб- кого уровня очевидна – для расчета хэша по новому алго-
лиотеки): ритму достаточно изменить только его название в функции
EVP_get_digestbyname. Поэтому именно этот метод реко-
ctx->digest = md; мендуется к использованию разработчиками библиотеки.

Заполнив контекст, мы получаем возможность вызывать Симметричные алгоритмы шифрования


библиотечные функции для вычисления хэша, используя Целью шифрования информации является предотвращение
адреса, которые сохранены в структуре digest-контекста. угрозы нарушения ее конфиденциальности, т.е. несанкцио-
Вычисление хэша выполняет функция EVP_DigestUpdate(), нированное ознакомление с ней. Алгоритмы шифрования
функция EVP_DigestFinal() копирует вычисленный хэш можно разделить на две основные категории:
из контекста дайджеста в выходной буфер:  симметричное шифрование;
 ассиметричное шифрование.
int EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *d, ↵
unsigned int cnt);
int EVP_DigestFinal(EVP_MD_CTX *ctx, unsigned char *md, ↵ В алгоритмах симметричного шифрования используется
unsigned int *s); один и тот же ключ для шифрования и расшифровки сообще-
ния. Это означает, что любой, кто имеет доступ к ключу шиф-
Параметры функции EVP_DigestUpdate – указатель рования, может расшифровать сообщение. Алгоритмы сим-
на контекст для вычисления хэша ctx, буфер d для хране- метричного шифрования именно поэтому и называют алго-
ния промежуточного результата вычисления и размер это- ритмами с секретным ключом – ключ шифрования должен
го буфера cnt. Функция EVP_DigestFinal сохраняет размер быть доступен только тем, кому предназначено сообщение.
вычисленного хэша в последнем параметре *s. Симметричное шифрование идеально подходит для шифро-
По завершении работы контекст для вычисления хэша вания информации «для себя», например, с целью отсечь не-
очищается при помощи функции EVP_MD_CTX_cleanup(). санкционированный доступ к ней в отсутствии владельца.
Листинг 3 демонстрирует порядок использования вы- Библиотека поддерживает большое количество симмет-
сокоуровневых функций библиотеки для вычисления хэ- ричных алгоритмов. Некоторые из них мы сейчас рассмот-
ша файла по алгоритму MD5. рим, и начнем с самого знаменитого – с DES.

50
безопасность
Алгоритм DES  Режим обратной связи по выхо-
Алгоритм DES (Data Encryption Standart, ду Output Feedback Mode (OFB).
стандарт шифрования данных) был Работает подобно CFB, но в качес-
разработан в 1973 году компанией тве входных данных для алгорит-
IBM и долгое время являлся основным ма шифрования используются ра-
стандартом шифрования в мире. Этот нее полученные выходные данные
алгоритм использует 56-битный ключ DES (см. рис. 4).
и шифрует данные блоками по 64 би-
та. Имеет несколько режимов работы, Если проводить аналогии с алго-
которые применимы и для других блоч- ритмом ГОСТ 28147-89, то режим ECB
ных шифров симметричной схемы: соответствует режиму простой за- Рисунок 1. Режим электронной
 Режим электронной шифроваль- мены, OFB – режиму гаммирования, шифровальной книги ECB
ной книги Electronic Codebook CFB – режиму гаммирования с обрат-
Mode (ECB). Простейший режим. ной связью.
Открытый текст обрабатывается Малая длина ключа и постоянно
блоками по 64 бита (8 байт) и каж- растущая мощность современных вы-
дый блок шифруется с одним и тем числительных комплексов сделали ал-
же ключом (см. рис. 1). Самой важ- горитм DES потенциально уязвимым
ной особенностью режима ECB яв- перед атакой, основанной на полном
ляется то, что одинаковые блоки переборе ключей. Это обстоятельс-
открытого текста в шифрованном тво наложило существенные ограни-
тексте будут также представлять- чения на использование DES в чистом
Рисунок 2. Режим сцепления
ся одинаковыми блоками. Поэтому виде и потребовало поиска альтерна- шифрованных блоков CBC
при передаче достаточно длинных тивы данному шифру. Один из вари-
сообщений режим ECB не может антов решения проблемы предпола-
обеспечить необходимый уровень гал создание совершенно нового ал-
защиты. Если сообщение имеет яв- горитма, другой подход сделал став-
но выраженную структуру, у крипто- ку на многократное шифрование с по-
аналитика появляется возможность мощью DES с применением несколь-
использовать регулярности текста. ких ключей.
Например, если известно, что в на- Широкое распространение полу-
чале сообщения всегда размещает- чил «тройной» DES (Triple-DES), пред-
ся определенный заголовок, крип- ставляющий собой последователь-
тоаналитик может получить в свое ность операций шифрования-дешиф-
распоряжение целый набор соот- рования-шифрования (EDE – encrypt-
ветствующих пар блоков открыто- decrypt-encrypt) с использованием трех
го и шифрованного текста. разных ключей. Схема «тройного» DES
 Режим сцепления шифрован- представлена на рис. 5.
ных блоков Cipher Block Chaining «Тройной» DES может также ис-
Mode (CBC). Эта технология сво- пользовать два ключа. В этом случае
бодна от недостатков режима ECB. операции шифрования выполняются Рисунок 3. Режим 64-битовой
шифрованной обратной связи CFB
В режиме CBC входной блок дан- на одном ключе, а операция дешиф-
ных для алгоритма шифрования рования – на другом.
вычисляется как результат опера- Использование функций библиоте-
ции XOR текущего блока открытого ки, реализующих алгоритм DES, пред-
текста и блока шифрованного тек- полагает два этапа: генерация клю-
ста, полученного на предыдущем чей и собственно шифрование ин-
шаге (см. рис. 2). формации.
 Режим шифрованной обрат- Генерацию DES-ключа выполня-
ной связи Cipher Feedback Mode ет функция DES_random_key(DES_ Рисунок 4. Режим 64-битовой
(CFB). Полученный на предыдущем cblock *ret). Входным параметром обратной связи по выходу OFB
шаге шифрованный текст исполь- функции является указатель на блок
зуется как входные данные для ал- данных типа DES_cblock, в котором бу-
горитма шифрования с целью полу- дет сохранен ключ. Тип DES_cblock оп-
чения псевдослучайной последова- ределен в файле openssl/des.h, и пред-
тельности (ПСП), XOR-разница ко- ставляет собой 8-байтовую последова-
торой и блока открытого текста оп- тельность с контролем четности. Млад-
ределяет очередной блок шифро- ший значащий бит каждого байта яв-
ванного текста (см. рис. 3) ляется битом четности: Рисунок 5. Схема «тройного» DES

№4, апрель 2006 51


безопасность
typedef unsigned char DES_cblock[8]; вертого блока используются только 2 байта. Так вот зна-
чение num показывает, сколько байт последнего 8-байто-
После генерации ключ необходимо сконвертиро- вого блока мы используем, или, как сказано в документа-
вать в платформенно-зависимый формат при помощи ции, «how much of the 64bit block we have used is contained
функции DES_set_key_checked(const_DES_cblock *key, in *num» (см. комментарии к функции DES_ede3_ofb64_
DES_key_schedule *schedule). Функция принимает два па- encrypt, файл crypto/des/ofb64ede.c исходных текстов биб-
раметра – указатель на сгенерированный ключ и указа- лиотеки).
тель на структуру типа DES_key_schedule. Этот струк-
турный тип определен в файле openssl/des.h. Функция Листинг 5. Фрагмент программы для криптопреобразования
файла по алгоритму Triple-DES с использованием трех ключей
DES_set_key_checked выполняет контроль четности всех и 64-битной обратной связи по выходу
байт ключа и проверяет, можно ли использовать его для
/* Буферы для входных и выходных (зашифрованных) данных */
шифрования, т.е. является ключ криптографически силь- unsigned char inbuf[1024], outbuf[1024];
ным или нет. Если четность байт не соблюдается, функция
/* Структура для хранения ключевых данных */
возвращает -1. Если сгенерированный ключ оказался крип- DES_key_schedule ks1, ks2, ks3;
тографически слабым (weak), функция возвращает -2. Ес-
/* Считываем три ранее созданных ключа
ли ключ удовлетворяет всем требованиям, то он конверти- (key – дескриптор ключевого файла) */
руется в платформенно-зависимый формат и помещается read(key,(unsigned char *)&ks1, DES_SCHEDULE_SZ);
read(key,(unsigned char *)&ks2, DES_SCHEDULE_SZ);
в структуру schedule. read(key,(unsigned char *)&ks3, DES_SCHEDULE_SZ);
Исходя из вышеизложенного, код генератора ключевой
/* Открываем входной и создаем выходной файлы */
последовательности для алгоритма Triple-DES будет выгля-
деть следующим образом: . . . .

/* Шифруем файл */
Листинг 4. Генератор ключей для алгоритма Triple-DES for(;;) {
inlen = fread(inbuf, 1, 1024, in);
#include <openssl/des.h> if(inlen <= 0) break;

int main() DES_ede3_ofb64_encrypt(inbuf, outbuf, (long)inlen, ↵


{ &ks1, &ks2, &ks3, (DES_cblock *)ivec, &num);
int key, i = 0, j = 0;
DES_cblock cb; fwrite(outbuf, 1, inlen, out);
DES_key_schedule ks; }

/* Создаем ключевой файл */


key = open(KEYS, O_CREAT|O_TRUNC|O_RDWR, 0600); С перечнем всех функций, реализующих различные
режимы алгоритма DES, можно ознакомиться на страни-
/* Генерируем три ключа */
for(; i < 3; i++) { цах руководства man des, описание режимов приведено
DES_random_key(&cb); в man des_modes.
if((j = DES_set_key_checked(&cb, &ks)) != 0) return j;
if(write(key, (unsigned char *)&ks, ↵
DES_SCHEDULE_SZ) < 0) return -1; Алгоритм Blowfish
}
} Blowfish – симметричный блочный шифр, разработанный
Брюсом Шнайером (Bruce Schneier). Этот шифр использу-
Операцию криптопреобразования по алгоритму ет ключи разной длины, обычно 128 бит, и шифрует дан-
Triple-DES с тремя к лючами и 64-битной обратной ные блоками по 64 бита. Алгоритм поддерживает такие же
связью по выходу (режим OFB) выполняет функция режимы, как и DES (см. раздел «Алгоритм DES»), и счита-
DES_ede3_ofb64_encrypt: ется одним из самых быстрых в своем классе.
Как и в случае алгоритма DES, использование Blowfish
void DES_ede3_ofb64_encrypt(const unsigned char *in, ↵ включает две стадии: генерацию ключевых данных и собс-
unsigned char *out, long length, ↵
DES_key_schedule *ks1, DES_key_schedule *ks2, ↵ твенно криптопреобразование информации.
DES_key_schedule *ks3, DES_cblock *ivec, int *num); Генерация ключевых данных предполагает получение
N-битной случайной последовательности и последующее
В параметрах функции передаются: ее преобразование при помощи функции BF_set_key(), про-
 указатели на блоки незашифрованных и зашифрован- тотип которой определен в файле openssl/blowfish.h:
ных данных in и out;
 размер данных для шифрования length; void BF_set_key(BF_KEY *key, int len, ↵
const unsigned char *data);
 ключи шифрования ks1, ks2, ks3;
 указатель на вектор инициализации ivec (начальное за- Задача этой функции – поместить ключ длиной len из бу-
полнение блока ivec, см. рис. 2-4); фера data в структуру key.
Криптопреобразование данных в режиме CFB c 64-битной
Разъясним назначение последнего параметра int *num. обратной связью выполняет функция BF_cfb64_encrypt:
Шифрование выполняется блоками по 64 бита, но дли-
на входного сообщения (файла) не обязательно должна void BF_cfb64_encrypt(const unsigned char *in, ↵
unsigned char *out, long length, ↵
быть кратна этому значению. Например, файл размером const BF_KEY *schedule, unsigned char *ivec, ↵
26 байт состоит из трех целых 8-байтовых блоков, а из чет- int *num, int enc);

52
безопасность
Думаю, что после того как мы рассмотрели DES, ни- fwrite(outbuf, 1, inlen, out);
}
кому не составит труда разобраться в назначении пара- }
метров этой функции. Остановимся только на последнем
параметре – int enc. Он задает режим работы алгоритма
и может принимать два значения: BF_ENCRYPT для ре- Использование высокоуровневых функций
жима шифрования и BF_DECRYPT для режима дешиф- библиотеки для шифрования
рования. Оба эти значение определены в файле openssl/ Как и в случае алгоритмов хэширования (см. раздел «Вы-
blowfish.h: числение хэшей»), разработчики библиотеки рекоменду-
ют использовать функции высокого уровня вместо прямо-
#define BF_ENCRYPT 1 го обращения к функциям алгоритма шифрования. Поря-
#define BF_DECRYPT 0
док использования высокоуровневых функций шифрова-
А теперь оформим все теоретические выкладки в виде ния и хэширования идентичен – в обоих случаях необходи-
функции криптографического преобразования информа- мо создать и инициализировать контекст, записав в него
ции по алгоритму Blowfish, работающему в режиме 64-бит- адреса функций необходимых алгоритмов. Адреса выби-
ной обратной связи (CFB-64). раются из внутренней таблицы, куда они попадают при по-
мощи функции OpenSSL_add_all_ciphers().
Листинг 6. Функция криптографического преобразования Контекст алгоритма шифрования представляет собой
информации по алгоритму Blowfish, режим 64-битной обратной
связи (CFB-64) структуру типа EVP_CIPHER_CTX, определенную в фай-
ле openssl/evp.h. Первым элементом этой структуры яв-
#include <openssl/blowfish.h>
ляется указатель на структурный тип EVP_CIPHER следу-
#define BUFSIZE 1024 ющего вида:
/* Функция криптопреобразования информации.
Параметры функции: дескрипторы входного и выходного struct evp_cipher_st {
файлов и режим работы – BF_ENCRYPT для шифрования int nid;
и BF_DECRYPT для дешифрования */ int block_size;
int do_crypt(FILE *in, FILE *out, int mode) int key_len; /* Default value for variable length ciphers */
{ int iv_len;
int num = 0; unsigned long flags; /* Various flags */
unsigned char inbuf[BUFSIZE], outbuf[BUFSIZE]; int (*init)(EVP_CIPHER_CTX *ctx, ↵
const unsigned char *key, const unsigned char *iv, ↵
/* Ключ шифрования длиной 128 бит и вектор инициализации */ int enc); /* init key */
const unsigned char key[16]; int (*do_cipher)(EVP_CIPHER_CTX *ctx, ↵
unsigned char iv[8]; unsigned char *out, const unsigned char *in, ↵
BF_KEY bfkey; unsigned int inl);/* encrypt/decrypt data */
int (*cleanup)(EVP_CIPHER_CTX *); /* cleanup ctx */
/* Помещаем ключ в структуру bfkey */ int ctx_size; /* how big ctx->cipher_data needs to be */
BF_set_key(&bfkey, sizeof(key), key); int (*set_asn1_parameters)(EVP_CIPHER_CTX *, ASN1_TYPE *);
int (*get_asn1_parameters)(EVP_CIPHER_CTX *, ASN1_TYPE *);
/* Шифруем блоки входного файла */ int (*ctrl)(EVP_CIPHER_CTX *, int type, int arg, void *ptr);
for(;;) { void *app_data; /* Application data */
int inlen = fread(inbuf, 1, BUFSIZE, in); } /* EVP_CIPHER */;
if(inlen <= 0) break;

BF_cfb64_encrypt(inbuf, outbuf, (long)inlen, ↵ Этот структурный тип содержит в своем составе ука-
&bfkey, iv, &num, mode);
затели на функции, которые заполняются необходимыми
fwrite(outbuf, 1, inlen, out); нам значениями – адресами функций соответствующих
}
return 1; алгоритмов. Получить адреса этих функций можно дву-
} мя способами.
Первый способ подразумевает поиск по символьному
Следующий фрагмент функции иллюстрирует поря- имени алгоритма:
док криптопреобразования по алгоритму Blowfish, режим
64-битной обратной связи по выходу (OFB-64). OpenSSL_add_all_ciphers();
const EVP_CIPHER * cipher = EVP_get_cipherbyname("des_cbc");

Листинг 7. фрагмент функции криптографического Функция EVP_get_cipherbyname(const char * name) из-


преобразования информации по алгоритму Blowfish,
режим 64-битной обратной связи по выходу (OFB-64) влекает адреса функций алгоритма шифрования из внут-
void do_crypt(FILE *in, FILE *out) ренней таблицы библиотеки и заполняет структуру cipher.
{
unsigned char inbuf[BUFSIZE]; Входные параметры функции – символьное имя алгорит-
unsigned char outbuf[BUFSIZE]; ма, в данном случае это DES, режим CBC. Перечень всех
/* Ключ и вектор инициализации */ имен содержится в файле openssl/object.h.
. . . Второй способ – прямое обращение к нужной EVP-
BF_set_key(&bfkey, KEY_SIZE, key); функции:
for(;;) { const EVP_CIPHER *cipher = EVP_des_cbc();
int inlen = fread(inbuf, 1, BUFSIZE, in);
if(inlen <= 0) break;

BF_ofb64_encrypt(inbuf, outbuf, (long)inlen, ↵ Получив адреса функций, инициализируем контекст


&bfkey, iv, &num); алгоритма:

№4, апрель 2006 53


безопасность
EVP_CIPHER_CTX_init(EVP_CIPHER_CTX *ctx); Если мы захотим использовать другой алгоритм, нам
EVP_EncryptInit(EVP_CIPHER_CTX *ctx, ↵
const EVP_CIPHER *cipher, const unsigned char *key, ↵ достаточно будет заменить одну строку в исходном тексте.
const unsigned char *iv); Например, для использования алгоритма Blowfish в режи-
ме шифрованной обратной связи по выходу (OFB) необхо-
Функция EVP_CIPHER_CTX_init обнуляет структуру, вы- димо заменить строку:
деленную под контекст. Инициализацию контекста выполня-
ет функция EVP_EncryptInit(). Параметры функции – указа- cipher = EVP_aes_256_cfb();
тель на контекст алгоритма ctx, структура с адресами биб-
лиотечных функций алгоритма cipher, блок с ключевыми строкой:
данными key и вектор инициализации iv.
После инициализации контекста можно прист у- cipher = EVP_bf_ofb();
пать к операции шифрования. Делает это функция
EVP_EncryptUpdate(): а также задать правильную длину ключевых данных.
Список всех EVP-функций находится в файле openssl/
int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, ↵ evp.h.
unsigned char *out, int *outl, ↵
const unsigned char *in, int inl); Обратный процесс дешифрования информации отлича-
ется только названиями функций: вместо «EVP_EnryptInit»
Функция шифрует inl байтов из буфера in и записывает пишем «EVP_DecryptInit», вместо «EVP_EncryptUpdate» –
зашифрованные данные в буфер out. В переменной outl со- «EVP_DecryptUpdate» и т. д. Фрагмент функции дешифрова-
храняется количество зашифрованных байтов. ния файла, зашифрованного по алгоритму AES с 256-бит-
Если размер сообщения не кратен размеру блока шиф- ным ключом в режиме 64-битовой обратной связи, пред-
рования, то выполняется вызов функции EVP_EncryptFinal, ставлен в листинге 9.
которая «дошифровывает» оставшиеся данные:
Листинг 9. Дешифрование файла, зашифрованного по алгоритму AES,
int EVP_EncryptFinal(EVP_CIPHER_CTX *ctx, ↵ длина ключа 256 бит, режим 64-битовой шифрованной ОС
unsigned char *out, int *outl);
int do_decrypt(char *infile)
{
Следующий код демонстрирует использование функ- /* Объявляем переменные */
ций высокого уровня для шифрования файла по алгорит- . . . .
му AES с ключом длиной 256 бит, режим 64-битовой шиф- /* Обнуляем контекст и выбираем алгоритм дешифрования */
рованной обратной связи CFB. EVP_CIPHER_CTX_init(&ctx);
EVP_DecryptInit(&ctx, EVP_aes_256_cfb(), key, iv);

Листинг 8. Шифрование файла по алгоритму AES, длина ключа /* Открываем входной и создаем выходной файлы */
256 бит, режим 64-битовой шифрованной обратной связи . . . .

#include <openssl/evp.h> /* Дешифруем данные */


for(;;) {
#define BUFSIZE 1024 inlen = fread(inbuf, 1, BUFSIZE, in);
if(inlen <= 0) break;
int do_crypt(char *infile)
{ if(!EVP_DecryptUpdate(&ctx, outbuf, &outlen, ↵
int outlen, inlen; inbuf, inlen)) return 0;
FILE *in, *out; fwrite(outbuf, 1, outlen, out);
unsigned char key[32]; /* 256-битный ключ */ }
unsigned char iv[8]; /* вектор инициализации */
unsigned char inbuf[BUFSIZE], outbuf[BUFSIZE]; /* Завершаем процесс дешифрования */
EVP_CIPHER_CTX ctx; if(!EVP_DecryptFinal(&ctx, outbuf, &outlen)) return 0;
const EVP_CIPHER * cipher;
. . . .
/* Обнуляем структуру контекста */ }
EVP_CIPHER_CTX_init(&ctx);

/* Выбираем алгоритм шифрования */ Работоспособность всех программ была проверена для


cipher = EVP_aes_256_cfb(); ОС Linux Slackware 10.2, компилятор gcc-3.3.6, библиотека
/* Инициализируем контекст алгоритма */ OpenSSL 0.9.7c. Исходные тексты всех программ, рассмот-
EVP_EncryptInit(&ctx, cipher, key, iv); ренных в данной статье, вы можете скачать с сайта http://
/* Шифруем данные */ bob.netport.com.ua/ssl.tar.gz.
for(;;) { Во второй части статьи мы рассмотрим примеры исполь-
inlen = fread(inbuf, 1, BUFSIZE, in);
if(inlen <= 0) break; зования функций библиотеки для криптографической защи-
if(!EVP_EncryptUpdate(&ctx, outbuf, &outlen, ↵ ты данных с помощью ассиметричных алгоритмов.
inbuf, inlen)) return 0;
fwrite(outbuf, 1, outlen, out);
} Литература:
if(!EVP_EncryptFinal(&ctx, outbuf, &outlen)) return 0; 1. Стахов В. Теория и практика OpenSSL. – Журнал «Системный
fwrite(outbuf, 1, outlen, out); администратор», №1(2), январь 2003 г. – 17-26 с.
EVP_CIPHER_CTX_cleanup(&ctx);
return 1; 2. Шнайер Б. Прикладная криптография. Протоколы, алгорит-
} мы, исходные тексты на языке Си. – М.: Издательство ТРИ-
УМФ, 2003 – 816 с.; ил.

54
безопасность

Создаем VPN с помощью SSL-Explorer

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

56
безопасность

И
с поль зо в ани е VPN ( Vir tual
Private Network) позволяет ор-
ганизовать доступ к корпора-
тивным ресурсам при работе через
небезопасные сети. Во время постро-
ения виртуальной частной сети обыч-
но возникает ряд проблем, и для окон-
чательного принятия решения необхо-
димо ответить на ряд вопросов. Какую
реализацию использовать: специали-
зированное устройство или програм-
му на универсальном оборудовании?
Первые обладают хорошей произво-
дительностью, но их цена высока. К то- Рисунок 1. Схема работы SSL-Explorer
му же очень часто компания уже име-
ет налаженную сеть, которую не силь- некоторых операций Java), что сразу 2003, что позволяет убрать такие сер-
но хочется перестраивать при появ- же снимает вопросы по операционной висы, традиционно обитающие в DMZ,
лении филиалов, в которых подчас системе, используемой на клиентском внутрь сети. Работают Citrix ICA-клиен-
стоит один-единственный компьютер. компьютере. И, естественно, такой ва- ты, MS RDP/Terminal, SSH1/SSH2/VNC/
Начальство на такую серьезную тра- риант идеально подходит в случае ра- SFTP/Telnet/TN5250-терминалы.
ту может попросту не пойти. Програм- боты пользователя на чужом компьюте- Все соединения заворачиваются
мные решения, не смотря на сущест- ре, так как на клиентском компьютере на один-единственный порт (по умол-
венно меньшую цену, а подчас и бес- не требуется установка дополнитель- чанию 443), и специфика самого SSL,
платность, также не лишены недостат- ного ПО, как, например, в системах, работающего на прикладном уровне,
ков. Самыми главными являются за- базирующихся на Ipsec или OpenVPN. упрощает настройку межсетевых экра-
висимость от операционной системы То есть если, например, OpenVPN хо- нов и позволяет работать из-под NAT.
и сложность в настройке. Впрочем, рошо подходит для организации фик- Для аутентификации пользователей
если первую проблему можно решить, сированных, или point-to-point соедине- может использоваться внутренняя ба-
например, при помощи OpenVPN [3], ний, то SSL-Explorer более удобен для за, Active Directory, RADIUS или сис-
которая успешно работает под управ- организации дистанционного доступа темные пользователи UNIX. При этом
лением Linux, Windows, Mac OS X, раз- к сетям и сервисам одиночными ком- если, например Active Directory не бу-
личных вариантов BSD и Solaris. То вот пьютерами или перемещающимися дет запущен на момент загрузки SSL-
с настройкой в филиалах, как правило, пользователями, не имеющими свое- Explorer, то последний прекратит свою
не имеющих штатного системного ад- го постоянного IP-адреса. работу. Кроме обычной аутентифика-
министратора, могут возникнуть про- Основные настройки защищенного ции может использоваться и расши-
блемы. И самое главное – оба вариан- соединения в этом случае могут произ- ренная, когда пользователю в случай-
та не всегда могут помочь с «блуждаю- водиться как администратором на сер- ном порядке задается один из пяти до-
щими» менеджерами, которые для до- верной, так и пользователем с клиент- полнительных вопросов (любимая кни-
ступа к ресурсам корпоративной сети ской стороны. Причем для настройки га или телепередача, девичья фами-
вынуждены использовать чужие либо не требуется ручное редактирование лия матери, имя отца, место рожде-
заведомо слабозащищенные компью- конфигурационного файла, весь про- ния). Для удобства настройки пара-
теры. Но выход есть. цесс проходит с использованием веб- метров доступа в случае использова-
браузера путем занесения необходи- ния внутренней базы использован ро-
Проект SSL-Explorer мых параметров в подготовленные по- левой RBAC-принцип, когда админис-
Созданная в 2001 году английская ком- ля. И что не менее важно, при переме- тратор создает роли с заранее подго-
пания 3SP Ltd ведет разработки в сфе- щении клиента перенастройка пара- товленными профилями, а затем на-
ре безопасности сетевой связи, в част- метров в большинстве случаев не пот- значает соответствующие роли поль-
ности создание различных SSH-реше- ребуется. Любые приложения, исполь- зователям. На основании ролей можно
ний с открытым исходным кодом, рабо- зующие незащищенные протоколы, разрешить или запретить доступ к оп-
тающих на Java-платформе и ориенти- могут использовать образованный SSL- ределенному сетевому ресурсу или
рованных для применения в сетях уров- туннель, т.е. при помощи SSL-Explorer сервису, а также настройкам. В целях
ня предприятия. Основным продук- довольно просто организовать доступ безопасности можно разрешить ре-
том является SSL-Explorer, представ- извне к почтовому и веб-серверу, фай- гистрацию некоторых клиентов толь-
ляющий собой решение для организа- ловым и другим ресурсам корпоратив- ко с определенных IP-адресов, уста-
ции SSL VPN, работающее по клиент- ной сети. Поддерживаются дистан- новить требования к клиенту (опера-
серверной схеме с использованием ционный доступ к ресурсам Microsoft ционная система, версия Java, нали-
веб-технологий (рис. 1). Для настрой- Windows посредством веб-браузера чие сервис паков), что позволяет ис-
ки и работы используется любой веб- или через Microsoft WebFolders, а также ключить использование потенциально
браузер, поддерживающий SSL (и для доступ к Microsoft Outlook Web Access уязвимых машин, имитируя таким об-

№4, апрель 2006 57


безопасность
PIN, OTP, отсылаемый в виде текстового SMS-сообщения
на мобильный телефон клиента. Xtra также совместим с та-
кими USB-криптоустройствами, как SafeNet 2032 и Aladdin
eToken USB. Незаменимым дополнением является наличие
экранной клавиатуры, что позволяет хоть как-то защитить-
ся от клавиатурных перехватчиков. Дистанционное управ-
ление посредством SSH1/2, telnet и VNC. Демонстрацион-
ную версию Xtra можно загрузить на сайте.
Сервер SSL-Explorer поддерживает Sun Java Runtime
Environments (JRE) и Sun Java Development Kits (JDK), а так-
же Microsoft JVM. Официально поддерживается установка
сервера на Microsoft Windows XP/2000/2003 и Red Hat Linux
8.0 и старше. Остальные дистрибутивы Linux имеют неофи-
циальную поддержку. Я устанавливал SSL-Explorer на три
дистрибутива Slaskware 10.1 и производные от Slaskware –
Vector Linux 5.1.1 SOHO и DeepStyle, проблем не было.

Рисунок 2. Последним этапом установки является настройка Установка и первичная настройка


при помощи веб-браузера
Разработчики рекомендуют использовать сервер с 1 ГГц про-
разом технологию Network Admission Control у Cisco. Воз- цессором, 512 Мб ОЗУ и 150 Мб свободного места на жест-
можна установка времени, по истечении которого произой- ком диске. Эксперименты показывают, что при обслужива-
дет автоматическое отключение клиента в случае его неак- нии 5-10 клиентов вполне подойдет система с меньшими тре-
тивности, количество неудачных попыток регистрации пе- бованиями – 633 МГц и 256 Мб ОЗУ. На сервере должна быть
ред блокировкой или отключением. Используя SSL-Explorer, установлена Java не ниже пятой версии, но опыт показыва-
становится возможным при помощи веб-браузера послать ет, что на клиентах достаточно использовать версию ниже.
Wakeup-on-LAN-сигнал любому компьютеру удаленной се- В частности, на компьютере клиента, работающем под уп-
ти. Поддерживается три вида http-прокси: Single Site, Secure равлением операционной системы Windows XP, был уста-
и Reverse, а также SOCKS. Для варианта Secure возможно новлен JRE SE 1.4.2. Архив с SSL-Explorer можно получить
выставить фильтры, позволяющие заменять контент. Кро- с [2]. В зависимости от используемой операционной систе-
ме того, к SSL-Explorer относительно просто самому доба- мы или дистрибутива понадобится различный файл:
вить свое расширение, на сайте даны примеры.  sslexplorer_windows_0_1_16_01.zip – если планирует-
Первая тестовая версия была представлена обществен- ся использовать сервер под управлением Windоws;
ности в конце августа 2004 года. Актуальной на момент на-  sslexplorer_linux_rpm_0_1_16_01.zip – для дистрибути-
писания статьи является версия 0.1.16_01, но это не значит, вов Linux, использующих rpm-пакеты (собран под Red
что в продукте много недоработок. В данном случае это по- Hat Linux, поэтому в других может не пойти);
казывает стремление разработчиков к реализации тех или  sslexplorer_linux_gui_0_1_16_01.zip – для установки
иных функций, поэтому основные характеристики в будущем в графическом режиме в других дистрибутивов Linux;
могут измениться. Так, в ближайшее время планируется:  sslexplorer_unix_0_1_16_01.zip – установка в FreeBSD,
 включить модули аудита и генерации отчетов, которые Mac OS X, Solaris и Linux (в случае если не подойдут пер-
будут позволять, в том числе обнаруживать попытки не- вые два варианта).
правильного использования;
 добавить дополнительные методы аутентификации: ап- Для примера установим SSL-Explorer на сервер, работа-
паратные, такие как SecurID-токены и одноразовые па- ющий под управлением Slaskware, хотя установка в Windows
роли (one-time passwords – OTP); практически идентична за исключением моментов, связан-
 реализовать возможность дистанционной помощи, ко- ных с отличием этих систем. Сам процесс сложным назвать
торая позволит администраторам помочь в настройке трудно. В данном варианте установки подходит третий па-
сервиса, посредством удаленного управления ПК; кет, который необходимо распаковать, зайти внутрь ката-
 управление кэшем клиента – позволит автоматически лога и ввести (необходимы права root). Если на компьютере
очищать систему от следов работы SSL-Explorer; не установлена Java или инсталлятор не сможет ее найти,
 модуль SSL для клиентов – для реализации сквозного то будет выдан запрос на закачку и установку JVM.
шифрования в пределах корпоративной сети.
# sh sslexplorer_linux_0_1_16.sh
Распространяется SSL-Explorer под лицензией GNU GPL Starting Installer ...
Detect OS slackware
без каких либо ограничений на количество соединений или Mar 27, 2006 10:14:38 AM java.util.prefs.FileSystemPreferences$3 run
пользователей. Кроме этого предлагается коммерческая INFO: Created system preferences directory in java.home.
Starting SSL Explorer in setup mode ....................
версия SSL-Explorer Xtra, распространяемая в виде плаги- Def security.administrator Category 10 resources = permissions
на, имеющая более широкие возможности и коммерческую Def general.userConfiguration Category 20 resources = permissions
Def networking.showPersonalTunnels Category 30 resources = permissions
поддержку. Например, в ней добавлены следующие методы Def services.showPersonalWebForwards Category 40 resources = permissions
аутентификации: LDAP, SSL-сертификат, публичный ключ, Def vpnClient.logon Category 50 resources = permissions

58
безопасность
После этого запускается графи-
ческий инсталлятор, в большинстве
случаев отвечая на вопросы которо-
го достаточно методично нажимать
на «Next».
В Linux опционально можно создать
символические ссылки на исполняе-
мые файлы в другой каталог, видный
из переменной PATH.
После копирования файлов бу-
дет предложено подключиться к сер-
веру и произвести первоначальную
настройку при помощи веб-браузе-
ра (рис. 2).
Для этого нажимаем «Launch» ли-
бо запускаем любой веб-браузер (на-
пример, Firefox) и заходим на страницу
http://localhost:28080. В Windows, ско-
рее всего, последует запрос межсе-
тевого экрана на разрешение запуска
программы setup-sslexplorer. Рисунок 3. Для дальнейшей работы необходимо сгенерировать сертификат
В первом окне «Web Security»
(рис. 3) вам необходимо будет сгене-
рировать сертификат сервера. Здесь
все просто, во вкладке «Step 1» ука-
зываем пароль, а затем в «Step 2»
нажимаем на «Create New key store»
и последовательно заполняем все по-
ля: IP-адрес или имя сервера, компа-
ния, город, страна и другие, после че-
го нажимаем «Generate». Как вариант
можно импортировать готовые серти-
фикаты, подписанные доверенными
организациями.
Следующее окно «Security Options»
позволяет указать некоторые пара-
метры безопасности. Здесь в пер-
вую очередь, используя список «User
database», следует указать использу-
емый для аутентификации пользова-
телей плагин. Если не используется Рисунок 4. Перед окончанием процесса установки смените пароль администратора
Active Directory, а рабочие группы, бо-
лее удобным является выбор «Buil-in», чае может быть полезна активация пен всем, то желательно сменить его
позволяющий использовать внутрен- опции «Lock session on browser close», в «Admin-Access Control → Accounts».
нюю базу пользователей. Здесь же позволяющая при открытой сессии Здесь ставим галочку в поле «Mark»
можно задать параметры безопас- заходить без повторной регистра- и нажимаем «Password» либо через
ности: количество неудачных попы- ции с другой вкладки веб-браузера. «Edit», где заполняем поле «Fullname»,
ток перед блокировкой/отключени- Как вариант можно установить огра- и сбрасываем пароль, установив га-
ем, количество символов в пароле ничение на одну сессию для пользо- лочку в «Reset password». После на-
и регулярное выражение, которому вателя, либо одна сессия для пользо- жатия на «Save» будет предложено
он должен соответствовать, подсказ- вателя/IP-адреса. ввести новый пароль. Обратите вни-
ка пользователю, помогающая уста- После внесения всех изменений мание на пункт «Force user to change
новить правильный пароль. На этой на любой странице не забывайте со- password at next logon». Если его акти-
странице можно определить возмож- хранять их, нажимая кнопку «Save». вировать во время следующей регис-
ность параллельной работы пользова- По умолчанию у пользователя трации пользователя, он вынужден бу-
теля в нескольких окнах веб-браузера. admin пустой пароль (в более ранних дет обязательно сменить пароль, при
Если ограничения не предусмотрены, версиях использовался пароль admin), этом использовать повторно старый
то параметр «Multiple sessions» выби- так как после окончания процесса ус- система не даст. Перед выходом про-
раем как «No restriction». В этом слу- тановки SSL-Explorer будет досту- контролируйте значение поля «Status».

№4, апрель 2006 59


безопасность
строке браузера набирать каждый раз
(а некоторым бывает довольно труд-
но объяснить) https и номер порта при
подключении. Для удобства при по-
мощи «Enable HTTP redirect» и «HTTP
redirect port» можно настроить пере-
направление с 80 (по умолчанию пор-
та) на https-порт, используемый сер-
вером SSL-Explorer. Если узел име-
ет несколько имен, то их можно пере-
числить в «Valid external hostnames».
В «Proxies», если необходимо, настра-
иваем параметры прокси или SOCKS-
сервера.
Последний раздел «Automatic
Updates» позволяет настроить пара-
метры автоматического обновления
SSL-Explorer.
Сохраняем результат и останавли-
Рисунок 5. Создание ролей в SSL-Explorer
ваем сервер «Admin → Shutdown».

Начинаем работу
После окончания процесса настройки
следует разрешить запуск SSL-Explorer
вместе с системой. Соответствующие
скрипты имеются только в rpm-пакет-
ном варианте, в остальных случаях об
этом необходимо позаботиться само-
му. В Windows SSL-Explorer устанавли-
вается в качестве сервера, просто про-
контролируйте возможность его авто-
матического старта.
Для ручного запуска в случае ис-
пользования rpm-варианта вводим:

# service sslexplorer start; ↵


chkconfig sslexplorer on

В остальных дистрибутивах:
Рисунок 6. Настройка доступа к ресурсам # sslexplorer-console
Для того чтобы пользователь мог вой- В разделе «Profile» одно значе-
ти в систему, там должно стоять значе- ние, активация которого позволя- Дальнейшую работу и настройку
ние «Granted» («Mark → Enable»). Воз- ет при наличии нескольких профи- можно проводить с удаленного ком-
можны другие варианты: «Active» – лей выбирать пользователю текущий пьютера. Открываем браузер, вводим
пользователь сейчас зарегистрирован (рабочий). имя сервера, регистрируемся в сис-
в системе и «Disabled» – пользователь Следующие два раздела пред- теме.
неактивен (рис. 4). ставляют сейчас наибольший интерес. Теперь доступны пять вкладок:
И еще один пункт, который реко- Это «Web server» и «Proxies». По умол-  Home – статус и запуск VPN-тунне-
мендую посетить перед первым за- чанию сервер SSL-Explorer будет ис- ля, смена пароля и персональные
пуском – «General Options». В нем ус- пользовать 443 порт, если он занят, настройки для конкретного клиента
танавливаются глобальные перемен- то необходимо изменить это значе- (прокси, некоторые параметры бе-
ные. Здесь пять разделов. В разделе ние. Хотя теперь можно спрятать веб- зопасности, настройка интерфей-
«Network Places» можно выставить воз- сервер компании за SSL-Explorer и на- са, вход в домен).
можность увидеть домашний каталог строить перенаправление. При нали-  Networking – доступ к Windows-ре-
пользователя (если имеется) в списке чии нескольких интерфейсов «слу- сурсам и опять же запуск VPN-тун-
ресурсов, использование текущего ло- шаться» будут все. Использовав па- неля.
гина и пароля при подключении к сете- раметр «Bind address», можно ука-  Services – настройка доступа к ин-
вым ресурсам или как вариант исполь- зать список прослушиваемых адресов. транет-ресурсам, приложениям
зование гостевого входа. Пользователям неудобно в адресной и Wakeup-On-LAN.

60
безопасность
 Admin – эта вкладка доступна только администратору
и содержит все глобальные настройки, частично о ко-
торых говорилось при описании процесса установки.
 Help – помощь (доступно два pdf-документа «Quick
Start Guide», «Reference_Guide» и ссылки на Knowledge
Base сайта проекта).

Настройка ролей
В принципе сервер уже готов к приему клиентов, поэто-
му для примера я покажу вам настройку доступа к ресур-
сам, организуем работу по SSL-туннелю и разберемся с со-
зданием роли для работы обычных пользователей. Разо-
браться с остальными настройками помогут вышеупомя-
нутые документы. Единственное, что смущает – информа-
ция в этих документах дана для более раннего варианта
интерфейса, что несколько сбивает с толку.
При помощи SSL-Explorer в целях повышения безо-
пасности можно выставить соответствующие разреше-
ния для пользователей. На основании этих разрешений Рисунок 7. Окно файлового менеджера SSL-Explorer
может быть получен либо отвергнут доступ к некоторым fs/cifs/192.168.0.20/documentations (рис. 6). В поле «Short
настройкам. Вместо индивидуальных разрешений приме- name» прописываем короткое понятное имя ресурса. Пос-
няется концепция RBAC (Role Based Access Control), ког- ле нажатия на «Save» новый ресурс появится в списке.
да задаются роли и все пользователи в пределах этих ро- По щелчку на нем откроется окно (рис. 7), в котором вы
лей унаследует эти разрешения. При этом роли действу- можете перемещать, удалять, скачивать и загружать фай-
ют не только при применении встроенной базы, но и груп- лы, создавать каталоги. Чтобы ресурс выводился в списке
пам Active Directory могут быть сопоставлены соответс- «My Favorites», который появляется в первом окне, встре-
твующие роли. При применении встроенной базы дан- чающем пользователя сразу после регистрации, отмечаем
ных придется создавать роли и назначать пользователей «Mark» и жмем кнопку «Favorite».
в эти группы вручную.
Рассмотрим, как создать новую роль. Открываем Создание туннелей для приложений
«Admin → Access Control → Roles» (рис. 5). По умолчанию До настоящего времени мы использовали туннель для до-
там присутствует только одна роль, соответствующая ад- ступа к ресурсам исключительно при помощи веб-браузе-
министратору. При использовании Active Direcory будут вы- ра. Можно, конечно, читать почту и при помощи браузера,
ведены найденные группы, но с неактивным «revoked»-ста- но любой почтовый клиент все-таки на порядок удобней,
тусом. Для того чтобы их включить, необходимо отметить чем веб-интерфейс. Для обеспечения возможности работы
и нажать «Grant». Создать новую роль также просто. В раз- другим приложениям через проложенный туннель в соста-
деле «Create role» вводим название новой роли и нажима- ве SSL-Explorer имеется встроенный VPN-клиент, который
ем «Create». Вновь созданная роль всегда помечается как также написан на Java. Клиент по требованию загружает-
revoked, перед ее активацией следует отредактировать раз- ся с сервера, выполняется в рабочем пространстве клиент-
решения, выбрав ее и нажав «Permissions». В появившемся ской машины и выполняет роль прокси, обеспечивая пере-
окне будет 6 разделов, при помощи которых можно разре- направление TCP и UDP-соединений в туннель.
шить запуск VPN-клиента, редактирование параметров тун- Для того чтобы запустить его, достаточно зарегистри-
неля, доступа к сетевым ресурсам, приложениям. Нажатие роваться в системе и на первой странице в разделе «VPN
на «Allow All» разрешит использование всех неадминистра- Client Status» нажать «Launch», после чего повторно нужно
торских разрешений. После редактирования разрешений будет принять сертификат. Если клиент запустится удач-
включаем роль «Grant» и переходим к вкладке «Accounts», но, пользователю будет выведено сообщение и откроет-
где распределяем пользователей по ролям. ся дополнительно окно (рис. 8), показывающее статус
(в Windows появится в трее значок). Возможен вариант ав-
Настройка доступа к ресурсам томатического запуска клиента сразу после регистрации
Для доступа к ресурсам выбираем «Networking → Networking пользователя. Чтобы разрешить та-
Places» и попадаем в окно «My Network Places». Здесь кой запуск, заходим в «Home → My
по умолчанию уже присутствует ресурс «Windows Network Account → Configuration» и устанав-
Neighborhood», щелчок по которому должен вывести все ливаем опцию «Start Automatically
домены или рабочие группы сети (для Windows в Linux on Login». После того как туннель
как минимум придется настроить Samba). Чтобы органи- будет запущен, браузер можно за-
зовать доступ к отдельному ресурсу, нажимаем «Create» крыть, сессия будет заблокирована,
и вводим путь к ресурсу. Только вместо привычного при последующем соединении у вас
«\\имя_узла\ресурс» вводим ссылку относительно /fs/cifs. запросят только пароль. Выключить
Рисунок 8. Окно
Например, /fs/cifs/computer/documentations или IP-адрес/ клиента можно при помощи этого статуса VPN-клиента

№4, апрель 2006 61


безопасность
 Destination Host – IP-адрес или до-
менное имя корпоративного почто-
вого сервера;
 Destination Port – 110.

Активация «Auto start» позволит


запускать указанный туннель вмес-
те с VPN-клиентом, а «Allow External
Hosts» даст возможность выходить
в туннель, зарегистрировавшись в дру-
гих компьютерах. Нажатием на «Add»
создаем новый туннель. Для того что-
бы почтовый клиент мог к нему под-
ключиться, необходимо в свойствах
вместо имени почтового сервера пос-
тавить localhost (или 127.0.0.1). Теперь
при попытке получить почту почтовый
клиент будет соединяться с 110 пор-
том локальной системы, где запрос
Рисунок 9. Окно настройки персональных туннелей
будет перехватываться и по защищен-
дополнительного окна, выбрав «Exit», При этом клиент обеспечивает два ному туннелю (порт 443) передаваться
либо из главного окна, нажав на ссыл- вида пересылки: local и remote, то есть на сервер SSL-Explorer и далее на поч-
ку «VPN client status», расположенную исходящие и входящие. Первый вид товый сервер.
в верхнем правом углу. все исходящие сообщения с указан-
Но сам по себе клиент ничего де- ного локального порта пересылает Выводы
лать не будет. Для работы ему необ- на удаленный адрес и порт. Второй Рассказать обо всех настройках SSL-
ходимо указать, откуда брать и ку- поступает аналогично, но только пе- Explorer в пределах одной статьи не
да пересылать информацию. Тунне- ресылаются все сообщения, поступив- возможно. В процессе тестирования
ли могут быть глобальными, т.е. на- шие на указанный порт. Для local под- он показал себя как продукт, способ-
строены администратором для всех, держиваются протоколы UDP и TCP, ный конкурировать с некоторыми ком-
так и индивидуальные пользователь- для remote только TCP. мерческими решениями. Тем, кто при-
ские. Настройка пользовательских Для примера настроим туннель, сматривается к вариантам SSL VPN,
туннелей производится во вкладке позволяющий получать корпоративную советую прочитать статью [4], особен-
Networking – SSL-Tunneling (рис. 9), гло- почту по протоколу POP3. Открываем ное внимание, обратив на раздел «Ре-
бальных в «Admin → Global Resources → окно настройки и вводим в окно: комендации покупателю оборудова-
SSL-Tunneling». Зрительно глобальные  Source Port – 110; ния SSL VPN».
и пользовательские туннели можно от-  Tunnel Type – Local;
личить по значку Scope.  Transport – TCP; Ссылки:
1. Сайт проекта SSL-Explorer – http://3sp.
Клиент SSHTerm Professional щищенные VNC сеансы, где самостоя- com/showSslExplorer.do.
Тема SSL-Explorer была бы не полна тельно, а где используя возможности SSL- 2. Страница на SourceForge.net – http://
без рассказа об еще одном продукте 3SP Explorer. Клиент имеет интуитивный мно- sourceforge.net/projects/sslexplorer.
клиенте SSHTerm Professional. Также на- гооконный интерфейс, что делает его удоб- 3. Бешков А. Кроссплатформенная час-
писанный на языке Java SSHTerm досту- ным при одновременной работе с несколь- тная сеть: OpenVPN – Журнал «Сис-
пен для Windows, Linux и Mac OS X. Он кими ресурсами. темный администратор», № 8, август
позволяет сетевому администратору под- Распространяется под свободной 2004 г. – 4-12 с.
ключаться к ресурсам SSH1, SSH2, VNC, (до 25 пользователей) и коммерческими 4. Джоул Снайдер. Оборудование SSL
Telnet, SFTP, а также организовывать за- лицензиями. VPN – OSP.RU, №1, 2006 г.

62
анкета
 Тенденции
 Документация
 Интервью
 Человек номера
 Ретроспектива
 BUGTRAQ
Уважаемые читатели!  Хобби
 Книжная полка
Мы предлагаем Вам заполнить анкету. Для нас это будет
возможностью услышать Ваше мнение, а также предложе- 6. Каких материалов Вам хотелось бы видеть
ния и пожелания, которые помогут сделать журнал еще бо- больше?
лее интересным и полезным для Вас.  Обзоры (новых технологий, программных продуктов,
другое)
1. Как давно Вы читаете журнал?
 Все номера, начиная с пилотного  Сравнения (новых технологий, программных продук-
 Более 3-х лет тов, другое)
 1-2 года
 Меньше года  Оригинальный опыт решения задач администрирования
 Это первый номер, который я читаю  Тонкие настройки сервисов и серверов
 Готовые решения в настройке программных продуктов
2. Как Вы узнали о журнале?  Аналитические статьи
 Увидел на выставке (укажите, какой)  Статьи по безопасности
 Материалы по базам данных
 От друзей/коллег  Различные how-to, FAQ, tips
 Из листовки в коробке дистрибутива Alt Linux/ASP Linux  Другое (напишите)
(нужное подчеркните)
 Из прессы (укажите издание)

 Из анонсов Linuxcenter.ru, Nixp.ru, Opennet.ru, 7. Какие новые рубрики Вы бы хотели увидеть


Securitylab.ru, Sysadmins.ru (нужное подчеркните) в журнале?
 Увидел ссылку на сайте (указать, каком)

 Другое (укажите, как)


8. Какие новые темы Вам хотелось бы увидеть
в журнале?
3. Используете ли Вы какие-либо советы
и рекомендации из журнала?
 Да, часто
 Да, иногда 9. Какие рубрики Вы считаете ненужными?
 Нет (если такие есть)

4. Оцените журнал по пятибалльной шкале


1. Информационность 10. Какие темы, на Ваш взгляд, освещаются,
но недостаточно?
2. Актуальность

3. Полезность
11. Какие темы, на Ваш взгляд освещаются
4. Интересность излишне?

5. Оформление

12. Статьи каких авторов Вам нравятся?


5. Укажите, какие рубрики в журнале Вы читаете
 Администрирование
 Безопасность 13. Сколько коллег (в среднем) читают Ваш
 Сети экземпляр «Системного администратора»?
 Программирование  Только я
 WEB  1-3

№4, апрель 2006 63


анкета
 4-5 23. Какие сайты, связанные с Вашей рабочей
 6 и более деятельностью, Вы посещаете?

14. Собираетесь ли Вы оформить подписку


на следующее полугодие?
 Да 24. Повышаете ли Вы свою квалификацию
 Нет на различных семинарах, курсах?
 Уже оформил  Да, часто
 Да, иногда
15. Укажите Вашу профессию/должность  Нет

25. Какие профессиональные выставки посещаете?


16. Сколько лет работаете(работали) системным
администратором?
26. Как Вы приобретаете журнал?
 Оформляю подписку через компанию
17. Образование  Подписываюсь самостоятельно
 Среднее  Покупаю в интернет-магазинах
 Среднее специальное  Покупаю в розницу
 Не законченное высшее
 Высшее 27. Довольны ли Вы работой службы доставки?
 2 и более высших (если Вы получаете журнал по подписке)
 Да
18. Сколько системных администраторов  Нет
в Вашем ИТ-отделе?
28. Укажите Ваш пол
 Мужской
19. Численность компьютерного парка  Женский
Вашей организации:
 10 и менее 29. Укажите Ваш возраст
 11-50
 51-100
 101-500 30. В каком городе Вы живёте?
 501-1000
 1001-2000
 Более 2000 31. Читаете ли Вы электронное приложение
журнала?
20. Численность серверного парка  Да, я на него подписан
Вашей организации:  Да, я периодически его скачиваю
 1-2  Нет
 3-10
 11-20 32. Оцените электронное приложение
 21-50 по пятибалльной шкале
 Более 50

21. С какими операционными системами 33. Оставьте Ваши Общие пожелания, рекомендации
Вы работаете?
 Windows
 Linux
 FreeBSD
 OpenBSD Заполненные анкеты отправляйте:
 Solaris 1) на e-mail: imp@samag.ru
 Netware 2) по факсу: (495) 928-82-53
 Другие 3) по адресу: 107045, г. Москва, Ананьевский переулок,
4/2, строение 1, ЗАО «Издательский дом «Учительская
Газета» журнал «Системный администратор».
22. Какие компьютерные издания Вы читаете?
Для Вашего удобства заполнить анкету Вы можете
на сайте журнала www.samag.ru.

64
сети

Собираем беспроводной роутер 802.11g


на базе ОС Linux

Михаил Платов
С помощью обычной беспроводной PCI-карты и не очень мощного компьютера с ОС Linux
вы сможете сделать собственную точку доступа 802.11g, по функциональности ничем
не уступающую, а кое-где даже и превосходящую оборудование известных производителей.

Б
еспроводные сети на просторах Собственно, а зачем? ется роутер, прокси и почтовый сервер,
нашей Родины набирают все А действительно, зачем все это нуж- работающий под управлением Linux,
большую популярность. Чис- но, если в продаже уже есть достаточ- то почему бы практически бесплатно
ло хотспотов стремительно растет [1], но дешевые точки доступа (ценой по- не добавить к нему функциональность
строятся корпоративные беспровод- рядка 50$), с простой настройкой че- беспроводной точки доступа?
ные сети, да и «домашние» точки до- рез веб-интерфейс, которые к тому же
ступа уже не являются чем-то запре- обладают меньшим энергопотреблени- Не все чипсеты
дельно дорогим. Однако в некоторых ем и не шумят? Однозначного ответа одинаково полезны
случаях отдельную точку доступа мож- на этот вопрос нет. Во-первых, для не- Для работы в режиме точки доступа
но и не покупать! Сегодня мы остано- которых задач, действительно, проще нам понадобится собственно сам бес-
вимся именно на таком случае и рас- купить отдельное устройство. Так, на- проводной адаптер, а также драйвер,
смотрим, как с помощью подручных пример, если вам нужно развернуть обеспечивающий его работу в режи-
средств сделать собственную беспро- большую беспроводную сеть из сотни ме «master mode». В теории, почти все
водную точку доступа 802.11g, подде- точек доступа, разбросанных по зда- беспроводные адептеры способны вы-
рживающую режимы аутентифика- нию, то делать это на базе стандарт- полнять функции точки доступа, одна-
ции Open, WEP, WPA-PSK, WPA-EAP, ных компьютеров будет по меньшей ко далеко не для всех поддержка этого
со встроенными серверами DHCP, DNS мере странным. С другой стороны, ес- режима есть в драйверах и сопутству-
и NAT. Итак, приступим! ли у небольшой организации уже име- ющем ПО. К слову говоря, для Windows-

№4, апрель 2006 65


сети
платформы такие драйверы сейчас и вовсе отсутствуют ленном на ней чипсете. Так,
(и вряд ли появятся в будущем, ведь большинство произво- родословная 20-долларовых
дителей, помимо PCI-карт, также продает и точки доступа), карт, как правило, уходила
а вот для Linux и BSD-платформ энтузиасты такие драйве- в сторону тайваньской ком-
ры уже разработали. Итак, выбираем карту! пании Ralink. Далее (20-30$)
Для того чтобы из всего многообразия присутствующе- шла плеяда карт с серд-
го на рынке выбрать «правильную» карту, достаточно сле- цем от Texas Instruments, Рисунок 1. Беспроводной
адептер LevelOne WNC-0300
довать трем простым советам: Broadcom, Marwell и других
 Отбросьте USB-карты. На данный момент даже подде- менее известных компаний. Примерно начиная от 30$ и вы-
ржка работы в режимах Ad-Hoc и Infrastructure в Linux ше в прайс-листах появляются искомые карты на чипсетах
оставляет желать лучшего. Atheros. Одна из них – LevelOne WNC-0300 802.11 b/g сто-
 Не смотрите на производителя и модели адаптера, ори- имостью 30$ – и была успешно приобретена для выполне-
ентируйтесь на марку конкретного чипсета. Показа- ния поставленной задачи(см. рис. 1). Как и предполага-
тельной является история с моделями карт D-link. Не- лось, внутри нее оказался чипсет Atheros:
смотря на то, что названия DWL-520, DWL-G520 и DWL-
520+ очень похожи, все эти карты сделаны на совер- # lspci
шенно разных наборах микросхем, и если первые две 01:00.0 Ethernet controller: Atheros Communications, Inc.
(чипсеты Intersil Prism 2.5 и Atheros AR5002G) еще мо- AR5212 802.11abg NIC (rev 01)

гут работать в качестве точек доступа, то для драйве-


ров последней (чипсет TI ACX100) даже работа в режи- Подготовка ОС
ме Infrastructure на данный момент еще не отлажена до- Как уже было сказано выше, для создания точки доступа
статочно хорошо. нам понадобится ОС Linux. В качестве дистрибутива будем
 Выбирайте ту карту, для чипсета которой имеются использовать Gentoo Linux. Впрочем, большинство приво-
драйверы, поддерживающие работу в режиме точки димых настроек с некоторыми изменений будут работать
доступа. и в других дистрибутивах.
Первым делом убедимся, что в нашем ядре (ветка 2.6)
Подробную информацию о степени поддержки того или- присутствует поддержка беспроводных устройств:
иного типа микросхем в Linux можно найти на странице Яна
Networking --->
Туррили [2]. Мы же подведем краткое резюме – на данный * Generic IEEE 802.11 Networking Stack
момент работа в режиме точки доступа возможна лишь для <M> IEEE 802.11 WEP encryption (802.1x)
карт с чипсетами Intersil Prism (Prism2, 2.5, 3, 54 FullMAC, <M> IEEE 802.11i CCMP support
<M> IEEE 802.11i TKIP encryption
но не Prism54 SoftMAC) и практически для всех PCI-плат Device Drivers --->
с чипсетами Atheros. Учитывая, что первые уже достаточ- Networking support --->
Wireless LAN (non-hamradio) --->
но устарели (в большинстве своем это были карты 802.11b, * Wireless LAN drivers (non-hamradio) & wireless extension
11Mbit) и практически не встречаются в продаже, выбор кар-
ты сводится к любой карте с чипсетом Atheros. Присутствуют поддержка iptables, а также поддержка
Итак, вопрос с выбором чипсета можно считать решен- 802.1d Ethernet Bridging:
ным, но как же узнать, что именно стоит в карте, лежащей
Networking -->
на витрине в магазине, чипсет-то в прайс-листах никто * Networking Options
не указывает? Есть, как минимум, три способа: <*> Network Packet Filtering
IP: Netfilter Configuration
 Способ самый простой и очевидный – посмотреть, что
написано на микросхеме. К сожалению, зачастую это Отметьте модули поддержки NAT, а также всех необхо-
не всегда возможно на практике, к тому же на многих димых протоколов:
картах чипсет закрыт металлическим экраном, снять
<*> 802.1d Ethernet Bridging
который обычно не представляется возможным.
 Более доступный способ – запрос к поисковой системе А также модуль алгоритма шифрования AES:
совместно с ключевыми словами «linux», «chipset» и мо-
Cryptogaphic options -->
делью проверяемого адептера. Возможно, вы не пер- <M> AES cipher algorithms (i586)
вый, кто хочет сделать точку доступа на этой карте,
так почему бы не посмотреть, что на этот счет думали Затем установим следующие пакеты:
другие?  sys-apps/baselayout (версии не ниже 1.11.10)
 Кроме того, к этому вопросу можно подойти и с дру-  dev-libs/openssl (версия 0.9.7i)
гой стороны – изначально искать карту на «правиль-  net-dialup/freeradius (версия 1.1.0-r1)
ном» чипсете, благо соответствующие интернет-ресур-  net-wireless/wirelss-tools (использовалась версия
сы есть – [3, 4]. В некоторых случаях нужную информа- 28_pre14)
цию можно почерпнуть из руководства пользователя.  net-wireless/madwifi-driver (версия 0.1473.20060312)
 net-wireless/hostapd (версия 0.4.8, с USE-флагами
В процессе изучения прайс-листов были замечены не- для madwifi и ssl)
кие закономерности между стоимостью карты и установ-  net-firewall/iptables

66
сети
 net-misc/bridge-utils
 net-dns/dnsmasq

Для установки достаточно выполнить команду emerge,


перечислив через пробел названия всех пакетов. Кроме то-
го, перед установкой также будет полезно посмотреть за-
висимости пакетов (ключ -pv к команде emerge) и при не-
обходимости подправить USE-флаги в файле /etc/portage/
package.use для удаления ненужных зависимостей.

Структура сети Рисунок 2. Структура рассматриваемой системы


При настройке будем считать, что в нашем распоряже- ным в этом случае является такой компроммисс – исполь-
нии имеется сеть со следующей структурой (см. рис. 2). зовать для беспроводных сетей только каналы 1, 7 и 13. Та-
Для клиентов беспроводной сети будем использовать под- ким образом возможно относительно безмятежное сущес-
сеть 192.168.2.0/24. Для подключения к сети будем исполь- твование в одном месте трех беспроводных сетей. Ввиду
зовать беспроводной адаптер Intel PRO/Wireless 2200BG того, что некоторые точки доступа по умолчанию исполь-
ноутбука Centrino, работающего под управлением Windows зуют канал 1, мы слепо выберем наиболее отдаленный
XP SP2 (версия драйвера беспроводной карты – 9.0.4.8 от него канал – 13, хотя, конечно, более правильно обос-
от 2.17.2006). новывать выбор в зависимости от конкретной радиобста-
новки «на месте» (не нужно забывать, что в тот же часто-
Простейшая точка доступа, или Как не тный спектр также может использоваться микроволновка-
надо делать ми и радиотелефонами).
Теперь, когда все необходимое у нас уже есть, можно пере- Назначим IP-адрес и активируем беспроводной интер-
ходить к настройке. В качестве разминки настроим работу фейс:
в самом простом (и небезопасном) режиме – WEP.
Итак, начнем с сервера! Первым делом загрузим драй- # ifconfig ath0 192.168.2.1 netmask 255.255.255.0 ↵
broadcast 192.168.2.255 up
вер беспроводной карты и создадим виртуальное устройс-
тво wifi0, работающее в режиме точки доступа: Перейдем к настройке беспроводного к лиента.
В Windows XP SP2 для конфигурирования беспроводной
# modpobe ath_pci сети используется служба Windows Zero Configuration и со-
# wlanconfig ath0 create wlandev wifi0 wlanmode ap
# iwconfig ath0 essid superspot ответствующий мастер конфигурации «Wireless Network
# iwconfig ath0 key 1111-1111-11 Configuration». Первым делом установим для беспроводного
# iwconfig ath0 channel 13
адептера статический IP-адрес 192.168.2.2/24 (см. рис. 3).
Параметр essid определяет имя нашей сети, key – ключ Затем произведем поиск сетей и подключимся к сети
шифрования WEP. Если в качестве последнего ввести ли- superspot. В появившемся окне введем WEP-ключ, указан-
бо 10 шестнадцатеричных цифр (40-битный ключ), либо 26 ный при создании точки доступа (см. рис. 4).
шестнадцатеричных цифр со знаком «-» после каждых че- Если ключ был введен верно, операционная система
тырех (104-битных ключ). При этом в любом случае необ- успешно обрадует нас подключением к беспроводной се-
ходимо помнить, что даже 104-битный ключ с точки зре- ти (см. рис. 5).
ния безопасности в настоящее время не считает безопас-
ным, и в «рабочих» системах его использование крайне не Автоматизируем запуск
рекомендуется. После того, как мы благополучно убедились, что все рабо-
Остановимся более подробно на параметре channel. тает, можно настроить автоматическое применение настро-
Как известно, устройства стандарта 802.11b и 802.11g ра- ек беспроводной карты.
ботают в диапазоне частот 2.4 ГГц. На самом деле это сов- Настроим автоматическую загрузку модуля карты
сем не означает, что абсолютно все устройства (в том чис- при старте системы:
ле и точка доступа в квартире вашего соседа, которая
для вашей точки уже является помехой) работают на од- # echo "ath_pci" >>/etc/modules.autoload.d/kernel-2.6
ной частоте. Для Европы стандарт определяет 13 каналов
(от 2.412 до 2.472 ГГц с шагом 5 МГц), в каждом из которых Настроим автоматическое создание виртуального ин-
могут работать беспроводные устройства. В физике, прав- терфейса при загрузке модуля:
да, чудес не бывает, устройства, работающие в соседних
каналах, все же являются друг для друга взаимной помехой # echo “options ath_pci autocreate=ap” ↵
>>/etc/modules.d/ath_pci
(на самом деле беспроводные устройства 802.11, работаю-
щие в одном канале, не являются помехой в прямом смыс- Параметры для утилиты iwconfig укажем в файле
ле это слова, скорее, они «делят» общую на всех пропуск- /etc/conf.d/wireless со следующим содержимым:
ную способность канала). Очевидно, что чем дальше уст-
ройства разнесены друг от друга в частотном спектре, тем modules_ath0=( "iwconfig" )
ifconfig_ath0=( "192.168.2.1 netmask 255.255.255.0 ↵
меньше они будут друг другу мешать. Достаточно разум- broadcast 192.168.2.255" ) essid_ath0="superspot"

№4, апрель 2006 67


сети
channel_ath0="13"
key_super_spot="1111-1111-1111-11"

Создадим скрипт для запуска сетевого подключения:

# ln -s /etc/init.d/net.lo /etc/init.d/net.ath0

И добавим его в список скриптов, запускаемых при стар-


те системы:

# rc-update add net.ath0 default

Теперь при перезагрузке системы наша точка доступа


будет запускаться автоматически. Рисунок 3. Статический IP-адрес беспроводного адаптера

Настраиваем дополнительные программы


На данный момент клиенты нашего беспроводного сегмен-
та могут работать друг с другом и с сервисами, имеющими-
ся непосредственно на точке доступа. Данная схема обла-
дает рядом недостатков, исправлением которых мы сейчас
и займемся. Итак, первым делом предоставим беспровод-
ным клиентам доступ в Интернет посредством NAT. В са-
мом простом случае это можно сделать так:

# iptables -F
# iptables -t nat -F
# iptables -A FORWARD -i ath0 ↵
-s 192.168.2.0/255.255.255.0 -j ACCEPT
# iptables -A FORWARD -i eth1 ↵
-d 192.168.1.0/255.255.255.0 -j ACCEPT
# iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

Рисунок 4. Ввод WEP-ключа


С помощью скриптов Gentoo сохраним созданные пра-
вила и настроим автоматический запуск iptables:

# /etc/init.d/iptables save
# /etc/init.d/iptables start
# rc-update add iptables default Рисунок 5. Успешное подключение к сети

Для распределения IP-адресов в локальной сети, и раз- плата работает. В реальных же системах настоятельно реко-
решения DNS-имен интернет-узлов будем использовать па- мендуется использование WPA в режиме WPA-PSK или WPA-
кет dnsmasq. Для его настройки в конфигурационном фай- EAP. (В качестве альтернативного варианта можно использо-
ле /etc/dnsmasq.conf напишем: вать VPN-туннель для шифрации трафика между беспровод-
ными клиентами и сервером.) За реализацию WPA в нашей
domain-needed системе будет отвечать hostapd. Указанный демон был раз-
bigus-priv
Interface = eth0, ath0 работан в рамках проекта HostAP, целью которого является
Dhcp-range=192.168.2.0,192.168.2.255,1h создание беспроводных точек доступа на базе карт с чипсе-
Dhcp-host= 11:22:33:44:55:66, 192.168.2.1
тами Intersil Prism. Позднее разработчиками была добавлена
Запустим службу и настроим ее автоматический за- поддержка работы с платами на чипсетах Atheros посредс-
пуск: твом драйверов madwifi. Hostapd поддерживает работу в ре-
жимах WPA-PSK, WPA-EAP с возможностью аутентификации
# /etc/init.d/dnsmasq start как с помощью встроенного сервера, так и с помощью вне-
# rc-update add default dnsmasq
шнего сервера RADIUS. В нашем примере рассмотрим более
Мы указали, с каких сетевых интерфейсов служба долж- сложный в настройке вариант WPA-EAP с аутентификацией
на принимать запросы, и разрешили dhcp-серверу выдавать по протоколу MSCHAPv2 на внешнем RADIUS-сервере. При
IP-адреса клиентам беспроводной сети. При разрешении реализации будем использовать инфраструктуру открытых
DNS-имен dnsmasq будет перенаправлять запросы DNS- ключей (PKI), развернутую согласно инструкциям в [5].
серверам, перечисленным в файле /etc/resolv.conf.
Предварительная подготовка
Улучшаем безопасность Особенностью работы hostapd с драйверами madwifi явля-
Ввиду использования WEP приведенный выше пример ско- ется то, что беспроводное устройство должно входить в со-
рее относится к разряду «как не нужно делать» и имеет пра- став «виртуального моста» (linux bridging). Учитывая конфи-
во на существование лишь с целью доказательства того, что гурацию нашего сервера, мы вполне можем сделать «пол-

68
сети
ноценный мост», с помощью которого клиенты проводной в нашем примере эти секции использоваться не будут.
и беспроводной сетей будут находиться в одной логической  Параметры WPA2 (WAP/IEEE 802.11i) – здесь мож-
подсети. Однако с точки зрения безопасности такой подход но выбрать режим управления ключами шифрования
является неправильным – беспроводные клиенты должны (PSK или EAP), а также определить алгоритм шифра-
иметь минимально необходимый доступ к ресурсам корпо- ции трафика (TKIP-RC4, CCMP-AES).
ративной локальной сети. Поэтому в нашем примере огра-
ничимся «виртуальным мостом», состоящим только из бес- Итак, определим следующие настройки:
проводного адаптера. Определение правил для iptables, ог-
раничивающих доступ к проводной сети правил, оставим interface=ath0 # интерфейс беспроводного адаптера
bridge=br0 # имя устройства-моста, содержащего
в качестве самостоятельного задания. Итак, для создания # беспроводной адаптер
моста добавим в файл /etc/conf.d/net следующие строки: driver=madwifi # тип используемого драйвера
ssid=superspot # идентификатор беспроводной сети
auth_algs=1 # используемый алгоритм аутентификации,
bridge_br0=( "ath0" ) # 1- open
config_ath0=( "null" ) ieee8021x=1 # аутентификация согласно 802.1X
config_br0=( "192.168.2.1 netmask 255.255.255.0 ↵ #RADIUS
brd 192.168.2.255" ) own_ip_addr=127.0.0.1 # IP-адрес сервера RADIUS
nas_identifier=superspot
auth_server_addr=127.0.0.1
А также настроим автоматическое создание интерфей- auth_server_port=1812
auth_server_shared_secret=supersecretpassword
са при старте системы: radius_retry_primary_interval=600
#WPA/IEEE 802.11i
wpa=3 # в двоичном представлении – 11,
# ln –s /etc/init.d/net.lo /etc/init.d/net.br0 # что означает использовать WPA и WPA2
# rc-update add net.br0 default wpa_key_mgmt=WPA-EAP # будем использовать EAP-вариант
# аутентификации
После старта системы в системе появится новый wpa_pairwise=CCMP # будем использовать AES
bridge-интерфейс с именем br0: # для шифрования трафика
wpa_group_rekey=600
wpa_strict_rekey=1
# ifconfig br0 wpa_gmk_rekey=86400
rsn_preauth=1
br0 Link encap:Ethernet HWaddr 00:11:6B:60:28:D6
inet addr:192.168.2.1 Bcast:192.168.2.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:2290 Metric:1
Теперь перейдем к параметрам конфигурации Freeradius.
RX packets:508204 errors:0 dropped:0 overruns:0 frame:0 Файл /etc/raddb/radius.conf. В секции modules{}, раздел
TX packets:665093 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0 mschap{} включим следующие параметры:
RX bytes:96361488 (91.8 Mb) TX bytes:713154486 (680.1 Mb)
use_mppe = yes
require_encryption = yes
Как и мы хотели, в состав моста входит лишь устройс- require_strong = yes
тво ath0: with_ntdomain_hack = yes

# brctl show Убедимся, что ниже в этой же секции присутствует мак-


bridge name bridge id STP enabled interfaces рос для обработки имен в формате домен/логин:
br0 8000.00116b6028d6 no ath0
realm ntdomain {
format = prefix
Перейдем к параметрам беспроводного адеаптера. delimiter = "\\"
Вместо старых настроек в /etc/conf.d/wireless определим ignore_default = no
ignore_null = no
следующее: }

modules_ath0=( "iwconfig" ) А также определен файл, в котором будут указываться


essid_ath0="superspot"
channel_ath0="13" пароли пользователей:

Займемся настройками hostapd. Конфигурационный files {


usersfile = ${confdir}/users
файл находится в /etc/hostapd/hostaspd.conf. Параметры acctusersfile = ${confdir}/acct_users
демона сгруппированы в несколько секций: preproxy_usersfile = ${confdir}/preproxy_users
}
 Параметры конфигурации беспроводной платы –
в этой секции определяется тип используемого бес- Секция authorize{} включает в себя следующие модули:
проводного адаптера, а также параметры беспровод-
ного соединения (ESSID, MAC security). authorize {
preprocess
 WPA1 (802.1X-2004) – здесь мы можем разрешить ис- mschap
пользование аутентификации 802.1Х, а также опреде- ntdomain
eap
лить параметры EAP. files
 Опции для встроенных серверов EAP и RADIUS – }
files {
по словам разработчиков, эти серверы присутствуют usersfile = ${confdir}/users
исключительно для тестовых целей, и их использова- compat = no
}
ние в реальных системах не рекомендуется. Поэтому

№4, апрель 2006 69


сети
Файл /etc/raddb/clients.conf: В параметрах конфигурации модуля EAP /etc/raddb/
eap.conf определим следующее:
client 127.0.0.1 {
secret = supersecretpassword eap {
shortname = superspot default_eap_type = peap
nastype = other timer_expire = 60
} ignore_unknown_eap_types = no
cisco_accounting_username_bug = no
В файле /etc/raddb/proxy.conf допишем следующие
строки: tls {
private_key_password = пароль для доступа ↵
к секретному ключю сервера
realm DEFAULT { private_key_file = ${raddbdir}/certs/ ↵
type = radius cert-srv.pem
authhost = LOCAL certificate_file = ${raddbdir}/certs/ ↵
accthost = LOCAL cert-srv.pem
}

WPA2, или Почему нужно (около 40). Наиболее часто используют- сертификатов устанавливается TLS-
делать именно так ся следующие: сессия, в рамках передаются данные
На данный момент общепринятым явля-  EAP-MD5 – аутентификация по принци- для аутентификации (в любой форме).
ется мнение, что WEP (даже совместно пу «запрос-ответ» с помощью пары ло- Производится взаимная аутентифика-
с фильтрацией MAC-адресов) не являет- гин/пароль. Отметим, что даже несмот- ция клиента и сервера. Для использо-
ся надежной защитой для беспроводных ря на то, что последние не передаются вания также требуется PKI. Протокол
сетей. Уже достаточно давно появились по сети в открытом виде, метод облада- часто используется совместно с дру-
разнообразные инструменты (в том числе ет некоторыми недостатками – уязвим гими методами аутентификации.
и для sctript-kiddies), позволяющие практи- для атак по словарю, не производится  PEAP (Protected EAP) – вариант аутен-
чески в автоматическом режиме «ломать» аутентификация сервера. Преимущес- тификации с использованием публич-
защиту WEP даже в Windows [6, 7]. тво также достаточно очевидно – про- ного сертификата сервера для созда-
Для решения проблем безопасности, стота внедрения (не требуются исполь- ния защищенного SSL-канала. Исполь-
присущих WEP IEEE, и разработан стан- зование каких-либо сертификатов). зование сертификатов со стороны кли-
дарт 802.11i. Согласно последнему, выделя-  LEAP (Lightweight EAP) – алгоритм, ентов не требуется. Данный метод в не-
ются 3 основные категории защиты в бес- предложенный Cisco Sytems, аутен- котором смысле можно считать анало-
проводных сетях: тификация производится сервером гом SSL для http (https://) применитель-
 TKIP (Temporal Key Integrity Protocol) – RADIUS по паре логин/пароль. Метод но к беспроводным сетям.
основным назначением данной схемы также уязвим к атакам по словарю.  EAP-MSHAPv2 – метод аутентифика-
было решение остро стоящих проблем В виду некоторой закрытости данных ции согласно алгоритму MSCHAPv2,
WEP. Учитывая, что в основе лежал все стандарт не получил широкого распро- по паре логин/пароль внутри защи-
тот же симметричный алгоритм шифро- странения. щенного канала, созданного с исполь-
вания RC4, было возможным смягчить  EAP-TLS (RFC2716) – аутентификация зованием PEAP. Данный метод удобно
проблемы WEP в новых прошивках для участников (взаимная) производится использовать в Windows-сетях, в ко-
старого оборудования. Использование с помощью цифровых сертификатов. торых для аутентификации беспро-
TKIP для шифрования трафика и 802.1X Способ требует наличия инфраструк- водных клиентов используются учет-
обычно называют WPA1. туры открытых ключей (PKI Public Key ные записи пользователей в Active
 CCMP (Counter Mode with CBC-MAC Infrastructure). Метод удобен к исполь- Directory.
Protocol) – новый протокол на основе зованию в гетерогенных сетях, в ко-
алгоритма симметричного шифрова- торых отсутствует центральный узел Таким образом, для малых организа-
ния AES (Advanced Encryption Standard). аутентификации (такой как сервер ций можно рекомендовать использова-
Учитывая несколько большие требо- RADIUS, Active Directory, и др), но при- ние EAP-MD5. EAP-TLS удобно использо-
вания к необходимой вычислительной сутствует PKI. вать в сетях беспроводных провайдеров,
мощности, предполагалось, что дан-  EAP-TTLS – метод аутентификации, а EAP-MSCHAPv2 – в крупных корпора-
ный протокол будет использоваться при котором с помощью цифровых тивных сетях.
в оборудовании, выпущенном после
принятия стандарта 802.11i. Использо-
вание CCMP совместно с аутентифика-
цией 802.1Х обычно называют WPA2.
 8 0 2 .1X – м е тод ау те н т и ф и к а ц и и
для беспроводных сетей. Может ис-
пользоваться как совместно с CCMP,
так и TKIP.

В рамках 802.1Х выделяется громад-


ное количество методов аутентификации Рисунок 6. Категории защиты в 802.11i

70
сети
CA_file = ${raddbdir}/certs/cacert.pem
dh_file = ${raddbdir}/certs/dh
random_file = ${raddbdir}/certs/random
}
peap {
default_eap_type = mschapv2
}
mschapv2 {
}
}

В файле /etc/raddb/users определим имена и пароли


для доступа к беспроводной сети:

user1 User-Password == "password1"


user2 User-Password == "password2"
user3 User-Password == "password3"

Настроим автоматический запуск Freeradius при стар-


те системы: Рисунок 7. WPA-сеть

# rc-update add radiusd default ния вторжений. В простейшем случае можно воспользо-
ваться пакетом arpwatch. С его помощью точка доступа бу-
Если все было сделано правильно, то после перезаг- дет отслеживать arp-запросы в сети и при появлении но-
рузки компьютера (или просто запуска соответствую- вых MAC-адресов отсылать уведомления на e-mail адми-
щих служб) беспроводные клиенты увидят следующее нистратора.
(см. рис. 7). Беспроводная сеть с поддержкой WPA, при под- Для более «тонкой» защиты можно использовать связ-
ключении к которой необходимо указать пароль. ку Kismet+Snort. С помощью первого можно отслеживать
Если же по каким-либо причинам увидеть сеть не уда- атаки на уровне пакетов 802.11, а средствами второго ор-
лось, можно воспользоваться режимами отладки: ганизовать защиту на сетевом уровне и уровне прило-
жений.
# hostapd –Kdddd
# radiusd –X
Заключение
На этом базовую настройку нашей точки доступа можно
Enterprise-режим считать законченной, однако это совсем не значит, что ни-
Немного изменив настройки модуля EAP Freeradius, мож- чего больше сделать нельзя.
но настроить работу в режиме EAP-TLS. Так, чтобы настро- Дальнейшая функциональность точки может быть рас-
ить работу анологично описанному в [5], необходимо всего ширена в 2 основных направлениях:
лишь поменять тип пакетов eap в файле eap.conf:  Настройки беспроводной части – обслуживание не-
скольких беспроводных сетей с одним а дапте -
default_eap_type = tls ром (VAP Virtual Access Point), использование WMM
(QoS в Wi-Fi), реализация быстрого роуминга с иполь-
и скопировать клиентский сертификат на компьютер поль- зованием IAPP.
зователя.  Установка дополнительных программ – ddnsclient, Squid,
bind, samba, openVPN, Postfix, Apache, LVS – вот лишь
Обнаружение вторжений короткий список программ, которые могли бы быть нам
С использованием программной точки доступа можно прос- полезны.
то и быстро организовать простейшую систему обнаруже-
Другими словами, список возможных улучшений огра-
Возможные проблемы и методы их решения ничен лишь имеющимся в распоряжении временем, а так-
Не запускается hostapd (или не загружаются модули ядра же полетом вашей фантазии.
madwifi).
Компоненты, входящие в состав системы, сильно связаны друг Ссылки, литература:
с другом. Так, драйверы madwifi являются модулями ядра и при 1. http://wifi.yandex.ru/where.xml?city=213&dcity=1.
обновлении последнего, возможно, их придется пересобрать. 2. http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux.
Точно так же после обновления madwifi необходимо пересоб- 3. http://linux-wless.passys.nl/query_chipset.php?chipset=Atheros&
рать hostapd zoek=chipset.
4. http://customerproducts.atheros.com/customerproducts.
Не работает аутентификация клиентов с помощью radius-сер- 5. Платов А. С троим защищённую беспроводную сеть:
вера. В режиме отладки hostapd выдается следующее сооб- WPA-Enterprise, 802.1x EAP-TLS – Журнал «Системный адми-
щение: «No WPA/RSN information element for station!?» нистратор», №5, май 2005 г. – 64-71 с.
Убедитесь, что точка доступа работает в режиме WPA c подде- 6. http://airsnort.shmoo.com.
ржкой WPA2: «wpa=3». 7. http://freshmeat.net/projects/aircrack.

№4, апрель 2006 71


документация

Техническая документация:
серверы и сети

Алексей Коршунов
Приходя на новое место работы, каждому системному администратору хочется получить пакет
исчерпывающей технической документации. И первые по важности в этом пакете документы
об устройстве сети и серверов.

О сетях и серверах ры и firewall. Структура локальной се-  соответствие розеток к портам


Если говорить о технической доку- ти может стать совсем запутанной, ес- патч-панелей;
ментации для использования внут- ли вовремя не внести систему и поря-  соответствие подключения портов
ри компании, то первое, что приходит док в неё. патч-панелей к портам сетевого
на ум, это описание сетей и серве- оборудования;
ров. Как правило, принцип «одна ком- Архитектура сети  описание подключения на свитчах
пания – один сервер» уже мало где Первое, что интересует каждого сис- пользователей;
практикуется. Парки пользователь- темного администратора, приходяще-  описание подключения на свит-
ских машин увеличиваются, а вместе го на новое место работы, это архитек- чах серверов и соединений между
с ними растёт и количество использу- тура сети, которой ему предстоит зани- свитчами;
емых серверов. Уже никого не удивля- маться. И далеко не всегда он может  описание маршрутизации между
ет необходимость разделять почтовый получить исчерпывающую информа- сетевым оборудованием;
и веб-серверы, находящиеся во вне- цию. Очень часто приходится слышать  таблица используемых IP-адресов
шней сети, и файл-сервер, не имею- что-то вроде «тут у нас хабы/свитчи, тут рабочими станциями;
щий доступ наружу. розетки, а вон там провода». Это, ко-  графическая схема сети.
Точно так же, как увеличиваются нечно, крайне далеко от действитель-
и усложняются серверные парки ор- но полезной информации. Разумеется, описать соответствие
ганизаций, увеличиваются и размеры Поэтому, создавая документацию розеток с патч-панелями можно толь-
сетей. Появляется большое количес- на сеть, стоит подходить к этому так, ко в тех случаях, когда последние есть.
тво активного и пассивного сетевого как будто вы хотите заново узнать то, Хочется верить, что в вашей компа-
оборудования, нуждающегося в неко- чем владеете. нии они уже давно и успешно исполь-
тором уходе и внимании системного Ниже я перечислю те пункты, кото- зуются.
администратора. На пограничных со- рые, на мой взгляд, наиболее интерес- Описание подключения портов
единениях появляются специализи- ны были бы мне, как новому сотрудни- патч-панелей и свитчей необходимо
рованные устройства, маршрутизато- ку компании: вести в виде рабочего журнала, кото-

72
документация
рый дополняется и обновляется по ме-
ре переключений. Это нужно для пол-
ной ясности – что к чему подключено
и как взаимодействует.
Под описанием подключения поль-
зователей на свитчах подразумева-
ется ваша схема разнесения рабочих
станций по сетевому оборудованию.
Предположим, что у вас в компании
есть отдел дизайнеров, использую-
щих в работе отдельный файл-сервер.
(Отдельный, потому что размеры гра-
фических файлов весьма велики, и же-
лательно их отделить от файлов обыч-
ных пользователей, чтобы последние
не жаловались на чрезмерно долгое
ожидание ответа сервера.) Рисунок 1. «Рабочая» структура документации одной из компаний
Помимо использования файл-сер-
вера для хранения своих наработок, становиться для вас головной болью, дения основного, – расскажите и об
дизайнеры зачастую обмениваются а требуется для этого всего-навсего этом тоже.
файлами большого размера между со- вести таблицу соответствий. Разуме-
бой. Логично было бы подключить их ется, задача может быть решена через Информация о серверах
на отдельный свитч. DHCP-сервер, выдающий по MAC-ад- Что происходит на серверах и как они
Помимо самих предполагаемых ди- ресам IP-адрес клиентам. Но если за работают – это второй вопрос, интере-
зайнеров, стоит на тот же свитч под- пользователем закреплено несколь- сующий любого системного админист-
ключить и их файл-сервер, чтобы коли- ко адресов или же по каким-то сооб- ратора. Список информации, которую
чество промежуточных соединений бы- ражениям динамическая выдача адре- стоит указать:
ло минимальным. Это может оказать- сов не используется, табличка окажет-  аппаратная часть;
ся весьма критичным для работы сети. ся очень кстати. (Да и остальным она  установленное программное обес-
(К слову, если фантазия на дизайнерах будет не лишней для более наглядно- печение;
закончилась, то можно предположить го представления.)  предоставляемые сервисы;
разработчиков, использующих вы- Наглядно понять структуру всегда  сетевые подключения.
деленный сервер баз данных.) Знать, проще. Поэтому последнее, что хоте-
к какому свитчу подключены серверы, лось бы упомянуть, – это графическая Аппаратную часть полезно знать
полезно для анализа нестабильной схема сети. Разумнее всего это делать для планирования увеличения ресур-
и (или) медленной работы сети. на плане офиса. Здесь можно указать, сов существующих серверов. Да и при
Если у вас используется «инте- как проложены кабели, где находит- обосновании предложений по закуп-
лектуальное» сетевое оборудование ся кроссировочный шкаф, где в ком- кам нового оборудования лучше всего
и особенным образом настроена мар- натах установлены розетки и сколь- опираться на то, что имеется и почему
шрутизация, это также стоит описать. ко их (причем не будет лишним ука- имеющегося не хватает для удовлетво-
В будущем это может пригодиться зать не только розетки локальной сети, рения потребностей компании.
для анализа работы сети. Или, напри- но и электрические). На этот же план Необходимость знать установлен-
мер, при переезде компании в новый можно нанести массу другой не менее ное программное обеспечение, ду-
офис. К слову сказать, зачастую быс- полезной информации. маю, ни у кого не вызовет вопросов.
тро и правильно (эффективно) пере- Разумеется, можно не ограничи- Вы должны чётко знать, что работает
подключить всё оборудование на но- ваться перечисленными пунктами на ваших серверах и как оно исполь-
вом месте без чёткой документации и дополнить свои. Но и перечисленно- зуется. Это нужно по многим причинам,
практически невозможно. А следова- го вполне достаточно для детального одна из которых – слежение за анонса-
тельно, возникают дополнительные знакомства с вашей сетью. ми обнаружения уязвимостей, выпус-
простои в работе компании и общий ков патчей и так далее. Чем больше вы
дискомфорт от «неправильно» рабо- Схема доступа в Интернет знаете о своём «хозяйстве», тем эф-
тающей сети. Закончив описание локальной сети, фективнее можете им управлять и ис-
Табличка в виде «Пользователь – дополните документ описанием схе- пользовать в работе. Наверное, каж-
IP-адрес» (как вариант, можно доба- мы доступа в глобальную сеть. Опиши- дый системный администратор «нахо-
вить ещё и название рабочей станции) те настройки вашего шлюза и firewall дил» на одном (а то и нескольких) сер-
также не покажется лишней, когда ко- (например, если сделан проброс пор- вере «забытые» сервисы.
личество сотрудников компании пре- тов на внутренние адреса). Если у вас Логичным продолжением описа-
высит 10-20 человек. Выдача IP-адре- используется система переключе- ния ПО станет описание предостав-
са новой рабочей станции не должна ния на резервный канал в случае па- ляемых сервисов. Другими словами,

№4, апрель 2006 73


документация
то работы, и возникла необходимость
построения почтовой системы. Зачем
заново изобретать велосипед, ког-
да можно открыть некогда сделан-
ное описание и буквально чуть ли не
«по шагам» повторить. Удобно? Я счи-
таю, что да.

Антивирусы и центры
обновлений
Описывая серверы не забудьте упо-
мянуть об используемых антивирусах.
Это могут быть отдельные клиентские
программы на каждом компьютере
или корпоративные версии программ.
Где серверное приложение занимает-
Рисунок 2. Оглавление описания серверной группы ся скачиванием обновлений и распро-
странений их среди клиентских машин.
чёткое изложение, какую роль в ра- Поэтому было бы не лишним опи- Удобно, быстро и экономно.
боте сети играет тот или иной сервер, сать для начала настройки ключевых А может быть, вы используете цен-
кого он обслуживает и за что отвечает. сервисов в отдельном документе. Я бы тры обновлений не только антивиру-
Может быть, в момент составления та- рекомендовал использовать для это- сов. Их тоже стоит описать. Хотя бы
кой структуры вы поймёте, что тот или го систему вроде NPJ (читайте о ней чтобы помнить об их существовании
иной сервис было бы неплохо перенес- в журнале «Системный администра- и не забывать за ними следить. (Я го-
ти на другой сервер. тор» №11 за 2005 год). Причин для это- ворю «помнить», потому что сам не раз
Под сетевым подключением подра- го несколько, и все они сводятся к од- забывал о них сразу после установки
зумевается IP-адрес сервера, а если ному – удобству. и настройки.)
он находится во внешней сети, то и от- Если вы начинаете вести докумен-
крытые во внешний мир сервисы. Ес- тацию по сети, то рано или поздно у вас Система резервного
ли вам потребуется срочно ограничить может появиться желание дополнить копирования
сетевую активность на определённых её описаниями того, что вы настраи- Когда вы закончили описывать серве-
портах, то по составленному докумен- вали. Например, это может быть опи- ра вашей компании, самое время опи-
ту вы чётко будете знать, что делать. сание настройки вашей почтовой сис- сать используемую систему резервно-
Конечно, каждый системный админис- темы. Давайте перечислим, что в это го копирования. Указать, какой из ком-
тратор скажет, что уж он-то точно зна- описание может войти: пьютеров за это отвечает, какое про-
ет, где находятся какие сервисы. По-  настройки MTA; граммное и аппаратное обеспечение
верьте на слово, временами все зна-  настройки IMAP и POP3; для этого использует. Стоит также за-
ния имеют свойство вытесняться бо-  система авторизации; документировать и выстроенную вами
лее новой и свежей информацией. По-  описание антиспам системы; схему хранения резервных копий.
этому лучше всё же это занести в до-  описание антивируса;
кументацию, тем более что много вре-  описание системы авто-ответов Итог
мени это не займёт. (отсутствующих пользователей); Разумеется, не все рассмотренные
 описание листов рассылок. пункты являются минимально необ-
Описание сервисов ходимыми при создании первых тех-
и их конфигурационных Это те пункты, которые мне пришли нических документов в вашей компа-
файлов сразу на ум, стоило подумать о нашей нии. Однако ведение документации
После того как вы описали сервера почтовой системе. Почему это полез- на сеть и серверы только выглядит гро-
«в целом», пришло время описать бо- но? Давайте предположим, что у вас моздкой и сложно реализуемой зада-
лее подробно используемые сервисы. не осталось копий ваших конфигура- чей. На самом деле по мере заполне-
Я не призываю вас рассказывать на де- ционных файлов, а сервер ввиду (на- ния существующих пробелов вы пой-
сятках страниц работу вашего домен- пример) выхода из строя жёсткого дис- мёте, насколько это полезно и удобно
ного леса. Однако каждый, кто хоть раз ка больше не функционирует. Конечно, вам же самим. Нет ничего более при-
настраивал (например) почтовую систе- рано или поздно вы вспомните все на- ятного, чем работать с сетью, о кото-
му на операционной системе Linux, зна- стройки, которые некогда на нём де- рой вы всё знаете и в любой момент
ет, какое количество возможных вари- лали или же настроите альтернатив- можете дать ответ на любой вопрос.
антов может быть. Начиная от выбора ную конфигурацию. Но сколько уйдёт Главное – не останавливаться на до-
MTA, заканчивая скриптовыми обвязка- на это времени? стигнутом, а также не забывать сле-
ми, настройками авторизации, схем ис- Или другой вариант возможного дить за актуальностью составленных
пользуемых баз данных и так далее. развития событий. Вы сменили мес- документов.

74
bugtraq

Повышение привилегий в различных


продуктах ISS
Раскрытие памяти ядра в NetBSD Программа: BlackICE PC Protection (Consumer), BlackICE
Программа: NetBSD 1.6, NetBSD 2.0, NetBSD 2.1, NetBSD 3.0. Server Protection (Consumer), BlackICE Agent for Server
Опасность: Низкая. (Corporate), RealSecure Desktop 3.6 и 7.0 (Corporate).
Описание: Уязвимость существует в коде if_bridge(4). Вы- Опасность: Низкая.
зовы bridge(4) ioctl(2) не обнуляют данные стека памяти, ис- Описание: Ошибка дизайна обнаружена в различных про-
пользуемого для временного хранения результатов ioctl(2) дуктах ISS. Для эксплуатации уязвимости необходимо вы-
запросов перед копированием информации запрашивае- звать действие, которое заставит Application Protection
мому процессу. Локальный пользователь может получить Module отобразить предупреждение. Для BlackICE это мо-
доступ к случайным участкам памяти ядра. жет быть любое приложение, установленное после него.
URL производителя: www.netbsd.org. В диалоговом окне следует нажать на кнопку «More Info»,
Решение: Установите исправление с сайта производите- что приведет к открытию второй формы. В этой форме сле-
ля. дует нажать клавишу <F1>, что приведет к отображению
стандартного диалогового окна открытия файла.
Уязвимость заключается в том, что процесс BlackIce
Повышение привилегий в PC-cillin не сбрасывает привилегии перед открытием диалогово-
Программа: Trend Micro PC-cillin Internet Security 2006/14.x. го окна помощи. Локальный пользователь может запус-
Опасность: Низкая. тить произвольное приложение на сервере с привилеги-
Описание: Уязвимость существует из-за того, что полный ями SYSTEM.
доступ к директории «Internet Security 2006» предоставля- URL производителя: www.iss.net.
ется по умолчанию группе «Everyone». Локальный пользо- Решение: В настоящее время способов устранения уязви-
ватель может удалить или изменить файлы приложения. мости не существует.
URL производителя: www.trendmicro.com.
Решение: В настоящее время способов устранения уязви-
мости не существует. Раскрытие данных в функции
html_entity_decode() в PHP
Программа: PHP 4.4.2 и более ранние версии, PHP 5.1.2 и
Раскрытие данных в mail в NetBSD более ранние версии.
Программа: NetBSD 1.6, NetBSD 2.0, NetBSD 2.1, NetBSD 3.0. Опасность: Низкая.
Опасность: Низкая. Описание: Уязвимость существует из-за ошибки в фун-
Описание: Уязвимость существует из-за того, что програм- кции html_entity_decode(). Удаленный пользователь мо-
ма mail создает файлы с небезопасными разрешениями, ес- жет получить доступ к определенным участкам памяти
ли в пользовательском файле .mailrc присутствует запись на системе с помощью сценария, вызывающего функцию
«set record» и установлена маска по умолчанию. Локальный html_entity_decode(). Удачная эксплуатация уязвимости воз-
пользователь может просмотреть письма других пользова- можна, если злоумышленник может контролировать вход-
телей на системе. По умолчанию «set record» не присутс- ные данные и получить результат выполнения функции.
твует в файле .mailrc. URL производителя: www.php.net.
URL производителя: www.netbsd.org. Решение: Уязвимость исправлена в версии 5.1.3-RC1, до-
Решение: Установите исправление с сайта производите- ступной по CVS.
ля.

Повышение привилегий
Раскрытие данных в AN HTTPD в avast! Antivirus
Программа: AN HTTPD 1.42n, возможно более ранние вер- Программа: avast! Antivirus 4.6.763
сии. Опасность: Низкая.
Опасность: Средняя. Описание: Уязвимость существует из-за того, что приложе-
Описание: Уязвимость существует из-за недостаточной ние устанавливает по умолчанию слабые привилегии на до-
обработки расширения файла в URL. Удаленный пользо- ступ к файлам и папкам. Локальный пользователь может
ватель может с помощью специально сформированного удалить или перезаписать файлы приложения. Для удач-
URL, содержащего точку и пробел, просмотреть исходный ной эксплуатации уязвимости требуется, чтобы папка TEMP
код PL, CGI и BAT-сценариев на системе. находилась в том же разделе, что и установочная дирек-
URL производителя: www.st.rim.or.jp/~nakata. тория приложения.
Решение: Установите последнюю версию (1.42p) с сайта URL производителя: http://www.avast.com.
производителя. Решение: В настоящее время способов устранения уязви-
мости не существует.

Составил Александр Антипов

№4, апрель 2006 75


IMHO

Перспективы профессии.
Автопортрет

Алексей Барабанов

Кто такие системные администраторы, почему они этим занимаются, что ждет их впереди?
Попробуем разобраться в настоящем положении дел и сделать предположения на ближайшее
будущее.

76
IMHO
Пролог Здесь же вы не встретите ни одного и сходство замечаете? Профессио-
Профессия системного администрато- действия сложнее арифметического! нал может опуститься от закройщи-
ра как лица, отвечающего за эксплу- Так что будьте готовы к тенденциоз- ка в ателье до фабричного закройщи-
атацию вычислительных систем, воз- ному и предвзятому освещению дан- ка, а может подняться до уровня кроя
никла совсем недавно, когда упомяну- ного вопроса. модельной одежды. Но станет ли он
тые вычислительные системы выросли Иллюстрациями некоторых по- в последнем случае равным кутю-
настолько, что потребовали специаль- ложений будут служить факты лишь рье? Нет, конечно! Полотна Леонардо
ного персонала для обслуживания. Ве- из окололинуксовой истории и индус- да Винчи вместе с ним создавала це-
роятно, с того времени, когда систем- трии. Выбор не случаен. Трудно опи- лая бригада художников, но в истории
ными администраторами становились раться на историю таких организаций, признается лишь авторство Леонардо!
просто увлеченные программисты или, как Microsoft, если даже представите- Так и здесь. Системный администра-
напротив, инженеры-электронщики, ли этой корпорации трактуют события тор всегда не более чем обслуживаю-
то есть профессионалы смежных об- по-разному от одного судебного засе- щий персонал. Это следует из опреде-
ластей, произошло много эволюцион- дания к другому. История же участни- ления данной профессии. Можно, ко-
ных изменений. Говорят даже, что си- ков индустрии Open Source открыта нечно, спорить. Можно не соглашать-
садминов стали готовить в некоторых для публичного контроля. Хотя и не все ся. Но это факт.
учебных заведениях. Не могу сказать, события оставляют след, доступный Что же получается, люди жертвуют
сколько дипломированных системных для проверки, так как в отличие от ру- своей основной специализацией, иног-
администраторов работают по своей кописей контент веб-сайтов «сгора- да даже очень престижного свойства,
основной специальности, но и сейчас ет» без следа. потому что их привлекает труд, сход-
я встречаю очень много коллег моло- ный с работой официанта или продав-
дого возраста, которые пожертвовали Немного определений ца в магазине? Быть может, они прос-
своим высшим образованием и вмес- Как уже было сказано выше, пред- то неудачники или готовые пациен-
то работы юристом, экономистом, ис- метом или объектом профессиональ- ты психоаналитиков? Чем привлека-
ториком или врачом занимаются об- ной деятельности сисадминов явля- ет профессия системного админист-
служиванием вычислительной техни- ются информационные системы: ком- ратора?
ки. Надо ли понимать так, что любой поненты сетей передачи информации, Дело в том, что в подчинение си-
может добиться успеха в этом деле? базы данных, сервера, рабочие стан- садмину попадают очень высокоинтел-
Почему каждый студент, обладающий ции и даже прикладные программы. лектуальные устройства! «Они» безот-
навыком работы с компьютером и ма- Субъекты здесь очевидны. Для нас же ветны, умны и непонятны остальным.
ломальской харизмой (если не сказать важно будет отметить, что професси- И тем не менее «они» не могут обой-
наглостью), легко верит сам и пытается ональные системные администрато- тись без взаимодействия с человеком-
убедить окружающих в том, что спра- ры образуют специфичную среду, ко- администратором. Это уже власть!
вится с работой системного админист- торую и будем здесь обсуждать. Меж- Именно это и привлекает. Интеллек-
ратора? Одно из двух: или сисадминам ду этими двумя категориями, объектом туальный абстрактный Мир, которым
очень хорошо платят, или они слишком и совокупностью субъектов, сущест- другим доводится наслаждаться толь-
легко зарабатывают! Возможный тре- вует взаимосвязь. Как было замечено ко в ходе компьютерных игр, систем-
тий вариант, что системный админист- выше, развитие объекта, или инфор- ным администраторам доступен всег-
ратор является романтическим героем, мационных систем, привело к фор- да. В нем, возможно, не такой увлека-
своего рода «робином-гудом-хакером», мированию совокупности субъектов, тельный сюжет, как в многодисковом
не будем здесь рассматривать, хотя бы или категории служащих, которые те- компьютерном «квесте», но это не ме-
потому, что и Робин Локсли, и все хаке- перь называются системными адми- шает построить собственную систему
ры – это любители, мы же ведем речь нистраторами. условных обозначений, шкалу ценнос-
строго о профессионалах. Далее попытаемся уточнить эту тей, набор атрибутов и сформировать
взаимосвязь, так как ее характер от- замкнутую профессиональную среду.
Disclaimer, или Отказ ражает суть обсуждаемых категорий, Эка невидаль, заявит искушен-
от ответственности а возможное развитие их отношений ный читатель! Обычное дело – дуа-
Все рассматриваемые далее явления позволяет предположить и пути раз- лизм профессии: полное владение це-
трактуются с самой крайней и праг- вития как информационных систем, левым предметом, но подчиненное по-
матической точки зрения. Полутона так и самой профессии системных ад- ложение в системе ценностей обще-
и компромиссы оставлены на усмотре- министраторов. ства. Но сравните сисадмина с баш-
ние либеральных читателей. Лишь аб- мачником, например. Ну разве сопос-
солютизировав некоторый тезис, мож- Слуга или господин? тавимо по привлекательности владе-
но построить логическую цепочку про- В каждой профессии есть много уров- ние башмачной парой и обладание
гноза. Безусловно, возможен и опти- ней мастерства. Например, есть за- компьютером или целой корпоратив-
мистический взгляд на обсуждаемую кройщик в ателье, есть закройщик ной сетью!
тему. Ничего страшного, даже пред- на фабрике готовой одежды и есть за- Итак, все, кто не добился успе-
сказания погоды иногда не сбывают- кройщик в команде поддержки кутю- ха в мире реальном, могут испытать
ся, хотя и подкрепляются расчетами. рье. Чувствуете разницу? Надеюсь, второй шанс в виртуальном, где лю-

№4, апрель 2006 77


IMHO
бую проблему можно «перегрузить». с мертвым пингвинчиком [1] тоже свое- ятельствам что нужно – для автомо-
Но увы! Такое положение вещей стре- го рода живопись. биля гаечные ключи и оснастки, а для
мительно уходит в прошлое. И все ча- Таким образом, системное адми- информационной системы скрипты
ще системный администратор из мас- нистрирование не проявляет склон- и программы. Хотите поспорить? На-
тера (master – повелитель) компьютер- ности превратиться в культовый вид чните спор с тем сисадмином, кото-
ных технологий превращается в слу- деятельности. И все закономернос- рый, выполняя работу хелпдеска или
гу компьютерного железа. Это зако- ти развития данной профессии имеют службы поддержки, как Фигаро носит-
номерность. Именно так развивается сугубо физическое объяснение. Мож- ся между рабочими станциями.
данная профессия. но даже сказать утилитарное! Далее, труд системного админис-
тратора имеет характер кустарного.
Спорт или искусство? Ничего личного, лишь Помните, были такие точильщики, хо-
Многие виды такой человеческой де- одна работа... дили со двора на двор и кричали: «То-
ятельности, как искусство или спорт, Пришло время расставить точки над чу ножи и ножницы, правлю бритвы!».
возникли на основе повседневных за- «i». Признаемся, что в профессии И теперь студенту, чтобы превратить-
нятий, бытовых профессий и военных системного администратора столько ся в системного администратора, на-
специальностей, развивая их и абс- же возвышенного и культурного, как до лишь набить «торбу» контрафакт-
трагируя от начального назначения. и в профессии автомеханика. С той ными CD и можно ходить из конторы
Но это свойственно лишь древнейшим разницей, что к «этим чумазым пар- в контору и зазывать: «Починяю поч-
занятиям. В современной истории по- ням» мы испытываем благодарность ту, сервера ставлю!». А вот весь инс-
добных примеров мало. Ну разве что в редкие минуты, когда лишь вовре- трументарий таких пилигримов но-
команда механиков «Формулы Один», мя «схватившиеся» тормоза спасают сит совершенно самодельный харак-
на скорость меняющая колесные пары, и здоровье, и содержимое кошелька, тер. Сомневаетесь? Добро пожаловать
да местечковые промысловые сорев- а вот к работе системного администра- на OpenNET [2]! Там сисадмины-куста-
нования канадских лесорубов по рас- тора клиенты не испытывают никаких ри делятся своими маленькими секре-
пилу бревен двуручными пилами. Труд- чувств, потому что просто не понима- тами. Методика создания собственно-
но представить соревнование по сбор- ют ее смысла и не могут оценить ее до- го инструментария подобна самой раз-
ке автомобилей «Фольксваген Поло», стижения. Но и в том и в другом случае витой технологии времен среднего па-
хотя гонки этих малышек на «Кубок По- как работу автомеханика, так и рабо- леолита: найти наиболее подходящий
ло» очень увлекательны. ту сисадмина приходится оплачивать «камень» на [2] (или в MSDN [3], кому
В отношении близких к рассматри- регулярно и авансом, несмотря на то, угодно) и «заточить» его применитель-
ваемой специальностям предпринима- что по мнению всех окружающих и ав- но к собственному случаю, подобно то-
лось нечто подобное. Одно время се- томобиль, и локальная сеть работают му, как это 30 тысяч лет назад делали
рьезно считалось, что программирова- сами по себе! волосатые гоминиды.
ние сродни искусству. «Искусство про- Итак, придется согласиться, что Видите, как все плохо? Именно
граммирования» даже стало печатным системный администратор занимается поэтому в данной профессии (кстати,
штампом и пролезло в книжные заго- обслуживанием техники и является за- как и в профессии механиков авто-
ловки. Периодически предпринимают- тратной статьей в любом предприятии, сервиса) так много пришлых энтузи-
ся попытки сочетать «искусство» с на- кроме ISP. С точки зрения экономиста астов. Поскольку что опытный специ-
стройкой прикладных сервисов, веб- сисадмин принадлежит к категории алист, что начинающий всегда выпол-
серверов например. Но, вероятно, это вспомогательных рабочих или к аппа- няет примерно одинаковый объем опе-
не приживется даже как литератур- рату управления. Его работа никогда раций, обусловленный ручным харак-
ная гипербола. (я подчеркиваю – никогда) не прино- тером такой работы. Конечно, подоб-
Можно согласиться со следующим сит прибыли. Все, что он делает или ное положение дел не может длиться
рациональным объяснением. Искусст- чего касается, всегда затратно, начи- бесконечно.
вом или спортом системное админист- ная с закупок техники и завершая рас-
рирование не станет из-за того, что оно ходами на электроэнергию. Даже его Сервисная революция
очень сильно зависит от технологи- заработная плата является чистым Есть такое мнение, что в индустриаль-
ческой основы. И эта основа чрезвы- убытком, так как сисадмины не основ- ных революциях главными были техно-
чайно динамично развивается. По за- ные рабочие, зарплата которых входит логические новации, они и служили ос-
кону Мура в геометрической прогрес- в себестоимость продукции. нованием, и вели к новым этапам. Но
сии. А есть ли смысл в соревновани- Унизимся еще больше: работа сис- это не совсем верно. Человечество не
ях, где правила меняются с каждым темного администратора является руч- творит технический прогресс лишь ра-
полугодием существенно, а с каждым ным трудом. Снова вернемся к анало- ди самого прогресса. Скорость не цель,
пятилетием кардинально? И как будет гии сисадмин – автомеханик. И в том а только средство быстрее добраться
смотреться «замороженная картина» и в другом случае один служащий ра- до конечной точки. Поэтому определя-
настроенного сервера LRP [1] на ядре ботает не более чем с одним объектом ющими в индустриальных революциях
2.2 в году так в 2020-м? Это ведь да- труда. И в том и в другом случае один были те изменения, которые происхо-
же не Рубенс с его специфическим по- служащий использует разные инстру- дили в социальной сфере. Итак, глав-
ниманием прекрасного! Хотя картинка менты, каждый раз выбирая по обсто- ным надо считать освобождение че-

78
IMHO
ловечества от бремени ручного труда и появление нового
класса пролетариев, то есть тех, кто лишен средств произ-
водства. Говоря другими словами, произошли две вещи:
 Появилась возможность с помощью машинной техно-
логии значительно увеличить производительность тру-
да, исключив многие ручные операции.
 Владение машинными средствами производства созда-
ли условия для найма неимущих рабочих.

Развивая данные тезисы, подумаем, какая очередная


революция общественных отношений предстоит в самом
ближайшем будущем, от какого рода труда может освобо-
диться человечество? Какой труд до сих пор является руч-
ным и во многом из-за того, что производится фактичес-
ки по способу «один производитель – один потребитель»,
не позволяет развивать отрасли, где он применяется, про-
мышленным способом? Это сфера обслуживания! Именно
кризис сферы обслуживания в развитых странах застав-
ляет мириться с притоком экономических мигрантов. Пос-
кольку профессия системного администратора относится
к сфере обслуживания, то на нее всецело распространяет-
ся вышесказанное. Сисадминов охотно приглашают в Ев-
ропу по трудовым контрактам (например, [4]). Задумай-
тесь, почему? Логично предположить, что объем исполь-
зуемых информационных ресурсов возрастает, а вот раз-
витие средств автоматизации труда системных админис-
траторов явно происходит не в темпе закона Мура [5]. Та-
ким образом, возникает предпосылка для того, чтобы «ко- Рисунок 1. Структура эволюции профессии системного
администратора
личественное» отставание перешло в качественный резуль-
тат, заставив измениться как объект профессиональной де- ратора является превращение его в пролетария, то пред-
ятельности, так и саму совокупность субъектов, в данном положение о том, что профессия сисадмина и вся отрасль
случае системных администраторов. переживает период революционных изменений, верна.
Итак, обсудим содержание диаграммы в позиционном
«Два источника, и две составные порядке.
части...»
Сейчас уже можно сформулировать два главных основа- Включение в ПО и ОС компонентов
ния предполагаемого прогресса в профессии системного автоматизации администрирования
администратора. Безусловно, это существует. Более того, является неотъем-
Во-первых, отсутствие средств автоматизации, кото- лемым требованием качественно сделанной программной
рое ведет к столь высокому потреблению человеческих ре- продукции. Концепция, при которой пользователю, а равно
сурсов в сфере управления информационными системами, и администратору, предоставлялся лишь командный интер-
должно быть преодолено в самом ближайшем будущем. фейс, даже такой развитый, который был положен в осно-
Во-вторых, развитие средств автоматизации, невоз- ву UNIX, уже давно не считается верной. Информационные
можное без формирования стандартов на способы и ме- системы насыщаются GUI (Graphical User Interface). В неко-
тоды управления, приведет не только к утверждению пос- торых из них, например в MS Windows, это положено в ос-
ледних, но и к созданию профессиональных стандартов нование и присутствует изначально, в других, например
на их основе. в GNU/Linux, возникло «на наших глазах» и приняло харак-
Изобразим этот процесс в виде диаграммы (рис. 1). тер стандарта для систем уровня предприятия (enterprise).
В левой половинке будем группировать объективные со- Но GUI лишь инструментарий. Главное в том, что GUI
ставляющие, а в правой – субъективные. Вектор развития позволяет скрыть механизм управления и мультиплициро-
(эволюции) направим вниз. Два прямоугольника со сплош- вать его. Например, система централизованного управле-
ным контуром по центру будут соответствовать настояще- ния обновлениями в RHEL [6] и аналогичные механизмы
му уровню. Пара прямоугольников с пунктирным контуром в MS Windows. И та и другая система имеют сходство в том,
составят прогноз. что у них есть общая проприетарная компонента, которая
Если получится обосновать (или допустить как версию), передается системному администратору в пользование.
что действительное положение дел соответствует среднему Вот он! Тот самый «станок», превращающий сисадми-
уровню диаграммы, то можно предположить, что и прогноз, на в бесправного пролетария.
скорее всего, реален и неизбежен. Если допустить, что ко- Не верите? Добавьте к этому способ распростране-
нечной целью развития профессии системного админист- ния программных продуктов в ознакомительных верси-

№4, апрель 2006 79


IMHO
ях без функциональных ограничений, развития предметной области. Но тем Это очень прогрессивно. Приятно
но с невозможностью поддержки ра- не менее профессиональная прина- отметить, что несмотря на то, что в раз-
боты в производственном цикле. На- длежность определяется не знания- витии предметной области (а именно,
пример, системы CAD и другие. Их не- ми, а умениями во всех случаях, ког- в развитии средств автоматизации ад-
достаточно «украсть». Их надо сопро- да профессия полностью сформирова- министрирования) лидирует компания
вождать. А «станок сопровождения» на как вид человеческих занятий. Ведь Microsoft, в области сертификации бо-
контролирует производитель. Да, будь никому в голову не придет поинтере- лее эволюционно-зрелое решение бы-
сисадмин хоть 77 пядей во лбу – ни- соваться: «знаешь, как рубить дрова»? ло создано в стане Open Source!
чего он не сможет сделать самосто- Спрашивают: «умеешь рубить дро- Таким образом, и второе условие
ятельно! ва?»! Лишь в том случае, пока проис- подтверждается фактами.
Можно даже сказать, что в облас- ходит формирование самой предмет-
ти прикладного ПО данный метод об- ной области, знания играют сколько- Туманное будущее
щепринят, и системный администра- нибудь существенную роль. Так и для По всему выходит, что оба условия, от-
тор лишь устанавливает программный профессии системного администрато- раженные в средней части диаграм-
продукт и выполняет другие опера- ра точное определение совокупности мы (рис. 1), наблюдаются в настоя-
ции, которые не с руки делать продав- навыков будет указывать на завершен- щее время. Кроме того, условия созда-
цу. И такой подход до сих пор не при- ность развития. лись или создаются в динамике, то есть
менялся в отношении программных Мерилом профессиональной при- можно указать время, когда их не бы-
платформ лишь по той причине, что надлежности для системных адми- ло. Это значит, что процесс отчужде-
низвести сисадмина до уровня техно- нистраторов является сертификация. ния средств производства от систем-
логического биоманипулятора не поз- Это не статичное явление. Оно тоже ных администраторов идет полным хо-
воляла слабая автоматизация данно- подвержено метаморфозам и разви- дом. Как следствие, точнее, как осно-
го процесса. тию. Как и информационные техноло- вание этому, можно сказать, что в от-
Безусловно, здесь жадность явно гии, сертификация тоже может разви- расли наблюдается процесс индуст-
сдерживается лишь рационализмом, ваться в ошибочном направлении и да- риального развития, происходит рост
который основан все на той же жаднос- же заходить в тупик. уровня автоматизации работ и фор-
ти производителя. Поскольку програм- Например, сертификация SuSE мирование устойчивых технологичес-
мный продукт не должен быть совсем в свое время была закрыта в поль- ких стандартов.
закрытым, а учитывая сильное раз- зу сертификации LPI, носящей об- Конечно, это не значит, что когда-
витие Open Source в последнее вре- щий характер. А вот канувшая в Ле- то все придет к конечной точке и далее
мя (там он может быть и вовсе откры- ту сертификация ALT Linux была во- остановится. Даже прогресс в области
тым, как, например, RHEL), то произво- обще ориентирована на разработчи- технологии рубки леса не прекращает-
дитель должен очень точно подобрать ков. И та, и другая не имеют ни ма- ся до сих пор. Скорее всего, развитие
«перекрываемую» и одновременно ав- лейшего смысла в рамках рассмат- будет происходить в алгоритме сбли-
томатизируемую функцию. риваемой модели развития профес- жения рельсового полотна: схождение
Какой можно сделать вывод? Плат- сии. И, как следствие, о сертифика- в точку лишь в виртуальном горизонте.
формы и программные продукты, ции ALT Linux более не упоминается Поскольку каждый новый шаг в пла-
не обзаведшиеся системами, облег- на их сайте, а SuSE снова возвраща- не развития базовой технологии от-
чающими централизованное управле- ется к продуктоориентированной сер- расли будет создавать условия, сход-
ние, и не допускающие такой же цент- тификации, но уже в рамках Novell. Та- ные с изначально рассматриваемыми,
рализованный контроль за их исполь- ким образом, ориентацию сертифика- когда технологическая необходимость
зованием, скорее всего не имеют ры- ционных программ на используемые есть, а профессиональные институты
ночных перспектив. И, значит, не смо- технологические средства нужно при- отсутствуют.
гут принять участие в формировании знать как факт. Здесь возникает вопрос: возможна
отраслевых стандартов. И, следова- Но самое важное – это способ про- ли альтернатива? Может ли развитие
тельно, обречены на забвение. Из ми- верки соответствия кандидата требо- пойти вообще по иному пути. Рассмот-
ра GNU/Linux это относится в первую ваниям сертификации. Общепринятой рим ситуацию, сложившуюся в смеж-
очередь к Slackware. Как обратный методикой до сих пор являлось обыч- ной к обсуждаемой отрасли, – в про-
пример укажу Gentoo [7]: с 2006 года ное тестирование путем опроса. Так граммировании.
в этом совершенно анархическом дис- поступают и в Microsoft, и даже в упо-
трибутиве появился инсталлятор. За- мянутом LPI [8]. Но вот в RedHat ис- Бывает и так
думайтесь, почему, точнее, для чего! пользуется совершенно иная методи- Столлман со товарищи решили обла-
ка: проверка навыков практического годетельствовать всех программис-
Включение администрирования [9]! Это на самом тов [10]. Так как в профессиональной
в профессиональную деле ключевое изменение. Здесь уже среде программистов протекали при-
сертификацию проверки уровень знаний кандидата подразуме- мерно подобные процессы, и назрева-
навыков вается, но не является достаточным. ло полное отчуждение средств произ-
Как уже утверждалось выше, развитие Главным считается владение практи- водства (операционных систем и ПО
профессии и ее институтов отстает от ческой стороной. разработки) от самих программис-

80
IMHO
тов. Этот «Данко» под предлогом противодействия праву
собственности на ПО, которое де-факто снижает его до-
ступность (отбирает в пользу владельцев), решил пробле-
му совершенно кардинально. Предложенная им лицензия
GPL [11] передала программы в общественное использо-
вание и тем самым исключила возможность превращения
программистов в пролетариев. Попутно, правда, уничтожи-
ла программистов как сообщество профессионалов, пос-
кольку лишила возможности продавать результаты свое-
го труда (суть GPL в вульгарной трансляции: все, что твое,
то общее, а что общее, то уже не твое!). С тех пор нико-
го не удивляет, что даже зубные врачи занимаются разра-
боткой ядра GNU/Linux. И лишь только FSF [10] не понят-
но, что создавшаяся ситуация на руку крупным корпора-
циям, так как, исключив прямую продажу интеллектуаль-
ной собственности на ПО, лицензия GPL перенесла про-
фицит в область сопутствующих услуг и тем самым почти
100%-но исключила возможность программисту-единолич-
нику воспользоваться результатами своего труда. Напри-
мер, вся ALT Linux Team разрабатывает компоненты дист-
Рисунок 2. Диаграмма изменения соотношения в уровне
рибутива ALT Linux, а доход от реализации может получать оплаты труда
только компания ALT Linux [12]. То есть GPL является вы-
сшей формой эксплуатации программистов! показатель, изменение которого согласно предположению
Вы возмущены такой оценкой GPL? Тогда ответьте, ес- экономиста Саймона Кузнеца [15], должно в период индус-
ли каждая разработка согласно GPL оказывается в свобод- триального развития иметь характер перевернутой латин-
ном общественном доступе, то есть одновременно и у про- ской буквы «U» [16]. Иначе говоря, для некоторой профес-
граммиста-единоличника, и у корпорации с развитой инф- сии оплата изначально определяется лишь уровнем жизни,
раструктурой, то у кого из них шансы выше выпустить на ры- затем из-за технологического развития происходит резкое
нок новую продукцию и уже чисто экономическими метода- расслоение, которое постепенно должно стабилизировать-
ми (эффективная дистрибьюторская сеть, доступные цен- ся около некоторого нового уровня, определяемого особен-
тры поддержки, агрессивный промоутинг) задавить конку- ностями профессионального рынка труда.
рента? Вам еще не ясно, зачем и RedHat, и Novell выложили Сделанные далее, предположения не точны и не пре-
специальные версии своих ОС Linux в свободный и откры- тендуют на абсолютную истину. Но из того, что для си-
тый доступ? Подсказка: «в качестве подарка на день Свя- садминов соотношение в уровне оплаты труда составля-
того Валентина» не является правильным ответом. ет 1,875 , а для программистов 2,5 , можно сделать заклю-
Возвращаясь к «нашим баранам», спросим сами себя, чение, что процесс формирования профессии системных
а надо ли что-то альтернативное для сисадминов? Что при- администраторов должен находиться в одной из двух воз-
несет с собой альтернатива типа FSF в профессию систем- можных точек на диаграмме изменения соотношения в оп-
ного администратора? Анархию и ценовой демпинг! Кста- лате труда (рис. 2).
ти, время обсудить денежный вопрос. На диаграмме две кривые показывают изменение со-
отношения в оплате труда для двух профессий, сплошная
О приятном, о деньгах для системных администраторов, а пунктирная для про-
Проанализируем спектр возможных вакансий сисадминов граммистов. Заметим, кривая Кузнеца для программистов
на Headhunter.ru [13]. Если исключить крайние и зачастую имеет иллюстративный характер, так как эта профессия
композитные предложения (сисадмин «на все руки мастер» скорее всего не регламентируется законами, действующи-
в карликовую компанию или начальник IT-отдела), то ок- ми в отношении индустриальных рабочих специальностей.
лады перебирают номиналы из диапазона 800 – 1500 ус- Изображение одновременно двух кривых соотношения оп-
ловных единиц. То есть различаются в среднем примерно латы для программиста и сисадмина показывает, на сколь-
в два раза. В то же время, если сделать такую же выбор- ко формирование профессии системного администратора
ку в отношении вакансий программистов, то разброс будет продвинулось далее от профессии возможного прароди-
несколько больше 800 – 2000 (опять же исключая фантас- теля. Укажем попутно, высокий уровень оплаты труда про-
тические и унизительные вакансии). Конечно, по материа- граммистов соответствует вакансиям, специализируемся
лам кадровых агентств, представленным в Интернете, не- в проприетарных средах (Oracle, SAP R/3, 1C). Предложе-
возможно рассчитать взвешенные показатели уровней за- ния для UNIX (читай Linux) программистов не превышают
работной платы, аналогичные коэффициенту Джинни [14] 1200 условных единиц (спасибо FSF).
(так как судя по открытым данным нельзя исключить пов- Первая возможная точка «А» на рис. 2 расположена на
торы), можно лишь получить очень приблизительно соотно- линии подъема уровня неравенства, в то время как вторая
шение ожидаемой заработной платы квалифицированного «В» на том же рисунке, напротив, предсказывает скорую
и неквалифицированного сотрудника. То есть именно тот стабилизацию. Из того, что предпосылками для поворо-

№4, апрель 2006 81


IMHO
та (перегиба) U-образной кривой Куз- На эту тему снимали даже полномет- но хватить. Всем же остальным следу-
неца в профессиональном развитии ражные картины: «9 дней одного го- ет задуматься.
следует считать принятие сертифика- да» – кинодрама о физиках с элемен-
ции как общего подхода для установ- тами пренебрежения безопасностью Ссылки:
ления профессиональной пригоднос- труда. Можно сказать, что на глазах 1. Домашняя страница закрывшегося
ти, можно сделать вывод, что именно читателей возник культ программис- в 2002 году проекта Linux Router – http://
точка «В» соответствует настоящему тов, хакеров и системных админист- www.linuxrouter.org.
положению дел. раторов. Возник и почти прошел. Сов- 2. Ресурс, коллекционирующий материа-
Таким образом, можно предска- сем недавно каждый компьютерооза- лы по информационным технологиям –
зать скорую стабилизацию рынка тру- боченный школяр, студент-двоечник http://www.opennet.ru.
да системных администраторов. Ди- или менеджер-неудачник могли поп- 3. Microsoft Developer Network: инструмен-
кие предложения, вроде «сисадмин робовать себя в качестве сисадмина ты и ресурсы для разработки приложе-
со знанием фотошопа», должны ис- и добиться успеха. В самом ближай- ний – http://www.microsoft.com/rus/msdn/
чезнуть со страниц кадровых веб-ре- шем будущем это станет невозмож- default.mspx.
сурсов. Возрастет ли оплата в абсо- ным. В каждой профессии доля про- 4. Веб-ресурс для поиска работы за рубе-
лютном исчислении? Конечно, но пря- фессии прямо пропорциональна доле жом – http://www.telerabota.ru.
мо пропорционально затратам на сер- навыков и обратно пропорциональна 5. Ремарка о законе Мура – http://www.
тификацию. Более того, в сертифика- объему знаний. Системное админис- microsoft.com/rus/msdn/default.mspx.
ции должны быть заинтересованы са- трирование становится профессио- 6. RedHat Network. Система управления
ми кандидаты, а не нанимающие орга- нальным, требует все более навыков жизненным циклом серверов RHEL –
низации. Только тогда, когда соиска- и исключает успех теоретиков-всез- http://www.redhat.com/rhn.
тель вакансии будет уже иметь свиде- наек, какой бы начальной мотиваци- 7. Gentoo Linux Installer. Страница проек-
тельство о профессиональном уровне, ей они не обладали. Хорошее здесь та – http://www.gentoo.org/proj/en/releng/
он сможет рассчитывать на увеличение то, что более экспансия «пионеров» installer.
заработной платы при найме. не грозит ветеранам труда в этой об- 8. Сертификация LPI: экзамены – http://
Изменение характера оплаты сер- ласти, зарплаты из-за этого станут www.unixedu.ru/lpi.shtm.
тификации в пользу частного способа стягиваться к «верхней планке». От- 9. Описание экзаменационной сессии
(от физического лица так, как сейчас рицательным явлением можно посчи- RH302 – http://www.rhd.ru/rh302.html.
принято оплачивать образование в вы- тать убыль романтики и прочих эле- 10. С.Д. Кузнецов. «Идеология свободного
сших учебных заведениях) против кор- ментов наивной стадии развития сис- программного обеспечения...» – http://
поративного должно обозначить новый темного администрирования. Стоит ли www.linux.org.ru/books/GNU/misc/gnu.
качественный шаг в развитии профес- одно другого, судить вам. html.
сии. В этом должны быть заинтересо- 11. Русский перевод GPL – http://www.emt.
ваны и сами будущие системные ад- Послесловие com.ua/library/licenses/gpl-ru.
министраторы (повышение стоимос- Читатель, вероятно, задается вопро- 12. ALT Linux – информация для сообщес-
ти вакансий), и нанимающие органи- сом, чем же зарабатывает на жизнь тва – http://www.altlinux.ru/content/view/
зации (снижение затрат на обучение автор, если он одновременно «руга- 41/39.
и ликвидацию последствий ошибок), ет» и Microsoft, и FSF. Безусловно, как 13. HEADHUNTER.RU. Интернет-ресурс
и в конечном счете учебные центры, системный администратор, не вовле- для поиска работы – http://hh.ru.
которые упомянутую сертификацию ченный в корпоративную иерархию 14. Определение коэффициента Джинни
и предлагают. распределения прибыли Microsoft, – http://www.fastat.ru/Stbook/Main/344.
я все свои доходы имею благодаря htm.
Заключение Open Source и конкретно SuSE Linux. 15. Саймон Кузнец. Биография – http://www.
Наша страна уже переживала не од- Но с точки зрения беспристрастного peoples.ru/science/economy/kuznets.
ну волну профессиональной популяр- анализа являюсь всего лишь более 16. Л.И. Бородкин. «Неравенство доходов в
ности. Одно время, например, сущес- удачливым кустарем. Предполагаю, период индустриальной революции...» –
твовал культ «секретных физиков». что на мой активный век этого долж- http://www.altlinux.ru/content/view/41/39.

82
bugtraq

Переполнение буфера в Microsoft .NET


Программа: Microsoft .NET Framework 1.1 SP1, возможно
более ранние версии. Множественные уязвимости в Cisco
Опасность: Средняя. Optical Networking System 15000 Series
Описание: 1. Уязвимость существует из-за ошибки про- Программа: Cisco ONS 15000 Series, Cisco Transport
верки границ данных в ildasm при дизассемблировании Controller 4.x.
.dll-файла. Злоумышленник может с помощью специально Опасность: Высокая.
сформированного .dll-файла вызвать переполнение дина- Описание: 1. Различные сервисы уязвимы к ACK DoS-ата-
мической памяти и выполнить произвольный код на целе- кам, когда вместо ожидаемого final ACK-пакета отправля-
вой системе. ется некорректный ответ во время «троекратного рукопо-
2. Уязвимость существует при ассемблировании .il-фай- жатия» (3-way handshake). Удаленный пользователь может
ла, содержащего вызов функции с слишком длинным на- заставить контрольные карты (control cards) потребить все
званием метода, использующего ilasm. Удаленный пользо- доступные ресурсы на системе и вызвать отказ в обслужи-
ватель может вызвать переполнение буфера. вании. Удачная эксплуатация уязвимости возможна, если
URL производителя: www.microsoft.com. IP-протокол сконфигурирован на LAN-интерфейсе (вклю-
Решение: В настоящее время способов устранения уязви- чено по умолчанию).
мости не существует. 2. Уязвимость существует при обработке IP-пакетов.
Удаленный пользователь может с помощью специально
Множественные уязвимости в ClamAV сформированного IP-пакета обнулить настройки control
Программа: Clam AntiVirus (clamav) 0.88 и более ранние cards. Удачная эксплуатация уязвимости возможна, если
версии. IP-протокол сконфигурирован на LAN-интерфейсе и вклю-
Опасность: Высокая. чен secure mode для element management system (EMS)-to-
Описание: 1. Целочисленное переполнение обнаружено в об- network-element access (по умолчанию отключен).
работчике PE-заголовков в файле libclamav/pe.c. Для удач- 3. Уязвимость существует при обработке IP-пакетов.
ной эксплуатации уязвимости опция ArchiveMaxFileSize Удаленный пользователь может сбросить настройки control
должна быть отключена. cards. Для удачной эксплуатации уязвимости IP должен
2. Обнаружено несколько уязвимостей форматной стро- быть сконфигурирован на LAN-интерфейсе (по умолча-
ки при обработке логирования в файле shared/output.c. Уда- нию включен).
ленный пользователь может выполнить произвольный код 4. Уязвимость существует при обработке OSPF-паке-
на целевой системе. тов. Удаленный пользователь может послать специально
3. Уязвимость существует из-за некорректного обра- сформированный OSPF-пакет и сбросить настройки control
щения к памяти в функции cli_bitset_test() файла ibclamav/ cards. Удачная эксплуатация уязвимости возможна, если
others.c. Удаленный пользователь может аварийно завер- OSPF-протокол сконфигурирован на LAN-интерфейсе (от-
шить работу приложения. ключен по умолчанию).
URL производителя: www.clamav.net. Успешная эксплуатация вышеописанных уязвимостей
Решение: Установите исправление с сайта производите- (1-4) возможна, если Common Control Card оптического но-
ля. да подключена к DCN (Data Communication Network) и вклю-
чено использование протокола IPv4.
Переполнение буфера в Veritas Уязвимости существуют на следующих платформах:
NetBackup Cisco ONS 15310-CL Series, Cisco ONS 15327 Series, Cisco
Программа: NetBackup Enterprise Server/NetBackup Server; ONS 15454 MSPP, Cisco ONS 15454 MSTP, Cisco ONS 15600
Server and Clients, NetBackup Enterprise Server/NetBackup Series.
Server; Server and Clients 5.1 (все платформы), NetBackup 5. Уязвимость обнаружена в загрузчике апплетов Cisco
Enterprise Server/NetBackup Server; Server and Clients 5.0 Transport Controller (CTC), который загружается каждый
(все платформы), NetBackup DataCenter and BusinesServer; раз, когда инициализируются соединения для управле-
Server and Clients 4.5FP (все платформы), NetBackup ния оптическим нодом. Уязвимость существует из-за то-
DataCenter and BusinesServer; Server and Clients 4.5MP го, что java.policy разрешает доступ любому программно-
(все платформы). му обеспечению из codeBase или «http://*/fs/LAUNCHER.jar».
Опасность: Средняя. Удаленный пользователь может с помощью специально
Описание: Обнаружены ошибки проверки границ данных сформированной веб-страницы выполнить произвольный
в службах Volume Manager (vmd), NetBackup Catalog (bpdbm) код из «/fs/LAUNCHER.jar» на рабочей станции CTC.
и NetBackup Sharepoint Services server (bpspsserver). Удален- URL производителя: www.cisco.com.
ный пользователь может с помощью специально сформи- Решение: Установите исправление с сайта производите-
рованных пакетов вызвать переполнение буфера и скомп- ля.
рометировать уязвимую систему.
URL производителя: www.veritas.com. Составил Александр Антипов
Решение: Установите исправление с сайта производите-
ля.

№4, апрель 2006 83


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

Надежда умирает последней:


история компании SGI

Дмитрий Мороз
Двадцать лет назад в компьютерной индустрии существовали лишь две компании
с трёхбуквенными названиями, перед которыми благоговела общественность, – Sun и SGI.
Что вам известно о последней?

Е
сли бы вы в начале 90-х годов фики и анимации, а также визуализа- вали «чёрной завистью», то сегодня
прошлого столетия спросили ции научных исследований. Кроме то- им, сочувствуя, лишь снисходитель-
у художника, какой компьютер го, Silicon Graphics также стала извес- но улыбаются.
своей мечты он хотел бы иметь, ответ тна как производитель высокомасшта- К сожалению, современная реаль-
в 99% случаев был одним – рабочую бируемых серверов, систем хранения ность такова, что неугомонный тех-
станцию от Silicon Graphics. То же са- данных и суперкомпьютеров. нический прогресс, а также «рацио-
мое вам ответили бы технологи, учё- Однако если в начале 90-х годов нальное» желание человека эконо-
ные, инженеры, медики, военные. На- о рабочей станции от Silicon Graphics мить на всём и вся подготовили для
чиная с 1989 года на системах этой мечтал практически каждый, знако- Silicon Graphics «глубокую пропасть»,
компании производилось абсолют- мый с рынком компьютерной техни- в которую компания «падает» на про-
ное большинство компьютерной гра- ки, человек, а уже имевшим завидо- тяжении последних восьми лет. Одна-

84
ретроспектива
«золотую рыбку» и в итоге оставшей-
Справка по IRIX ловых систем в индустрии под названием ся «у разбитого корыта». Так давайте
IRIX (название происходит от словосоче- XFS. Благодаря наличию библиотеки IrisGL же начнём!
тания IRIS и UNIX) – операционная систе- (IRIS Graphics Language), общающейся не-
ма для компьютеров Silicon Graphics, осно- посредственно с графическими микросхе- Волей случая
ванная на базе UNIX System V с некоторы- мами компьютеров Silicon Graphics, опера- История возникновения Silicon Graphics
ми расширениями, взятыми из BSD-сис- ционная система обладает широкими воз- Inc., в общем-то, стандартна и напоми-
тем. Благодаря тщательной оптимизации можностями по обработке трёхмерной гра- нает становление прочих великих ком-
IRIX обладает большим временем рабо- фики. IRIX была первой UNIX-ОС с графи- паний того времени в Силиконовой До-
ты без необходимости перезагрузки, из- ческим интерфейсом под названием IRIX лине: один «маленький» человек – од-
начально оптимизирована под многопро- Interactive Desktop, представляющим со- на большая идея. И зовут этого чело-
цессорные системы, и имеет одну из на- бой оконный менеджер 4dwm с уникаль- века – Джеймс Кларк. Ещё в середине
иболее совершенных журналируемых фай- ным для IRIX внешним видом. 70-х годов прошлого столетия он, пре-
бывая на посту профессора Стэнфорд-
ко существуют и другие факторы, под- ли очень немногие, в основном ис- ского университета, вместе с Марком
косившие её бизнес: следовательские центры, воен- Ханной начал разрабатывать схему, ко-
 Превосходство аппаратного ные, крупные голливудские студии торая бы взяла на себя обработку трёх-
обеспечения над программным. и большие компании. Для всех ос- мерной графики. «Без Марка я бы вряд
Инженеры, занимавшиеся проек- тальных рабочие станции или сер- ли закончил свою работу», – вспоми-
тированием рабочих станций и сер- вера от Silicon Graphics представ- нает Кларк. Уже в 1979 году была раз-
веров, всегда имели превосходс- ляли собой «Запорожец с двигате- работана и запатентована первая вер-
тво над своими коллегами, разра- лем от BMW». сия Geometry Engine – набора микро-
батывавшими операционную сис-  Отсутствие нормальной техни- схем, производившего различные опе-
тему и программы под неё. По сло- ческой поддержки. Инстанциям, рации над данными, из которых состоя-
вам одного из бывших сотрудников собравшимся прикупить систему ли трёхмерные сцены: трансформация
Silicon Graphics, диктование «тех- от Silicon Graphics, стоимость кото- матриц, обрезание, склеивание и опе-
никами» условий «программис- рой исчислялась шестизначными рации масштабирования.
там» было вполне обыденным яв- цифрами, необходимо было спер- В поисках инвесторов для продол-
лением. ва позаботиться о дополнительном жения финансирования проекта и пос-
 Либо в одной лодке со всеми, ли- штате квалифицированного обслу- ледующего коммерческого запуска
бо – за бортом. Инженеры, рабо- живающего персонала, посколь- Кларк обращался к таким компани-
тавшие в компании, должны были ку техническая поддержка Silicon ям, как IBM, Apollo, Digital Equipment
без возражений выполнять постав- Graphics была никудышной. Чего Corporation (DEC) и Hewlett-Packard,
ленные перед ними задачи. Тех же стоит отсутствие полноценного ру- но не получил поддержки и в 1980 го-
сотрудников, которым вздумалось ководства пользователя операци- ду принял решение создать собствен-
не согласиться и выразить свою онной системой. Опять-таки инже- ную компанию. Благодаря публичной
точку зрения, быстро увольняли. неры заставляли программистов демонстрации возможностей Geometry
Кстати, именно благодаря быв- концентрировать внимание в пер- Engine в конце 1981 года на выставке-
шим инженерам Silicon Graphics, вую очередь на выполнении их за-
предлагавшим своей компании на- просов, тем самым ставя написание Справка по MIPS
чать создавать графические уско- документации к программным про- Архитектура MIPS была разработана
рители для бурно развивавшегося дуктам на последние позиции спис- в 1981 году в Стенфордском университе-
рынка персональных компьютеров, ка «Что предстоит сделать». те под руководством Джона Хеннеси.Ос-
на свет появились такие компании  И, конечно же, Голливуд. Воспе- новная идея MIPS – создание небольшо-
как: 3Dfx, nVidia и ArtX (купленная вание киностудиями возможнос- го по численности (около 50) набора ко-
ATI). Да-да, именно «выброшенные тей компьютеров Silicon Graphics манд, инструкции которого благодаря эф-
за борт» бывшие сотрудники Silicon взвинчивало самолюбие компании фективному дизайну конвейера, а также
Graphics явили нам с вами эру 3D. до самых небес. Уверенная в сво- наличию 64 регистров выполнялись бы
 Жёсткая зависимость от типа их непоколебимых высоких позици- всего за один такт процессора. Этот факт
выполняющегося приложения. ях в этом секторе рынка, она слиш- как нельзя лучше демонстрировал фило-
Если программа нуждалась в осо- ком поздно осознала о полученном софию RISC-архитектуры. Первый коммер-
бенностях, заложенных в архитек- «ударе в спину», преподнесённом ческий вариант процессора, MIPS R2000,
туру систем от Silicon Graphics (мно- бурным развитием персональных содержал всего 110 тысяч транзисторов
гопроцессорность, общая опера- компьютеров. (для сравнения: этот показатель в процес-
тивная память и т. д.), тогда их по- соре Intel 386 был почти в три раза боль-
купка была оправданной. К сожа- Однако цель этой статьи – не «раз- ше) и при частоте 12 МГц работал на скоро-
лению, позволить себе оптимизи- бор полётов» относительно неудач сти 9 MIPS (Millions Instructions Per Second –
ровать программное обеспечение Silicon Graphics, а рассказ об исто- миллионов инструкций за секунду), опере-
под аппаратные возможности мог- рии компании, в одно время имевшей жая i386 в шесть раз.

№4, апрель 2006 85


ретроспектива
свою прибыль на исследования, считая ду), представлявшие собой сервер-
технический аспект наиболее важным ные версии графических станций с 2,
в своём дальнейшем развитии, Sun бы- 4 и 8 процессорами. В начале 1990-х
ла более прагматичной, вследствие че- эта линейка была переименована в се-
го акцентировала большее внимание рию Challenge.
на бизнес-стратегии, постепенной под- Для того чтобы завершить рассказ
готовке почвы для захвата рынка. Бла- о непревзойдённости IRIS 4D, отметим,
годаря этому Sun на сегодняшний день что не только «начинка», но и корпус,
чувствует себя в той же «форме», что и её содержащий, был произведением
10-15 лет назад, и не собирается сда- искусства. А пластик, из которого он
ваться на милость конкурентам. изготовлялся, был произведён собс-
Первым продуктом новоиспечён- твенной фабрикой Silicon Graphics, за-
ной Silicon Graphics стал выпущенный нимавшейся исключительно изготов-
в 1983 году графический терминал лением пластмассы. Стоит ли гово-
IRIS 1000, работавший на базе опе- рить, что IRIS 4D стала воплощением
рационной системы IRIX и стоивший мечты любого компьютерного специа-
в зависимости от конфигурации от 70 листа того времени?
до 80 тысяч долларов. Программисты быстро брали IRIS
Своё название – система с интег- 4D «на вооружение». На выставках-
рированным растровым изображени- конференциях SIGGRAPH демонстри-
Рисунок 1. Графический терминал
IRIS 3000 ем (Integrated Raster Imaging System), ровались первые программные про-
IRIS 1000 получила благодаря нали- дукты для новой платформы от Silicon
чию в ней буфера кадра (представля- Graphics. Со временем на свет поя-
ющего собой своеобразную «видео- вились такие программы как: Preview,
память», хранящую «слепок» экрана Personal Visualizer, Data Visualiser
или, говоря на техническом языке, – и Advanced Visualizer, Composer,
информацию о каждой точке выводи- Kinemation, Dynamation компании
мого на экран изображения) с разре- Wavefront Technologies; Alias/х, Studio,
шением 1024х1024 пикселя, а также Power Animator и AutoStudio компании
Geometry Engine, позволявшего обра- Alias Research; Creative Environment,
батывать данные, выводимые на эк- EDDIE, Painterly Effects и Creative Toonz
ран, с невероятной для того времени компании Softimage. Этот список мож-
скоростью. Правда, несмотря на нали- но продолжать долго, однако смысл
чие собственного процессора Motorola остаётся одним и тем же – системы
68000 и 2 Мб оперативной памяти, IRIS Silicon Graphics стремительно завоё-
1000 не была рассчитана на автоном- вывали рынок.
ную работу, а подключалась к мини- Многие аналитики утверждали, что
ЭВМ серии VAX компании DEC. успех компании в то время был про-
Графическими терминалами маши- диктован теми же факторами, кото-
ны IRIS продолжали оставаться вплоть рые в своё время сделали знамени-
Рисунок 2. Рабочая станция IRIS 4D до появления модели 3000, ставшей той компанию Apple: молодой, но та-
последним представителем этого се- лантливый и, самое главное, напорис-
конференции SIGGRAPH Джим Кларк мейства и первым компьютером с про- тый персонал, стремящийся во что бы
сумел раздобыть 20 миллионов долла- цессором архитектуры MIPS (R2000). то ни стало заполучить работу в ком-
ров инвестиций и вместе с семью быв- В марте 1987 года общественности бы- пании, свежие идеи, нетрадиционный
шими студентами Стэнфорда, среди ла представлена модель IRIS 4D, став- взгляд на мир и желание идти с ней
которых был и Ханна, основал компа- шая первой полноценной графической врозь и в то же время рядом. Все эти
нию Silicon Graphics, которая после ре- станцией от Silicon Graphics. факторы способствовали тому, что уже
гистрации в 1982 году получила при- Наиболее быстрая модель семейс- в 1988 году Silicon Graphics объявила
ставку Incorporated. Исполнительным тва, IRIS 4D/300 с 33 МГц процессором о 167-миллионной прибыли, которая
директором новоиспечённой компа- R3000 и 256 МБ ОЗУ обладала произ- с каждым финансовым кварталом всё
нии стал Эд МакКракен. водительностью 29 MIPS и способнос- увеличивалась.
В том же году в Силиконовой До- тью обрабатывать до 100 тысяч текс- В 1989 году состоялось событие,
лине была основана другая компа- турированных треугольников в секун- сделавшее словосочетания Silicon
ния, Sun Microsystems. В дальнейшем ду, чего уже было достаточно для сис- Graphics и «компьютерные спецэф-
оба соперника шли практически но- тем автоматизированного проекти- фекты» синонимичными: на свет вы-
га в ногу. Разница между ними была рования и трёхмерного моделирова- шел фильм «Бездна», в котором су-
лишь в подходе к рынку: в то время ния. Существовали также IRIS 4D се- щество, состоявшее из струи воды, бы-
как Silicon Graphics тратила почти всю рии Power (анонсированные в 1988 го- ло создано при помощи программно-

86
ретроспектива
вать её дальнейшее развитие. В 1992
году компания, предварительно отчис-
тив IrisGL от старого кода, решила ли-
цензировать её всем желающим. При
этом под руководством компании был
сформирован консорциум, следивший
за разработкой новых версий OpenGL
(так стала называться IrisGL).
В 1992 году, отрапортовав о прода-
же 100-тысячной рабочей станции, ком-
пания совершила первую значитель-
ную (400 млн. долл.) покупку. Ею стала
MIPS Computer Systems Inc., являвша-
яся производителем процессоров для
всех систем Silicon Graphics. Во вре-
мя своей самостоятельности компа-
ния MIPS разрабатывала и выпускала
процессоры одноимённой архитекту-
ры, а также производила на их основе
собственные рабочие станции. Одна-
ко жестокие реалии рынка не позво-
Рисунок 3. Операционная система IRIX 5.3, работающая на компьютере IRIS 4D лили MIPS завоевать «место под сол-
го пакета Alias 2.4.2 на базе станций Reality Engine, обрабатывавшему бо- нцем», и, оставшись без средств к су-
IRIS 4D/70G и 4D/80GT. Этот фильм лее 1,1 миллиона текстурированных ществованию, она была приобретена
ознаменовал собой приход Silicon полигонов за секунду, просто не бы- Silicon Graphics и перепрофилирова-
Graphics в Голливуд. «Терминатор 2: ло равных. на исключительно на проектирование
Судный День» (1991 г.) и «Парк Юрско- С технической точки зрения Reality процессоров.
го периода» (1993 г.), – названия филь- Engine представлял собой компьютер, Такой шаг позволил Silicon Graphics,
мов, спецэффекты которых в рекламе содержащий до восьми процессоров несмотря на 118-миллионные убытки
не нуждаются. MIPS R3000 и до 256 Мб ОЗУ. Графи- в 1992 году, лучше планировать собс-
ческая подсистема состояла из вось- твенную продуктовую линейку, а так-
«Золотые» годы ми процессоров i860 XP, представляв- же развивать архитектуру MIPS в нуж-
В 1990 году Silicon Graphics представи- ших собой единственного представи- ном ей русле. «Если смотреть с точ-
ла миру свою, пожалуй, наиболее попу- теля семейства «чистых» RISC-процес- ки зрения стратегии, этот шаг дал им
лярную рабочую станцию – IRIS Indigo. соров компании Intel. в руки полный контроль над архитек-
Компьютер был столь удачным, что да- Вплоть до появления на свет систем турой MIPS», – заявлял аналитик ком-
же сегодня, спустя 15 лет, на аукционе второго поколения под названием Onyx пании Hambrecht & Quist Роберт Хер-
eBay люди отдают за неё немалые де- Reality Engine (производительность ко- вик. «В результате она развивается
ньги. IRIS Indigo стала первой рабочей торых достигла отметки 2 миллиона так, как того хочется Silicon Graphics».
станцией, в которой был применён пер- полигонов за секунду) доступ к их гра- Стоит также отметить, что отныне ком-
вый 64-разрядный процессор MIPS – фическим подсистемам осуществлял- пании, использовавшие в своих ус-
R4000. В максимальной конфигурации, ся при помощи закрытой библиотеки тройствах процессоры MIPS, – а это
со 100 МГц-процессором, 384 Мб опе- IrisGL. С увеличением графических федеральное компьютерное подраз-
ративной памяти и графической сис- возможностей систем Silicon Graphics деление AT&T, Control Data Systems,
темой Elan (состоявшей из четырёх становилось всё труднее поддержи- NEC, Olivetti, Siemens, Nixdorf, и Sony
Geometry Engine), IRIS Indigo обраба-
тывала до 370 тысяч текстурирован- Справка по OpenGL ране. В качестве примитивов, обрабаты-
ных треугольников в секунду. OpenGL был создан в 1992 году корпора- ваемых API OpenGL, выступают точки, от-
Не останавливаясь на этом показа- цией Silicon Graphics на базе собствен- резки прямых, стандартные (трёхвершин-
теле, в 1992 году Silicon Graphics объ- ной библиотеки IrisGL, существующей ные), а также многовершинные полигоны.
явила о выпуске Reality Engine, пред- с 1982 года. Для развития нового API был OpenGL включает в себя около 150 различ-
ставлявшего собой, по заявлениям сформирован комитет ARB (The OpenGL ных команд для работы с графикой, одни
самой Silicon Graphics, первый в мире Architecture Review Board), в который на из которых предназначены для определе-
«графический суперкомпьютер». Ос- сегодняшний день входят: 3D Labs, SGI, ния объектов, другие задают их свойства,
новная его задача – максимально быс- Apple, Evans & Sutherland, nVidia, ATI, Intel, а также параметры прорисовки и отоб-
тро и точно визуализировать данные, id Software, Microsoft и др. ражения. Для расширения функциональ-
будь то результаты научных исследо- В общих чертах OpenGL – это набор ко- ных возможностей OpenGL существуют
ваний, сложные САПР-модели, ком- манд, которые описывают геометрические вспомогательные библиотеки. Последняя
пьютерные сцены и т. д. На то время объекты и способ их отображения на эк- на данный момент версия OpenGL – 2.0.

№4, апрель 2006 87


ретроспектива
Microsystems – теперь зависели от при- Да, Indigo 2 являлась непревзой-
хотей Silicon Graphics. дённым «графическим монстром», од-
Благодаря отличному масштабиро- нако была по карману далеко не каж-
ванию серверов Silicon Graphics, а так- дому.
же поддержке ОС IRIX многопроцес- В том же году Silicon Graphics при-
сорности, компания смогла без осо- няла решение создать мультимедий-
бых проблем объединить свои аппа- ную рабочую станцию, обладающую
ратно-программные возможности для не только передовыми графическими
создания собственных суперкомпьюте- возможностями, но и прекрасно справ-
ров, которые она представила в янва- ляющуюся с обработкой видео и зву-
Рисунок 4. Графические способности ре 1993 года. Различные исследова- ка. При этом её цена должна была при-
IRIS 4D
тельские учреждения, университеты, влечь как крупные компании, так и про-
крупные корпорации и другие инстан- фессионалов-одиночек. В результа-
ции, уже убедившись в возможностях те в сентябре 1993 года на свет поя-
графических станций и серверов, про- вилась рабочая станция Indy, в базо-
изводимых Silicon Graphics, немедлен- вой конфигурации стоившая 5 тысяч
но изъявили желание прикупить «чис- долларов, что позволяло ей конкури-
лодробилку» стоимостью пару мил- ровать с компьютерами SPARCstation
лионов долларов. К началу 1995 го- компании Sun Microsystems и Quadra
да в списке Top 500 самых произво- компании Apple.
дительных суперкомпьютеров в мире Indy была первой рабочей станци-
Рисунок 5. Рабочая станция IRIS Indigo присутствовало 128 систем производс- ей Silicon Graphics, работавшей на базе
тва Silicon Graphics (сравните со 125 – процессора MIPS R5000, дополнитель-
у компании Cray Research и 72 – у кор- ные инструкции по обработке трёхмер-
порации IBM). ной графики которого позволяли отка-
Вместе с анонсом первых супер- заться от использования дорогой гра-
компьютеров компания объявила об фической карты. Indy впервые облада-
очередном обновлении своей линейки ла встроенными видеовходами: компо-
рабочих станций и появлении в январе зитным, S-Video и специальным циф-
1993 года модели Indigo 2. Основные ровым под названием Vino. Список
нововведения коснулись поддержки всех «вкусностей» венчала миниатюр-
новых процессоров (вплоть до MIPS ная цифровая видеокамера IndyCam,
R10000 в начале 1996 года), а также но- поставлявшаяся в комплекте со стан-
вых графических плат (общее количес- цией, а также встроенный адаптер для
тво которых, разделённых на три се- подключения к выделенным линиям
Рисунок 6. Плата Reality Engine рии, достигло восьми штук), самая про- стандарта ISDN.
изводительная из которых, Maximum К 1993 году из всех студий, созда-
Impact, аппаратно текстурировала по- вавших спецэффекты для кинофиль-
лигоны, содержала 4 Мб текстурной мов, наибольшим клиентом Silicon
памяти (TRAM), и по два набора мик- Graphics являлась Industrial Light &
росхем Geometry Engine (для работы Magic (сокращённо – ILM) Джорджа
с трёхмерной графикой) 11-го поколе- Лукаса, на счету которой вышеупо-
ния и Raster Engine (для работы с рас- минавшиеся «Терминатор 2» и «Парк
тровой графикой) 4-го поколения. Юрского периода». В процессе совер-
Также на основе Indigo 2 был выпу- шенствования и дальнейшего услож-
щен сервер Challenge M, отличавший- нения визуальных эффектов ILM пос-
Рисунок 7. Графические суперкомпьютеры ся от рабочей станции лишь отсутс- тоянно нуждалась во всё более про-
семейства Onyx твием аппаратных средств для работы изводительных компьютерах. Реше-
с графикой и звуком, а также видоиз- ние было принято незамедлительно:
менённым дизайном корпуса. Ещё од- в апреле студия подписала с Silicon
на «вариация на тему» – IRIS Crimson, Graphics соглашение на реализацию
выпущенная одновременно с Indigo 2, проекта JEDI, согласно которому ILM
Рисунок 8. Рабочая станция Indigo 2 но являвшаяся представительницей получала от компании самые передо-
рабочих станций класса high-end. Ос- вые, ещё не доступные рынку новин-
новное её отличие – возможность ус- ки, а Silicon Graphics, в свою очередь,
тановки платы Reality Engine перво- использовала студию Лукаса как ис-
го поколения, наделявшей компьютер пытательный полигон, тестируя рабо-
графическими возможностями сис- ту своего аппаратного и программно-
Рисунок 9. Рабочая станция Indy тем Onyx. го обеспечения.

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

№4, апрель 2006 89


ретроспектива
Ещё одно крупное событие, случив- терактивных широкополосных сетей
шееся в апреле, – подписание договора и телевидения». В действительности
между Silicon Graphics и корпорацией всё было именно так, да не совсем.
Time Warner, согласно которому первая «Он, наверное, был единственным,
будет поставлять аппаратное и про- верившим десять лет назад, что тех-
граммное обеспечение для создания нология, стоившая в начале 90-х де-
«интерактивного телевидения». сятки тысяч долларов, со временем
Всё это позитивным образом ска- придёт в дома обычных пользовате-
залось на финансовом состоянии ком- лей в виде интерактивных мульти-
пании, и 30 июня 1993 года при подве- медийных устройств стоимостью не-
дении итогов общественности стало сколько сотен долларов», – говорил
известно, что доход Silicon Graphics Роберт Хервик.
впервые перевалил за миллиардную По словам самого Кларка, его же-
отметку в долларовом эквиваленте. лание сделать продукцию компании
Продукция компании была столь ус- более доступной путём выхода на но-
пешной и популярной, что стала стан- вый рынок начавших набирать попу-
дартом «де-факто» на рынке. Благода- лярность мультимедийных систем, иг-
Рисунок 10. Рабочая станция IRIS
ря этому Silicon Graphics в начале 90-х ровых консолей, а также графических Crimson
годов являлась чуть ли не символом ускорителей для персональных ком-
технического прогресса США. пьютеров, не встретило никакой подде- шего развития компании, ей с ним бы-
Доказательством этого может слу- ржки со стороны председателей прав- ло не по пути. Это жёсткое правило не
жить тот факт, что 22 февраля 1993 го- ления Silicon Graphics. Иными слова- спасовало даже перед самим основа-
да, сразу после победы на президент- ми, он хотел, чтобы главные техноло- телем компании.
ских выборах, Билл Клинтон и вице- гии, разработанные компанией, стали Понимая, что отныне его «руки свя-
президент Альберт Гор совершили стандартом на рынке потребительской заны», Кларк принял единственное
поездку в Маунтин Вью для того, что- электроники. возможное решение – уволиться и на-
бы познакомиться с наиболее извест- Джим Кларк считал, что компания, чать всё «с нуля». К тому же на сво-
ной компанией – Silicon Graphics. Тог- к тому времени разросшаяся до не- их бывших коллег он не мог обижать-
да Эд МакКракен, стоя рядом с ними, вероятных размеров (штат её сотруд- ся. Денег, заработанных им во время
сказал присутствовавшим журналис- ников по всему миру насчитывал 12 работы в Silicon Graphics, хватило не
там: «США заботится об исследова- тысяч человек), была слишком непо- только на финансирование новых пер-
тельских разработках, проводимых воротлива, чтобы быстро прогресси- спективных идей, но и совершенство-
на её территории, и наша компания – ровать и реагировать на изменения вание своей напичканной под завязку
тому пример». рынка. К тому же Silicon Graphics бы- электроникой яхты «Гиперион» (стои-
ла не из тех компаний, которые «пилят мость электроники, а это: 65 километ-
Расхождение во мнениях сук, на котором сидят». Иначе говоря, ров оптоволоконных линий, 24 сервера
Дела у Silicon Graphics шли лучше не- её позиция в 1994 году более чем уст- Silicon Graphics и 22 сенсорных дисп-
куда. Признанный лидер в своих сек- раивала совет директоров и к тому же лея, составила миллионы долларов).
торах рынка, компания почивала на приносила большие прибыли. А ме- Первоначально Кларк собирался
лаврах, продолжая строить радужные нять устоявшиеся правила на диковин- заняться разработкой графических
планы на будущее. Однако 27 янва- ки никто не хотел. «Я пришёл к выво- интерфейсов, но, узнав о разработке
ря 1994 года мир «перевернулся с ног ду, что чем больше компании разрас- Марком Андрессеном графического
на голову». Сотрудники компании по- таются в размерах, тем меньше они браузера для сети Интернет под на-
лучили принеприятнейшее известие хотят смотреть на новые возможнос- званием Mosaic, предложил ему осно-
о том, что основатель Silicon Graphics ти, которые могут ожидать их в буду- вать компанию, которая будет зани-
Джеймс Кларк решил уйти из компа- щем», – говорит Кларк. маться его дальнейшей разработкой
нии. В пресс-релизе говорилось о том, Вспомним одну из причин падения и продажей. Так была основана Mosaic
что: «Доктор Кларк… принял решение Silicon Graphics, написанных в начале Communications, позже превратившая-
заниматься разработкой приложений статьи: если у инженера было собс- ся в Netscape Communications.
для бурно развивающихся рынков ин- твенное мнение по поводу дальней- Что же касается Silicon Graphics,
компания продолжала следовать на-
Для справки ровой консоли под кодовым названием меченным целям. Однако уже в 1994
Несмотря на нежелание руководства ком- Project Reality, обладающей «производи- году её ждёт первый «удар», за кото-
пании выходить на новые сегменты рынка, тельностью сотен персональных компью- рым «розовые очки» компании спадут,
одна «маленькая победа» Джиму Кларку теров за скромные 250 долларов». Весной «обнажив» суровую действительность
всё же удалась. 1996 года результат трёхгодичной рабо- этого мира.
23 августа 1993 года Silcon Graphics ты в виде консоли Nintendo 64 увидел мир.
вместе с Nintendo заключили контракт О её технических особенностях мы погово- Редактор рубрики
с целью разработки новой 64-битной иг- рим в следующем номере журнала». Кирилл Тихонов

90
конкурс

Редакция журнала «Системный администратор»


объявляет об учреждении 3 премий авторам
по итогам 2006 года:
 1 место – 30 000 рублей О номинациях
 2 место – 20 000 рублей 1. Серией материалов считается блок из не менее чем
 3 место – 10 000 рублей двух статей. Тема серии – по собственному выбору ав-
тора или же по выбору редакции.
Номинации 2. Статья, написанная на тему, придуманную автором
1. За лучшую серию материалов и одобренную редакцией.
2. За лучшую новую авторскую тему 3. Аналитическая статья может быть написана на тему,
3. За лучшую аналитическую статью предложенную автором или же на тему, заказанную ре-
дакцией.
Кто участвует
Участие принимают все авторы, опубликовавшие свои Кто судьи
статьи в журнале «Системный администратор» в тече- В состав жюри войдут сотрудники редакции и предста-
ние 2006 года. Напоминаем, что автором может стать лю- вители дружественных журналу информационных ре-
бой человек. сурсов.

Условия публикации разбивайте материал на несколько частей.


Принимаются материалы, нигде ранее не опубликованные Если вы пишете о продукте, технологии или компании,
(в том числе в Интернете, прочих глобальных сетях, печат- описывайте не только «плюсы», но и «минусы», а также при-
ных изданиях и т. д.). Статьи не рецензируются. водите информацию о конкурентах.
За содержание статьи ответственность несет автор. Рекомендуем ознакомиться со статьями на интересую-
В течение двух недель редакция принимает решение щую вас тему, которые уже есть на нашем сайте.
о публикации статьи и сообщает об этом автору.
Редакция оставляет за собой право редактировать пре- Требования к виду присылаемых
доставленные материалы. материалов
Редакция имеет эксклюзивное право на распростране- Статьи следует присылать в текстовом виде, предпочти-
ние принятого материала в журнале, включая возможность тельно в формате RTF или DOC. Имена пересылаемых
его публикации в любой электронной форме. файлов только на английском языке. Выравнивание столб-
По истечении двух месяцев с момента выхода журнала, цов производится табуляцией, а не пробелом. В тексте ста-
содержащего публикации, автор имеет право опубликовать тьи рекомендуется указывать местоположение иллюстра-
свой материал в другом месте только с предварительного ций и подписи к ним, а сами иллюстрации не нужно встав-
письменного согласия редакции и с обязательной ссылкой лять в тело документа, их нужно запаковать в отдельный
на журнал «Системный администратор». архив. Иллюстрации должны быть строго в формате PNG.
По истечении одного года с момента первой публика- Листинги должны содержать не более 60 символов (вмес-
ции автор имеет право опубликовать свой материал в дру- те с пробелами) в одной строчке. Переносы строк листин-
гом месте без предварительного письменного согласия гов должны быть указаны в явном виде (---перенос стро-
редакции. ки---). Если в статье приводятся ссылки на ресурсы в сети,
URL должен быть указан в явном виде.
Общие требования к статьям
Статьи не должны иметь рекламный характер какого-либо Контакты
продукта, компании или технологии. В статье указывают-
Адрес: 107045, г. Москва, Ананьевский переулок
ся ссылки на источники информации.
д. 4/2, стр. 1, Редакция «Учительской газе-
Не допускается несанкционированный перевод на рус-
ты», журнал «Системный администратор»
ский язык статей, обзоров и сравнительных тестирований
продуктов, опубликованных в иностранных изданиях. Телефон: (495) 928-82-53
Факс: (495) 928-82-53
Рекомендации авторам Сайт: www.samag.ru
Объем статьи – от 4 до 20 тыс. знаков. Если тема ста-
тьи предполагает объем, превышающий 20 тыс. знаков – e-mail: imp@samag.ru, secretar@samag.ru

№4, апрель 2006 91


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

Самоучитель Linux
Валентин Соломенчук
ресовано тем пользователям, которые ным desctop-менеджером KDE. Прочтя
уже имеют опыт работы с ОС Windows. главу, вы узнаете о рабочем столе, ме-
В первой главе автор знакомит читате- ню KDE, панели и настройках рабочего
лей с общими концепциями, философи- окружения и диспетчере файлов, бра-
ей и идеологией открытых систем. Для узере Konqueror. Не осталась без вни-
большей наглядности проводятся ана- мания и вторая по популярности сре-
логии с Windows. После вводной час- ди пользователей – оболочка Gnome.
ти идет плавный переход непосредс- Большое внимание уделено методи-
твенно к описанию работы с GNU/Linux. ке работы в командной строке. Опи-
Из главы «Основы Linux» вы узнаете саны команды для работы с файлами,
о типах файловых систем, структуре начало и завершение работы, пользо-
каталогов, назначении различных фай- ватели и пароли. Завершают книгу две
лов конфигурации, будут рассмотрены главы, посвященные самым популяр-
темы прав доступа, типов файлов, вир- ным прикладным программам, таким
туальных консолей и системы X-window. как OpenOffice, GIMP. Хорошая книга,
В завершении приводятся две сводные которую смело можно рекомендовать
С увеличением популярности дистри- таблицы, в первой – команды DOS и их всем людям решившим начать рабо-
бутивов на основе Linux в среде поль- аналоги в Linux, а во второй – табли- тать с GNU/Linux.
зователей возросло и количество ли- ца соответствия программ для Linux
тературы, по задумке авторов направ- и Windows. Следующая глава посвя-  Издательство: «Питер»
ленной на обучение пользователей ра- щена теме запуска дистрибутива SuSE  Год издания: 2006
боте с этой ОС. Среди прочих эту кни- Linux Live на компьютере пользовате-  Количество страниц: 207
гу выделяет лаконичность и хорошая ля (DVD-диск с системой прилагает-  ISBN: 5-469-01347-2
систематизация излагаемого матери- ся к книге). Следующая глава посвя-  Цена: ≈ 203 руб.
ала. Данное издание прежде всего ад- щена знакомству читателя с популяр- Книга предоставлена издательством «Питер».

PHP 5.1. Руководство программиста


Игорь Григин
вествование начинается с вступитель- отслеживание и обработка ошибок, уп-
ной части, из которой вы узнаете об- равление вводом, сессии, запуск вне-
щие сведения о языке PHP, его истории. шних приложений). Следующая гла-
Инструкция по установке и первона- ва – «Файлы и сети», из нее вы узна-
чальной настройке для UNIX и Windows ете о файловой системе (работа с ди-
также присутствует. Первая глава пос- ректориями, получение свойств и атри-
вящена синтаксису языка и операто- бутов файлов, манипулирование фай-
рам. В рамках данной части подробно лами, системные функции, ввод и вы-
освещены такие темы, как типы дан- вод, работа с архивами), сетевые функ-
ных, переменные, константы, выра- ции (сетевая отладка php, общий низ-
жения, операторы, а также управляю- коуровневый сетевой интерфейс, биб-
щие конструкции. Из главы «Функции лиотека CURL, отправка почты, прото-
работы с данными» вы узнаете о пере- колы IMAP, POP3 и NNTP). В книге при-
менных, массивах, объектах и классах, водится огромное количество приме-
математических функциях (в том чис- ров реализации тех или иных функций.
Прогресс не стоит на месте, и языки ле и функции повышенной точности На прилагаемом к книге CD вы найде-
программирования, которые мы ис- BCMath и целочисленные GMP), узна- те три дополнительные главы, которые
пользуем в повседневной жизни, раз- ете о символьных типах (ctype), строко- не вошли в печатную версию.
виваются вместе с ним. Эта книга вых функциях и синтаксисе регулярных
в своем роде уникальна, так как явля- выражений (PCRE, RegEx). Достаточ-  Издательство: «Питер»
ется единственным печатным издани- но обстоятельно и подробно изложено  Год издания: 2006
ем на русском языке, в котором описа- описание управляющих функций (файл  Количество страниц: 490
но большинство новых возможностей, конфигурации php.ini, загружаемые мо-  ISBN: 5-469-01308-1
которые появились в версии 5.1. Как и дули (extensions), параметры и инфор-  Цена: ≈ 398 руб.
большинство книг подобного рода, по- мация PHP, управления сценариями, Книга предоставлена издательством «Питер».

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

Восстановление данных
Алексей Гультяев
кий характер, и из нее вы узнаете о ви- Acronis true image. Из главы «Восстанов-
дах угроз безопасности информации, ление системной информации» вы уз-
а также в ней рассмотрены различные наете о методах восстановления BIOS,
вредоносные программы, действие ко- устранения проблем с загрузкой ОС,
торых может привести к потери данных. средствах восстановления Windows 98/
В главе «Стратегия защиты информа- XP, а также системного реестра. «Вос-
ции и восстановления данных» рас- становление данных пользователей» –
сказано об обеспечении бесперебой- общие правила восстановления дан-
ного электропитания (виды защитных ных, выбор программных средств вос-
устройств, ИБП), виды защитного ПО становления данных на жестких дисках
(программы для контроля целостности (Drive Rescue, EasyRecovery Pro) и смен-
данных, антивирусы, средства для раз- ных носителях (IsoBuster, PC inspector
граничения и контроля доступа, а также smart recovery). Тема восстановления
криптографической защиты). Следую- информации с жестких дисков более
щая глава – «Настройка системных па- подробно рассмотрена в отдельной гла-
Тема сохранности информации будет раметров», из нее вы узнаете об уста- ве. (Восстановление логической струк-
актуальна всегда и везде. Но бывают новке параметров BIOS, параметры за- туры диска, данных в файловой систе-
моменты, когда, несмотря на все предо- грузки системы, установка параметров ме FAT32 и NTFS.)
сторожности, информация все же ока- файловой системы (FAT32 и NTFS), рас-
зывается утерянной или поврежденной. смотрены штатные инструменты для  Издательство: «Питер»
Сразу хочется отметить, что весь изло- работы с жесткими дисками (провер-  Год издания: 2006
женный материал в книге абстрагиру- ка, дефрагментация). Резервное копи-  Количество страниц: 379
ется от ОС Windows. Это несомненно рование (методы резервного копиро-  ISBN: 5-469-01360-X
сужает круг потенциальной аудитории. вания, технологии RAID), рассказано  Цена: ≈ 278 руб.
Первая глава носит сугубо теоретичес- о программах Paragon Drive Backup и Книга предоставлена издательством «Питер».

Практическая криптография
Нильс Фергюсон, Брюс Шнайдер
для новичков, прежде всего она адре- цикл ключа), хранение секретов (про-
сована специалистам в данной облас- тативные хранилища, биометрика, сов-
ти. Весь материал поделен на четыре месное владение секретом, уничтоже-
части. Из первой части, которая назы- ние). Из последней части книги вы узна-
вается «Безопасность сообщений», вы ете о стандартах (в частности, процессе
узнаете о различных блочных шифрах и стандартизации, SSL, AES), а также па-
их режимах работы (DES, AES, Serpent, тентах. Отличная книга, я думаю, одна
Twofish), функциях хэширования (MD5, из лучших (если не лучшая) из тех, что
SHA-1, SHA-256, SHA-384 и SHA-512), переведены на русский язык по теме,
кодах аутентичности сообщений (MAC, связанной с криптографией. Несмотря
CBC-MAC,HMAC), безопасных каналах на достаточно высокую сложность тем,
общения. Вторая часть – «Согласова- весь материал написан простым и до-
ние ключей». В ней рассказано о гене- ступным языком и вполне легко усваи-
рации случайных чисел, простых чис- вается. Так же очень важно, что все при-
лах, описан алгоритм Диффи-Хеллма- меры реализации того или иного алго-
на и RSA, приводится вводная в крип- ритма не привязаны к какому-то конк-
Перевод книги от общепризнанных гуру тографические протоколы, а также про- ретно языку программирования.
области. По сути это продолжение кни- токолы согласования ключей. Часть
ги «Applied Cryptography» (Прикладная «Управление ключами» представлена  Издательство: «Диалектика»
криптография). Это издание по задумке следующими главами: серверы клю-  Год издания: 2005
авторов было призвано закрыть пробел чей, PKI: красивая мечта, PKI: жесто-  Количество страниц: 424
между теоретическими знаниями и го- кая реальность, практические аспекты  ISBN: 5-8459-0733-0
товыми решениями. Как ясно из назва- PKI (формат серитфиката, жизненный  Цена: ≈ 283 руб.
ния, весь материал носит сугубо прак-
тический характер. Эта книга отнюдь не Обзор книжных новинок подготовил Александр Байрак

№4, апрель 2006 93


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

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

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

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

94
подписка на 2006 год
Редакционная подписка
Открыта подписка через редакцию. Вы можете оформить
подписку на любое количество номеров 2006 года. Редак-
ция не высылает журналы за пределы Российской Феде-
рации.

Для юридических лиц:


№5
по (30
д
ww писн

w.s ой ай 2
По am ин
ag дек
0 05
Ищ чем .ru с 8165
ем у M 5

 Отправьте заявку по факсу (095) 928-82-53 или по e-mail:


Ст пр S S
WP роим ичин QL м
A-E з ы ед
На nte ащи ле
нн
стр rpr ще ор
Ка аи is н
e, ную аб
info1@samag.ru. уд к во ва 80 ота
ем 2.1 бес ет?
ал сс UP
Чт
ов
е н т
ны но а S по
x EA пров
е ф вит дL P-T од
аж LS ную

 Укажите наименование и банковские реквизиты своей но ай ь inu


в к тана зн лы x се
ть:
ор вл ать по
Эф п ор ваи об д BS
по фек ати ем IP- D
ля ти вн Sy тел

организации, почтовый индекс и адрес доставки журна- ми вн ой ma еф


Ко по о у се nte он
с п нтро ль пр ти c
A и и
ом ли зо ав ntiv
Ин ощ ру ва ля iru
ью ем тел ем s9
со терв
ла, телефон и e-mail контактного лица, период подпис- OS без ей .0
зд ью SIM оп вA
ате с ас D
ле Ла но
м я рр сть
зы и У се
ки и количество номеров. Редакция выставит вам счет,
ка ол ти
Pe лом
rl –

после оплаты которого вы начнете получать журналы


по почте. Необходимые бухгалтерские документы вы-
сылаются почтой.

Для физических лиц:


 Заполните нижеприведенную квитанцию, оплатите в лю-
бом банке и пришлите в редакцию копию с отметками
банка.
 После поступления платежа редакция начнет отправ-
лять вам номера.

Стоимость
подписки через
редакцию:

900* руб.
за 6 номеров
1800* руб.
за 12 номеров

* Включая НДС
и почтовую доставку

№4, апрель 2006 95


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

РЕДАКЦИЯ
ЧИТАЙТЕ
Исполнительный директор
Владимир Положевец В СЛЕДУЮЩЕМ
НОМЕРЕ:
Ответственный секретарь
Наталья Хвостова
sekretar@samag.ru
Технический редактор
Владимир Лукин
Редактор
Алексей Коршунов Генетический провайдер для работы со счетчиками
Внештатные редакторы распаковщик своими производительности и довольно прос-
Алексей Барабанов руками той вопрос, который, однако, вызыва-
Кирилл Тихонов Первое, что делает исследователь, ког- ет частенько сложности – работа с да-
Сергей Супрунов да берет в руки программу: смотрит тами и временем через WMI.
упакована она или нет, и тут же бежит
РЕКЛАМНАЯ СЛУЖБА
тел./факс: (095) 928-8253
искать подходящий распаковщик, пос- Arch Linux: руководство
Евгения Тарабрина
кольку, большинство программ все-та- к быстрому старту
ки упакованы, а готовые распаковщики Выбор пакетов для Slackware, на ваш
reсlama@samag.ru
есть не для всех. Обобщив свой опыт, взгляд, скудноват, а Gentoo собира-
Верстка и оформление автор предлагает вам алгоритм уни- ется целую вечность? В этой статье
maker_up@samag.ru версального распаковщика, «снима- речь пойдет об Arch Linux – сравни-
Дизайн обложки ющего» даже сложные полиморфные тельно молодом, первопринципном
Николай Петрочук протекторы. (то есть не базирующемся ни на ка-
кой из ныне существующих) дистри-
По вопросам распространения Узнай секреты WMI: бутиве Linux. Вам пригодятся советы
обращайтесь по телефону: события и провайдеры. и рекомендации по практической ра-
(095) 928-8253 (доб. 120) Часть 2 боте с системой. Поскольку Arch Linux,
Из всех основных возможностей как и большая часть современных ОС
107045, г. Москва,
WMI нам осталось рассмотреть толь- неявно подразумевает, что пользова-
Ананьевский переулок, дом 4/2, стр. 1
тел./факс: (095) 928-8253 ко специфику работы с различны- телю не составляет труда выкачать
Сайт журнала: www.samag.ru ми провайдерами. Среди этих про- из Интернета 100-200 Мб обновлений,
вайдеров особо стоит отметить сле- мы специально остановимся на спе-
РУКОВОДИТЕЛЬ ПРОЕКТА дующие: Win32_Ping – осуществля- цифике его использования в услови-
Петр Положевец ющий формирование ICMP Echo-за- ях нашей страны.
просов к указанным хостам сети,
УЧРЕДИТЕЛИ Win32_NTEventLog – с которым мы Ни секунды простоя:
Владимир Положевец частично знакомы, и который обес- строим кластер
Александр Михалев печивает доступ к журналам событий Как с минимальным бюджетом эф-
системы OC Windows. Также мы рас- фективно построить отказоустой-
ИЗДАТЕЛЬ
смотрим провайдер работы с реест- чивый кластер и использовать его
ЗАО «Издательский дом
«Учительская газета» ром – StdRegProv и провайдер взаи- как платформу для критически важ-
модействия с Microsoft Active Directory. ных приложений на примере СУБД
Отпечатано типографией Кроме них будет полезно обсудить Oracle 9i.
ГП «Московская Типография №13»
Тираж 11000 экз.

Журнал зарегистрирован Уважаемые читатели!


в Министерстве РФ по делам печати,
телерадиовещания и средств массо-
вых коммуникаций (свидетельство
Спешите оформить подписку
ПИ № 77-12542 от 24 апреля 2002 г.).
на второе полугодие 2006 года!
За содержание статьи ответственность Приобрести новые и старые номера журнала
несет автор. За содержание рекламно- вы можете через интернет-магазины LinuxCenter.ru и Allsoft.ru.
го объявления ответственность несет
рекламодатель. Все права на опубли-
кованные материалы защищены.

Доставка почтой в любую точку России.

96