Открыть Электронные книги
Категории
Открыть Аудиокниги
Категории
Открыть Журналы
Категории
Открыть Документы
Категории
СЬ
www.samag.ru
ЛИ
Почему MS SQL медленно работает?
Ищем причины
ЛИ
ТЯ Е
Ж ПИ
Строим защищенную беспроводную сеть:
ЗА ДНИ
РА КУ
Настраиваем UPS под Linux
ЛЫ ГО
ТИ РАС
Как восстановить
удаленные файлы под BSD
К У ВО
О
танавливаем Symantec Antivirus 9.0
НИ НО
ТР
в корпоративной сети
Эффективно управляем
С
подписной индекс 20780
полями пользователей в AD
БЫ
Контролируем безопасность сети
с помощью OSSIM
КА
ИС НН
ЕН
УС
БО
НА ТПУ
ИЛ ДА
ТП
НЧ ЖИ
ВО
Кириллизация в Linux
РА Е О
КО НЕО
АВ СЛ
Л
Л
ХА
ПО
УЕ
ЗА
Знакомимся с Gentoo:
установка системы
Так видит журнал читатель, оформивший подписку:
Создаем порт для FreeBSD
№5(30) май 2005
подписной индекс 81655
www.samag.ru
корпоративные хранилища
Эффективно управляем
полями пользователей в AD
Контролируем безопасность сети
с помощью OSSIM
Интервью с Ларри Уоллом –
данных
создателем языка Perl
Управляем сетевым
оборудованием
с помощью протокола SNMP
Работаем с PDF из Perl
3 ТЕНДЕНЦИИ БЕЗОПАСНОСТЬ
4 СОБЫТИЯ 52 Zserver Suite: защищаем корпоративные
хранилища данных
АДМИНИСТРИРОВАНИЕ Как обеспечить защиту конфиденциальной инфор-
мации, хранимой и обрабатываемой на корпоратив-
6 Узнай секреты WMI: события и провайдеры ных серверах? Алексей Шелестов
Часть 1: дополнительные возможности info@securit.ru
Решаем задачи обработки системных событий, исполь-
зуя технологию WMI на примере подключения съем- ДОКУМЕНТАЦИЯ
ных USB-дисков. Константин Леонтьев
klеоnt@miсrоsоft.соm 56 Документация – экономия времени
или его бесполезная трата?
14 Кириллизация в Linux Искусство составления и использования документа-
Принято считать, что в Linux уже давно нет проблем с ки- ции – неотъемлемая часть работы хорошего IT-спе-
риллизацией приложений. Но на практике ситуация еще циалиста. Алексей Коршунов
весьма далека от идеальной. Алексей Барабанов akeeper@samag.ru
alekseybb@mail.ru
СЕТИ
22 Знакомимся с Gentoo
Часть 1: установка системы 60 Интернет «от Москвы до самых
Одним из главных завоеваний Open Source можно на- до окраин»
звать свободу выбора. Дальше всех в этом вопросе пош- Недорогой Интернет в любую точку страны? Это воз-
ли разработчики Gentoo – они решили вообще ничего можно! Все этапы подключения – от покупки оборудо-
не навязывать пользователю. Сергей Супрунов вания до настройки. Роман Ерин
amsand@rambler.ru kid@vsnet.ru
2
тенденции
MySQL AB купила Netfrastructure лезом и стабильность программного обеспечения, лучшей
В конце февраля MySQL AB, известная своей свобод- поддержки языков азиатских стран, по-настоящему «чис-
ной базой данных, объявила о приобретении компании того» интерфейса.
Netfrastructure.
Руководитель приобретенной фирмы, Джим Стар- BECTA «противоречиво» относится
ки, до этого возглавлял Interbase, которая занималась к Open Source
разработкой и поддержкой одноименной СУБД. На ба- Пол Дженкинс из компании SimpleICT указал на «непосле-
зе этого кода (когда он был открыт) зародился Open довательность» в отношении британского агентства по об-
Source-проект Firebird, ставший фундаментом для бизне- разовательным коммуникациям и технологиям (BECTA)
са Netfrastructure. к открытому ПО.
Возможно, MySQL AB с помощью разработок и со- Список образовательных программ, опубликованный
трудников Netfrastructure намерена создать замену свое- BECTA, ранее сообщавшим о возможности для школ сэко-
му InnoDB. номить благодаря Open Source, содержит ничтожно малое
число приложений для GNU/Linux (18 против трех тысяч для
Fedora Core 5 все-таки вышла различных версий Windows). Вдобавок к этому там вовсе от-
После неоднократных переносов релиза новой версии на- сутствуют свободные программы для образования.
следника Red Hat Linux в середине марта наконец-то был Дженкинс же видит хорошие примеры из среды откры-
официально представлен выход Fedora Core 5. того ПО: «TuxMaths – отличная математическая программа
Последний перенос релиза FC5 был связан с ожида- для детей, но ее здесь нет. На самом деле, тут вообще ни-
нием GNOME 2.14, так что эта версия популярной графи- чего нет. Будь вы учителем, желающим использовать Linux,
ческой среды и вошла в состав дистрибутива. В качест- официальный сайт подсказал бы вам, что для этого нет про-
ве альтернативы предлагается KDE 3.5.1. Стоит отметить, граммного обеспечения».
что совершенствования в графической системе Fedora В свою очередь, представитель BECTA объявил о наме-
Core этим не ограничились – в последнем релизе дистри- рении закрыть веб-сайт и порекомендовал пользователям
бутива впервые появилась технология AIGLX (Accelerated обращаться к базе данных Curriculum Online. Однако, как вы-
Indirect GL X), по своей сути напоминающая XGL, разраба- яснилось, и в ней фактически нет программного обеспече-
тываемую в Novell для SUSE. AIGLX приводит в действие ния с открытым кодом.
GL-эффекты на рабочем столе благодаря модифицирован-
ному X-серверу (с некоторыми расширениями), обновлен- Составил Дмитрий Шурупов
ной версии Mesa и оконному менеджеру Metacity с компо- по материалам www.nixp.ru
зитным менеджером.
Кроме того, в Fedora Core 5 представлен офисный па-
кет OpenOffice.org 2.0.2, открытая реализация технологии
.NET Mono, ПО для виртуализации Xen, утилиты для рабо-
ты с пакетами на базе Yum, поддержка SELinux.
П
роберитесь через джунгли творческого потенциала, курсным работам значится условие предоставления участни-
мастерства и искусства, созданного молодыми кре- ками только свежих, ранее не опубликованных нигде работ!
ативными людьми из разных стран. Вас ждет огром- Вне конкурсов, на открытом воздухе, пройдет соревнова-
ное количество интересных конкурсов, нацеленных на три ос- ние по спортивному метанию жёстких дисков на дальность,
новных направления: программирование, музыка и графика. а также другие забавные конкурсы. Победителей ожида-
Каждое из направлений, в зависимости от сложности реали- ют призы.
зации и методов подхода, разбито на несколько конкурсов. Фестиваль DiHalt – это еще и повод вживую встретить
На фестивале будут демонстрироваться работы, созданные старых друзей, с которыми зачастую общаешься только че-
не только на современных быстрых персональных компью- рез Интернет, а также завести новые знакомства! Здесь
терах, но и на редких для нашей страны компьютерах Amiga, вы не увидите ленивых геймеров. Только творческие люди
а также довольно популярных ранее и сейчас компьютерах из разных стихий.
ZX-Spectrum, которые вошли в массы как поистине «народные Прийти на фестиваль, посмотреть или поучаствовать мо-
компьютеры». Не исключено, что примут участие и мобиль- жет любой! Ограничений по возрасту нет. По сложившейся
ные средства (КПК, сотовые телефоны, фотоаппараты). традиции, а также в целях удобства для посетителей и ор-
В частности, программисты покажут свои навыки в со- ганизаторов, мероприятие пройдет в ДК им. Орджоникидзе,
здании программ (demo и intro), ограниченных размером: и будет представлено зрителям в виде шоу. На протяжении
4 kb intro; 64 kb intro и 16 mb demo. Для тех, кто не знает что двух дней на большом экране и с хорошей звуковой систе-
такое demo, расскажем подробнее. Это программа, соче- мой будут демонстрироваться конкурсные работы, зрите-
тающая в себе ряд видео-эффектов, объединённых каким- ли сами их будут оценивать (выставляя свою оценку рабо-
либо сюжетом или идеей, демонстрирующихся под музыку. те в специальном блокноте для голосования). В конце вто-
Это не заранее подготовленная анимация, а результат про- рого дня будут подведены итоги, а победители награждены
граммных расчётов в реальном времени, подкреплённых ра- ценными призами.
ботой художников, дизайнеров и музыкантов. Intro – это не- Любой зритель может превратиться в участника фестива-
большое demo, над которой программисты обычно работают ля, если пришлёт организаторам свою работу, соответству-
в одиночку. Художники будут соревноваться в умении: ющую указанным тематикам конкурсов, а также прочим ню-
рисовать вручную на компьютере (так называемый ансам, указанным в правилах. Каждый конкурс специально
PixelArt); имеет свои ограничения и требования, что в конечном счете
создавать рисунки с помощью 3D-пакетов (Lightwave, делает работы более интересными, а подходы к реализации
3DMax, Cinema); более изощренными, и это поможет выявить настоящих про-
создавать рисунки, полученные комбинированными спо- фессионалов своего дела. Подробнее ознакомиться с прави-
собами (обработка в Photoshop, рендеринг, фотография, лами и требованиями для конкурсных работ вы можете по ад-
коллаж, ручное рисование и т. п.); ресу: http://www.dihalt.org.ru/rules.htm. Свои работы отправляй-
ASCII-графика (изображения, составленные из обыч- те на электронный адрес dihalt@flatrate.ru.
ных букв и цифр). После окончания первого дня по принципу самоорганиза-
ции будет устроена hidden party (которая будет идти всю ночь).
Отдельно идут конкурсы по анимационным видеороли- На ней вы сможете обсудить увиденное с друзьями, да и прос-
кам и flash-анимации. то пообщаться с людьми в более неформальной атмосфере.
Ну а музыканты будут соревноваться в умении писать му- Иногородним посетителям будет оказана помощь по раз-
зыку/песни в формате mp3, а также в трекерных редакторах мещению в гостиницах Нижнего Новгорода.
с разделением на традиционные и альтернативные стили. Ждем вас на DiHalt 2006 !
Аналогичные конкурсы для компьютеров ZX-Spectrum, Все вопросы, связанные с фестивалем, отправляйте
на которых центральный процессор работает на частоте все- на адрес dihalt@flatrate.ru.
4
г. Москва, Хлебный переулок 2/3
тел. 29-161-32, 202-61-43
(круглосуточно)
e-mail: support@redline.ru
Çâîíèòå, äîãîâîðèìñÿ!
;-)
администрирование
Константин Леонтьев
Вы уже используете WMI, и эта технология помогает вам решать повседневные задачи?
Настало время копнуть поглубже и открыть новые возможности WMI, о которых многие,
возможно, даже и не догадываются!
6
администрирование
В поход за белым кроликом… ные с несанкционированным применением пользователя-
После того как азы WMI изучены [1], наша следующая ми съемных устройств памяти, довольно эффективно ре-
цель – рассмотреть расширенные возможности техноло- шают с помощью различного дополнительного ПО (напри-
гии, до использования которых добирается лишь неболь- мер, DeviceLock). Мы же с вами попробуем решить часть
шая часть системных администраторов, так как их приме- из них стандартными средствам WMI. Наша цель – зафик-
нение часто требует написания сценариев, что админис- сировать факт события подключения таких устройств и вы-
траторы ОС Windows делать обычно не любят. Мне хочет- полнить некоторое ответное действие (например, сцена-
ся сразу отметить, что эти возможности настолько удобны рий VBScript).
в использовании и полезны для решения нетривиальных Для начала давайте рассмотрим простой пример ко-
задач, что затраты сил и времени на их освоение и приме- да на VBScript, использующего WMI для синхронного от-
нение окупятся с лихвой. К тому же я постараюсь облег- слеживания событий подключения съемных дисковых ус-
чить вам эту задачу, включив в текст большое количест- тройств. Он послужит нам отправной точкой в данной ра-
во рабочих примеров из реальной жизни, которые послу- боте. Этот пример приведен на листинге 1. Попробуйте
жат хорошими шаблонами для решения ваших собствен- запустить этот сценарий командой cscript <имя сценария>
ных задач. и посмотреть на результат его работы при подключении ус-
Эта статья рассчитана на подготовленного читателя. тройств USB FlashDrive.
К таким читателям я отношу тех, кто уже использует в сво-
ей повседневной практике WMI и самостоятельно создает Листинг 1. Пример сценария синхронного отслеживания
подключения устройств USB
сценарии, использующие WMI для решения задач систем-
ного администрирования. strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" ↵
Однако не стоит отчаиваться и тем, кто хочет изучить эту & strComputer & "\root\CIMV2")
технологию с нуля. Для таких читателей я порекомендовал Set objEvents = objWMIService.ExecNotificationQuery _
("SELECT * FROM __InstanceCreationEvent WITHIN 5 WHERE " & _
бы предварительно ознакомиться с моей статьей под назва- "TargetInstance ISA 'Win32_LogicalDisk'" & _
нием «Вы все еще не используете WMI?» из предыдущих " AND TargetInstance.DriveType = 2")
номеров журнала «Системный администратор» [1]. Wscript.Echo "Ожидаем события ..."
Для понимания материала этой статьи также необхо- Do While(True)
Set objReceivedEvent = objEvents.NextEvent
димы знания по программированию сценариев в среде
WSH (Windows Scripting Host). С подробной информаци- Wscript.Echo "Name: " & ↵
objReceivedEvent.TargetInstance.Name
ей по этому вопросу можно ознакомиться в переводной Wscript.Echo "Caption: " & ↵
книге Гюнтера Борна [2] и в оригинальной документации objReceivedEvent.TargetInstance.Caption
Wscript.Echo "FileSystem: " & ↵
Microsoft [3]. Все примеры, которые я использую, приведе- objReceivedEvent.TargetInstance.FileSystem
ны на языке VBScript и протестированы на ОС Windows XP Wscript.Echo "Description: " & ↵
objReceivedEvent.TargetInstance.Description
Service Pack 2 и Windows Server 2003, хотя многие из них
так же успешно будут работать и на Windows 2000, прав- Loop
да, для этого потребуется выполнить ряд подготовитель-
ных действий. Теперь давайте чуть подробнее разберем этот пример.
Напомню, что в предыдущей моей статье о техноло- Первые две строки служат для подключения к репозито-
гии WMI [1] очень кратко рассматривалась возможность рию WMI и не вызывают особого интереса. Третий же опе-
обработки событий WMI и объяснялись общие различия ратор сценария представляет для нас существенный инте-
между синхронной и асинхронной техникой обработки со- рес. Здесь мы вызываем метод ExecNotificationQuery объек-
бытий, а также была обозначена тема стандартных под- та objWMIService (он принадлежит к классу SWbemServices),
писчиков на события WMI (Standard Event Consumers), ко- который регистрирует временный подписчик на события
торые могут также применяться для обработки событий. WMI. Этот метод возвращает нам специальный объект-
В этой статье настал черед рассмотреть все эти темы под- подписчик, который по заданным нами критериям следит
робнее и детально разобрать примеры использования ос- за событиями WMI. Этот объект мы сохраняем в перемен-
новных провайдеров WMI, установленных по умолчанию ной objEvents. У класса SWbemServices также существует
в ОС Windows. второй метод регистрации временного подписчика на со-
бытия WMI, который называется ExecNotificationQueryAsync.
Типы событий WMI и способы Этот метод позволяет регистрировать временные подпис-
их обработки чики для асинхронной обработки событий WMI, о нем мы
Итак, приступим к изучению расширенных возможностей поговорим чуть-чуть позже.
WMI. Для того чтобы мой рассказ об этой теме был более Рассмотрим внимательнее WQL-запрос, с помощью
предметным, я решил выбрать конкретную практическую которого наш сценарий подписывается на события WMI.
задачку и рассмотреть ее решение поэтапно. Я остановил- Для того чтобы получать уведомления об интересующих
ся на задаче отслеживания событий подключения/отклю- нас событиях, мы делаем выборку объектов специально-
чения съемных дисковых устройств USB и реакции на них. го класса __InstanceCreationEvent, который служит для от-
Во многих организациях съемные устройства (в основном слеживания внутренних событий WMI, возникающих при
USB FlashDrive) являются головной болью для службы бе- создании экземпляров объектов любого класса, зарегис-
зопасности и администраторов. Обычно проблемы, связан- трированного в репозитории WMI. Заметим, что сущест-
8
администрирование
верки условия: поступило событие или нет. В нашем слу- While (True)
Wscript.Sleep(1000)
чае в сценарии на листинге 1 для синхронного получения Wend
очередного события вызывается метод NextEvent объекта
objEvents. Этот метод возвращает сценарию управление Листинг 3. Одновременное использование синхронной
только тогда, когда в системе происходит событие, на ко- и асинхронной техники обработки событий на примере Таймера
торое мы подписались. Dim tCount
Асинхронная обработка подразумевает, что сценарий
Sub TIMER_OnObjectReady(objReceivedEvent, objAsyncContext)
VBScript регистрирует специальный обработчик (подпис- tCount = tCount + 1
чик) события в объектной модели WSH и далее продолжа- Wscript.Echo "Произошло событие Таймера, ↵
счетчик tCount=" & tCount
ет выполнять различные свои задачи. Когда событие воз- End Sub
никает, нормальная работа сценария прерывается, запо-
strComputer = "."
минается место, где произошло прерывание, а управление tCount = 0
передается на зарегистрированный ранее обработчик со-
Set objWMIService = GetObject("winmgmts:\\" & ↵
бытий (event sink). После обработки события обработчиком strComputer & "\root\CIMV2")
управление возвращается на то действие сценария, кото- Set MySink = WScript.CreateObject ↵
("WbemScripting.SWbemSink","TIMER_")
рое было прервано.
Для реализации такой техники в объектной модели objWMIservice.ExecNotificationQueryAsync MySink, _
"SELECT * FROM __InstanceModificationEvent WHERE " & _
WSH для сценариев WMI предусмотрен ряд функций, на- "TargetInstance ISA 'Win32_LocalTime'"& _
звания которых оканчиваются на суффикс Async. К та- " AND TargetInstance.Second = 30"
ким функциям, в частности, относятся: ExecMethodAsync, Set objEvents = objWMIService.ExecNotificationQuery ↵
ExecNotificationQueryAsync, ExecQueryAsync, GetAsync ("SELECT * FROM Win32_ProcessStartTrace")
и PutAsync. Эти функции мало чем отличаются от своих Wscript.Echo "Ожидаем запуска новых процессов..."
синхронных аналогов. Основное их отличие состоит в двух
Do While(tCount < 10)
моментах. Во-первых, эти функции ничего не возвращают Set objReceivedEvent = objEvents.NextEvent
в вызывающую их программу. Во-вторых, в качестве пер-
WScript.Echo "Новый процесс: PID=" & ↵
вого аргумента все они требуют передавать зарегистри- objReceivedEvent.ProcessID _
рованный объект асинхронного подписчика, который со- & " Name=" & objReceivedEvent.ProcessName
Loop
здается стандартной функцией CreateObject на базе клас-
са WbemScripting.SWbemSink. Создание этого объекта ре- MySink.Cancel
гистрирует в среде WSH специальный отличительный пре-
фикс для процедур-обработчиков событий WMI. Это мо- Обратите внимание на технические особенности сцена-
жет быть любая текстовая строка, которая удовлетворя- рия, представленного на листинге 3. Асинхронный обра-
ет правилам именования процедур в VBScript. События ботчик внутренних событий таймера, зарегистрированный
WMI, которые могут обрабатываться в сценариях WSH, в этом сценарии, увеличивает переменную tCount на едини-
имеют следующие названия – OnCompleted, OnObjectPut, цу каждые 60 секунд (в тот момент, когда показания секунд
OnObjectReady и OnProgress. Таким образом, все собы- на системных часах равны 30) и выводит об этом сообще-
тия WMI будут обрабатываться в процедурах, имя кото- ние. Синхронный обработчик событий запуска процессов
рых состоит из зарегистрированного префикса обработ- внутри цикла вызывает метод NextEvent, который возвра-
чика и названия события. Примеры этого подхода даны щает управление сценарию только после того, как произой-
в листингах 2, 3. дет запуск очередного нового процесса. Становится понят-
но, что цикл завершится только тогда, когда от начала ра-
Листинг 2. Пример сценария асинхронного отслеживания боты сценария пройдет более 10 минут и в системе будет
подключения дисковых устройств USB
запущен новый процесс.
Sub SINK_OnObjectReady(objReceivedEvent, objAsyncContext)
Wscript.Echo "Name: " & ↵
objReceivedEvent.TargetInstance.Name Временные и постоянные подписчики на события
Wscript.Echo "Caption: " & ↵ Ознакомившись с вышеизложенной частью этой статьи,
objReceivedEvent.TargetInstance.Caption
Wscript.Echo "FileSystem: " & ↵ вы можете решить, что все, что вам необходимо для рабо-
objReceivedEvent.TargetInstance.FileSystem ты с событиями WMI, вы уже знаете. Теперь вы можете на-
Wscript.Echo "Description: " & ↵
objReceivedEvent.TargetInstance.Description писать любой сценарий, который будет реагировать на под-
End Sub ключения съемных запоминающих устройств USB и запус-
strComputer = "." тить его при старте компьютера через групповую полити-
Set objWMIService = GetObject("winmgmts:\\" & ↵ ку или через системный планировщик задач. Однако все
strComputer & "\root\CIMV2")
Set MySink = WScript.CreateObject( _ выше рассмотренные нами примеры обладают одним су-
"WbemScripting.SWbemSink","SINK_") щественным недостатком – события WMI будут отслежи-
objWMIservice.ExecNotificationQueryAsync MySink, _ ваться только тогда, когда временный подписчик сущес-
"SELECT * FROM __InstanceCreationEvent WITHIN 5 WHERE " & _ твует, то есть созданный нами сценарий работает. Стоит
"TargetInstance ISA 'Win32_LogicalDisk'" & _
" AND TargetInstance.DriveType = 2" только остановить сценарий, и обработка событий закон-
чится. В каких то ситуациях такое решение неприемлемо,
WScript.Echo "Ожидаем события ..."
и необходимо, чтобы события отслеживались постоянно.
10
администрирование
ните его в соответствии с листингом 4. Затем выполните сание экземпляра объекта класса стандартного подпис-
синтаксическую проверку файла командой: чика NTEventLogEventConsumer и присвоение ему псевдо-
нима (alias) для последующей ссылки на него. При опре-
mofcomp –check NTLog-for-remdev.mof делении экземпляра этого объекта мы задаем его свойс-
тва – это самое интересное. Мы определяем уникаль-
Данный MOF-файл создает экземпляр стандартного ное имя этого экземпляра стандартного подписчика, код
подписчика на события WMI, который осуществляет за- события, которое будет вносить в журнал приложений
пись информационного события с кодом 235 в журнал при- этот экземпляр стандартного подписчика, тип события
ложений системы (Application Log) в случае, если в системе (0 – SUCCESS, 1 – ERROR, 2 – WARNING, 3 – INFORMATION,
появляется новое съемное запоминающее устройство ти- 4 – AUDIT_SUCCESS и 5 – AUDIT_FAILURE), источник со-
па USB FlashDrive. В данные события вносится информа- бытия и его категорию. Далее мы определяем число текс-
ция о букве диска, которая была назначена этому съемно- товых строк, которые будут передаваться службе журнала
му устройству, а также тип файловой системы, обнаружен- Windows при создании события с указанным нами кодом.
ной на подключенном съемном устройстве. Для всех событий в системе обычно предусмотрены текс-
Для того чтобы созданный нами MOF-файл был импор- товые шаблоны для поля Description. Это помогает сильно
тирован в репозиторий WMI и события подключения съем- экономить место в журналах событий системы. Эти шаб-
ных дисковых устройств типа USB FlashDrive стали регист- лоны обычно содержат специальные поля для внесения
рироваться в журнале приложений, нам необходимо ском- текстовых строк с деталями о конкретном событии. Пос-
пилировать этот MOF-файл. Для этого с правами админис- кольку для нашего события такого шаблона не существу-
тратора выполните команду: ет, то в поле описания события (Description) об этом будет
записано предупреждение.
mofcomp NTLog-for-remdev.mof Далее в MOF-файле создается экземпляр объекта клас-
са __EventFilter, в котором описываются те события, на ко-
Если после выполнения команды вы увидите сообщение торые мы хотим назначить постоянный подписчик. Мы, как
«Storing data in the repository... Done!», то это означает, что и раньше, определяем уникальное имя этого экземпляра
операция прошла успешно. Теперь проверьте журнал при- и задаем остальные свойства. Среди этих свойств мы оп-
ложений («Event Viewer → Application») на предмет ошибок ределяем запрос WQL, отслеживающий интересующие нас
от службы WinMgmt. Скорее всего, их не будет. Если же вы события и пространство имен WMI, в котором этот запрос
увидите запись об ошибке с кодом 10 (EventID 10), в текс- следует выполнять.
те которого будет присутствовать информация об ошибке Наконец последнее, что мы определяем в этом MOF-
WMI номер 0x80041003 [5], то знайте, что той учетной за- файле – это связывающий объект, который собственно и от-
писи, под которой вы проделали компиляцию MOF-фай- вечает за передачу событий от фильтра к подписчику.
ла, недостаточно прав для активации фильтра событий. Как описано выше, существует пять классов стандар-
Для решения этой проблемы выполните все эти действия тных подписчиков (см. таблицу 2). Соответственно поми-
из-под локальной встроенной учетной записи админист- мо записи событий в журнал событий мы можем, напри-
ратора. Это ситуация довольно редкая, но она случается мер, запускать сценарий VBScript как реакцию на интере-
с доменными учетными записями, включенными в группу сующее нас событие WMI или приложение из командной
локальных администраторов при отсутствии подключения строки. Давайте посмотрим, как очень легко можно моди-
к контроллеру домена. Рассматривать детально причину фицировать наш пример со стандартным подписчиком, ос-
такого провидения системы мы сейчас не будем. Просто тавляющим в журнале событий системы (Event Log) свою
помните об этом. запись о подключении съемного запоминающего устройс-
После того как вы подключите к компьютеру съемное тва, на запуск сценария VBScript.
дисковое устройство, в журнале событий вы увидите собы- Для начала давайте создадим сценарий, который мы
тие с текстом примерно следующего содержания: бы хотели запускать при возникновении интересующих
нас событий WMI. Я не буду подробно разбирать особен-
Event ID: 235
Source: MyMonitoring ности этого сценария, так как это не соответствует тема-
Type: Information тике нашей статьи. Обозначу лишь один важный момент:
Description:
The description for Event ID ( 235 ) in Source ( MyMonitoring ) когда данный сценарий WSH запускается ядром системы
cannot be found. The local computer may not have the necessary WMI, в объектное окружение WSH добавляется специаль-
registry information or message DLL files to display messages from ный объект TargetEvent, который по набору свойств соот-
a remote computer. You may be able to use the /AUXSOURCE= flag
to retrieve this description; see Help and Support for details. ветствует тому, что возвращала бы функция NetEvent при
The following information is part of the event: Removable Drive синхронной обработке уведомляющих запросов в наших
connected under drive letter E: with file system FAT32.
примерах выше.
Давайте теперь немного подробнее разберем приве- Пример нашего сценария дан в листинге 5:
денный пример MOF-файла. Обратите внимание, что син-
таксис MOF файлов [6] очень похож на синтаксис языка Листинг 5. Код из файла script.vbs. Файл должен находиться
в папке c:\windows\system32\wbem
программирования C++. Первая значащая строка опре-
деляет пространство имен WMI, где будут размещены со- Dim objFSO, objFile
здаваемые нами экземпляры объектов. Затем идет опи- Set objFSO = CreateObject("Scripting.FileSystemObject")
Поместите этот сценарий в папку c:\windows\system32\ Обратите внимание, что сценарий VBScript задается
wbem. В принципе его можно хранить и в любой другой в виде текстовой строки, как в языке C++, и для перево-
папке, но вы должны понимать, что при наличии соответс- да строк используется спецсимвол «\n», а для включения
твующих прав на файл пользователь может изменить со- в текст двойных кавычек и обратных наклонных черт – спец-
держимое VBS-сценария, а поскольку он выполняется символы «\"» и «\\» соответственно.
в контексте безопасности SYSTEM, то пользователь мо- После того как вы проделали изменение нашего ба-
жет поднять свои права на локальной машине и натво- зового MOF-файла, еще раз проверьте синтаксис MOF-
рить еще много других бед. Рекомендуемая мной папка файла и компилируйте его, так как описано выше коман-
имеет достаточно надежные разрешения доступа к фай- дой mofcomp. После этого подключите к системе съемное
лам по умолчанию и позволит избавиться от этой потен- запоминающее устройство USB FlashDrive и убедитесь,
циальной уязвимости. что в корне диска C: создался файл отчета ScriptLog.txt
Теперь пришел черед модифицировать наш MOF-файл. о работе нашего сценария с примерно следующим содер-
На листинге 6 дано определение экземпляра объекта жимым:
стандартного подписчика, ответственного за запуск сце-
Time: 20.03.2006 12:43:18; Entry made by: ASEC
нариев. Как вы уже могли убедиться, все довольно прос- Script Started for USB Drive: E:
то. Мы, как и раньше, определяем уникальное имя экзем-
пляра класса стандартного подписчика и задаем другие
его свойства. Замените в нашем MOF-файле (см. лис- Отмена регистрации постоянных подписчиков
тинг 4) описание стандартного подписчика на это новое После того как вы проделали упражнение с созданием пос-
описание. тоянного стандартного подписчика на события WMI, этот
подписчик будет работать в системе даже после ее пере-
Листинг 6. Пример кода MOF-файла для создания экземпляра загрузки. У пытливого читателя сразу же возникнет вопрос:
стандартного подписчика, выполняющего сценарий
из указанного текстового файла «Как же теперь отменить все результаты наших эксперимен-
тов?» Эта задача решается довольно просто.
instance of ActiveScriptEventConsumer as $CONSUMER
{ Для того чтобы отменить созданную нами постоянную
Name = "MyStandardConsumer"; регистрацию стандартных подписчиков, следует выполнить
KillTimeout = 300;
ScriptingEngine = "VBScript"; приведенный на листинге 8 сценарий VBScript.
ScriptFileName = "c:\\windows\\system32\\wbem\\ ↵
script.vbs"; Листинг 8. Отмена регистрации постоянного стандартного
}; подписчика для NTEventLogEventConsumer
Наиболее важным для нас свойством является имя фай- On Error Resume Next
ла сценария, который следует исполнять в качестве реакции Set objWIMService = GetObject("winmgmts:\\.\root\subscription")
на события. Смысл всех остальных свойств вполне очеви-
Set objList = objWIMService.ExecQuery("references of ↵
ден из их названия. Рассмотренная проблема с размеще- {__EventFilter.Name='MyRemDevFilter'}")
нием файла сценария может быть решена еще одним спо- For each objInst in objList
objInst.Delete_
собом. Зачем вообще сохранять сценарий на диск маши- Next
ны, где он может быть модифицирован пользователем, ког-
Set objList = objWIMService.ExecQuery"references of ↵
да можно сохранить его код прямо в репозитории WMI. Ко- {NTEventLogEventConsumer.Name='MyStandardConsumer'}")
нечно, в каких-то случаях этот способ может быть не очень For each objInst in objList
objInst.Delete_
удобным, однако я специально привел его пример на лис- Next
тинге 7, поскольку этот способ хранения сценария реакции
Set objSTDConsumerInst = GetObject("winmgmts: ↵
на события априори более безопасный. \\.\root\subscription:NTEventLogEventConsumer= ↵
'MyStandardConsumer'")
objSTDConsumerInst.Delete_
Листинг 7. Пример кода MOF-файла для создания экземпляра
стандартного подписчика, выполняющего сценарий Set objEventFltInst = GetObject("winmgmts: ↵
из сохраненного в репозитории WMI кода VBScript \\.\root\subscription:__EventFilter= ↵
'MyRemDevFilter'")
instance of ActiveScriptEventConsumer as $CONSUMER objEventFltInst.Delete_
{
Name = "MyStandardConsumer";
ScriptingEngine = "VBScript";
KillTimeout = 300; Этот сценарий использует технику запроса WQL с ключе-
ScriptText = вым словом references of для нахождения всех экземпляров
"Dim objFSO, objFile\n"
"Set objFSO = CreateObject ↵ связывающих объектов класса __FilterToConsumerBinding
(\"Scripting.FileSystemObject\")\n" привязанных к экземпляру фильтра событий с именем
12
администрирование
NTLogConsumerForRemDevFilter и к экземпляру стандарт- Set objWMIService = GetObject("winmgmts:\\" & ↵
ного подписчика с именем NTLogConsumerForRemDev. Пос- strComputer & "\root\DEFAULT")
Set objEvents = objWMIService.ExecNotificationQuery _
ле нахождения всех этих связывающих объектов он удаля- ("SELECT * FROM RegistryValueChangeEvent WHERE " & _
ет их, а затем удаляет и сами экземпляры объектов стан- "Hive = 'HKEY_LOCAL_MACHINE'" & _
" AND KeyPath = 'SOFTWARE\\MyKey\\MySubKey\\'" & _
дартного подписчика и фильтра событий. " AND ValueName = 'MyValue'")
Просмотр и модификацию регистрации постоянных под-
Wscript.Echo "Ожидаем события ..."
писчиков на события WMI также удобно осуществлять с ис-
пользованием утилиты WMI Event Registration из комплек- Do While(True)
Set objReceivedEvent = objEvents.NextEvent
та WMI Administrative Tools [7].
Wscript.Echo "Произошло событие ↵
RegistryValueChangeEvent."
Полезные примеры мониторинга
системных событий Loop
Перед заключением приведу пару простых, но часто ис-
пользуемых практических примеров отслеживания собы- Поскольку пример довольно прост, мы не будем сейчас
тий WMI. В целях упрощения эти примеры приведены в ви- останавливаться на его внимательном рассмотрении и ос-
де сценариев синхронной обработки событий на VBScript, тавим это на вторую часть статьи, где среди прочего бу-
однако вы уже хорошо понимаете, как их можно легко мо- дет подробно рассматриваться работа с провайдером WMI
дифицировать к асинхронному виду или применить для их для доступа к реестру.
использования механизм стандартных подписчиков.
Для сравнения один из них, приведенный на листин- Что еще есть на вооружении WMI?
ге 9, использует внутренние (intrinsic) события и внутрен- Дополнительные возможности WMI не исчерпываются толь-
ние классы отслеживания событий WMI, а второй, приве- ко обработкой событий и созданием постоянных стандарт-
денный на листинге 10, использует внешние (extrinsic) со- ных подписчиков. В следующей части статьи мы поговорим
бытия, генерируемые провайдером WMI StdRegProv. о практическом использовании основных провайдеров WMI
и приемах работы с ними. Среди этих провайдеров я осо-
Листинг 9. Пример синхронного отслеживания событий бо хотел бы отметить следующие: Win32_Ping – осущест-
с файлами TXT в папке c:\temp
вляющий формирование ICMP Echo-запросов к указанным
strComputer = "." хостам сети, Win32_NTEventLog – с которым мы частично
Set objWMIService = GetObject("winmgmts:\\" & ↵
strComputer & "\root\CIMv2") знакомы и который обеспечивает доступ к журналам собы-
Set objEvents = objWMIService.ExecNotificationQuery _ тий системы OC Windows. Также мы рассмотрим провай-
("SELECT * FROM __InstanceOperationEvent WITHIN 5 WHERE " & _
"TargetInstance ISA 'CIM_DataFile'" & _ дер работы с реестром – StdRegProv и провайдер взаимо-
" AND TargetInstance.Drive = 'c:'" & _ действия с Microsoft Active Directory. Кроме них, будет по-
" AND TargetInstance.Extension = 'txt'" & _
" AND TargetInstance.Path = '\\temp\\'") лезно обсудить провайдер для работы со счетчиками про-
изводительности и довольно простой вопрос, который, од-
Wscript.Echo "Ожидаем события ..."
Do While(True) нако, вызывает частенько сложности, – работа с датами
Set objReceivedEvent = objEvents.NextEvent и временем через WMI.
WScript.Echo "Filename: " & ↵
objReceivedEvent.TargetInstance.FileName Ссылки, литература:
WScript.Echo "Name: " & ↵
objReceivedEvent.TargetInstance.Name 1. Леонтьев К. Вы все еще не используете WMI? Часть 1. – Жур-
Loop нал «Системный администратор», №1, январь 2006 г. – 4-11 с.;
Леонтьев К. Вы все еще не используете WMI? Часть 2: пишем
В примере на листинге 9 сценарий, используя синх- сценарии. – Журнал «Системный администратор», №2, фев-
ронную технику, отслеживает события создания удаления раль 2006 г. – 6-14 с.
и переименования файлов с расширением TXT в папке 2. Борн Г. Руководство разработчика на Microsoft Windows
C:\TEMP. Если вы будете экспериментировать с этим сцена- Scripting Host 2.0. Мастер класс. // Пер. с англ. – СПб.: Питер;
рием, будьте аккуратны, не увлекайтесь расширением об- М.: ИТД «Русская редакция», 2001. – 480 стр.: ил.
ласти мониторинга за счет захвата большего числа фай- 3. Microsoft Windows Script 5.6 Documentation – http://www.microsoft.
лов и папок. В современных версиях OC Windows измене- com/downloads/details.aspx?FamilyId=01592C48-207D-4BE1-
ния в файловой системе происходят очень часто, и ядро 8A76-1C4099D7BBB9&displaylang=en.
WMI может не выдержать потока всех свалившихся на не- 4. WMI Code Creator 1.0 – http://download.microsoft.com /
го событий и заберет почти 100% процессорного времени download /0/c /a/0ca7691c-6335-4143-8f9f-6708969f8212/
системы на их обработку. WMICodeCreator.zip.
Следующий пример, приведенный на листинге 10, по- 5. Таблица кодов ошибок WMI – http://msdn.microsoft.com/library/
казывает пример синхронной техники обработки внешних default.asp?url=/library/en-us/wmisdk/wmi/wbemerrorenum.asp.
(extrinsic) событий WMI для провайдера StdRegProv. 6. Синтаксис MOF-файлов – http://msdn.microsoft.com/library/en-
us/wmisdk/wmi/managed_object_format.asp?frame=true.
Листинг 10. Пример синхронного отслеживания событий 7. WMI Administrative Tools – http://download.microsoft.com/
изменения значения в реестре
download /.NetStandardServer/Install / V1.1/NT5XP/EN-US/
strComputer = "." WMITools.exe.
Кириллизация в Linux
Алексей Барабанов
Принято считать, что в Linux уже давно нет проблем с кириллизацией чего-либо. Эта ОС вслед
за другими полным ходом движется в юникодный рай, где, как обещают, вавилонский кризис
никому не грозит. Но на практике ситуация еще весьма далека от идеальной.
Т
ема кириллизации или «русифика- сделанных на ее основе. Увы, в дан- ляются последовательностью байт.
ции», как иногда выражаются, с не- ном вопросе именно пользователи по- Таким образом, все входные потоки
которых пор исчезла с первых по- падают между молотом и наковаль- данных, которые, по сути, есть фай-
зиций рейтингов интереса со стороны ней, между стремлением разработчи- лы, тоже являются последовательнос-
неофитов Linux. В нашей стране уже ков дистрибутивов к псевдопрогрес- тью индифферентных байтовых кодов.
давно не внедряются новые кодировки. су и консервативностью рынка при- Как же программа априори «поймет»,
И хотя по их числу мы не превосходим кладного программного обеспечения. что за данные ей передаются?
народности с иероглифическими ме- Обсудим данный вопрос подробно на Есть два способа: по содержимому
тодами написания, но в европейском примере дистрибутива SuSE Linux 10.0 самого потока данных, так называе-
регионе явно ходим в рекордсменах. и в сравнении на примере ряда других мый «in-band», и на основании внешне-
И вот теперь, когда, казалось бы, уже ведущих дистрибуций. го предписания, или «out-band».
нет проблем, чтобы предложить поль- Первый способ зависит от фор-
зователям Linux все разнообразие про- Терминология мата, второй – диктует формат. Из-
веренных наработок и материалов по и проблематика начально использовался только вто-
кириллизации, многие дистрибуторы Необходимость адаптации програм- рой способ. Например, в первых пер-
начинают экономить, можно сказать, много обеспечения к требованиям ин- сональных компьютерах исключалось
на самом святом. Им кажется, что надо терфейсного окружения обуславли- применение символьных данных в ко-
уже сейчас заставить всех пользова- вается тем, что существует изначаль- дировках, отличных от кодовой стра-
телей работать в универсальной коди- ная проблема определения кодировки ницы 437 (IBM Codepage 437). Исполь-
ровке UTF-8 (алгоритм 8-го представ- символьных данных. Например, в UNIX- зование данной кодовой таблицы бы-
ления символов UNICODE) и в локалях, подобных системах файлы представ- ло закреплено аппаратно, то есть вне-
14
администрирование
шним путем. С распространением символьные входные данные и выво- «out-band» указать на способ расшиф-
компьютерной технологии в регионах, дит свои отчеты в правильных коди- ровки символов. То есть программа
где приняты иные требования на пред- ровках. Здесь, в самом определении, еще и различает все входные данные
ставление символьных данных, была заложена некая условность, приводя- с использованием кодировки локали
определена процедура так называе- щая к неверному пониманию сущнос- и, кроме того, в той же кодировке вы-
мой локализации, или модификации ти происходящего. Бытует мнение, что водит все сообщения. Ну, положим, ес-
программного обеспечения для ис- из привязки локали к процессу следу- ли для вывода используются объек-
пользования региональных стандар- ет легкость манипулирования её на- ты среды, которые наследуют локаль
тов. Но данный путь оказался слиш- стройкой. Мол, если локаль переда- программы, то еще можно надеяться,
ком трудозатратным. И тогда было ется процессу из окружения, то ниче- что при некоторых условиях они будут
произведено функциональное выде- го нет проще, как установить любую адекватно воспринимать и отображать
ление всех национально-зависимых локаль прямо перед запуском. Напри- кодировку данной локали. Но в отно-
программных компонентов так, чтобы мер, в Linux используются для этого шении входных данных это не всег-
можно было настраивать требуемую переменные окружения LC_* и LANG. да верно. Точнее, в отношении вход-
локализацию динамически. Естествен- Эти переменные формируются в про- ных данных не работает обратная ло-
но, данная процедура всецело опреде- цессе отработки профиля пользова- гика. Если локаль процесса, исполь-
лялась платформой. Так, в частности, теля и далее передаются всем порож- зующего входные данные, не совпа-
на обсуждаемой платформе GNU/Linux денным процессам. Вот как все прос- дает с локалью процесса, их породив-
локализация управляется единым об- то! Если в системе в базе локализации шего, то, скорее всего, ничего хороше-
разом на основе так называемых «ло- присутствует нужная локаль, то, ука- го не выйдет.
калей» (locale) с помощью системной зав ее в окружении, мы можем заста- Самый простой пример такой ситу-
библиотеки glibc. вить работать с нею любой процесс. ации, когда программа использует ра-
Второй способ, «in-band», подразу- Увы, нет! Это со всех сторон наивный нее накопленные данные, где тип ис-
мевает, что, получив некоторые сим- взгляд. Чтобы понять свойства локали, пользуемой кодировки определяет ин-
вольные данные, программа самосто- давайте взглянем на процесс ее обра- формацию – это имена файлов, индек-
ятельно сумеет определить их коди- зования (см. врезку «Локали и их об- сы в структурах БД, базы служебных
ровку, пользуясь лишь информаци- разование»). сообщений, сохраненные из Интернета
ей из входного потока. Например, ко- Кодировка, включенная в локаль, документы. Вы наблюдали на экранах
дировка может указываться в самом является тем самым ключевым па- компьютеров «кракозябры» в сообще-
файле или в начале потока данных. Та- раметром, позволяющим методом ниях программ, которые в 90% случа-
кой способ принят во многих внутрен-
них форматах, поддерживаемых текс- Локали и их образование ется двумя символами в строчном регис-
товыми редакторами, в формате HTML Стандарты локализации, применяемые тре, согласно международному стандар-
для этого используются специальные в системах GNU/Linux, называются POSIX- ту ISO 639. Территория указывается то-
тэги, а в протоколе HTTP специальные локалями, поскольку их применение рег- же двумя символами, но уже прописными,
опции и так далее. Но, несомненно, са- ламентируются именно этим стандартом обозначающими страну по стандарту ISO
мым универсальным является способ на интерфейс между операционной сис- 3166. Следующая компонента привязыва-
использования кодировки такого раз- темой и прикладной программой. Обычно ет к локали кодовую страницу. Модифика-
мера (разрядности), чтобы она смог- база локалей размещается в /usr/lib/locale. тор в кириллических локалях пока не ис-
ла содержать в себе все возможные В SuSE Linux указанная директория при- пользуется.
символьные комбинации. Так возник- надлежит пакету glibc-locale. Именно там Итак, в создании локали использу-
ла идея кодировки UNICODE (Unicode ищутся описания правил национальных ются описания национальных стандар-
standard ISO 10646, или Universal стандартов и прочее, что необходимо для тов, размещенные в /usr/share/i18n/locale/,
Character Set, или UCS) и её более ком- традиционного представления данных в со- и кодировки из деректории /usr/share/i18n/
пактной версии UTF-8 [1]. Казалось бы, ответствии с принятой локалью. charmaps. Обе директории в SuSE Linux
проблема решена, да не тут-то было! И если там нужная локаль отсутствует, поставляются в пакете glibc-i18ndata. Та-
Универсальная кодировка не отправи- то ее можно скомпилировать с помощью ким образом локаль устанавливает соот-
ла использование локалей в прошлое, утилиты localedef. Для этого следует вы- ветствие некоторой совокупности нацио-
а лишь добавила проблем, поскольку звать утилиту с параметрами: файл описа- нальных стандартов и кодировки символь-
увеличила их число! ния стандартов локали и файл с описанием ных данных.
соответствия символов юникода (unicode) К сведению, на платформе MS Windows
Локали в Linux тем, что приняты для кодирования инфор- используется так называемый идентифи-
Итак, в программном окружении оп- мации в данной локали. Например: катор локали (Locale Identifier – LCID), со-
ределяется понятие локали как со- стоящий из кода языка и кода культуры.
# localedef -i ru_RU -f CP1251 ru_RU.CP1251
вокупности данных об используемых То есть кодировка исключена из локали
языковых и национальных особеннос- создаст локаль ru_RU.CP1251. Название ло- вовсе и требует дополнительного указания,
тях среды исполнения. Именно поль- кали образуется по правилам [язык[_терри- поскольку не управляется локалью. Тем са-
зуясь параметрами локали, програм- тория][.кодовая_таблица][@модификатор]] мым лишний раз подчеркивается компли-
ма «понимает» правильным образом в соответствии с RFC 3066. Язык указыва- ментарность локали в системной среде.
16
администрирование
Полученные локали позволят работать с кириллицей
в соответствии с национальным стандартом ru_RU, исполь-
зуя кодировки UTF-8, KOI8-R, CP1251, ISO-8859-5, CP866
и MAC-CYRILLIC.
Некоторого пояснения требует сосуществование полного
и сокращенного (в оригинале mangled – «порубленного») на-
именования локали, например, ru_RU.KOI8-R и ru_RU.koi8r.
В принципе достаточно лишь сокращенного. Полное имя ло-
кали, указанное в переменных окружения, будет преобра-
зовано к сокращенному в процессе работы. Но, учитывая
мнение [1] и тот факт, что в отечественных дистрибутивах,
например в ALT Linux (до версии 3.0), принято использова-
ние полного наименования локали даже в директории раз-
мещения (/usr/lib/locale), вероятно в расчете на независи-
мость и оригинальность российских программистов, созда-
дим символьные ссылки с полными именами на директории
с базами локалей, которые были построены localedef.
Как видите, в недрах SuSE Linux заложен большой
потенциал – расширение базы локализаций произошло
Рисунок 1. Ввод данных с клавиатуры
без загрузки каких-либо дополнительных файлов кроме
дистрибутивных.
В работающей системе SuSE Linux локаль устанавлива-
ется единым образом на основании переменной RC_LANG,
размещенной в файле /etc/sysconfig/language. Ранее, сразу
после присвоения данной переменной нужного значения,
например того же ru_RU.UTF-8, следовало выполнить:
18
администрирование
нами, использующими суффиксы psfu должны содержать
после растрового шрифта соответствующую таблицу пе-
рекодировки SFM. Специальная управляющая подстрока
CONSOLE_MAGIC используется для активации настроенно-
го преобразования. Подробности можно узнать в [5]. В об-
щем все достаточно тривиально.
Как уже было сказано, по умолчанию SuSE Linux настра-
ивается для использования UTF-8. Тогда все системные пе-
ременные, которые используются для настройки способа
вывода принимают значения:
CONSOLE_FONT="Cyr_a8x16.psfu"
CONSOLE_UNICODEMAP=""
CONSOLE_SCREENMAP="trivial"
CONSOLE_MAGIC="(K"
CONSOLE_ENCODING="UTF-8"
Рисунок 3. Консоль в режиме ru_RU.CP866
И здесь также отметим, что настройка вывода в кон- Характерной особенностью является отсутствие про-
соль призводится системным скриптом /etc/init.d/kbd не- писной буквы «Ы» (на рисунке 3 в строке приглашения кон-
зависимо от настроек локали. И лишь воля администра- соли), которая совпадает по коду со служебным символом
тора, редактирующего соответствующий управляющий управления кодовыми таблицами SCI (0x9B). Но в осталь-
файл /etc/sysconfig/console, должна обеспечить согласо- ном все прекрасно работает.
вание кодировок. Итак, потенциально возможно настроить консольный
драйвер и окружение пользователя для работы в любой
Настройка консоли SuSE Linux из перечисленных локалей. Так почему же все настойчи-
В отличие от ранее созданных локалей для обеспечения во предлагают работать в ru_RU.UTF-8 и так пренебрежи-
соотвествующей настройки придется подгрузить в систе- тельно относятся ко всем остальным локалям?
му дополнительные файлы. В дистрибутивной поставке от-
сутствует ACM для MAC-CYRILLIC и некоторые клавиатур- Использование локали приложениями
ные раскладки. Используемые для настройки разных ре- Безусловно, это самый важный вопрос. При его исследо-
жимов параметры перечислены в таблице 1. Недостаю- вании можно встретить как приятные открытия, так и оза-
щие отмечены отсутствием фоновой тонировки. Эти фай- дачивающие. Тема эта неисчерпаема, как и сам набор воз-
лы, как и все приведенные или упомянутые здесь скрипты, можных приложений. Для нас здесь принципиальным явля-
можно найти в архиве [7]. ется тот факт, что корректное использование локалей все-
Вот как должен выглядеть скрипт для переключения ло- цело на совести разработчиков программного обеспечения.
кали и консоли в режим работы с кодировкой CP1251, вы- Более того, приложение может «уметь» использовать ло-
полненный в точном соответствии с таблицей 1: кали, но не поддерживать часть из них.
Например, X Window в используемом большинством
# cat console2cp1251 дистрибутивов Linux варианте Xorg является, по сути,
#!/bin/sh
обычным приложением. Переведем SuSE Linux в локаль
PREF=/etc/sysconfig ru_RU.CP1251 и затем внутри работающего X Window пе-
[ "1$UID" != "10" ] && { echo "you must be root!" ; exit ; } реключимся в CP866 и запустим новую сессию konsole. Ре-
зультат на рис. 4.
# Console
perl -i -p -e 's/^CONSOLE_FONT= ↵ Получаем сразу две проблемы: во-первых, сооб-
.*/CONSOLE_FONT=Cyr_a8x16.psfu/g' $PREF/console щение «QT: Locales not supported on X server» и, во-вто-
perl -i -p -e 's/^CONSOLE_SCREENMAP= ↵
.*/CONSOLE_SCREENMAP=cp1251_to_uni/g' $PREF/console рых, внутри созданного окна не наблюдается кириллицы
perl -i -p -e 's/^CONSOLE_ENCODING= ↵ в CP866. Первая из-за того, что нужная локаль не созда-
.*/CONSOLE_ENCODING=CP1251/g' $PREF/console
на в /usr/lib/X11/locale, а вторая из-за того, что теперь надо
# Keyboard для данного экземпляра konsole указать кодировку вручную.
perl -i -p -e 's/^KEYTABLE= ↵
.*/KEYTABLE=ru_win.map.gz/g' $PREF/keyboard Вспоминаем о том, что оптимисты считают локаль свойс-
твом процесса и ... недоумеваем! Вероятно, оптимисты не
# Language
perl -i -p -e 's/^RC_LANG= ↵ входят в число авторов этих программ.
.*/RC_LANG=ru_RU.CP1251/g' $PREF/language Проявляем настойчивость и получаем уже несколько
rckbd restart иной результат на рис. 5.
Обратите внимание: появилась кириллица в ответе
exit
date, корректно представлена псевдографика mc, и, са-
Аналогичным образом строятся скрипты для переклю- мое главное, нет проблем с прописной «Ы», так как клави-
чения в другие локали (см. [7]). Результат перевода консо- атура работает в «сыром» (raw в оригинале), прозрачном
ли в режим ru_RU.CP866 изображен на рис. 3. режиме, и текстовая консоль не участвует в процессе вы-
alekseybb@wsvm02:~> locale
LANG=ru_RU.KOI8-R
LC_CTYPE="ru_RU.KOI8-R"
LC_NUMERIC="ru_RU.KOI8-R"
LC_TIME="ru_RU.KOI8-R"
LC_COLLATE="ru_RU.KOI8-R"
LC_MONETARY="ru_RU.KOI8-R"
LC_MESSAGES="ru_RU.KOI8-R"
LC_PAPER="ru_RU.KOI8-R"
LC_NAME="ru_RU.KOI8-R"
LC_ADDRESS="ru_RU.KOI8-R"
LC_TELEPHONE="ru_RU.KOI8-R"
LC_MEASUREMENT="ru_RU.KOI8-R"
LC_IDENTIFICATION="ru_RU.KOI8-R"
LC_ALL=
вода. Только не получится повторить то же самое в лока- Но если попытаться подключиться к компьютеру в ло-
ли ru_RU.MAC-CYRILLIC, так как в konsole эту кодировку кали ru_RU.MAC-CYRILLIC с помощью PyTTY из-под
нельзя указать принудительно – ее просто нет. Приятно то, MS Windows, то ничего хорошего не получится, так как там
что варианты 1-4 из таблицы 1 работают в SuSE Linux в ре- нет возможности ни передать переменные программной
жиме X Window, как говорится, «из коробки». среды, ни прямо указать перекодировку с MAC-CYRILLIC.
Еще более интересные метаморфозы претерпевает Надо заметить, что в приложениях, не поддерживающих
локаль в режиме удаленной работы. Например, с помо- POSIX-локали, бывают вообще странные ситуации, вроде
щью ssh. Если из локальной сессии, работающей в лока- той, что сообщает wine при запуске некоторых абстрактно
ли ru_RU.KOI8-R, подключиться к удаленному компьюте- написанных программ:
ру, настроенному для работы в другой локали, то получим
fixme: msvcrt:MSVCRT_setlocale : Codepage only locale not implemented
следующее:
Дословно: локаль, определяемая только кодовой табли-
alekseybb@wsalekseybb:~> locale цей, не реализована. В свете того, что по кодировке сим-
LANG=ru_RU.KOI8-R вольного потока вообще нельзя установить тип локали,
LC_CTYPE="ru_RU.KOI8-R" приведенное выше сообщение можно понимать, как свое-
LC_NUMERIC="ru_RU.KOI8-R"
LC_TIME="ru_RU.KOI8-R" го рода юмор.
LC_COLLATE="ru_RU.KOI8-R"
LC_MONETARY="ru_RU.KOI8-R"
LC_MESSAGES="ru_RU.KOI8-R"
Подведем итоги
LC_PAPER="ru_RU.KOI8-R" В общем случае не представляется сложным настроить ра-
LC_NAME="ru_RU.KOI8-R" бочую станцию GNU/Linux в любой из желаемых локалей.
LC_ADDRESS="ru_RU.KOI8-R"
LC_TELEPHONE="ru_RU.KOI8-R" Как было продемонстрировано на примере SuSE Linux 10.0,
LC_MEASUREMENT="ru_RU.KOI8-R" который не является кириллически толерантным, что ука-
LC_IDENTIFICATION="ru_RU.KOI8-R"
зано в предупреждении инсталлятора, даже такой дист-
LC_ALL=
рибутив поддается настройке. Казалось бы, отечествен-
alekseybb@wsalekseybb:~> ssh alekseybb@192.168.0.184 ные дистрибутивы должны все описанное в статье иметь
20
администрирование
Таблица 2. Уровень исходной кириллизации дистрибутивов
Дистрибутивы SuSE Linux 10.0 RHEL 4 AS ASP Linux 10 OEM ALT Linux Compact 3.0.4
Критерии glibc Xorg Уст. fonts glibc Xorg Уст. fonts glibc Xorg Уст. fonts glibc Xorg Уст. fonts
Локали 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
UTF-8 Да Да Да 512 Да Да Да 465 Да Да Да 723 Да Да Да 59
KOI8-R Да Да 349 Да Да Да 228 Да Да Да 1027 Да Да 78
CP1251 Да 0 Да Да 0 Да Да Да 368 Да Да 64
ISO8859-5 Да 102 Да Да 52 Да Да Да 52 Да Да 23
CP866 25 0 0 Да 0
MAC-CYRILLIC 0 0 0 0
Число полных поддержанных локалей 1 2 4 1
как встроенный сервис. Но этого не наблюдается. На Руси Заметно, насколько не согласована политика внутри
с древности повелось так, что народ учили грамоте то вся- коллективов разработчиков. Например, в SuSE инсталля-
кие «пришлые греки», то «ушлые варяги». Складывающая- тор предлагает лишь UTF-8, тогда как внутри, еще в силу
ся вокруг компьютерных кодировок ситуация следует исто- привычки, все есть для безбедной работы в KOI8-R, и это
рической традиции. Очередные заморские гуру, в который при почти полном игнорировании CP1251, от качества на-
раз предлагают отказаться от всего, что было ранее прове- стройки которой в нашей стране существенно зависит ин-
рено и внедрено, и принять от них новую чудодейственную теграция с MS Windows, ну а наличие шрифтов для коди-
«пилюлю». Ожидаемо, после того как четыре зарубежные ровки CP866 не объяснить никакой адекватной логикой.
компании создали четыре взаимоисключающие способа Точно так же непонятно, зачем в ALT Linux Compact 3.0 со-
кодирования кириллической информации, полностью игно- здана локаль для X Window, соответствующая CP866, при
рируя ту, что была создана независимыми отечественными отсутствии всего остального для этой кодировки. На этом
разработчиками, в среде пользователей должен сформи- фоне лишь ASP Linux можно считать образцом взвешенно-
роваться иммунитет к языковым авантюрам. Тем более что, го и разумного подхода. В строке 7 указано число локалей,
как продемонстрировано выше, единого подхода к работе полностью реализованных и поддержанных сервисом. Этот
с локалями не наблюдается вовсе, то есть появление но- параметр является киррилическим рейтингом по факту.
вой локали закономерно приведет к новым хлопотам и про- Так что же произошло на самом деле? Что так неод-
блемам с программами. Но лишь один из ведущих россий- нозначно понимается создателями продукции, наполняю-
ских разработчиков – ASPLinux – признает сложившуюся щей внутренний рынок дистрибутивов GNU/Linux? Что их
ситуацию и предлагает набор локалей и кодировок на вы- смущает?
бор (все из перечисленного, кроме экзотической кодиров- К уже имеющим хождение в России пяти кодировкам
ки Mac и устаревшей cp866, в версии 10 ASPLinux). А вот добавилась еще одна. И всего-то! После пяти предыдущих
дистрибуция ALT Linux, копируя западный подход, с вер- надо появление очередной, шестой, встречать с уже натре-
сии 3.0 полностью переходит в ru_RU.UTF-8. Причем ре- нированным навыком.
комендации по «откату» на привычную KOI8-R выклады- Успехов вам, читатели, в настройке собственных рабо-
ваются в Сеть синхронно с появлением этой искусствен- чих станций, иногда вопреки загадочному желанию разра-
но созданной «проблемы» [8]. Вероятно, тщательная ки- ботчиков, далеких от общественных интересов!
риллизация Linux не только стала казаться неактуальной
для некоторых пользователей, но даже и не считается обя- Ссылки:
зательным качеством национальной продукции у некото- 1. Юникод. Материал в википедии – свободной энциклопедии.
рых разработчиков. http://ru.wikipedia.org/wiki/UTF-8.
Построим сравнительную таблицу дистрибутивов, 2. RU.LINUX Frequently Asked Questions. Составитель Александр
не претендуя на полноту обзора. Рассмотрим как деклари- Канавин. Глава 3. Русификация – http://www.sensi.org/~ak/
рованные свойства, так и латентные, подобные тем, что поз- linuxfaq/rulinux.faq-3.html#ss3.4.
волили столь эффективно произвести многие этапы кирил- 3. Пакет интернационализации консоли kbd – ftp://ftp.win.tue.nl/
лизации SuSE Linux. Выберем для сравнения парочку веду- pub/home/aeb/linux-local/utils/kbd.
щих дистрибутивов зарубежного производства и уже упо- 4. Пакет интернационализации консоли console-tools – http://lct.
мянутых лидеров отечественного рынка. Зарубежные в пол- sourceforge.net.
ном формате, а отечественные в однодисковых вариантах, 5. Костромин Виктор Алексеевич. «Линукс для пользователя».
для того чтобы уровнять шансы. Сравнивать будем нали- Электронный вариант – http://nf8.jinr.ru/~kras/kostromin/gl-11/
чие системных локалей, локалей X Window, предложения gl_11_01.html.
установщика (в таблице колонки, озаглавленные «Уст.») 6. Поисковая система для rpm – http://rpm.pbone.net.
и число шрифтов выбранной кодировки для X Window (на- 7. Архив файлов к настоящей статье – http://www.barabanov.ru/
пример для UTF-8: «xlsfonts | grep iso10646 | wc -l»; считая, arts/cyrillic/cyrillic.tgz.
что в них уже содержатся глифы для кириллицы, что в об- 8. Как сменить системную локаль на KOI-8 в дистрибу-
щем случае не всегда выполняется). Полученные резуль- тиве ALT Linux Compact 3.0 – http://wiki.sisyphus.ru/utf8/
таты сведём в таблицу 2. MigrateToKoi8?v=1d2w.
Знакомимся с Gentoo
Часть I – установка системы
Одним из главных завоеваний Open Source, и Linux в частности, можно назвать свободу
выбора. Что ставить, как, куда, с какими параметрами… Дальше всех в этом вопросе пошли
разработчики Gentoo – они решили вообще ничего не навязывать пользователю.
Сергей Супрунов
22
администрирование
«Что за птица такая?»
Интересующихся этимологией от- Gentoo a.k.a. Pygoscelis papua
правляем на врезку «Gentoo a.k.a. Пингвин папуанский (ослиный), именуемый по латыни Pygoscelis papua,
Pygoscelis papua». в англоязычных странах известен под кличкой Gentoo. От сородичей
Здесь же поговорим о Linux-дистри- отличается более крупными размерами и одной из самых высоких
бутиве Gentoo. Отличается он от боль- скоростей передвижения под водой. В общем, «быстрее, выше, силь-
шинства других тем, что очень мно- нее». Ещё одна характерная черта – очень громкий голос (за что пин-
гое в нём приходится делать вручную. гвина и назвали «ослиным»), но мы не будем проводить здесь анало-
До версии 2006.0, увидевшей свет гии с Gentoo-сообществом...
в самом начале весны этого года, дист-
рибутив не располагал инсталлятором, та OpenOffice.org, который тоже вклю- ту. Конечно, можно выполнить уста-
и практически каждый шаг выполнял- чён в Live CD. новку и автономно (в инсталляторе
ся вручную. С инсталлятором, думаю, вы пре- этот режим называется GRP, в кото-
Зато в итоге вы получали имен- красно разберётесь и сами (несколь- ром используются те файлы, которые
но ту систему, о которой мечтали всю ко советов можно найти на врезке обеспечивают работу Live CD). Но без
жизнь. «Всё лучшее – пользователю»). широкополосного подключения к Се-
Вторая особенность Gentoo – ори- Мы же в память о том чувстве без- ти Gentoo будет работать в полсилы.
ентированность на сборку из исход- граничной свободы, которое возника- Впрочем, это верно почти для любой
ных кодов. Для работы с приложени- ло при работе с 2005.1 и более ранни- UNIX-подобной операционной сис-
ями реализована очень напоминаю- ми версиями, поставим всё сами. темы.
щая коллекцию портов FreeBSD сис- На тот случай, если вам проще за-
тема Portage, о которой у нас ещё бу- «Где взять дистрибутив?» ранее скачать наиболее крупные фай-
дет возможность поговорить. Установ- Раздобыть образ дистрибу тивно- лы, загрузите себе следующие два ар-
ка бинарных пакетов (которые имену- го диска, очевидно, можно на одном хива (пути указаны для одного из зер-
ются packages) не поощряется, хотя из зеркал www.gentoo.org (см. раздел кал, другие можно выбрать на http://
и возможна. Mirrors). www.gentoo.org/main/en/mirrors.xml):
В общем, всё направлено на дости- Для платформы x86 вы можете ftp://ftp.citkit.ru/pub/Linux/gentoo/
жение одной цели – не просто предо- выбрать один из следующих вари- releases/x86/2006.0/stages/stage3-
ставить пользователю возможность антов: x86-2006.0.tar.bz2
полностью контролировать процесс Minimal CD: минимальный диск, ftp://ftp.citkit.ru/pub/Linux/gentoo/
установки ПО в систему, а вынудить позволяющий просто начать уста- snapshots/portage-20060308.tar.
его это делать. Это как раз то, что за- новку. Основные файлы системы bz2
ложено в фундамент любой UNIX-по- придётся скачивать из Интерне-
добной системы, – ответственность. та. Естественно, к тому времени, ког-
Полная ответственность за любое Live CD: полноценный «живой» да вы будете читать эту статью, номера
действие. дистрибутив, который можно ис- актуальных версий могут и поменяться
Если вы уже успели испугаться пользовать и сам по себе. В уста- (а для portage поменяются обязатель-
и потянулись к своей коллекции CD новке Gentoo на жёсткий диск вам но), так что следите за новостями. Ещё
за диском с SUSE Linux – не спеши- поможет программа-инсталлятор. можно заранее скачать portage-архив
те, всё не так уж и страшно. На самом Есть возможность сгенерировать ядра (например, отсюда: http://distfiles.
деле, если держать под рукой замеча- необходимые для установки сис- gentoo.org/distfiles/linux-2.6.15.tar.bz2),
тельное «Руководство пользователя», темы файлы из программ на диске, но в этом случае могут возникнуть
то вы не только с лёгкостью справитесь хотя рекомендуется всё же скачать проблемы с совместимостью данного
с инсталляцией и настройкой, но и уз- их из Сети, чтобы получить более файла с вашей версией Portage на мо-
наете много нового о внутреннем уст- свежие версии. мент установки.
ройстве Linux. Так что ядро лучше всё-таки ста-
К тому же начиная с версии 2006.0 Но я открою вам страшную тай- вить по сети (см. далее).
установочный диск представляет со- ну – дистрибутив нам, по большому
бой полноценный Live CD-дистрибу- счёту, не нужен. А откуда же мы бу- «Куда же нам теперь
тив с графической средой пользова- дем выполнять установку? Да отку- идти?»
теля (используется Gnome 2.12). От- да угодно – подойдёт любая работаю- Итак, от использования инсталлятора
сюда же можно запустить инсталлятор, щая система Linux как стационарная, мы отказались. Да и, к слову сказать,
который будет работать как обычная так и Live CD, например Knoppix. Безу- работает он пока не очень стабильно.
пользовательская программа, просто словно, Gentoo Live CD или Minimal CD Так что загрузитесь в ту систему, ко-
выполняя всё то, что до 2006.0 прихо- тоже сгодятся. Ну и понадобится под- торая у вас есть. И что теперь делать?
дилось делать вам. Вы же в это время ключение к Интернету с возможностью Как вы уже догадались, без толково-
можете, например, поиграть или да- скачать 150-200 Мб данных. го руководства – никуда. Я постараюсь
же оформить ваши впечатления от ус- Нужно заметить, что Gentoo вооб- пояснить наиболее важные моменты,
тановки в текстовом редакторе паке- ще ориентирован на сетевую рабо- но если вам не жалко бумаги, можете
24
администрирование
Четвёртая и пятая строки создают нужную среду окру- А волшебная команда emerge, о которой мы подробнее
жения, исполняя сценарии из каталога /etc/env.d и обраба- поговорим во второй части статьи, выполнит установку ко-
тывая файл /etc/profile. Последняя формирует файл mtab, дов ядра gentoo.
который может понадобиться для правильной установки Конечно, вы можете выбрать и другое, например vanilla, –
загрузчика. собственно, поэтому ядро и не включается в Stage3, чтобы
Перед тем как приступать к инсталляции исходных ко- ничего вам не навязывать.
дов ядра системы, вы можете дополнительно указать нуж- Подробнее о ядрах можно прочитать в «Руководс-
ные вам режимы сборки (например, параметры оптимиза- тве».
ции) в файле /etc/make.conf. Теперь нужно ядро собрать. Разработчики дистрибутива
Как я писал выше, исходники ядра лучше устанавливать подготовили специальную программу – genkernel, которая
по сети (объём закачки составит примерно 40 Мб). Если вы автоматически соберёт ядро, вполне подходящее для ра-
всё же решили скачать архив заранее, то скопируйте его боты. Но мы же ставим Gentoo не для того, чтобы полагать-
в /usr/portage/distfiles, где emerge должна его найти (конеч- ся на чей-то выбор?
но, если версия будет соответствовать той, которая описа- А раз так, то:
на в дереве Portage).
Установка исходных кодов выполняется простой ко- # cd /usr/src/linux
# make menuconfig
мандой:
Особое внимание в настройках ядра уделите подде-
# USE="-doc symlink" emerge gentoo-sources ржке нужных вам файловых систем и оборудования (сете-
вые и звуковые карты, USB и т. д.). Впрочем, как вы пони-
Здесь значение переменной окружения USE озна- маете, любая ошибка поправима – этот шаг вы всегда смо-
чает «не учитывать зависимости, связанные с докумен- жете повторить. Так что спокойно и без спешки просмотри-
тацией, и после установки создать символьную ссылку те все опции и подумайте, нужны они вам или нет. И не за-
/usr/src/linux, указывающую на каталог с исходными кода- бывайте о встроенной справке, где вам всегда разъяснят,
ми данной версии». зачем нужен тот или иной параметр.
# emerge syslog-ng
# emerge vixie-cron
26
администрирование
Илья Александров
З
а долгие годы работы с Linux мною было использова- диске выделяется раздел для новой системы. После чего
но огромное количество различных дистрибутивов: на этом разделе нужно будет статически скомпилировать
Mandriva, Fedora, SlackWare, Debian, Ubuntu и мно- все необходимые программы и ядро системы. Далее про-
гие другие. Какой-то проект нравился больше, какой-то – исходит смена корневого каталога на раздел жесткого дис-
меньше. Но во всех дистрибутивах неминуемо приходилось ка, отведенный под нашу новою ОС. Потребуется повторить
сталкиваться с серьезными недостатками, которые сильно компиляцию, но на этот раз ПО должно быть собрано дина-
затрудняли работу. Один слишком требователен к ресур- мически (отличие динамической компиляции от статичес-
сам, в другом нет поддержки всего нужного оборудования, кой будет описано ниже). Последний этап включает в себя
в третьем не хватает различного ПО. Вот тогда я вспомнил сборку важнейшей библиотеки glibc и конфигурацию уста-
известную восточную мудрость: если нужно что-то сделать новленной ОС. Как видите, ничего особенно сложного де-
хорошо, сделай это сам. лать не придется.
На протяжении всего процесса ваш главный помощник –
Linux from Scratch документация из пакета LFS-book, русский перевод которой
Я не единственный, кто решил заняться построением собс- можно взять тут: http://multilinux.sakh.com/download/lfsbook.
твенной версии Linux – ОС, в которой за основу будет взята tar.bz2. В книге подробно описан каждый шаг создания ОС,
базовая часть системы и ядро, но где не будет ни единого поэтому обязательно обращайтесь к этому руководству
лишнего килобайта от разработчика, то есть от вас. Боль- в случае возникновения проблем (данная статья не при-
шое количество Linux-дистрибутивов, не соответствующих звана заменить такую обширную документацию).
требованиям пользователей, подтолкнуло Герарда Бикмен- Создаем новый раздел – в моем случае это /dev/hda5,
са (Gerard Beekmans) к созданию дистрибутива, который так как раздел /dev/hda1 уже занят установленным на жес-
даст возможность каждому собрать систему, где будут толь- ткий диск Linux Slackware. Рекомендуется предваритель-
ко необходимые ему компоненты и функции. но сделать бэкап системы, дабы можно было ее восстано-
Стремление талантливого программиста вылилось вить в случае повреждения, хотя вероятность подобного
в проект Linux from Scratch (www.linuxfromscratch.org), со- близка к нулю. И тут, думаю, все понятно: выделяем нужное
кращенно – LFS. Этот проект, позволяет сконструировать количество (достаточно 2-3 Гб) под корневой каталог, про-
«с нуля», из исходных кодов, свою операционною систему странство, равное удвоенному объему ОЗУ – под swap-раз-
на базе Linux. Компиляция LFS проходит на компьютере дел, по желанию можно создать отдельные разделы для до-
с уже установленной Linux-системой, впрочем, подойдет машнего каталога (/home) и для /boot. Впрочем, излюблен-
и «продвинутый» Live-CD, например, Knoppix [6]. ный многими вариант разбиения – отвести под корневой ка-
При этом Linux-система, используемая для сборки, мо- талог все доступное пространство минус swap, и последую-
жет быть любой – обязательно лишь наличие компилятора щее создание собственно swap – также вполне допустимо
и системных библиотек. Linux From Scratch трудно назвать при сборке LFS. На компьютере автора и Linux Slackware, яв-
дистрибутивом в привычном смысле этого слова – это что- ляющийся родительской ОС, и LFS, используют один жест-
то вроде вспомогательного ПО, которое вкупе с базовой кий диск, впрочем, установить LFS на другой винчестер то-
частью операционной системы позволит вам создать свою, же труда не составит.
уникальную версию ОС. Файловую систему выбирайте на ваше усмотрение:
Как известно, Линус Торвальдс разрабатывал свою опе- и с Ext3, и с ReiserFS никаких проблем под LFS не было.
рационную систему под девизом «Just for fun!» – то есть А вот поклонников XFS придется огорчить – попытки за-
только ради удовольствия. Нужно признать, что LFS дейс- ставить Linux From Scratch работать с этой ФС не увенча-
твительно не часто можно встретить на серверах, исполь- лись успехом.
зуют эту систему, как правило, компьютерные энтузиасты. Теперь монтируем раздел, отведенный под новую ОС:
Установка и работа с Linux from Scratch поможет вам разо-
браться во взаимосвязи компонентов ОС, что пригодится $ mount /dev/hda5 /mnt/mylin
при собственных разработках Linux-дистрибутива, причем
не только на базе LFS. Поэтому LFS во многом рассчитан Для удобства определим переменную MYLIN:
на тех людей, для которых процесс сборки собственного
дистрибутива увлекателен и интересен – а таких людей, $ export MYLIN=/mnt/mylin
поверьте, немало.
Итак, если вы готовы потратить на конструирование Отлично, для дальнейшей работы лучше создать отде-
системы целый день (а то и больше), то рекомендую ска- льного пользователя mylin, которого и назначим владель-
чать с сайта (2) LFS-packages-6.0, LFS-book, и продолжить цем смонтированного раздела.
читать эту статью.
$ useradd mylin
$ chown –R mylin $MYLIN
Разбиение диска и создание дерева
каталогов Нужно создать дерево каталогов в корне нового раз-
Для лучшего понимания материала опишем весь ход про- дела:
цесса в общих чертах (см. рис. 1).
На первом этапе, с помощью уже инсталлированного $ cd $MYLIN
$ mkdir –p bin boot dev etc home lib mnt opt root sbin ↵
дистрибутива или LiveCD, разбивается диск. На жестком usr/{X11R6,local} var
28
администрирование
В каталогах usr, usr/X11R6, usr/local создаем необходимую $ ./configure –-enable-static-link --prefix=$MYLIN/stat
$ make
структуру: подкаталоги bin, etc, include, lib, sbin, share, src. $ make install
Затем то же самое проделаем для каталогов /var и /opt
будущей системы: По такой же схеме собираем остальные необходимые
пакеты: binutils, bzip2, textutils, texinfo, tar, sh-utils, gcc, grep,
$ mkdir var/{cache,lib,local,lock,log,opt,run,spool} gzip, gawk, diffutils, fileutils, make, patch, sed, и, собственно,
$ mkdir opt/{bin,doc,include,info,lib,man}
linux-kernel.
Не будем забывать, что существуют более глубокие ие- Да, при компиляции ядра не забываем, что для ста-
рархии, например, /usr/share/man/man1. Но объем статьи не рых версий ядер (2.2.x-2.4.x) нужно использовать gcc 2.95,
позволяет привести здесь всю информацию о структуре а для текущей версии 2.6.x рекомендуется применить
файлового дерева, поэтому нужно либо воспользоваться gcc 3.x, дабы не возникло проблем.
документом Filesystem Hierarhy Standart (можно найти по ад- Не забываем заглядывать в соответствующие разделы
ресу: http://linux-ve.net/MyLDP/file-sys/fhs-2.2-rus), либо вни- LFS-book, там сказано об этом и многих других нюансах.
мательно изучить структуру уже установленной у вас ОС В целом же компиляция ядра в LFS не отличается от по-
семейства Linux. После подготовки жесткого диска присту- добной процедуры, проводимой при использовании уста-
паем к статической сборке. новленного на HDD дистрибутива. Разархивируем исход-
ники ядра в $MYLIN/usr/src/linux-2.6.xx, после чего конфи-
Статическая сборка гурируем, запуская:
Зачем мы используем статическую сборку? При статичес-
кой компиляции исходный код библиотеки присоединя- $ make menuconfig
ется к коду приложения, что влечет за собой увеличение
его размера, но при этом сохраняется целостность. При ди- Процесс настройки параметров ядра многократно опи-
намической же компиляции библиотека находится в отде- сан в Интернете (6), вряд ли есть необходимость останав-
льном файле, к которому по мере необходимости обраща- ливаться на этом подробнее. Далее даем следующие ко-
ются приложения. В итоге все программы работают с од- манды в папке с исходными текстами Linux-kernel:
ной версией библиотеки
Но когда мы посредством команды chroot установим $ make bzImage
$ make modules
корневой каталог для вновь собираемой системы, библи-
отеки «родительской», установленной системы, находящи- Все, по адресу $MYLIN/usr/src/linux-2.6.xx/arch/i386/boot/
еся в /lib, /usr/lib, и прочих, станут уже недоступны, поэто- bzImage находится новое ядро.
му динамически скомпилированные программы работать Далее создаем файлы $MYLIN/etc/passwd и $MYLIN/etc/
откажутся, вдобавок совместимость версий никем не га- group. В первом прописываем пока единственного пользо-
рантирована. вателя – root с любым паролем, а во втором группы поль-
Чтобы избежать этого, все необходимое программное зователей (для начала одной группы root тоже будет до-
обеспечение для нашей будущей системы мы для начала статочно).
соберем статически. Начнем, пожалуй, с командного ин- На этом наши приготовления к следующему шагу за-
терпретатора bash. (Поклонники ZSH или TCSH могут ус- кончились, и мы переходим уже к более тонкой динами-
тановить любимые интерпретаторы после установки сис- ческой сборке.
темы, но на этапе сборки их использование не предус-
мотрено автором LFS). Следует проверить, есть ли у вас Динамическая сборка
файл /usr/lib/libcurses.a и если его нет – установите па- Теперь нам нужно сменить корневой каталог на /mnt/mylin,
кет nсurses-dev. Все пакеты надо собирать с флагами ста- где мы будем пользоваться только статически собранными
тической сборки: «--enable-static-link», «--disable-shared» утилитами – к помощи инструментов из «родительской» ОС
или «--static». Какой именно подходит в каждом конкрет- мы уже прибегать не сможем. Даем команду в консоли:
ном случае, можно узнать из документации к конкретному
пакету или из вывода конфигурационного сценария, запу- $ chroot $MYLIN/usr/bin/env –i \
>HOME=/root TERM=$TERM PS1=’\u:\w\$’ \
щенного с параметром «--help». >PATH=/bin: /usr/bin: /sbin: /usr/sbin: /stat/sbin \
>/stat/bin/bash --login
$ ./configure –-help
Этой командой мы указали пути к исполняемым фай-
Чтобы не спутать позже статически скомпилированные лам, тип терминала, интерпретатор и вид приглашения ко-
программы с «динамическими», создадим для них специ- мандной строки.
альный каталог: Для обеспечения работы некоторых программ, надо ус-
тановить файловую систему proc в новой системе.
$ mkdir $MYLIN/stat
$ mount proc /proc -t proc
При сборке и установке пакетов не забываем добавлять
параметр «--prefix=$MYLIN/stat» для перемещения файлов Наступил самый ответственный момент. Сборка биб-
именно в этот каталог. И, наконец, ставим bash: лиотеки glibc. Самый ответственный он потому, что рабо-
30
администрирование
root=/dev/hda1 Теперь такое вполне возможно – по адресу http://ezine.
read-only
image=/boot/zImage-2.6.12 daemonnews.org/200302/fbsdscratch.html находится статья о
label=Linux сборке FreeBSD из исходников целиком – от distributions до
портов, причем методом не похожим на обычный «rebuild»
Сделайте необходимые изменения в зависимости от ва- системы, но схожим с методом Герарда Бикменса. Что ж,
шей конфигурации. Обновляем загрузчик командой: теперь и у вас есть личная, уникальная система, создан-
ная на базе Linux. В случае возникновения проблем ищи-
$ /sbin/lilo –v те их решение в LFS-book, там все подробно описано. Так-
же рекомендую с портала http://www.tldp.org скачать руко-
И, если все предыдущие этапы были выполнены пра- водство Linux Network Administrator’s Guide, оно хоть и не
вильно, мы окажемся в новой системе. Однако долгий этап относится непосредственно к LFS, но пригодится на этапе
«тонкой» настройки (отдельное внимание стоит уделить бе- настройки системы. Не стоит забывать, что с каждой про-
зопасности новой системы, ибо LFS по умолчанию выгля- граммой поставляются также различные man и info pages,
дит довольно-таки незащищенным, как и всякая вновь ус- также призванные облегчить жизнь линуксоида.
тановленная ОС) еще впереди. Зато собственноручно соб-
ранная версия Linux у вас уже есть. Литература и ссылки
1. LFS-book на русском – http://multilinux.sakh.com/lfs.
Постскриптум 2. Официальный портал проекта LFS – http://www.linuxfromscratch.
Герард Бикменс – не единственный, кому пришло в голову со- org.
здать собственный Linux. Другой проект – BYOLinux, руково- 3. Портал ByoLinux – http://www.byolinux.org.
дителем которого являлся Джонатан Торп (Jonatan Thorpe), на 4. Cтатья о FreeBSD from scratch – http://ezine.daemonnews.org/
сегодняшний день свое развитие прекратил, хотя написанная 200302/fbsdscratch.html.
имдокументация сохраняет актуальность и сейчас, но она не 5. Статья о компиляции ядра Linux – http://vikos.lrn.ru/MyLDP/
так детальна, как LFS-book и не переведена на русский. Глав- kernel/kompil-2-6.html.
ное отличие метода Джона в том, что библиотека glibc перено- 6. Байрак А. Обзор Knoppix 3.7 Russian Edition. – Журнал «Сис-
сится из родительской системы в дочернюю без перекомпиля- темный администратор», №3, март 2005 г. – 4-6 с.
ции, это не столь эффективно, но позволяет избежать многих
проблем при сборке. Желание почувствовать себя конструкто- Ссылки на все указанные в статье программы приведены
ром ОС испытывают и некоторые пользователи FreeBSD. в LFS-book (Часть 3. Приложения).
Рашид Ачилов
32
администрирование
С
поры о том, что правильнее – собирать програм-
мы руками или использовать для этого порты, в эх-
оконференции FidoNet RU.UNIX.BSD не утихают
никогда. Они могут стихнуть на время, но затем кто-ни-
будь снова задаст такой вопрос, и они разгораются с но-
вой силой.
И рано или поздно каждый приходит к мнению, что ис-
пользовать порты удобнее, потому что:
Система сама ведет список файлов, входящих в порт,
что позволяет просто удалить программу, не заботясь
о том, что на диске останутся «хвосты».
Система сохраняет контрольную сумму MD5 по каж-
дому файлу, что позволяет проверить его подлинность
в случае возникновения сомнения, а также при удале-
нии программы. Поскольку при удалении порта прове-
ряются контрольные суммы файлов, его составляющих,
система не удалит файл, если его контрольная сумма не
совпадает с записанной. Это исключает ситуацию, ког-
да тщательно настроенный, но как обычно нигде не за-
резервированный конфигурационный файл программы
пропадает при ее удалении.
Система отслеживает выход новых версий программы
(это верно только для портов, которые сопровождают-
ся кем-то еще, а не вами. О своевременном обновле-
нии вашего порта вы должны заботиться сами).
Значительно проще ответить на вопрос «Установлена ли
у меня эта программа?» или «Где у меня такой-то файл
от такой-то программы?»
34
администрирование
ся – «Contacts menu for Kicker». Подробное ее описание при- Откуда взять имя дистрибутива и адрес домашнего сай-
ведено в [3]. Факт успешной сборки программы уже прове- та проекта? Как правило, первоначальная закачка файла
рен, программа установлена, и протокол установки сохра- производится вручную, следовательно, имя файла и URL ис-
нен в файле, то есть была выполнена команда: ходного сайта всегда можно найти в логах программ, кото-
рыми он закачивался. Можно использовать для этого и дру-
# make install >& install.log гие методы, которые я не буду здесь описывать ввиду их
чрезвычайно большого разнообразия. Таким образом, ес-
В данном примере для перенаправления в файл и обь- ли бы имя дистрибутивного файла нашей программы бы-
единения выводов stdout и stderr используется синтаксис ло contactsmenu-0.3.4b.tar.gz, нам бы больше ничего не пот-
tcsh, в sh необходимо выполнить: ребовалось указывать – вся информация для загрузки уже
предоставлена. Но не все так просто, потому что имя наше-
# make install > install.log 2>> install.log го файла – 34479-contactsmenu-0.3.4b.tar.bz2.
Что делать? Для таких случаев предусмотрено прину-
Начинаем. Сразу же необходимо иметь в виду, что су- дительное задание имени дистрибутивного файла, кото-
ществует довольно жесткий порядок, в котором в фай- рое должно быть полным, то есть
ле Makefile должны появляться определения переменных.
В нижеследующем примере приводится правильный поря- DISTNAME= 34479-${PORTNAME}-${PORTVERSION}
док и нарушать его не рекомендуется.
Включив в нижеследующие секции «USE_BZIP2=YES»
Файл Makefile мы сформировали полное имя дистрибутивного файла.
В соответствии с рекомендациями [4] Makefile должен иметь Для многих популярных URL типа www.apahe.org,
следующий заголовок: sourceforge.net, www.kde.org и пр. определены специаль-
ные макросы, в которых перечислены все URL, на кото-
# New ports collection makefile for: contactsmenu рых можно найти данную программу. Например, если бы
# Date created: 01 Mar 2006
# Whom: Rashid N. Achilov <shelton@granch.ru> данная программа располагалась на сайте sourceforge.net,
# то строка MASTER_SITES была бы заменена следующей
# $FreeBSD$
комбинацией:
На этом заголовок кончается.
Внимание! Для впервые отправляемого порта строка MASTER_SITES= ${MASTER_SITE_SOURCEFORGE}
MASTER_SITE_SUBDIR= contactsmenu
$FreeBSD$ должна выглядеть именно так, как показана!
Первыми строками, идущими за заголовком, должны что означало бы загрузку файла с сайтов, входящих в зара-
быть следующие: нее определенный список из подкаталога contactsmenu.
36
администрирование
# cd /usr/ports/devel/portlint plist будет подставлено значение, превращающее строки
# make all install
с «%%NLS%%» в строки комментария. Обратите внимание,
После установки запускаем portlint в текущем каталоге что в этом случае зависимость от devel/gettext не вставля-
с ключами, которые включают все возможные проверки: ется. В противном случае NLS принимает значение пустой
строки, и зависимость от devel/gettext вставляется. Этот
# portlint -abvtAN прием (модификация pkg-plist в зависимости от параметров
... сборки порта) является очень широко распространенным.
WARN: /usr/ports/mail/contactsmenu/pkg-plist [4]: installing Запускаем portlint еще раз, получаем одно замечание
gettext translation files, please define USE_GETTEXT as appropriate
... про MASTER_SITES, которое игнорируем. Осталось со-
0 fatal errors and 9 warnings found. здать файл distinfo. Это просто. Система сама его создаст,
если ее об этом попросить:
Здесь приведена часть вывода portlint, в которой вы-
водится замечание. В последней строке приводится итог – # make makesum
сколько ошибок и сколько замечаний было обнаружено. От-
мечу сразу, что необходимо добиться устранения всех оши- Созданный файл имеет следующий вид:
бок и желательно всех замечаний. В данном случае portlint
MD5 (34479-contactsmenu-0.3.4b.tar.bz2) =
предупреждает о том, что устанавливаются файлы сооб- 65af4e3103c906ed13508bf1b2dd217a
щений gettext, но в порт не включено неявной зависимости SHA256 (34479-contactsmenu-0.3.4b.tar.bz2) =
88e05096b2f9c8d659be61daed5e6da977a056033a52c79789dade217709afee
от devel/gettext (это может привести к невозможности рабо-
SIZE (34479-contactsmenu-0.3.4b.tar.bz2) = 457076
ты с данными файлами). Для исправления данной ситуации
добавляем в секцию USE_* строку «USE_GETTEXT=YES» Теперь пробуем собрать программу, используя порт.
и повторно запускаем portlint. Для проверки правильности составления файла pkg-plist
в качестве корневого каталога сборки назначим /tmp/1 (пос-
# portlint -abvtAN ле деинсталляции программы не должно оставаться фай-
... лов или каталогов, которые она создает).
WARN: Makefile: Consider adding support for a WITHOUT_NLS knob to
conditionally disable gettext support. # make PREFIX=/tmp/1
...
WARN: Makefile: only one MASTER_SITE configured. Consider adding ===> Vulnerability check disabled, database not found
additional mirrors. ===> Extracting for contactsmenu-0.3.4b
... => MD5 Checksum OK for 34479-contactsmenu-0.3.4b.tar.bz2.
0 fatal errors and 2 warnings found. => SHA256 Checksum OK for 34479-contactsmenu-0.3.4b.tar.bz2.
===> Patching for contactsmenu-0.3.4b
===> contactsmenu-0.3.4b depends on file: /usr/X11R6/qt33/bin/moc - found
Что нам советуют сейчас? Добавить поддержку пара- ===> contactsmenu-0.3.4b depends on executable: gmake - found
===> contactsmenu-0.3.4b depends on shared library: kfontinst - found
метра WITHOUT_NLS для тех, кто не хочет устанавливать ===> contactsmenu-0.3.4b depends on shared library: kimproxy - found
===> contactsmenu-0.3.4b depends on shared library: intl - found
файлы языковых сообщений и увеличить количество зер- ===> Configuring for contactsmenu-0.3.4b
кал, на которых размещен данный файл. Здесь надо заме- ===> Building for contactsmenu-0.3.4b
cd: can’t cd to /usr/ports/mail/contactsmenu/work/34479-contactsmenu-0.3.4b
тить, что любой дистрибутив порта после его принятия в сис- *** Error code 2
тему дополнительно зеркалится на сайте проекта FreeBSD,
Stop in /usr/ports/mail/contactsmenu.
так что замечание о дополнительных зеркалах мы игнори-
руем, а вот замечание о WITHOUT_NLS исправим. Для это- Вот мы и получили первую ошибку. Она связана с не-
го добавим в Makefile следующий код: которой бестолковостью имен дистрибутивных файлов
на http://www.kde-apps.org, когда сам файл имеет имя с чис-
.if defined(WITHOUT_NLS) лом впереди, а каталог, упакованный внутри него, – без это-
PLIST_SUB+= NLS="@comment "
.else го числа. Для решения этой проблемы следует указать сис-
USE_GETTEXT= yes теме, что имя каталога, в которую будет распакован дис-
PLIST_SUB+= NLS=""
.endif трибутив, будет задано вручную. После (!!) переменной
MAINTAINER впишем следующую строчку:
а в файле pkg-plist изменим строки, описывающие файлы
языковой поддержки таким образом: WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION}
38
администрирование
OpenPKG: кроссплатформенная
система пакетов
Андрей Коврин
Несмотря на немалую, на мой взгляд, амбициозность проекта OpenPKG, знают о нем отнюдь
не многие. А ведь он возник не на пустом месте, и его разработчики, создав систему пакетов
с уникальными функциями, взялись за решение актуальной проблемы.
Концепция проекта OpenPKG ходников. И это только в Linux. А теперь добавьте к данно-
OpenPKG – это свободная кроссплатформенная (т.е. с пре- му семейству FreeBSD ports, NetBSD Packages Collection,
тензией на независимость от ОС) система пакетов програм- DMG-пакеты Mac OS X...Такое многообразие заставляет
много обеспечения, распространяемого под открытыми ли- задуматься и разработчиков. Несомненно, самый прос-
цензиями, и набор утилит для работы с ними. Как извес- той способ – ограничиться публикацией обычных архивов
тно, мир Open Source – это мир альтернативных решений, с исходниками продукта, а пользователи сами смогут соб-
и данное его свойство породило множественность не толь- рать пакеты как для себя, так и для всех обладателей оп-
ко в выборе конкретных программных продуктов для ко- ределенной среды. Ничуть не странно, что желающих ис-
нечного пользователя, но и в принципах разработки, в са- кать и вручную компилировать каждую программу не так
мых базовых аспектах построения свободных операцион- уж много. В то же время скучающих альтруистов, собира-
ных систем вообще. Наглядным отображением этого явля- ющих все новые релизы каких-то пакетов под свою систе-
ется разнообразие, наблюдаемое даже в таких «субкульту- му и выкладывающих это ко всеобщему удовольствию, то-
рах» Open Source, как GNU/Linux-дистрибутивы. Ядро ОС же зачастую не хватает. Все эти (а также и упущенные в на-
у всех одно (хотя и тут не обходится без вариаций на тему – писанном выше) проблемы побудили к рождению проекта
в виде общих и специализированных патчей от сторонних OpenPKG, регулярно подготавливающего наборы из уни-
разработчиков), но дальше, что называется, «кто во что фицированных пакетов с отобранным программным обес-
горазд». Несомненно, создатели постоянно оглядываются печением для различных систем.
на какие-то привычные и устоявшиеся положения архитек-
туры, но всякий хочет привнести что-то новое и неповтори- Кроссплатформенность и пакеты
мо-эксклюзивное в свой мир (неспроста уже давно не толь- Последним релизом OpenPKG (2.5) официально поддержи-
ко трубят о необходимости стандартизации GNU/Linux-дис- ваются следующие платформы: Linux (Fedora Core 4, Red Hat
трибутивов, но и предпринимают попытки добиться этого Enterprise Linux 4, OpenSUSE Linux 10, SUSE Linux 9.3 и 10.0,
путем создания сертификаций вроде Linux Standard Base). Gentoo Linux, Mandriva 10.2, Debian GNU/Linux 3.1), FreeBSD
Одной из ключевых составляющих каждого дистрибутива (4.11-SOLID, 5.4-STABLE, 6.0-STABLE, 7.0-CURRENT),
является система управления программным обеспечени- NetBSD 2.0.2, Solaris (8, 9, 10). Кроме того, известно, что ос-
ем – без этого затруднительно называть ОС готовой для новные функции OpenPKG работают в AIX 5.1 и HP-UX 11.11.
конечного использования. И здесь отчетливо прослежива- Общее число существующих и поддерживаемых на момент
ются концептуальные расхождения в подходах. Конечно, не последнего релиза пакетов – 579. Конечно, это существенно
каждый в состоянии разработать с нуля свою систему па- меньше, чем в Debian-репозитарии или в FreeBSD-портах,
кетов, и это положение значительно повлияло на числен- но стоит отметить, что OpenPKG – это, во-первых, не прос-
ность подобных систем, однако единого решения нет да- то коллекция всех доступных приложений вообще, а отоб-
же среди GNU/Linux-дистрибутивов. Кто-то использует RPM, ранное лучшее и самое нужное, и во-вторых, проект ори-
кто-то – DEB, некоторые – систему портов, всегда найдут- ентирован на применение на серверных станциях. То есть
ся любители собирать приложения самостоятельно из ис- OpenPKG практически не содержит приложений для на-
40
администрирование
стольных ПК. Тем не менее, представлены и некоторые пускать/останавливать/перезапускать отдельные (или все
базовые программы для удобной работы в консоли: обо- вообще) пакеты, а также выводящий различные конфигу-
лочки Bash и Zsh, текстовые редакторы Emacs и Vim, веб- рационные значения (при вызове с --config). В качестве до-
браузеры Lynx и Links, почтовый клиент Mutt, FTP-клиен- полнения представлен пакет openpkg-tools – после его инс-
ты lftp и ncftp, файловый менеджер MC и т. п. Из сервер- талляции появляются утилиты, которые, используя при сво-
ного программного обеспечения можно выделить наличие ей работе make, binutils и gcc, позволяют автоматизировать
Apache, BIND, INN, MySQL, OpenLDAP, OpenSSH, OpenSSL, процесс сборки и установки пакетов из исходников с уче-
Postfix, PostgreSQL, ProFTPD, PureFTPd, Samba, Sendmail, том их зависимостей (команда openpkg build).
SpamAssassin, SQLite, Squid. В общем, привычный набор
знакомых и распространенных среди серверов пакетов. Подводя итоги
Не забыто и ПО для разработчиков: GCC, GDB, Subversion, OpenPKG – основанная исключительно на Open Source тех-
Autoconf, Automake, Make, Perl, PHP, Python, Ruby, Tcl... нология, предназначенная для упрощения работы с пакета-
ми на множестве разнородных UNIX/Linux-серверов. Про-
Подробности об устройстве OpenPKG ект предоставляет всю необходимую унифицированную
Продукция OpenPKG распространяется в виде модифици- инфраструктуру управления программным обеспечени-
рованных для поддерживаемых платформ RPM-пакетов ем на различных платформах, облегчая тем самым жизнь
(спецификации для каждой ОС написаны разработчиками системному администратору в инсталляции и обновлении
OpenPKG с нуля) двух традиционных типов: binary и source. привычных пакетов, общее количество которых превыша-
При этом рекомендуемыми к использованию считаются, ес- ет 500.С помощью OpenPKG можно как быстро разверты-
тественно, пакеты с исходниками – единые для всех плат- вать серверы из бинарных пакетов, так и (почти?) полно-
форм. К бинарным сборкам, существующим в виде отде- стью автоматизировать процесс сборки программных ком-
льных для каждой ОС коллекций, советуют обращаться понентов (с учетом необходимых оптимизаций и особеннос-
только в исключительных случаях, когда нет возможнос- тей платформ). OpenPKG позволяет создавать множество
ти уделить процессу компиляции необходимое для это- полностью самодостаточных, изолированных сущностей
го время. Связано такое положение вещей хотя бы с тем, с пакетами в единой системе (причем с возможностью ис-
что зачастую некоторые функции приложений «вшивают- пользования одной сущностью пакетов из другой, что сво-
ся» в бинарные файлы, в результате чего встроенные оп- дит на нет необходимость установки одинаковых пакетов
ции могут быть изменены только путем пересборки. Вы- в различных сущностях – это своего рода система зависи-
бор формата RPM разработчики объясняют тем, что это мостей? Нет, это больше похоже на случай, когда на одном
единственное из всех рассмотренных ими решений (к сло- сервере множество VPS под Gentoo Linux, а база портежей
ву, исследовать они успели еще и Debian dpkg/apt, FreeBSD для всех виртуальных серверов монтируется одна). Инстал-
ports с pkg_xxx, SVR4 pkgxxx, epkg, Build’n’Play, GNU Stow, лируемое ПО максимально обособлено от системы и неза-
Opt-Depot, а также другие утилиты), удовлетворяющее висимо, может быть полностью удалено менеджером без
всем основным требованиям и предоставляющее подде- потребности в дополнительных манипуляциях. Разработчи-
ржку полного цикла жизни пакета. Помимо пакетов с са- ки OpenPKG беспокоятся и о безопасности поставляемых
мим программным обеспечением в дистрибутив релиза пакетов, что особенно важно, учитывая серверную специ-
OpenPKG входят и средства для создания собственного ок- ализацию, подразумевающую возможность использова-
ружения системы пакетов и удобной работы с ними. Shell- ния поставляемого ПО на общедоступных (через локаль-
скрипт openpkg-<version>-<opkg-release>.src.sh, доступ- ную или глобальную сеть) машинах. На регулярной осно-
ный в директории с исходниками, формирует базовое ок- ве для всех официально поддерживаемых пакетов выпус-
ружение для OpenPKG, после чего за работу берется спе- каются предупреждения об уязвимостях в безопасности
цифичный для структуры скрипт openpkg-<version>-<opkg- (security advisories, SA) и исправляющие эти проблемы об-
release>.<arch>-<platform>-openpkg.sh, устанавливающий новления в виде UPD-файлов формата SRPM. Поддержка
менеджер пакетов в систему (для его запуска требуются распространяется только на последние версии OpenPKG
права root). Для первой установки OpenPKG или ее обнов- (на данный момент это 2.4 и 2.5). Для цифровой подписки
ления далее необходимо проинсталлировать пакет openpkg уведомлений о безопасности и SRPM-пакетов официаль-
(как отмечают разработчики в своем руководстве, «вос- ных релизов OpenPKG используются GnuPG и OpenPGP.
пользуйтесь OpenPKG для обновления OpenPKG!»). Далее С этого года поддержкой проекта занимается некоммер-
с помощью удобного консольного менеджера openpkg мож- ческая организация OpenPKG Foundation e.V. Финансы и ре-
но управлять всеми доступными пакетами (устанавливать, сурсы ей (на данный момент) предоставляет тройка немец-
удалять, собирать из исходников, просматривать инфор- ких спонсоров. Следующий релиз OpenPKG – 2.6 – наме-
мацию и т.п.).Основные административные операции осу- чен на апрель 2006 года.
ществляются через команду openpkg rpm, принимающую
параметры, знакомые любому пользователю RPM-основан- Ссылки
ных систем. Действие некоторых ключей распространяет- 1. Сайт OpenPKG – http://www.openpkg.org.
ся только на binary- или только на source-пакеты, а, напри- 2. OpenPKG FAQ – http://www.openpkg.org/faq.html.
мер, -Uvh для бинарного проводит установку или обновле- 3. OpenPKG Quick Reference – http://www.openpkg.org/doc/
ние, а для src – распаковку. Существует и собственный «за- quickref/openpkg.txt.
грузочный скрипт» (<корень_opkg>/etc/rc), позволяющий за- 4. OpenPKG 2.5 на FTP – ftp://ftp.openpkg.org/release/2.5.
MikroTik – Router OS
Сергей Яремчук
Типичными задачами, стоящими перед системным администратором, являются организация
совместного доступа в Интернет и учет трафика. Несмотря на простоту определения, при более
детальном подходе они распадаются на сотни подзадач, полноценно справиться с которыми
под силу далеко не каждому.
С
егодня разработано достаточ- ализированные дистрибутивы, постро- дет речь, не похож ни на один из тех,
но инструментов, позволяющих енные на базе GNU/Linux или различ- с которыми мне приходилось ранее
упростить решение этой зада- ных BSD-систем [2, 3, 4], которые поз- иметь дело автору.
чи как полностью, так и отдельных ее воляют превратить старый системный
участков. Среди программных реше- блок в надежный маршрутизатор. Во- Возможности MikroTik
ний это различные утилиты для ана- обще все дистрибутивы чем-то похо- Честно говоря, если бы MikroTik не был
лиза журналов и вывода результатов, жи, тот же Linux только маленький, от- предложен моим интернет-провайде-
графические интерфейсы к програм- личаются составом приложений, воз- ром для организации доступа к нашей
мам настройки сети, сервисов и меж- можностью обновления, наличием спе- районной сети, то, вероятно, я еще дол-
сетевого экрана, VPN, системы защи- цифических утилит для упрощения их го бы не знал об его существовании,
ты и прочее. Особой популярностью настройки. Латышский дистрибутив т.к. на всех профильных интернет-про-
у администраторов пользуются специ- GNU/Linux MikroTik [1], о котором пой- ектах информация о MikroTik отсутс-
42
администрирование
твует. Теперь же после полугода эксплуатации можно от- пользовать MikroTik в течение неограниченного времени.
метить стабильную работу сервера. За этот период ни ра- В настоящий момент имеется 6 уровней лицензии. Уро-
зу не понадобилось перезагружать сервер. Для организа- вень 0 означает работу без лицензии. Лицензия уровня 1
ции доступа в Интернет сети из сотни пользователей ис- или SOHO предоставляется бесплатно и имеет ограниче-
пользовался старый системный блок с установленным Пен- ние по количеству максимальных соединений PPTP, PPPoE,
тиумом 233 с 128 Мб оперативной памяти и жестким дис- Queues, NAT, EoIP и DHCP, в этом случае также отключе-
ком на 2 Гб. Максимальная загрузка процессора составля- на поддержка беспроводных устройств, веб-кеша и Radius-
ла всего 25%, используемая память не превысила значе- клиента, нет технической поддержки и невозможно обнов-
ния 40 Мб, а жесткий диск заполнен на 50 Мб. Раз уже за- ление дистрибутива. Стоит особо отметить, что лицензия
шла речь о системных требованиях, то в официальных ру- привязана к Software ID, его значение администратор полу-
ководствах они еще ниже, чем указанные: частота процес- чит во время установки системы. При этом Software ID (и со-
сора от 100 МГц, ОЗУ 32 Мб (рекомендуется от 64 Мб), жес- ответственно и ключ лицензии) изменится только при ус-
ткий диск от 64 Мб. тановке дистрибутива на другой жесткий диск, при заме-
Кроме того, на сайте проекта можно купить предуста- не остального оборудования маршрутизатора или добав-
новленную на IDE Flash-модуль дистрибутива который мо- лении нового оборудования новый ключ получать не при-
жет использоваться вместо жесткого диска. Кроме сис- дется. Стоимость других уровней лицензирования колеб-
темных требований, удивили и поистине богатые возмож- лется от 45 до 250 у.е.
ности вкупе с легкостью настройки и администрирования.
Приведу лишь небольшую часть из возможностей дист- Установка
рибутива: На момент написания статьи актуальной была версия 2.9.14,
Межсетевой экран и NAT – полноценная фильтрация о которой и пойдет речь далее, хотя со времени версии 2.8
пакетов, source и destination NAT, классификация паке- процесс установки не изменился, увеличилось только ко-
тов по МАС, IP-портам, опциям протоколов, интерфей- личество доступных пакетов. Установить систему можно
сам, внутренним маркированным пакетам, содержимо- тремя способами:
му, P2P-фильтрация. Поддержка мостов между интер- при помощи загрузочного CD;
фейсами с фильтрацией пакетов. с дискет (DiskMaker);
Маршрутизация – статическая, multi-path, на основе по- через сеть (загрузившись при помощи флоппи ли-
литик (совместно с межсетевым экраном), динамичес- бо сетевой карты с поддержкой загрузки по сети PXE
кая маршрутизации: RIP v1/v2, OSPF v2, BGP v4; или EtherBoot).
Управление качеством облуживания – маркировка по
IP, сети и подсети, порту; управление полосой пропус- Кроме того, на сайте доступен архив, который при помо-
кания, задание скорости и прочее. щи программы PhysDiskWrite для Windows либо dd в UNIX не-
Полноценный HotSpot – создание plug&play точек кол- обходимо перенести на CompactFlash. Первый вариант яв-
лективного пользования Интернет с аутентификацией ляется самым простым и распространенным (кроме покуп-
на RADIUS-сервере, с контролем работы в реальном ки предустановленного), его и будем рассматривать. Ска-
времени, заданием скорости, объема, времени работы чиваем с сайта архив, содержащий ISO-образ, распаковы-
клиента, создание walled-garden защищенных зон. ваем, записываем, выставляем загрузку с CD-ROM в BIOS
Поддержка различных Point-to-Point-протоколов – и загружаемся. Никаких опций во время загрузки не предус-
PPTP, PPPoE и L2TP с поддержкой RADIUS, PAP, CHAP, мотрено, на первом экране пользователю предлагается вы-
MSCHAPv1 и v2 протоколов аутентификации; MPPE брать приложения. Здесь все просто: перемещаемся при по-
шифрования; компрессии и дозвона по требованию для мощи стрелок (или клавиш <p> и <n>), наводим на нужное
PPPoE. приложение и выбираем его при помощи пробела. При на-
Туннели – IPIP, EoIP (Ethernet over IP). ведении на пункт внизу экрана выдается краткое поясне-
ние, и в скобках указываются зависимости, system явля-
А еще поддержка IPSec, FTP и HTTP/HTTPS кэширую- ется обязательным к установке. Нажатие на <а> приведет
щий прокси-сервер, DHCP-сервер и клиенты, клиент и сер- к выбору всех пунктов, <m> – установит только минималь-
вер Network Time Protocol, Bonding, журналирование работы ный набор. После выбора нажимаем на <i> (install), и про-
межсетевого экрана, действий пользователя и поведения исходит собственно установка. Жесткий диск будет разме-
системы, генерация простых отчетов. Предусмотрена воз- чен автоматически, все данные будут уничтожены, хотя вам
можность настройки GPRS-соединения. Но самое интерес- будет предложено сохранить предыдущую конфигурацию
ное, что размер дистрибутива чуть больше 14 Мб. MikroTik. Что очень полезно, так как SOHO-лицензия не под-
держивает обновлений, а так есть возможность сохранить
Лицензия все настройки при полном обновлении системы. Обратите
MikroTik не является полностью свободным продуктом, внимание, что все версии MikroTik до 2.8 не поддерживают
и за все его возможности придется заплатить. Без ли- более одного жесткого диска. В новых версиях второй диск
цензии установленный сервер проработает ровно 24 часа используется только для кэширования веб-страниц. После
(при выключении отсчет времени останавливается). По ис- распаковки приложений вы получите сообщение о необхо-
течении этого срока либо потребуется ввести ключ, либо димости нажать Enter для перезагрузки. Вот, собственно,
переустановить систему. Полученный ключ позволяет ис- и все. После установки CD-ROM можно отключить.
[admin@MikroTik] > ip
[admin@MikroTik] ip>
address: 192.168.0.1/24
interface: ether1
Теперь доступ к серверу можно получить различными Чтобы вернуться на уровень вверх, необходимо набрать
способами: локальная консоль, терминал, подключенный две точки. Для удобства сетевым интерфейсам можно дать
к COM-порту (9600 бит/с, 8 бит данные, 1 стоповый, аппа- более удобные имена:
ратное управление потоком RTS/CTS), telnet, SSH, MikroTik
MAC Telnet, веб-интерфейс Webbox и графическая утили- [admin@MikroTik] interface> set ether1 name=Local; ↵
set ether2 name=Public
та Winbox.
Первоначальные настройки осуществляются исключи- Теперь ether1 будет называться Local, а ether2 – Public.
тельно при помощи локальной консоли. Для регистрации И не забываем добавить шлюз:
используем логин: admin с пустым паролем. После чего бу-
дет выведено следующее сообщение, в последней стро- [admin@MikroTik] ip route> add gateway=192.168.1.100/24
ке которого вам будет показан необходимый для регист-
рации software ID, в моем случае это 4NHQ-GWN. Теперь Да, чтобы выключить или перезагрузить компьютер,
заходим на сайт проекта и в правом верхнем углу, подпи- необходимо перейти в меню system и набрать shutdown
санном как «Account Server», выбираем «New», заполняем или reboot.
данные и ждем подтверждения регистрации по электрон- С командами разобраться легко, но понадобятся
ной почте. После чего регистрируемся в системе, вводим они только при удаленном управлении при помощи ssh
Software ID, и на ваш электронный адрес придет лицензи- или telnet. Для первоначальной настройки лучше воспользо-
онный ключ. В данном случае использовалась бесплатная ваться скриптом setup и настроить только внутренний интер-
SOHO-лицензия, при необходимости затем всегда можно фейс, остальную настройку производить удаленно при по-
поднять уровень лицензирования. мощи более наглядных утилит Webbox и Winbox.
Строка приглашения показывает имя маршрутизато- И не забываем сменить пароль администратора.
ра и уровень меню:
[admin@MikroTik] > password
[admin@MikroTik] > old password:
new password: ************
Попробовав работу ряда привычных юниксовских ути- retype new password: ************
44
администрирование
Утилиты конфигурирования Webbox
и Winbox
Для вызова утилиты Webbox достаточно набрать в веб-бра-
узере IP-адрес маршрутизатора (рис. 1), здесь же можно
просмотреть графики загрузки (рис. 2). Зарегистрировав-
шись вверху окна, можно получить доступ к некоторым
настройкам системы (рис. 3), информации о работе мар-
шрутизатора, вывести простые отчеты. С первой страни-
цы можно скачать утилиту Winbox, которая предоставля-
ет большие возможности по конфигурированию системы
(рис. 4). В отличие от Webbox Winbox может работать по за-
щищенному каналу, для чего при установке нужно выбрать
пакет security. Режим можно определить по тому, с каким
портом происходит работа. В случае незащищенной рабо-
ты используется 8290 TCP-порт и 8291 – в случае шифро-
ванного соединения. Все настройки удобно собраны по от- Рисунок 3. Утилита веб-администрирования Webbox
дельным пунктам меню и понятны, дополнительные опции
свернуты и не мешают.
При каждом соединении с Winbox вам будут напоминать
о необходимости введения лицензионного ключа и остав-
шемся времени, поэтому лучше сделать это сразу. Для на-
стройки второго интерфейса заходим в «IP → Addresses»
и вводим его IP-адрес.
В моем случае необходимо было настроить PPPoE-под-
ключение к провайдеру услуг Интернет. Для этого заходим
в пункт PPP во вкладке Interfaces, нажимаем на «+», выбира-
ем «PPPoE Client», далее заполняем все необходимые поля
и нажимаем кнопку «OK». Если всё введено правильно, под-
ключение заработает, что можно тут же проверить, кликнув
на имени и перейдя затем на вкладку «Traffic». Хотя, набив
руку, можно ввести это все и через ssh. Например:
Шлюз аутентификации
пользователей NuFW
46
администрирование
Ч
тобы удовлетворять всем требо- релиз через два года – в марте 2005 г.
ваниям безопасности, сегодняш- Поэтому проекту могут быть присущи
ние системы должны работать болезни молодости, и иногда возни-
на уровне пользователей. Но класси- кают проблемы с безопасностью, на-
ческая схема основывается на пред- пример сообщение о возможности
положении: один пользователь → один DOS-атаки [4].
компьютер → один IP-адрес. То есть
системный администратор для реше- Принцип работы
ния проблемы управления пользова- В основе работы NuFW лежит взаи-
телями фактически должен работать модействие с Netfilter – механизмом
на IP-уровне. В простейшем случае фильтрации сетевых пакетов, появив-
это решается статическим закрепле- шимся в ядре Linux в версии 2.4. Поэ-
нием IP-адреса, что может быть эф- тому в настоящее время такой шлюз
фективно только в небольших сетях. аутентификации может работать толь-
В то же время сегодня доволь- ко на Linux, хотя разработчики плани-
но обычна ситуация, когда несколь- руют разработку NuFW и для других
ко пользователей используют одну операционных систем, в первую оче-
и ту же многопользовательскую сис- редь BSD.
тему, и в таком случае установленные Для обеспечения услуг доступа ис-
правила будут действовать для всех пользуются два демона, которые могут
работающих в одной системе одина- быть запущены на разных компьюте-
ково. рах. Сервер аутентификации – nuauth
Один из вариантов решения про- и работающий на шлюзе – nufw.
блемы описан в [8]. Проект NuFW Последний обеспечивает связь
(Now User Filtering Works) предлагает с Netfilter через цель «-j QUEUE», и та-
несколько иной подход к решению – ким образом осуществляется фильтра-
«authenticating gateway». NuFW позво- ция трафика (рис. 2).
ляет проводить аутентификацию поль- Стоит отметить, что в ядре 2.6.14
зователя для каждого соединения, пы- появилась новая, более мощная оп-
тающегося получить доступ к межсете- ция NFQUEUE, что позволяет совмес-
вому экрану и некоторым другим сер- тно с NuFW использовать, например,
висам сети. Фактически после аутен- и IDS Snort в режиме inline (системы
тификации всегда можно однознач- остановки атак). На остальных ком-
но сказать, что в данный момент вре- пьютерах должны быть установле-
мени 192.168.0.2 = Вася Пупкин. Та- ны клиентские программы, при помо-
кой подход позволяет не только огра- щи которых будет осуществляться ау-
ничивать доступ, тонко реализуя по- тентификация. Такие программы до-
литику безопасности, но и регистри- ступны для Linux, FreeBSD, MacOS X
ровать деятельность, выполнять под- и Windows. Когда клиент пытается от-
счет трафика, выставлять различное править пакет через межсетевой эк-
значение QoS (Quality of Service), осу- ран или шлюз, демон nufw связывается
ществлять маршрутизацию, динами- с демоном nuauth, который подтверж-
чески изменять списки контроля до- дает либо отрицает полномочия поль-
ступа, опираясь на данные пользова- зователя. При этом фактически внима-
теля, а не на IP. ние уделяется первой фазе установле-
Также правила фильтрования могут ния соединения, т.е. SYN-пакетам.
в этом случае использовать и данные Начиная с версии 1.1.0 обмен меж-
о приложениях, операционной системе, ду клиентами и nuauth ведется в UTF-8
используемых клиентом (рис. 1). (если при конфигурировании исполь-
Хотелось бы отметить, что проект зовалась опция «--with-utf8»).
относительно молодой. Сама идея воз- Система аутентификации пользо-
никла в 2001 году при попытке доба- вателя выполнена в виде модуля. Де-
вить поддержку LDAP к прокси, обес- мон nuauth для аутентификации поль-
печивающему безопасный доступ зователей и групп может использовать
к telnet/ftp-сервисам. Исходный про- сервер LDAP, PAM/NSS, базу в фор-
ект имел название Net Security Master мате DBM, обычный текстовый файл
$ ./configure --with-ldap ↵
--with-system-auth ↵
--with-mysql-log ↵
--sysconfdir=/etc/nufw/ ↵
--prefix=/usr --with-debug
$ make
# make install
48
администрирование
# mkdir /etc/nufw/ ля, время ожидания подтверждения от клиента и количес-
тво повторных запросов в случае неудачи. А также время
хранения списков доступа в кэше, максимальное количес-
Настраиваем nuauth тво клиентов и серверов nufw, параметры доступа к серве-
Теперь конфигурационный файл для демона nuauth – рам LDAP, MySQL и PostgreSQL и уровень регистрации со-
/etc/nufw/nuauth.conf. Приведу только основные парамет- бытий, и другие параметры.
ры. Копируем его на место и конфигурируем.
Последние настройки и запуск
# cp conf/nuauth.conf /etc/nufw/ В составе дистрибутива в подкаталоге certs имеются го-
# vi /etc/nufw/nuauth.conf
# Файл /etc/nufw/nuauth.conf товые сертификаты, предназначенные для тестирования,
# Адрес, на котором демон nuauth будет принимать там же лежат и сертификаты разработчиков. Копируем их
# клиентов, в нашем случае со всех доступных адресов
nuauth_client_listen_addr="0.0.0.0" в /etc/nufw/. Для nufw:
# IP-адрес, на котором nuauth слушает пакеты nufw
nuauth_nufw_listen_addr="127.0.0.1"
# Порт для запросов nufw # cp conf/certs/nufw-* /etc/nufw/
nuauth_gw_packet_port=4129
# Порт для пакетов аутентификации пользователей
nuauth_user_packet_port=4130 И для nuauth:
# Адрес и порт nufw маршрутизатора, на котором он будет
# ожидать ответ в незащищенном UDP, – это локальный адрес.
# В TLS-режиме это может быть список адресов #cp conf/cert/nuauth*.pem /etc/nufw/
# nufw_gw_addr="192.168.75.1 192.168.75.254" #cp conf/cert/NuFW*.pem /etc/nufw/
nufw_gw_addr="127.0.0.1"
nufw_gw_port=4128 В рабочей системе создадим свои сертификаты.
# Что делать в том случае, когда пользователь является
# членом групп с противоречивыми установками
# (0 - нет, 1 - разрешить) # openssl req –new –x509 –nodes –days 365 –out ↵
nuauth_prio_to_nok=1 /etc/nufw/nuauth-cert.pem –keyout /etc/nufw/nuauth.pem
# Аутентификация может работать в двух режимах. # openssl req –new –x509 –nodes –days 365 –out ↵
# POLL: клиент отправляет пакет в каждом случае, когда /etc/nufw/nufw-cert.pem –keyout /etc/nufw/nufw-key.pem
# требуется аутентификация в этом режиме, трафик меньше,
# поэтому он может использоваться для удаленных
# либо сильно загруженных сетей Файл users.nufw содержит списки пользователей. Запи-
# PUSH: демон nuauth посылает предупреждение клиенту си в нем состоят из строк вида:
# о необходимости аутентификации (лучшее время отклика)
nuauth_push_to_client=1
# Ограничения регистрации пользователей Username: passwd:uid:gid[,gid,gid]
# 0 : без ограничений (по умолчанию)
# 1 : один вход для пользователя
# 2 : один вход для IP Обратите внимание, в файл заносится пароль в чистом
# nuauth_connect_policy=1
# Для клиентов, не поддерживающих протокол NuFW, или если виде, а не хэш. Это не совсем хорошо с точки зрения безо-
# его применение затруднено, например, использованием NAT пасности, но при установке соответствующих прав в данном
# или межсетевых экранов, разделяющих сети, применяется
# аварийная (hello) аутентификация, базирующаяся только случае в принципе приемлемо. Например:
# на IP и поддерживающая только одного пользователя.
# Такой способ работает для всех типов потоков IP
nuauth_hello_authentication=0 sergej:passwd1:1:102
nuauth_do_ip_authentication=0 admin:admin_passwd:2:100,102,103
# Модуль аутентификации пользователей
# (libldap, dbm, plaintext, system) Для отключения пользователя достаточно добавить ка-
nuauth_user_check_module=»libdbm» кой-либо знак к паролю (обычно «*» или «!»). Списки контро-
# Модуль списков контроля доступом (libldap, libplaintext)
nuauth_acl_check_module=»libplaintext» ля доступа в этом случае хранятся в файле acls.nufw, в кото-
nuauth_acl_cache=1 ром вы найдете их подробное описание. Например, для до-
# Модуль IP-аутентификации (libipauthident, rpc)
nuauth_ip_authentication_module="libipauthident" ступа к ssh для пользователей Linux, входящих в группы 100
# Ниже перечислены файлы для хранения сертификатов и ключей и 102 с любого адреса, пишем такое правило.
# секретный ключ сервера (по умолчанию CONFIGDIR/nuauth.pem)
nuauth_tls_key="/etc/nufw/nuauth.pem"
# Сертификаты сервера [ssh]
nuauth_tls_cert="/etc/nufw/nuauth-cert.pem" decision=1
nuauth_tls_cacert="/etc/nufw/NuFW-cacert.pem" gid=100, 102
# Использование клиентом сертификата вместо пароля proto=6
nuauth_tls_request_cert=0 SrcIP=0.0.0.0/0
# Регистрация событий: «mysql», «pgsql», «syslog» SrcPort=1024-65535
nuauth_user_logs_module="syslog" DstIP=0.0.0.0/0
# Регистрация деятельности пользователей: syslog, mysql, DstPort=22
# script. В последнем случае при подключении пользователей App=/usr/bin/ssh
# будет запущен скрипт, лежащий в CONFDIR/user-up.sh OS=Linux
# и при разъединении CONFDIR/user-down.sh
nuauth_user_session_logs_module="syslog mysql"
# Списки пользователей и ACL при использовании Для доступа к сервисам без ограничений группе 100.
# для аутентификации текстовых файлов
plaintext_userfile="/etc/nufw/users.nufw"
plaintext_aclfile="/etc/nufw/acls.nufw" [full]
# Преобразование имени пользователя в верхний регистр decision=1
# system_convert_username_to_uppercase=0 gid=100
proto=6
SrcIP=0.0.0.0/0
Также в файле можно указать время, через которое бу- SrcPort=1024-65535
дет производиться повторная аутентификация пользовате- DstIP=0.0.0.0/0
50
безопасность
Алексей Шелестов
У
течка даже части конфиденци- гает возможность физического доступа посредством шифрования. Мы рас-
альной информации может нанес- к носителям информации. Это означает, скажем вам о возможностях комп-
ти непоправимый вред компании, что традиционные средства разграниче- лекса Zserver Suite компании SecurIT
начиная от потери большей части кли- ния доступа, которыми могут быть ос- (http://www.securit.ru). В состав комп-
ентов до остановки бизнеса. Мы зачас- нащены информационные системы, не лекса входят программные продукты
тую отдаем сервер или жесткий диск решают проблемы, поскольку физичес- Zserver и Zbackup, которые помогут
на ремонт или замену, выбрасываем кий доступ к носителям означает обход минимизировать риски утечки кон-
старые архивные ленты, в лучшем слу- всех таких средств защиты. Действи- фиденциальных сведений.
чае тщательно стараясь удалить не- тельно, как может помочь корпоратив- Zserver позволит вам эффективно:
когда хранимую на нем конфиденци- ный firewall в случае, если злоумышлен- защищать разделы жестких дисков
альную информацию низкоуровневым ник каким-либо образом получил в свое от несанкционированного доступа;
форматированием, либо специализи- распоряжение жесткий диск с сервера оперативно блокировать и уничто-
рованными утилитами, что не всегда или архивную магнитную ленту? жать информацию с любого ПЭВМ,
бывает успешно. Не стоит и недооценивать вероят- имеющего соединение с сервером,
Некогда популярные уничтожите- ность наступления такого случая. Толь- радиоустройства, либо телефона;
ли конфиденциальной информации ко за 2005 – начало 2006 года произош- скрывать сам факт наличия конфи-
на жестких дисках посредством элек- ло несколько десятков крупных инци- денциальной информации на сер-
тромагнитного импульса уходят в про- дентов, связанных с пропажей носите- вере;
шлое, поскольку ценность хранимой лей конфиденциальной информации безопасно транспортировать ин-
информации стремительно растет, с участием таких всемирно известных формацию на любых носителях;
разница между актуальными данны- компаний как Citigroup, Ernst & Young, контролировать и разграничивать
ми и архивной копией зачастую кри- Bank of America и т. д. доступ к защищаемой информации.
тична для бизнеса. Для того чтобы защитить инфор-
Кроме этого, в последнее время все мацию на носителе, к которому возмо- Общее описание
большую популярность завоевывает жен физический доступ посторонних программно-аппаратного
аутсорсинг различных информацион- лиц, необходимо использовать крип- комплекса
ных служб, и нередко возникает ситуа- тографические средства. Только ког- Программно-аппаратный комплекс
ция, когда сервер с конфиденциальной да информация на носителе зашиф- Zserver – средство защиты конфиден-
информацией размещается в сторон- рована, а ключ шифрования хранит- циальной информации от несанкциони-
нем дата-центре, а архивные ленты хра- ся в недоступном месте, можно не бес- рованного доступа посредством шиф-
нятся в депозитарии за пределами кон- покоиться, если сам носитель окажет- рования разделов диска «на лету».
тролируемой территории предприятия. ся в руках злоумышленника. Сегодня Предназначен для защиты инфор-
В этих случаях количество посто- речь пойдет об одном из эффектив- мации, хранимой как на корпоратив-
ронних людей, которые могут полу- ных способов защиты конфиденциаль- ных серверах, так и на рабочих стан-
чить доступ к информации, сущест- ной информации, хранящейся на дис- циях под управлением следующих опе-
венно возрастает, и, что гораздо ху- ках и лентах, с применением криптог- рационных систем:
же, владелец этой информации теря- рафических средств. MS Windows NT/2000/XP/2003
ет возможность контролировать про- На рынке программного обеспече- Novell NetWare
цесс доступа к информации. ния существует несколько програм- Linux
Рассмотренные угрозы имеют од- мно-аппаратных комплексов для за-
ну общую черту – они характеризуются щиты конфиденциальной информа- Zserver работает с простыми и ди-
тем, что модель нарушителя предпола- ции на рабочих станциях и серверах намическими дисками (составными,
52
безопасность
зеркальными, Raid-массивами). Имеется возможность
установки Zserver на кластер из серверов на основе MS
Cluster Service.
Требования к Zserver определяются требованиями опера-
ционной системы. Zserver неприхотлив в ресурсах. Основные
ресурсы требуются на реализацию криптографических про-
цессов симметричными алгоритмами шифрования. Шифро-
вание и дешифрование данных осуществляется «на лету»
при соответствующих операциях записи и чтения. Комплект
Zserver состоит из дистрибутива программного обеспечения,
устройства для работы со смарт-картами ACR ACS-30U (USB),
лицензионного ключа защиты (LPT или USB), двух микро-
процессорных смарт-карт для хранения ключей, устройства
«красной кнопки», подключаемой к COM-порту.
Структура программной части Zserver состоит из трех
модулей:
сервер защиты данных (ядро системы) Консоль администратора Zserver
консоль управления сервером
модуль подачи сигнала тревоги осуществляется на основе Diffie-Hellman EKE, данные шиф-
руются 128-битным ключом по алгоритму RC5.
Установка Zserver проста и не требует дополнительных
навыков. Весь процесс инсталляции занимает не более Алгоритмы шифрования
10 минут с одной перезагрузкой. Генерация ключа шифрования осуществляется при непос-
редственном участии пользователя, с применением слу-
Сервер защиты данных чайных чисел. В качестве генератора случайных чисел ис-
Сервер защиты данных (ядро системы) устанавливает- пользуются движения мыши.
ся непосредственно на сервер с защищаемой информа- В Zserver предусмотрено формирование ключа шифро-
цией. Запускается с помощью службы «SecurIT Zkernel» вания с помощью двух симметричных алгоритмов:
от пользователя System в автоматическом режиме при RC5 – 128-битным ключом
подсоединенном лицензионном ключе защиты. Служба AES – 256-битным ключом
не имеет зависимостей, что делает её устойчивой к сбо-
ям в операционной системе. В отсутствии ключа защи- Возможна также поддержка российского симметрич-
ты данную службу запустить невозможно. Если при уже ного алгоритма ГОСТ 28147-89 с 256-битным ключом, схо-
запущенной службе отключить физически ключ защиты жим с алгоритмом DES, но работающим гораздо быст-
Zserver, то через некоторое время на этом сервере про- рее. На момент подготовки материалов статьи была воз-
исходит «тревога». можность взлома ключа симметричных алгоритмов дли-
ной до 64 бит. Ключ RC5 длинной в 64 бит был взломан
Консоль управления за 1 757 дней с привлечением 58 747 597 657 компьютеров
Всё управление системой Zserver ведется с единой для всех пользователей. Для этого потребовалось перебрать око-
продуктов компании SecurIT консоли управления. Она мо- ло 15 769 938 165 961 326 592 ключей. При скорости пе-
жет устанавливаться как на сервер, так и на любую рабо- ребора 100 000 000 ключей в секунду потребуется около
чую станцию, имеющую соединение с сервером по прото- 117 375 055 576 687907 000 дней для подбора ключа шиф-
колу TCP/IP. В случае использования консоли управления рования длинной в 128 бит.
на сервере, соединение осуществляется по внутренней Использование предлагаемых алгоритмов длиной клю-
петле на TCP-порт. По умолчанию используется 1245 порт. ча шифрования в 128 и 256 бит сделает неактуальной похи-
Для минимизации риска номер TCP-порта можно изменить щенную у вас информацию, так как на подбор ключа для до-
с помощью настроек Zserver. ступа к данным потребуется значительное время и вычис-
Для разграничения полномочий и доступа к консоли ис- лительные ресурсы, а сама кража станет абсолютно бес-
пользуется встроенная авторизация средствами Zserver, смысленной идеей.
что позволяет разграничить администраторов сервера и ад- Хранение ключей шифрования возможно на смарт-
министраторов безопасности. карте, либо в файле с расширением *.key. При хранении
С версии 3.0 Zserver возможно управление настройка- ключа шифрования в файле – защиты не предусмотре-
ми нескольких серверов одновременно с одной консоли уп- но. С целью обеспечения надежной защиты ваших кон-
равления. Консоль управления Zserver позволяет управлять фиденциальных данных ключ необходимо хранить толь-
пользователями, ключами, носителями и общими ресурса- ко на смарт-карте.
ми. Соединение консоли управления с сервером защиты
данных осуществляется по зашифрованному каналу пос- Кворум ключей
редством автоматически создаваемого одноразового сес- Для того чтобы один человек не мог совершить каких-либо
сионного ключа. Процедура выработки сессионного ключа операций, критичных для бизнеса или целостности самих
54
безопасность
Программная кнопка инициируется щелчком курсора мы- сценарии при возникновении событий на сервере при воз-
ши в трее панели задач на любой рабочей станции, имею- никновении тревоги, открытия-закрытия диска и т. п. К при-
щей подключение к серверу по TCP-порту 1245 (по умол- меру, сервер при поступлении сигнала тревоги сначала дол-
чанию). Сигнал тревоги можно также послать серверу пу- жен оповестить пользователей по сети, выслать админис-
тем запуска приложения ssagent.exe с указанием аргумен- тратору безопасности письмо по электронной почте, а уже
та «-a». Для исключения случайных ложных тревог при ис- затем корректно отключить базу данных, пользователей
пользовании программной кнопки на клиентском рабочем и перезагрузить сервер. В документации к Zserver имеют-
месте настраиваются аутентификация и право использо- ся несколько уже готовых типовых сценариев.
вания этой функции. Так как данные для аутентификации
хранятся в реестре операционной системы, следует завес- Zbackup как средство защиты
ти одну либо несколько учетных записей в системе Zserver, архивных копий
делегировав им только право на подачу сигнала тревоги. Любая система, от которой зависит стабильность техноло-
Аппаратная кнопка – с помощью устройства на COM-пор- гических процессов компании, подвергается архивирова-
ту сервера, либо на COM-порту рабочей станции с установ- нию. Бессмысленно хранить в зашифрованном виде кри-
ленной «программной кнопкой» (имеющей подключение тичную для бизнеса информацию, защищать сервер меж-
по TCP-протоколу к серверу). Принцип действия «красной сетевыми экранами, хранить журналы доступа, когда ко-
кнопки» прост. Аппаратно (через COM-порт), либо програм- пию своей системы вместе с данными можно украсть с ар-
мно (с помощью установленного клиентского программно- хивной копией. Zbackup решает эту проблему, помещая
го обеспечения) модуль подачи сигнала тревоги аутенти- в архив уже зашифрованные данные. Даже при хищении
фицируется на сервере защиты данных и передает сигнал резервной копии доступ без ключа, которым данные на ар-
тревоги. Далее происходит выполнение запрограммирован- хивной копии были зашифрованы, либо длительного под-
ных действий. Возможна активация, к примеру, через SMS- бора этого ключа, будет невозможен.
сообщение, либо звонка на определенный номер с вводом Zbackup может работать как отдельный продукт,
определенного добавочного кода в тональном режиме. Ин- так и в составе Zserver. При использовании в составе
терфейс продукта и имеющийся SDK-комплект разработчи- Zserver, возможно использование одних и тех же ключей
ка позволит заказчику самостоятельно определить спосо- шифрования. Zbackup работает как с оптическими носите-
бы активации. Количество программных «красных кнопок» лями (CD/DVD-(RW)), так и со стримерными лентами. Систе-
неограниченное. При наличии нескольких кнопок срабаты- ма Zbackup совместима с часто используемыми системами
вание будет только от той, которая первой пошлет сигнал архивации данных, такими как BrighStor ARCserve Backup,
тревоги. При этом нажатие остальных не будет чревато для Veritas Backup Exec и другими. Настройка Zbackup проста
системы. В случае подачи сигнала тревоги обратное под- и производится с единой консоли Zserver. Данные на архи-
ключение зашифрованных разделов не может быть произ- вном носителе хранятся в зашифрованном виде. Доступ
ведено, пока сервер не будет перезагружен. Для подключе- к ним возможен только с использованием ключа шифрова-
ния зашифрованного раздела после перезагрузки необхо- ния. Zbackup может использовать ключ шифрования, кото-
димо загрузить полный ключ, либо сформировать, загру- рым зашифрованы разделы в Zserver, либо другой, но сфор-
зив его части с источников при наличии кворума. мированный по алгоритмам, используемым в Zserver.
Алексей Коршунов
Искусство составления и использования документации – неотъемлемая часть работы
хорошего IT-специалиста. Грамотно составленный документ способен помочь избежать
огромной потери времени и лишних трудозатрат. До сих пор многие предпочитали
игнорировать эту часть работы, но всё когда-то меняется.
К
аждый сотрудник периодичес- нает казаться, будто они никогда не за- нейшим шагом к экономии рабоче-
ки испытывает на себе инте- кончатся. го времени.
рес руководства с целью выяс- Искусство организации рабочего
нения, чем занимается он в рабочее времени всё ещё в диковинку для мно- Документация
время. Разумеется, начальству хочет- гих сотрудников, и не обязательно Я хочу сразу оговориться, что данная
ся слышать, что время тратится на бла- только IT-отделов. Обычно считается, статья не преследует собой цель рас-
го компании. Особенно это актуально что эта задача решается руководите- крыть все вопросы создания и веде-
для системных администраторов ком- лями, но это не так. Никто не мешает ния технической документации, кото-
паний, руководители которых придер- обычному системному администрато- рая может потребоваться системному
живаются позиции, будто сотрудни- ру, отдел которого насчитывает всего администратору. Здесь я лишь попыта-
ки IT-отделов большую часть време- одну персону, научиться тратить вре- юсь очертить круг тех документов, ко-
ни «отдыхают». Зачастую именно из- мя с умом. Организация рабочего вре- торые так или иначе приходится писать
за такого расхожего мнения, систем- мени сисадмина отличается от ситуа- любому работнику IT-отдела, если в его
ным администраторам едва ли не в ре- ции с менеджерами ввиду различий задачи входит документирование.
жиме реального времени ставят зада- в их сферах деятельности. Организа- Покупая какой-либо программный
чи одну за другой. Однако оставаться ция рабочего времени сисадмина от- или технический продукт, пользователь
на работе допоздна или засиживать- личается от ситуации с менеджерами рассчитывает получить вместе с ним
ся в выходные – это не единственный в виду различий в их сферах деятель- пакет документации, который расска-
способ уберечься от загромождения ности. Умение составлять и исполь- жет, как именно использовать новооб-
задачами до такой степени, что начи- зовать документацию является важ- ретённое средство. Разумеется, я не
56
документация
хочу сказать, что в современном ми-
ре, если вы, допустим, покупаете сер- Уважаемые читатели! Наш журнал с удо- рим о различных схемах работы с доку-
верную операционную систему, то со- вольствием представляет вашему вни- ментами. Статья, открывающая рубрику,
вершенно обязательно получите вмес- манию новую рубрику «Документация». является вводной и намеренно охватыва-
те с дистрибутивом ещё и целую кни- Мы решили начать с того, что на наш ет весь вопрос в целом.
гу «в нагрузку». Конечно, нет. Книго- взгляд является наиболее важным, а имен- В дальнейшем, каждый из наиболее
печатные издания не даром едят свой но с умения и понимания необходимос- интересных моментов будет рассматри-
хлеб, выпуская массу замечательных ти составления технической документа- ваться более подробно. Если вы хоти-
материалов, помогающих новичкам ции. Многие IT-специалисты не любят за- те увидеть на страницах журнала ответ
и профессионалам учиться исполь- ниматься «писаниной», но мы всё же поп- на какой-то из вопросов по технической
зовать разработки различных компа- робуем показать, чем это может быть по- документации или имеете желание на-
ний. В данном случае я скорее говорю лезно. Расскажем о наиболее эффектив- писать статью по этой теме – присылай-
о встроенных help-справках, которые ных способах составления документации те ваши вопросы и предложения на адрес
могут внести минимально необходи- и поддержания ее актуальности. Погово- akeeper@samag.ru.
мую ясность в процесс эксплуатации,
а также о вложенных в «пакет» вместе средних размеров и у неё нет десятков ков (если таковой имеется, а если
с дисками документах. Это если затра- серверов и крайне разветвлённой инф- нет, то, может быть, и разработать
гивать программные продукты. раструктуры. А если есть? И более то- его, но об этом позже);
Случаи с покупками «железа» го, не описана ни в каких документах? узнать принятую внутри компании
по сути мало чем от этого отличаются, Это может стать настоящим кошмаром структуру взаимодействия работ-
но набор документации, как правило, для вступающего в свои обязаннос- ника IT-отдела с пользователями,
всё-таки более широк. Причем не так ти нового сотрудника. Ведь предсто- поставщиками;
уж важно, купили вы видеомагнитофон, ит не просто понять, что происходит узнать схему закупки нового обо-
музыкальный центр или сервер компа- на серверах компании и что на них ра- рудования, схему его заказа;
нии SUN – минимально необходимый ботает. Предстоит сделать значитель- иметь представление об оргтехни-
набор документов вы получите. Причем но больше. ке, находящейся в ведении компа-
можно смело сказать, что чем богаче А именно: нии;
набор полученной документации, тем вникнуть в структуру локальной се- прочие пункты (коих может быть ве-
более добросовестно относится произ- ти; ликое множество).
водитель к своей работе. Думаю, каж- понять структуру телефонной сети
дый сталкивался с ситуациями на ра- (да-да, я знаю, что большая часть Это лишь основная часть того,
боте, когда вы получаете заказанное системных администраторов пред- во что предстоит вникнуть новому со-
оборудование без сколько бы то ни бы- почитает не заниматься телефони- труднику. И в ситуациях, когда ввес-
ло серьёзного пакета документов. Если ей. Однако, как показывает практи- ти его в курс дел максимально под-
это сервер или рабочие станции, зака- ка, по сию пору многим сотрудни- робно некому, это может стать насто-
занные в выбранной вами же конфигу- кам IT-отделов приходится не толь- ящей головной болью. Даже в случа-
рации, это ещё не так критично. А ес- ко знать устройство всего этого ях увеличения штата IT-отдела на пол-
ли это, например, мини-АТС, то ситуа- «хозяйства», но и принимать непос- ное ознакомление могут уйти дни и не-
ция становится прямо-таки мало при- редственное участие в её доработ- дели. Между тем пользователи рабо-
ятной. В большинстве случаев после ке или даже разработке); тают, сервера требуют необходимого
некоторого диалога с продавцом всё минимально необходимо знать воз- им ухода, а в планах может находить-
же удаётся добиться от него какой-ли- можности существующей электро- ся немало проектов, также нуждаю-
бо сопроводительной документации. сети; щихся в непосредственном внимании
А если нет, то, возможно, придётся об- составить полное представление и участии сотрудника.
ратиться напрямую к производителю о серверном парке компании; Выглядит довольно грустно. И глав-
или наиболее крупному дилеру. разобраться в программном обес- ная причина этого – отсутствие техни-
Сопроводительная документация п е ч е н и и , ф у н к ц и о н и р у ю щ е м ческой документации, куда своевре-
важна для всех, начиная от директо- на серверах компании, о схемах менно были бы занесены все аспек-
ра компании и бухгалтерии, закан- решений тех или иных вопросов, ты работы сетевой инфраструктуры
чивая теми, кому предстоит исполь- системах резервного копирования предприятия. Можно долго размышлять
зовать оборудование (или програм- и обо всём остальном, что смело на тему, почему каждый раз, приходя на
мные средства). Она нужна для общего можно отнести к огромному фрон- новое место работы, системный адми-
представления того, что вы приобрели, ту работ с новыми (для данного со- нистратор сталкивается с вышеобозна-
а также для банального учёта имеюще- трудника) серверами; ченными трудностями. Это может быть
гося в распоряжении предприятия. составить не менее полное пред- инертность и халатность предыдущих
С этим вроде бы всё более или ставление о рабочих станциях; сотрудников («Я знаю, как это работа-
менее понятно. Но как же быть с тем, знать полный набор программно- ет, а после меня хоть потоп».), а может
что уже имеет компания на момент ва- го обеспечения, принятого стан- быть и банальное незнание руководи-
шего прихода? Хорошо, если компания дартами компании для сотрудни- телей о необходимости ведения доку-
58
документация
Кратко рассмотрим весь этот ко- ние файла с описанием операционной ные стандарты на программное обес-
роткий (по сравнению с полным) спи- системы, работающих сервисов, аппа- печение, используемое пользователя-
сок документов. ратной составляющей, функциональ- ми в повседневной работе.
ной значимостью и прочими «мелоча- Однако, как бы странно это ни зву-
Описание схемы доступа ми» не требует значительных ресурсов. чало, не везде это задокументиро-
в Интернет и интранет сети Ведь вы уже работаете с этими маши- вано.
Уровень развития телекоммуникаци- нами и знаете для чего каждый из них. Как следствие, с тем, чего нет
онных компаний сейчас достиг того, Сбор сведений – дело техники. Вам ос- на бумаге, нельзя ознакомить поль-
что всевозможные конкуренто-способ- танется лишь задокументировать всё зователя и ввести ответственность за
ные предложения просто-таки навод- это и отложить в сторону до следующих соблюдение. Где нет правил, там не мо-
нили рынок. Это даёт компаниям-поль- изменений, после которых надо сразу жет быть их исполнения.
зователям широкий выбор в способе и же обязательно вносить поправки. Это Поэтому оформление корпора-
количестве потребления услуг досту- позволит поддерживать актуальность тивного стандарта в едином докумен-
па в Интернет. Пользуясь этой ситуа- документа и избежать головной боли те и ознакомление с ним пользова-
цией, многие руководители, серьёзно в дальнейшем. теля во избежание эксцессов в буду-
относящиеся к бесперебойному досту- щем – это хорошая практика. Разу-
пу в Интернет и понимающие его важ- Описание схемы резервного меется, это не означает сто процент-
ность, уже давно приняли (или имеют копирования ной гарантии, что на компьютере то-
это в планах на ближайшее будущее) Строго говоря, описав правильную го или иного пользователя не появит-
решение о резервном канале от одного схему резервного копирования и до- ся «почтовый клиент некорпоративно-
из присутствующих в районе провай- бавив к ней обоснование, почему это го стандарта».
деров. Чем полезна схема с двумя про- важно, можно смело идти к руководс- Уровень компьютерной грамотнос-
вайдерами уже обсуждалось не раз. тву и объяснить необходимость выде- ти пользователей растёт, а установ-
Если у вас уже есть два канала для лить бюджетные средства на новую ка новой программы не является про-
доступа в Интернет, то от вас требует- технику. Но для нас это важно по дру- блемой даже для неопытного пользо-
ся всего лишь документирование этой гой причине, которая всем известна: вателя.
схемы. А если нет, то чем не повод её сеть без резервного копирования – Разумеется, такие задачи чаще
изобразить и пойти с ней к руководству. это бомба замедленного действия, ко- всего решаются на уровне операцион-
Чем это полезно? Да хотя бы тем, что торая рано или поздно рванет так, что ной системы, но, как показывает прак-
вы сами в процессе составления доку- никто не уйдёт без «подарков». Наде- тика, административные меры самые
мента создаёте у себя в голове чёткое юсь, вы не из тех любителей испыты- действенные. (Особенно если за на-
представление о том, как это делается, вать удачу, которые откладывают ре- рушение корпоративного стандарта
и сможете применить этот навык в лю- шение такой важной задачи. штрафуют.)
бое время. Полезно? Ещё бы.
Кроме того, не лишним будет опи- Описание схемы антивирусной Заключение
сать схему доступа в Интернет и для защиты компании Разумеется, перечислены далеко
пользователей компании. Трафик, ко- Чем важна система защиты от виру- не все документы, которые стоило бы
нечно, дешевеет изрядно, но практи- сов, знает каждый системный адми- начать вести каждому системному ад-
ка ограничения используемого досту- нистратор. А те, кто уже хотя бы раз бо- министратору, который серьёзно и ос-
па применяется всё чаще. Причем если ролись с эпидемиями, возникающими новательно подходит к своей работе.
раньше большая часть системных ад- даже в казалось бы защищённой сети, Мне известно, что многие люди, рабо-
министраторов (или руководства) ис- уже давно составили схему целостной тающие по этой специальности, мяг-
пользовали схему ограничения по ре- защиты и привели антивирусную защи- ко говоря, недолюбливают написание
сурсам, то сейчас наиболее популяр- ту на всех рабочих станциях и серверах технической документации. Однако
ным становится ограничение по объ- к «общему знаменателю». Довольно даже они рано или поздно начинают
ёму скачиваемого контента. Если вы странно звучит, но тем не менее факт – жаловаться на то, что «такой-раста-
всё ещё ограничиваете пользователей в сетях, где антивирусы установлены, кой предшественник не оставил пос-
по списку запрещённых к посещению но общей схемы защиты нет, рано или ле себя ничего».
ресурсов, это хороший повод перейти поздно обязательно возникнет вирус- Может быть, стоит с себя начать
на ограничение по трафику. ная эпидемия. Во всём должен быть по- и ввести практику ведения докумен-
рядок и максимально прозрачное пред- тации, если таковая ещё не была при-
Описание серверов ставление реализации. Это касается нята в вашей компании.
Разбираться каждый раз (или вспоми- и защиты от вирусов. Написание документации полезно
нать, если у вас их множество), что на- во всех смыслах. Начиная от образо-
ходится на том или ином сервере, – Описание стандартов вательных, заканчивая тем, что после
это занятие не из приятных. Особенно используемого сотрудниками проделывания всей той работы, кото-
если именно этот сервер уже полтора программного обеспечения рая кратко была перечислена выше,
года работает в штатном режиме и вни- В большинстве средних и крупных можно смело идти... за премией.
мания не требует. В то же время созда- компаний уже приняты корпоратив- А почему нет?
Роман Ерин
Недорогой Интернет в любую точку страны? Это возможно! Использование спутниковой связи
позволит вам подключиться к сети даже там, где нет ни коммуникаций, ни людей на многие
километры. Все этапы подключения – от покупки оборудования до настройки.
Как оценить свои Итак, какие выгоды вы получите дороговизны оборудования, трудно-
потребности и выбрать от использования спутникового до- стей получения разрешений и большо-
оборудование ступа в сеть: го объёма необходимой информации.
В февральском номере журнала была дешёвый трафик (менее 1 рубля Кроме приёмного оборудования
опубликована статья Антона Борисо- за 1 Мб при скорости до 5 Мбит); вам понадобится, конечно же, и сама
ва «Подключаемся к Интернету через доступность безлимитных тарифов тарелка. Для того чтобы оценить не-
спутник». В ней автор рассказал о так (32 Кбита от 1200 рублей); обходимый размер тарелки, восполь-
называемом «фишинге» – методе при- возможность доступа при отсутс- зуйтесь картой покрытия спутника.
ёма со спутника данных, не предназна- твии магистральных каналов (мож- Как правило, на ней имеются зоны, по-
ченных для вас. Разумеется такой спо- но использовать в качестве обрат- казывающие либо сразу размеры та-
соб хорош для при приёма тяжёлого ного канала модем или GRPS); релки, либо уровень сигнала на мест-
контента – фильмов и музыки – за чу- возможность доступа при полном ности (см. рис 1).
жой счёт, но имеет один существенный отсутствии сетевой инфраструк- После того как вы определились
недостаток – вы не можете выбирать, туры (через приёмо-передающий с размером антенны – вам необходимо
что вам принимать. Эта статья более комплекс). выбрать подходящий вид конструкции.
полно познакомит вас с технологией Тарелки бывают двух видов: прямофо-
использования спутникового канала На выбор типа доступа (асиммет- кусные и офсетные (см. рис. 2).
доступа в сеть. ричный или двухсторонний) и обору- Оба типа имеют свои плюсы и мину-
Не секрет, что в нашей стране, дования в первую очередь влияет сум- сы. Если для приёма сигнала вам тре-
за пределами центрального региона – ма денег, которую вы хотите потратить: буется размер тарелки менее 2 мет-
Москвы и Санкт-Петербурга, магист- если вы домашний пользователь, если ров, настойчиво рекомендую выби-
ральные провайдеры устанавливают у вас есть наземный канал и нет боль- рать офсетную антенну – у вас будет
достаточно высокие цены за интернет- ших запросов в плане стабильности – меньше хлопот со снегом – не будет
трафик. Сервис-провайдеры в регио- можно выбрать самый дешевый ва- скапливаться. Кроме того, это единс-
нах, таким образом, вынуждены ещё риант – установить в свой компьютер твенный вариант при установке ан-
увеличивать цену, в результате чего PCI DVB приёмник, такой как Skystar1, тенны на стене или балконе.В против-
она доходит до 2-3, а в некоторых ре- Skystar2 и их аналоги. Если же вы со- ном случае вам следует выбрать пря-
гионах и до 4 рублей за 1 Мб. При этом, бираетесь потреблять много трафика, мофокусный вариант. Как можно ви-
как правило, оплачивается только вхо- если для вас важна стабильность и ми- деть на рисунке, у прямофокусной та-
дящий к абоненту трафик. Всё это со- нимизация цены за трафик – ваш вы- релки часть поверхности зеркала за-
здаёт предпосылки для использования бор аппаратные DVB-маршрутизаторы крывает конвертер, поэтому для ан-
асимметричного доступа в Интернет с поддержкой более мощных алгорит- тенн небольшого диаметра лучше вы-
при помощи спутников, посредством мов сжатия (про алгоритмы подробно бирать офсетную модель. Из антенн,
технологии Digital Video Broadcasting рассказано в разделе «Используемые представленных на российском рынке,
(DVB) – технологии цифрового веща- методы сжатия»). Разница в цене этих можно выделить продукцию ОАО «Ал-
ния. Изначально технология была раз- решений составляет примерно 10-50 мет», выпускающуюся под названием
работана для телевидения, но теперь раз. Симметричный доступ мы в этой «Супрал», как имеющую оптимальное
используется и для работы в сети. статье рассматривать не будем ввиду соотношение цена/качество.
60
сети
Вещание со спутников ведется в двух частотных диапа-
зонах: C (3.4-4.2 GHz) и Ku (10.7-12.75 GHz). В зависимос-
ти от того, в каком диапазоне вы будете принимать сигнал,
вы должны приобрести нужный конвертер. Для того чтобы
определить, какой диапазон вам нужен, надо выбрать спут-
ник и оператора на нём.
Выбор спутника
Итак, настало время выбрать спутник, с которого вы бу-
дете принимать сигнал. Есть два варианта: вы можете по-
искать в Интернете провайдеров спутникового доступа
и на их сайтах посмотреть, какие спутники они использу-
ют, или, что предпочтительнее, вы можете найти подходя- Рисунок 2. Типы приёмных антенн
щий спутник и выяснить, кто через него вещает. Посети-
те сайт http://www.lyngsat.com – на нём вы найдёте список Для того чтобы направить антенну, вы должны знать две
спутников с их положением на орбите и сможете посмот- цифры: азимут и угол места. Для более полного понима-
реть, кто из провайдеров на них работает. Там же можно ния, что это такое, см. рис. 3.
ознакомиться с картами зон вещания с каждого из транс-
пондеров спутника. Предпочтение следует отдавать евро-
пейским операторам связи – у них цены ниже. Также имей-
те в виду, что многие провайдеры готовы работать с вами
через спутники, на которых в данный момент их нет, поэто-
му личные переговоры с представителем провайдера час-
то позволяют многого добиться. Не стесняйтесь немного где:
поторговаться – можно сбросить цену в некоторых случа- G1 – ваша географическая долгота;
ях более чем в 2 раза. G2 – долгота расположения интересующего вас спутни-
ка на орбите (западная с минусом);
Настройка оборудования W – ваша географическая широта.
Итак, теперь у вас есть всё необходимое: тарелка, конвер-
тер (головка), обычный телевизионный коаксиальный ка- Соберите антенну согласно инструкции по сбор-
бель (75 Ом), комплект приёмного оборудования (PCI-пла- ке. Жестко закрепите опору в выбранной точке. При ус-
та или аппаратный демодулятор), компьютер (если исполь- тановке на балконе или лоджии загородку сверлят на-
зуется PCI-плата). Для того чтобы вывести вашу тарелку сквозь и прикрепляют опору обычными длинными бол-
на нужный спутник, вы можете воспользоваться двумя ме- тами большого диаметра. При установке на стене в ней
тодами: применить специальное оборудование или собс- сверлят отверстия и используют саморасклинивающие-
твенную голову и руки. Если у вас есть спектроанализа- ся анкерные болты.
тор – наведение не составит большого труда. Надо всего В соответствии с рис. 3, используя вышеприведённые
лишь закрепить датчик прибора на месте конвертера в кре- формулы, отвес и транспортир, вам не составит труда в те-
пеже тарелки, примерно нацелиться на спутник и, ориенти- чение часа настроить тарелку на нужный спутник. Уровень
руясь по показаниям спектроанализатора, произвести точ- сигнала при этом контролируется программным обеспече-
ную настройку. Однако будем предполагать, что специаль- нием (szap для Linux и setup4pc для Windows).
ного оборудования у вас нет, но есть голова, руки и немно- Имеет значение не только точная установка конверте-
го знания математики. ра в фокусе антены, но и правильное положение относи-
Сразу оговорюсь, я буду рассматривать установку оф- тельно оси вращения конвертера. Обычно каждый конвер-
сетной антенны на азимутальную подвеску. Про прямофо- тер (имеются в виду конвертеры, монолитно объединен-
кусные тарелки и полярную подвеску вы можете прочи- ные с поляризатором и облучателем, которые использу-
тать в Интернете. ются для установки антенны на один спутник) имеет метку
Рисунок 3. Определение азимута и угла места Это необходимо сделать для того, чтобы Skystar не пе-
реходил постоянно в режим энергосбережения, в котором
«верх», которая связана с положением встроенного поля- он перестаёт принимать сигнал.
ризатора (соответствует вертикальной поляризации). Од- Выполните сборку, установку и перезагрузите компью-
нако точно вверх эта метка должна смотреть только на гео- тер.
графической долготе спутника. Если вы устанавливаете ан-
тенну западнее или восточнее, чем расположен спутник, Часть вторая: готовим утилиты
то конвертер нужно повернуть в держателе вокруг своей На сайте http://www.linuxtv.org возьмите утилиты управ-
оси. Для многих современных мощных спутников, распо- ления DVB-картами linuxtv-dvb-apps или, если вы исполь-
ложенных не слишком низко над горизонтом, этим эффек- зуете Slackware Linux, скачайте бинарный пакет со спе-
том можно пренебречь из-за запаса по мощности их сиг- циально мной пропатченными утилитами с моего сайта
нала. Однако, если вы ловите сигнал на пределе возмож- http://kid.tomsk.ru.
ностей вашей приемной системы, то правильный угол по- Также в составе пакета доступны man страницы на рус-
ворота конвертера может дать существенное повышение ском и английском языках, а также утилита интерактивной
уровня сигнала и создать запас на случай ухудшения ме- настройки dvb-setup.
теорологической обстановки. После установки этих утилит вам станут доступны сле-
дующие необходимые программы:
Мультифиды, DiSEqC – используем szap – программа настройки карты на нужную частоту;
тарелку эффективно dvbnet – программа, включающая сетевую надстройку
Если вы планируете использовать тарелку единолично над DVB;
и при этом хотите не только пользоваться Интернетом, dvbtraffic – программа просмотра текущей активности
но и время от времени баловать себя просмотром телеви- на спутнике – позволяет проверить приём с тарелки.
зионных и прослушиванием радиопередач со спутника –
вам может понадобиться мультифид – крепление на од- Часть третья: готовим стартовые скрипты
ну тарелку нескольких головок и устройства с поддержкой Создайте файл /etc/channels.conf следующего содержа-
DiSEqC – протокола управления несколькими устройства- ния:
ми по одному кабелю. Если в вашей местности вы можете
принимать несколько близко расположенных спутников – Название оператора:частота в Мгц:поляризация(h|v): ↵
fec(0-авто):символьная скорость(в килосимволах в сек.): ↵
установите вместо стандартного крепления конвертера PID:PID:0
мультифид (его можно легко изготовить самостоятельно,
но лучше купить). Создаем стартовый скрипт rc.dvb
62
сети
Ошибки, которые делаются на этапе настройки ОС Linux: Готово! Вы имеете систему с настроенным спутниковым
забывают отключать тайм-аут засыпания карты. Интернетом и раздачей его всей локальной сети.
Управляем сетевым
оборудованием с помощью
протокола SNMP
64
сети
З
адача автоматизации управления различным се-
тевым оборудованием существует со времени по-
явления первых сетевых устройств. На сегодняш-
ний день практически в любой сети можно найти актив-
ное сетевое оборудование, управление которым можно,
а как правило, нужно автоматизировать. Для решения
подобных задач был разработан протокол SNMP (Simple
Network Management Protocol). Существует масса готовых
коммерческих решений по управлению различными уст-
ройствами с помощью SNMP, например HP Open View, од-
нако не каждой организации по карману приобретение по-
добного ПО, к тому же эти программные продукты пред-
назначены для управления большим количеством уст-
ройств, и их использование в небольших сетях будет не-
целесообразным.
Рассмотрим теоретические основы работы протокола
SNMP и практическую реализацию решения некоторых
задач с помощью сценариев на языке Perl.
66
сети
Таким образом, искомые значения можно получить, об-
ратившись к соответствующим ветвям MIB с помощью чис-
ловых имен. На практике это выглядит следующим образом,
для того чтобы получить информацию о наименовании ус-
тройства необходимо обратиться к следующей ветке MIB
iso.org.dod.intemet.mgmt.mib.system.sysName, а в числовом
представлении это будет выглядеть так 1.3.6.1.2.1.1.5.
Ловушки
Еще одним важным понятием являются Traps, или ловушки,
реагирующие на определенные события отправкой сооб-
щений управляющей системе. Какая информация отправ-
ляется управляющей системе в сообщении Trap?
Посылаются следующие данные: Рисунок 2. Древовидная структура MIB
Uptime устройства в виде пары: соответствующий OID
uptime, значение. То есть время, которое прошло с мо-
мента включения устройства.
OID, содержащий информацию о произошедшем собы-
тии.
Любые пары OID и его значение, которые могут дать до-
полнительную информацию. Например, когда коммута-
тор отправляет сообщение о подключении по протоколу
Telnet, он также передаёт OID, содержащий информа-
цию о том, с какого IP-адреса, с какого и на какой порт
было осуществлено подключение и OID, идентифици-
рующий сессию. Информация, переданная в данном
уведомлении Trap, будет выглядеть следующим обра-
зом (см. рис. 3).
Рисунок 3. Внешний вид сообщения SNMP
Расшифровав это уведомление Trap (сообщение SNMP)
с помощью базы MIB для коммутаторов Cisco, можно полу- ряд баз для различных агентов, в частности имеется MIB
чить OID и их значения в символьном виде. Например, иден- для оборудования Cisco, протоколов маршрутизации OSPF
тификатор .1.3.6.1.4.1.9.2.9.3.1.1 в символьном виде будет и BGP, операционной системы Windows.
представлен так: .iso.org.dod.internet.private.enterprises.cisco.
local.lts.ltsLineSessionTable.ltsLineSessionEntry.tslineSesType, Настраиваем оборудование
и содержать значение 5. Из описания данного OID узнаем, Прежде чем приступить к настройке SNMP на конкретном
что это telnet(5), тип сессии Телнет. управляемом устройстве, необходимо определиться с то-
Также уведомления Trap весьма полезны при различ- пологией сети, в которой находятся управляемое устройс-
ных внештатных ситуациях, например, отключения порта тво и сервер управления SNMP. Как уже упоминалось, дан-
на коммутаторе или маршрутизаторе. ный протокол использует UDP. В связи с этим следует от-
метить, что при использовании технологии NAT (Network
Симулятор SNMP Address Translation) или соединения через VPN-канал между
Для лучшего понимания теоретических основ функциони- управляющим устройством и сервером управления могут
рования протокола SNMP можно воспользоваться специ- возникнуть трудности с прохождением SNMP-сообщений.
альным симулятором Advent Net, испытательную версию Также необходимо позаботиться о том, чтобы в соответству-
которого можно загрузить по адресу [6]. ющих списках доступа для портов 161 и 162 (SNMP Traps)
Данный симулятор позволяет воспроизвести точную был разрешен UDP-трафик.
копию различных устройств, как управляющих (MIB-брау- Приступим к настройке работы SNMP на управляемом
зер, Trap Recorder), так и управляемых (Agent Simulator, Trap устройстве.
Stormer) с поддержкой протокола SNMP, причем компонен- На некоторых видах оборудования, таких как аппарат-
ты AdventNet можно использовать и при тестировании вза- ные принт-сервера, ADSL-модемы, а также в некоторых
имодействия с реальными устройствами. Например, мож- операционных системах, агент SNMP включен по умолча-
но, включив на маршрутизаторе поддержку SNMP, получать нию. Поэтому мы рассмотрим процедуру настройки взаи-
уведомления Trap с помощью Trap Recorder и конфигури- модействия по протоколу SNMP на маршрутизаторах Cisco.
ровать элементы Management Information Base через MIB- Данные настройки осуществляются довольно просто. В ре-
браузер. И наоборот, отправлять уведомления Traps из Trap жиме конфигуратора необходимо ввести:
Stormer и получать их с помощью Perl-сценариев, о которых
речь пойдет далее. Следует также сказать несколько слов snmp-server community <community_name> RO <access-list>
snmp-server enable traps
о поддержке MIB в Advent Net. Симулятор содержит целый snmp-server host <host_address>
68
сети
($oid, $value) = decode_by_template ↵ Например, вот так будет выглядеть сообщение SNMP,
($binding, "%O%@");
print "<tr><td bgcolor=yellow><b>", ↵ которое прислал коммутатор после отключения его ин-
$pretty_oids{$oid}, " </b></td> "; терфейса.
$stroka= pretty_print($value);
print '<td bgcolor=magenta><b>',$stroka, ↵ .1.3.6.1.2.1.2.2.1.2.4 STRING FastEthernet0/4
'</b></td></tr>';
.1.3.6.1.3.1.9.2.2.1.1.20.4 STRING LostCarrier
}
print "</table></body></html>";
} else { А так выглядит SNMP Trap, сообщающий о том, что ин-
warn "SNMP problem: $SNMP_Session::errmsg\n";
} терфейс включен:
}
.1.3.6.1.2.1.2.2.1.2.3 STRING FastEthernet0/3
.1.3.6.1.4.1.9.2.2.1.1.20.3 STRING up
В результате работы данного сценария получаем таб-
лицу, содержащую значения параметров MIB (см. табли- Аналогичным образом можно получить сообщения, ка-
цу 1). сающиеся других событий, происходящих с управляемым
Данный сценарий вполне можно использовать на прак- устройством.
тике.
Например, для получения информации о состоянии того Заключение
или иного устройства на текущий момент времени. Однако В завершении хотелось бы отметить ряд моментов. Прежде
при добавлении OID своего устройства необходимо убе- всего, следует обратить внимание на то, что у многих круп-
диться, что управляемое устройство их поддерживает (на- ных производителей имеются свои базы MIB и для более
пример, с помощью MIB-браузера), так как в противном слу- эффективного использования возможностей SNMP луч-
чае сценарий вернет ошибку выполнения. ше использовать MIB для оборудования конкретного про-
Приведем еще один фрагмент сценария, который осу- изводителя. Для поиска баз MIB воспользуйтесь сайтом
ществляет прием сообщений Trap. Общий алгоритм рабо- MIBSearch.com. Что же касается активного сетевого обо-
ты аналогичен предыдущему, поэтому приведу лишь ту рудования Cisco, то на CPAN.org можно найти множество
часть сценария, которая касается собственно получения Perl-сценариев для взаимодействия по протоколу SNMP,
сообщений. а также сценариев, осуществляющих разбор SNMP-сооб-
щений для конкретных событий, например для событий,
Листинг 2. Получение SNMP Traps связанных с протоколами динамической маршрутизации,
… # заголовок и объявление библиотек потерей пакетов, состоянием VLAN и так далее.
my $trap_session = SNMPv1_Session->open_trap_session () Также, возможно, у вас сложилось впечатление, что про-
or die "cannot open trap session";
my ($trap, $sender_addr, $sender_port) = ↵ токол SNMP на практике использует только активное сете-
$trap_session->receive_trap () вое оборудование, канального и сетевого уровней, c встро-
or die "cannot receive trap";
my ($community, $enterprise, $agent, енным программным обеспечением, однако это не так.
$generic, $specific, $sysUptime, $bindings) К примеру, некоторые виды программного обеспечения,
= $trap_session->decode_trap_request ($trap)
# устанавливаем trap session такие как корпоративные антивирусные системы, актив-
or die "cannot decode trap received" но используют уведомления Trap для оповещения о ви-
… # команды, связанные с получением сообщения, русных инцидентах и эпидемиях. Также SNMP использу-
… # аналогичные предыдущему листингу ют системы резервного копирования и системы беспере-
my ($binding, $oid, $value); бойного питания.
while ($bindings ne ‘’) { Так что данный протокол полезен не только для ор-
($binding,$bindings) = &decode_sequence ($bindings);
($oid, $value) = decode_by_template ($binding, "%O%@"); ганизации систем управления сетевым оборудованием,
# декодируем полученное сообщение но и для решения повседневных задач системного адми-
print BER::pretty_oid ($oid)," => ", ↵
pretty_print ($value); нистрирования.
# выводим ветку MIB и значение в строковом формате
%mail = ( To => 'admin@mynetwork.ru',
From => 'snmptrap@mynetwork.ru', Литература, ссылки:
Message => "SNMP trap received:".$bindings, 1. Основы организации сетей Cisco. Справочное руководство.
SMTP => '10.0.1.2'
); 2. www.opennet.org – интернет-ресурс со множеством статей
sendmail(%mail) or die $Mail::Sendmail::error; и примеров, посвященных реализации SNMP на различных
# письмо администратору
} устройствах.
3. www.ietf.org – ресурс содержит все стандарты RFC, в том чис-
# здесь собственно производится прием сообщений Trap,
# для того чтобы получать эти сообщения постоянно, ле и RFC 1212, 1213.
# необходимо использовать бесконечный цикл, 4. www.CPAN.org – ресурс, на котором можно найти боль-
# который прерывается при нажатии любой клавиши
While (@_='') { шое количество исходных кодов Perl-сценариев для работы
my ($trap, $sender_addr, $sender_port) = ↵ с SNMP.
$trap_session->receive_trap ()
or die "cannot receive trap"; 5. http://www.switch.ch/misc/leinen/snmp/perl/dist – исходный код,
} а также библиотеки, использованные при написании сцена-
рия.
В результате получим содержимое сообщений SNMP 6. http://www.adventnet.com/products/simulator – дистрибутив си-
Trap, которые пришли от управляемых устройств. мулятора SNMP.
Иван Коробко
Программисты Microsoft, создававшие Framework, явно не ориентировались на системных
и сетевых программистов, поэтому в нем отсутствуют функции по управлению DFS, сетевыми
папками и т. д. Рассмотрим возможные пути решения возникших проблем.
К
сожалению, в Microsoft Framework ции, дописать Framework по своему ус- нению с VBScript. Однако стоит учесть,
отсутствуют функции по управ- мотрению. что скорость работы адаптированных
лению DFS, сетевыми папками сценариев оставляет желать лучше-
и т. д. Возникает вопрос – а как же ре- WINAPI, или адаптация го, по сравнению с API-функциями. Ис-
шить данную проблему, ведь, напри- VBScript пользование API-функций – занятие
мер, в VBScript можно было без осо- Рассмотрим преимущества и недостат- трудоемкое и требует много внимания,
бых усилий управлять сетевыми папка- ки предлагаемых вариантов. Если гово- поскольку в MSDN приведены описа-
ми (Shared Folders). Неужели в VB.NET рить о трудоемкости, то предпочтитель- ния функций, годящиеся для VB, а как
это невозможно сделать? ным является, конечно же, первый вари- известно, типы данных VB и VB.NET
Существует два варианта: адап- ант, поскольку все ограничивается под- не совпадают, так что придется занять-
тировать сценарий на VBScript под ключением библиотеки и незначитель- ся их преобразованием. Это еще не все.
VB.NET или, используя WIN API-функ- ным изменением синтаксиса, по срав- Для простоты написанный програм-
70
программирование
мный код рекомендуется поместить в отдельную библиотеку, Таблица 1. Свойства сетевой папки
которую опять же, чтобы использовать, необходимо подклю-
Параметр Описание
чить к проекту и вызывать нужную функцию. Итак, если для
MaxUserCount Максимальное число подключенных пользователей
вас скорость не критична и не хочется тратить время – выби-
AdsPath ADsPath – сетевой путь к ресурсу
райте адаптацию скрипта под VB.NET, если же есть желание
отмучиться один раз, создав библиотеку, и каждый раз на- Имя класса, к которому принадлежит объект. Для сетевой пап-
Class
ки имя класса – «FileShare»
слаждаться высокой скоростью работы созданных приложе-
Число пользователей, подключенных к сетевой папке в насто-
ний – вам придется использовать API-функции. CurrentUserCount
ящее время
Description Описание сетевого ресурса
Сетевые папки: от VBScript к VB.NET GUID Уникальный идентификатор ресурса
С сетевыми папками можно проделывать следующие опе-
Name Имя ресурса
рации:
предоставлять к папкам доступ из сети; Parent Путь в формате AdsPath родительского объекта
При переводе данного примера на VB.NET необходи- Dim Temp As New WshNetwork
Dim PCName As String = Temp.ComputerName
мо прежде всего подключить две библиотеки: «Microsoft
Scripting Runtime» и «Active DS Type Library». так и с помощью встроенной функции в VB.NET:
72
программирование
If fso.DirectoryExists(PathToFolder) = False Then Таблица 2. Используемые функции WIN API для управления
fso.CreateDirectory(PathToFolder) сетевыми папками
End If
Действие Функция
' Определение имени текущего компьютера
Предоставить папку в сетевой доступ NetShareAdd
Dim PCName As String = My.Computer.Name
Удалить сетевую папку NetShareDel
' Создание объекта
Dim ShareServeceObj As ActiveDs.IADsContainer = ↵ Просмотреть/изменить свойства выбранной
NetShareGetInfo/NetShareSetInfo
GetObject("WinNT://" + PCName + "/LanManServer") сетевой папки
Dim NewShare As ActiveDs.IADsFileShare = ↵
ShareServeceObj.Create(ObjectType, ShareName) Сформировать список имеющихся сетевых
NetShareEnum
папок на компьютере
NewShare.Path = PathToFolder
NewShare.MaxUserCount = MaxUsers
NewShare.SetInfo() ' сохранение изменений в файловую Таблица 3. Преобразование типов для функций
' систему Структура в MSDN Описание в VB.NET
Catch ex As Exception LPTSTR a
MsgBox(ex.Message)
End Try LMSTR a ByVal … As String
LPWSTR a
LPBYTE a ByRef … As StructName
Использование WIN API-функций LPBYTE a ByRef … As IntPtr
С помощью API-функций программисту предоставляет-
DWORD a ByVal … As Integer
ся возможность доступа ко всему многообразию функций
LPWORD a ByRef … As Integer
ОС на низком уровне. Это обозначает, что скорость работы
и функционал создаваемого приложения увеличится. TCHAR a <MarshalAs(UnmanagedType.Struct)> byRef … As String
Все данные, используемые в среде VB.NET, являются уп- FILEOP_FLAGS a Public a as Short
равляемыми, то есть их расположением в памяти управ- BOOL a Public a as Boolean
ляет среда исполнения .NET. Обычная DLL-библиотека LPVOID a
ничего не знает о среде исполнения и типах данных, ко- UINT a
торые используются. Чтобы установить отсутствующую Public a as Integer
LONG a
связку, в игру вступает процесс, называемый маршалин-
HWND a
гом (marshal (англ.) – располагать в определенном поряд-
WORD a Public a as Int16 или Integer
ке, размещать). Этот процесс позволяет перенести вызов
из среды .NET на уровень операционной системы, непос- DWORD a Public a as Int32 или Integer
Declare Unicode Function NetDfsGetInfo Lib "***.DLL" Функция всегда возвращает код ошибки, а манипуляция
(ByVal[ByRef] ParametrName As TypeOfData,…) As Integer
с данными осуществляется через память чтением или запи-
74
программирование
Dim err_description As String = ""
Dim err_code As Integer
err_code = NetShareAdd(server, 2, a, Nothing)
End Sub
76
bugtraq
Валентин Синицын
М
одуль PDF::API2 (http://pdfapi2. ше, Encode и Compress::Zlib (если что- удобным для вас способом. Послед-
sf.net) разрабатывается Аль- то и придется установить, то только ней на момент написания статьи вер-
фредом Райбенщухом (Alfred последний из них). Модуль использует сией была 0.51.
Reibenschuh) и распространяется стандартную объектную нотацию Perl 5 Поставляемая вместе с PDF::API2
по лицензии GNU GPL. PDF::API2 на- и доступен как через CPAN, так и че- документация насчитывает более
писан на чистом Perl и имеет мини- рез репозитарии ActiveState PPM, по- 160 страниц, большая часть из кото-
мум зависимостей: Perl 5.8.4 или вы- этому может быть установлен любым рых не имеет практической ценности.
78
программирование
Для повседневной работы вам потребуются лишь страни- дюйма, что примерно соответствует типографскому пунк-
цы PDF::API2, ::Content, ::Page и ::Util, где перечислены зна- ту (pt). Вы можете перенести начало отсчета в другую точ-
чения различных констант. ку (translate), повернуть оси на некоторый угол (rotate), из-
PDF::API2 не является средством для редактирования менить масштаб (scale) или скосить их (skew). Напомним,
PDF в прямом смысле этого слова – он не предоставляет что порядок применения этих операций имеет значение:
специальных методов для «поиска и замены» существую- перенос и поворот – это совсем не то же самое, что пово-
щих элементов (например, картинок). Однако с его помощью рот и перенос. Изменения системы координат непосредс-
вы легко можете создавать собственные PDF-файлы, а так- твенно сказываются на выводимых объектах: так, надпись,
же обрабатывать и дополнять уже существующие. Как мы расположенная вдоль оси X в повернутой системе коорди-
вскоре увидим, этого достаточно для решения весьма ши- нат, будет идти под некоторым углом к краю страницы. Ес-
рокого круга задач. Другое ограничение – невозможность ли система координат была перенесена на N пунктов влево
работать с зашифрованными PDF-файлами. Видимых пре- и M пунктов вверх, окружность, центр которой якобы нахо-
пятствий этому нет – программа дешифровки PDF на Perl дится в начале (0,0), будет изображена в окрестности точ-
(http://www.cs.cmu.edu/~dst/Adobe/Gallery/pdfdecrypt.pl) за- ки с координатами (M,N) и так далее.
нимает менее двухсот строк кода. «Альтернативный» мо- Геометрическая плоскость, на которой введена наша
дуль CAM::PDF (http://search.cpan.org/~clotho/CAM-PDF-1.05), система координат, бесконечна, однако в реальном мире
который, по моему мнению, проигрывает PDF::API2 в удобс- все имеет свой предел. Стандарт PDF предусматривает не-
тве использования, также справляется с этой задачей безо сколько различных типов границ, наиболее важными из ко-
всякого труда. Возможно, этот функционал будет реализо- торых являются граница физической страницы (MediaBox)
ван в следующих версиях модуля. и граница видимой области (CropBox). Каждая из них зада-
Прежде чем мы приступим к обсуждению констант ется четверкой чисел, представляющих собой координаты
и функций, давайте поближе познакомимся с форматом левого нижнего и правого верхнего углов прямоугольной
PDF версии 1.4, с которой и работает PDF::API2. области в системе координат по умолчанию. Если CropBox
не задан явно, он принимается равным MediaBox.
Экранная модель PDF Теперь, когда мы бегло познакомились с экранной мо-
Основой для эффективной работы с PDF является понима- делью PDF, можно переходить к изучению функций модуля
ние его экранной модели (imaging model). Аналогичные кон- PDF::API2, реализующих работу в ней на языке Perl
цепции лежат в основе многих современных API для рабо-
ты с векторной графикой, например, Cairo и Arthur, так что Здравствуй, мир!
кое-какие представления о них в любом случае окажутся По сложившейся традиции, мы начнем свое рассмотре-
нелишними. ние с программы «Hello, World». Данный пример был взят
Спецификация PDF 1.4 предусматривает четыре типа из стандартного дистрибутива PDF::API2, но слегка моди-
объектов, которые могут отображаться на странице: кон- фицирован, чтобы лучше отражать отечественные реалии.
туры (path object), текст (text object) и растр (image object). Конечно, при практическом наборе кода номера строк (01:,
Особняком стоит область отсечения (current clipping path) – 02:, ...) необходимо опустить; мы также не используем стро-
специальный контур, в пределах которого возможна отри- гий режим (use strict), чтобы слегка уменьшить объем сце-
совка объектов. Любые фигуры или их части, выходящие нариев и повысить их удобочитаемость.
за пределы данной области, отсекаются, откуда и проис-
ходит это название. Пример 1
Для описания объектов всех четырех типов и работы 01:#!/usr/bin/perl
с ними в PDF служит специальный язык, по своим функци-
02:use PDF::API2;
ям аналогичный PostScript. Например, для отрисовки кон-
тура используется оператор S (stroke), а для его заливки – 03:use constant mm => 25.4/72;
04:use constant cm => 2.54/72;
f (fill) (здесь нет никакой опечатки – операторы «языка PDF» 05:use constant in => 1/72;
в большинстве своем одно- и двухбуквенные). Как нетрудно 06:use constant pt => 1;
видеть, у этих операторов нет параметров. Точки, образую- 07:$pdf = PDF::API2->new;
щие контур, задаются заранее, а такие атрибуты, как тол-
08:$fnt = $pdf->corefont('Verdana', -encode => 'cp1251');
щина соединяющей их линии, ее цвет и цвет заливки оп-
ределяются текущим графическим состоянием (graphics 09:$page = $pdf->page;
10:$page->mediabox('A4');
state). Одним из наиболее важных элементов этого состо-
яния является матрица преобразования системы коорди- 11:$gfx = $page->gfx;
нат (current transformation matrix, CTM), определяющая теку- 12:# Выводим текстовую метку
щее положение декартовых осей. Думается, читатели, име- 13:$gfx->textlabel(210/mm/2, 297/mm/2, $fnt, 12, ↵
'Здравствуй, мир !');
ющие опыт программирования трехмерной графики, испы-
тали чувство дежа-вю, и не зря: аналогия с OpenGL/Direct3D 14:$pdf->saveas('helloworld1.pdf');
15:$pdf->end;
налицо, разве что все преобразования координат в PDF бу-
дут двумерными. По умолчанию, система координат имеет Строки 1-2, будем надеяться, в особых комментариях
начало в левом нижнем углу листа, ось X направлена впра- не нуждаются. В строках 3-6 задаются стандартные кон-
во, ось Y – вверх. За единицу измерения принимается 1/72 станты, выражающие миллиметр (mm), сантиметр (cm),
ир !
й, м
тву
!
р
мание на использование константы mm для перевода мил-
!
ми
авс
авс
ир
й,
м
ву
й,
Зд р
Зд р
вст
ву
ра
вс
т
лиметров в пункты) и отрисован шрифтом $font (Verdana)
Зд
ра
высотой 12 пунктов. В строках 14 и 15 происходит запись
Зд
Здравствуй, мир !
PDF-документа на диск и разрушение объекта.
Здравствуй, мир !
Зд
ра На первый взгляд подготовительный этап может пока-
Зд
вс
ра
тв
вс
Здр
Здр
уй
заться чересчур трудоемким, но давайте не будем спешить
тв
,
й, у
ми
ав
авс
р
ми
!
и займемся усовершенствованием этого, в общем-то, очень
ств
р
т
!
вуй
й, м у
р!
!
Пример 2:
01:$n = 10;
02:$R = 50;
80
программирование
fillcolor (синим). До вызова метода fill наш прямоугольник
не отображается на странице. Более того, заменив вызов fill
на stroke, мы получим незакрашенный прямоугольник, пос-
троенный по тем же самым точкам. Это является следстви-
ем того, что операторы S и f не имеют собственных вход-
ных параметров, а используют заданные ранее значения.
Аналогичным образом в строках 4-6 строится желтый круг
радиуса 0.95*$R.
Сохраните сценарий и запустите его на выполнение. Ес-
ли вы не допустили ошибок при наборе исходного текста,
ир !
ир !
й, м
й, м
ваши старания будут вознаграждены! На синем небе яр-
тву
тву
!
ко засияет солнышко, каждый лучик которого шлет привет р
!
ми
авс
авс
р
ми
й, уй,
тв
этому, а может быть, и другим мирам (см. рис. 2).
Здр
Здр
у
вс
тв
ра
вс
Зд
ра
Конечно, возможности PDF::API2 никоим образом не ог- Зд
Здравствуй, мир !
раничиваются рассмотренными здесь вызовами. Всю не- Здравствуй, мир !
Зд
обходимую информацию вы можете найти в документа- вс
ра
Зд
ра
в ст
ву
Здр
Здр
ции. От себя добавлю, что в сценариях для «серьезной»
тв
уй й,
,м ми
авс
авс
р
работы с текстом возможностей, предоставляемых мето-
ир
!
тву
т
!
вуй
й
дом textlabel, может оказаться недостаточно. Поэтому ес-
, ми
, ми
ли вы намерены составить конкуренцию TeX или Adobe
р!
р!
InDesign, советуем ознакомиться со статьей [1], в которой
подробно рассмотрен процесс верстки и добавления ил-
люстраций.
01:#!/usr/bin/perl
02:use PDF::API2;
03:$source = PDF::API2->open("document.pdf");
04:$dest = PDF::API2->new;
#или PDF::API2->open("document2.pdf");
09:$dest->saveas("document_new.pdf");
10:$dest->end;
11:$source->end;
82
программирование
01:$source = PDF::API2->open("document.pdf");
02:$dest = PDF::API2->new; «Изъясняемся по-русски»
03:$left = 1; «Слипание» букв русского алфавита происходит из-за того, что
04:$right = ($source->pages % 4 == 0) ? $source->pages : ↵ PDF::API2 не обладает достаточной информацией о их ширине
$source->pages + (4 - $source->pages % 4);
05:$reversed = 1; в каждом конкретном шрифте. Существует несколько способов
06:while ($left < $right) { исправить «заморский акцент» PDF::API2:
07: $page = $dest->page;
08: $page->mediabox(297/mm, 210/mm); Использовать только core-шрифты Verdana и Georgia – для них
09: $page->rotate(90); эти сведения имеются.
10: draw_page($source, $left, $dest, -1, $reversed); Использовать встраиваемые шрифты TrueType или PostScript.
11: draw_page($source, $right, $dest, -1, !$reversed) ↵ Здесь также не исключены проблемы, но они куда менее ве-
if ($right <= $source->pages);
12: $left++; $right--; $reversed = !$reversed; роятны – вся информация берется непосредственно из фай-
13:} лов шрифтов.
14: $dest->saveas("document_book.pdf"); Добавить в файлы PDF/API2/Resource/Font/Corefont/*.pm
15:$dest->end; информацию о ширине символов кириллицы (U+0x04NN).
16:$source->end;
Это не так-то просто, но если вы все же справитесь с этой
Этот кусочек кода реализует первую половину на- задачей – не забудьте отправить «заплатку» автору модуля,
шего плана. В переменной $left хранится номер первой, и благодарное сообщество вас не забудет.
а в $right – второй страницы текущей пары. Строка 4 вкупе
с условием if в строке 11 эквивалентна добавлению нужно- Метод importPageIntoForm в строке 3 возвращает нуж-
го числа пустых страниц в конец документа $source. Флаг ную нам страницу исходного документа в виде «непрозрач-
$reversed определяет, где на печатном листе будет распо- ного» объекта X-Object. С такими объектами можно выпол-
ложена страница с меньшим номером – слева или справа. нять различные преобразования и располагать их в любом
Интерес также представляют строки 7-9: здесь мы добав- месте страницы, но узнать, что находится у них внутри, не-
ляем в $dest новую страницу формата «перевернутый A4» льзя. Условие в строках 5-7 выясняет, был ли для исход-
и тут же поворачиваем ее на 90 градусов. Таким образом ной страницы установлен CropBox (иными словами – бы-
мы получаем обычную страницу формата A4 с необычной ли ли обрезаны поля), и, если это так, создает на основе
системой координат, так что все помещенные на нее объек- этой информации область отсечения для объекта X-Object
ты будут «лежать на боку». Фактической отрисовкой страни- (иначе эта информация будет потеряна – X-Object включа-
цы занимается подпрограмма draw_page, которая принима- ет в себя лишь содержимое страницы, но не ее свойства,
ет пять параметров: объект-источник ($pdf_in) и номер ис- где, как мы помним, находится поле CropBox). К сожале-
ходной страницы ($in_idx), объект-приемник ($pdf_out) и но- нию, в текущей реализации PDF:API2 не существует мето-
мер страницы-«печатного листа» ($out_idx), а также пози- да get_cropbox, поэтому данную информацию приходится
цию на печатном листе (0 – слева, 1 – справа): извлекать таким «низкоуровневым» способом. В строках
8-10 мы находим ширину и высоту импортируемого объек-
01:sub draw_page { та и затем вычисляем по ним коэффициенты масштабиро-
02: my ($pdf_in, $in_idx, $pdf_out, $out_idx, ↵
$position) = @_; вания (строки 11-13, обратите внимание, что подпрограм-
ма может работать с любыми размерами исходных стра-
03: my $xo = $pdf_out->importPageIntoForm($pdf_in, ↵
$in_idx); ниц и печатных листов). Условие в строках 15-24 обеспе-
04: my $pg_out = $pdf_out->openpage($out_idx); чивает пропорциональность масштабирования, а метод
05: if (my $cropbox = ↵ formimage в строке 25 отображает уменьшенную копию
$pdf_in->openpage($in_idx)->find_prop("CropBox")) { страницы на печатном листе.
06: $xo->bbox(map {$_->val} $cropbox->elementsof);
07: } Ну вот и все! Теперь осталось только распечатать по-
лученную книжку и отнести в ближайший копи-центр для
08: my @ps = map {$_->val} $xo->{BBox}->elementsof;
09: my $bbox_width = $ps[2] - $ps[0]; сшивания, а используя этот сценарий вместе с програм-
10: my $bbox_height = $ps[3] - $ps[1]; мой для извлечения страниц, можно распечатать и удобно
11: my (undef, undef, $page_width, $page_height) = ↵
$pg_out->get_mediabox; сшить даже самый монументальный труд. Удачи!
Все обсуждаемые примеры можно загрузить с сайта
12: my $scale_x = $page_width/(2*$bbox_width);
13: my $scale_y = $page_height/$bbox_height; журнала http://samag.ru в разделе «Исходный код».
14: my ($scale, $x, $y);
Коллекция «Почему?»
Куда все делось и откуда что берется -
Одновременно два вопроса не решить…
ìó?
Каждый пишет, как он слышит,
каждый слышит, как он дышит,
как он дышит, так и пишет,
не стараясь угодить...
Почему?
Булат Окуджава
Почему? Поч е м у ?
Почему
? Почем
ч е м у ? у?
Почему? П о Почему?
Конечно же, Алексей Коршунов – системный администратор. Но при этом еще и коллекционер.
Правда, не совсем обычный: в его собрании – не пивные пробки, использованные телефонные
карты или отбитые носики от антикварных фарфоровых чайников. Алексей коллекционирует
философские вопросы и не менее философские ответы. А еще он пишет задумчивые
рассказы, где главные герои – говорящие лягушки, ожившие поезда и материализовавшееся
Время – размышляют о несовершенном величии и величественном несовершенстве мира.
Вот такой системный коллекционер получается…
…«Через неделю «новый поезд будущего», наспех переиме- Как только Алексей научился складывать буквы в слова,
нованный в «Экспериментальную разработку», перегнали а случилось это, как вы понимаете, довольно давно, он тут
на завод-производитель. Никто не пытался понять, с чего же начал писать рассказы. Как водится, первые опыты от-
это вдруг кусок железа стал вести себя как разумное сущес- давали подражанием – приключения Алисы Селезневой
тво. Гордыня людей не позволяла допустить даже мысли, в исполнении Кира Булычева произвели на мальчика Але-
что есть еще кто-то мыслящий, кроме них самих… А Ижику, шу столь неизгладимое впечатление, что он, недолго ду-
отключенному от основного питания, все снилось, как ра- мая, тут же сочинил четыре тетрадки собственных про-
достные пассажиры заполняют его вагоны и все вместе должений. Чуть позже стали появляться собственные ори-
поют песни, пока он мчит их до далекой, но такой близкой гинальные сюжеты, что-то из «раннего» Алексей хранит
следующей станции»… до сих пор, что-то в приступе творческой неудовлетворен-
84
хобби
«Почемучка» из жизни максимум, поняв «что, зачем и по- Жизнь проходила мимо, а Почемучка
Почемучка никогда не был спокойным ре- чему». Но жизнь меняет всех, и даже наш все не мог понять, «что, зачем и почему»
бенком. Он просыпался и засыпал с одним герой не исключение. происходит так, а не иначе. Он стал запи-
и тем же вопросом: «Почему?». Казалось, Время научило, что не все советы по- сывать свои мысли в надежде, что кто-то
нет ничего важнее в жизни, чем вовре- могают людям, не всякая критика приводит найдет для себя в них что-то интересное.
мя узнать «что, зачем и почему». В мире к улучшениям, а друзья не всегда готовы Он сдул пыль с умных книг и погрузил-
столько всего интересного, и надо везде мириться с вечными нравоучениями, щед- ся в поиск ответа на ненавистный воп-
успеть. Все узнать, все понять. Прочитать ро разбавленными огромным самомнени- рос. Почемучка не мог начать менять свою
все книжки и поговорить со всеми людь- ем. Да и цель в жизни как-то потерялась… жизнь, не поняв «что, зачем и почему».
ми. В детском саду Почемучка был за- Надо было что-то менять, но Почемучка Почемучка бежал вприпрыжку от счас-
водилой, в школе – лидером. Его обожа- привык советовать другим, а не действо- тья, как будто ему снова 15 лет, ведь он по-
ли учителя, и уважали сверстники. К не- вать сам. нял, понял «что, зачем и почему»! Теперь-то
му приходили с бедами, заслушивались Жизнь шла, а Почемучка все был в сом- уж он не упустит своего счастья! Теперь он
его советами. нениях, ведь он много-много раз говорил все изменит, и мир никогда не будет пре-
Почемучка всегда знал, чего хочет, другим: действовать можно, только поняв жним!.. Визг тормозов и удар о лобовое
и стремился к своим целям, которые меня- «что, зачем и почему». Уже не так охотно стекло прервали жизнь впервые не посмот-
лись со скоростью звука очередного, зада- слушали его советы, а друзья вечно ссыла- ревшего по сторонам Почемучки.
ром отданного совета. Он пылал энергией лись на занятость делами. Почемучка за- В удивленных глазах остывал вопрос:
жизни и не мог сидеть на месте. Мирить- грустил. Некого стало учить жизни, некому «Что? Зачем? Почему?».
ся с судьбой Почемучка не умел и не хо- стало пенять на безделье и малодушие. Из-
тел, он гнул ее под себя и старался выжать вечный вопрос стал проклятием… 27 августа 2004 г.
ности было азартно порвано или сожжено. Кто не прохо- радостнее и веселее. Конечно, все эти рассказы обо мне
дил через это?.. самом, это мои собственные поиски. Я не пытаюсь пере-
И по сей день страсть переносить свои сомнения и раз- делать мир или что-то в нем исправить, мне интересно, по-
думья на бумагу, то затихает в нем, то разгорается с но- чему так вышло. Почему люди перестают друг друга заме-
вой силой. Было время, когда главным развлечением на- чать – с этим уже ничего не поделаешь, но до причины до-
шего героя были беседы с непременными бабушками, за- копаться непременно нужно.
седающими у каждого уважающего себя подъезда. С не- А публикации до добра не доводят: на меня тут же на-
поддельным любопытством слушал увлекательные исто- чинают сыпаться советы и комментарии, будто я спраши-
рии их жизни – про Сибирь и высокие кабинеты ЦК. И ни- вал чьей-то рецензии.
чего не писал. Кстати, о форуме, где можно прочитать рассказы Коршу-
Просто не хотелось, видимо, копил в себе эти образы нова. Он создал его два года назад. От всех своих сетевых
и впечатления, не растрачивая их попусту. Желание взять- аналогов он существенно отличается полным отсутствием
ся за «перо», «достать чернил и плакать» – оно вообще на- единой темы. И вообще какой-либо темы. Сюда приходят
поминает море, с его приливами и отливами. Как и положе- люди самых разных профессий, интересов и жизненных
но человеку с «системным» мышлением, Алексей уже дав- позиций, есть ветераны Чеченской и даже один – Великой
но вывел закономерность собственной писательской актив- Отечественной войны. Приходят, когда им есть что сказать,
ности: если в жизни его хватает живого общения, встреч, обсудить, но чаще – на что пожаловаться. Когда Алексей
разговоров и эмоций – рассказы писать не хочется. Фило- стал более детально изучать интернет-сообщество – уди-
софские вопросы о природе мироустройства, правда, все вился: по всем законам жанра его форум должен был по-
равно никуда не уходят – как мучили, так и продолжают му- чить в бозе максимум через полгода после рождения. Од-
чить, но придавать им литературную форму желание пропа- нако живет до сих пор, и каждую неделю на нем появляют-
дает. И наоборот: наступает «социальное» затишье, и рас- ся несколько тысяч новых сообщений.
сказы как блины пекутся. – Когда меня спрашивают о целях и задачах форума –
Пишет Алексей исключительно по ночам, лучше всего ничего не могу ответить. Хотя на самом деле цель есть –
работается ему в полнолуние. свести вместе людей, тех, чьи кабинеты расположены
Рассказы – это действительно хобби: на лавры серь- на двадцать пятом этаже и в подвале одного и того же зда-
езного прозаика Алексей не претендует. Он даже не хочет ния. Ведь они на мир смотрят совсем по-разному. Ну раз-
публиковаться, лишь несколько историй вывесил в Сети, ве ж им не полезно встретиться?
на своем форуме, по адресу www.akeeper.ru. Нынче коллекция Коршунова пополнилась очеред-
– Каждый мой герой мучается каким-то вопросом. ным философским утверждением, а значит, совсем скоро
Это некое существо – реже живой человек, который живет на свет появится и очередной литературный выплеск: де-
одной-единственной мыслью, и мысль эту в каждом конк- лая выбор, человек всегда от чего-то отказывается, и ка-
ретном рассказе я и пытаюсь развить. Поезд в метро, ко- кое бы решение мы не принимали – все равно где-то про-
торый не понимает, как люди могут ходить мимо друг дру- играем, прогадаем, останемся в минусе.
га, как мимо пустого места, лягушонок, который думает,
что если он переселится в другое болото, жизнь его станет Анна Николаева
Сергей Зуев
В поисках хозяина Escom сразу объявила, что Amiga грузчики, напрямую управлявшие кон-
В начале 1995 года имущество ком- не умерла, и наладила новое произ- троллером дисковода. Однако этот
пании стали распродавать, на права водство Amiga 1200 и Amiga 4000T. просчет так и не был устранен.
обладания популярными торговыми С последними произошла заминка, В 1996 году президентом Amiga Tech.
марками претендовали такие гиганты, в продажу они поступили только в фев- стал староый поклонник Amiga Петро
как Commodore UK, IBM, Dell, Escom, рале следующего года, что подмочило Тищенко. Он объявил о начале разра-
CEI и Samsung. Тендер был выигран не- репутацию компании. Для новых ма- боток новых моделей – Amiga Walker
мецким гигантом по производству IBM шин даже слегка переписали сущес- и Power Amiga. Walker, названный
PC-совместимых компьютеров Escom. твующую AmigaOS 3.0, дав ей номер в честь самой первой игры для Amiga
Новая компания сразу разделила два версии 3.1. У поступивших в продажу Mind Walker, имел весьма оригиналь-
бренда: Commodore стали продавать А1200 оказался не «родной» дисковод. ный дизайн, похожий на пылесос или
обычную периферию к PC (мыши, кла- Escom устанавливала слегка модифи- на шлем Дарта Вейдера. Внутри он
виатуры, колонки и прочее), а подраз- цированные дисководы от IBM PC, из- имел процессор MC68030, 2 Мб Chip-
деление Amiga Technologies – зани- за чего перестали работать програм- памяти, чипсет AGA и мог расширять-
маться разработкой Amiga. мы, использующие нестандартные за- ся через слоты Zorro-3 или, ставшей
86
ретроспектива
тогда популярной, шину PCI. Сторон- твующего парка A1200 и A4000 – и пообещала, что будет использовать
ние производители объявили о нача- это были двухпроцессорные карты ее на своих новых системах Pre/Box.
ле разработок Amiga-клонов. Напри- с MC68040(60) и PowerPC 603e/604e. Поскольку освоить разработку и про-
мер, известная в кругах Mac- и Amiga- Помимо этого фирма объявила о том, изводство такого сложного комплекс-
пользователей компания Phase 5, про- что работы над A/Box не прекраща- ного продукта, как A/Box, было доста-
изводящая процессорные карты, виде- ются и, если бренд Amiga будет за- точно сложно, то решено было для на-
окарты и прочую периферию, объявила брошен, то их новые системы с успе- чала выпустить упрощенные системы
о своем новом компьютере A/Box. Он хом займут нишу Amiga как компью- Pre/Box. По планам они должны были
должен был произвести новую муль- теры с такой же идеологией. В этом содержать один процессор 680x0 и че-
тимедийную революцию, как и сама году были представлены видеокарты тыре PowerPC. Index объявила о разра-
Amiga 10 лет назад. Внутри планиро- на базе чипсета Cirrus Logic от той же ботке своего проекта Inside Out. Пла-
валось устанавливать до четырех про- Phase 5 – CyberVision 64 и от Village нировалось сделать PCI-карту для IBM
цессоров PowerPC 604 с тактовой час- Tronic – Picasso IV. PC, которая содержала бы AGA-чипсет
тотой в 200 МГц (максимум – 500 МГц) К 1996-97 годам компьютеры Amgia и процессор 680LC60 на 75 МГц.
и до 1 Гб памяти с транфером в 1,6 Гб/с окончательно утратили свои ранее На программном рынке тоже тво-
(не сравнимо выше, чем у популярной прочные позиции на рынке компьютер- рилось некоторое оживление: посколь-
тогда EDO RAM – 57,3 Мб/с). Но самым ных развлечений, но несмотря на это, ку были открыты исходные коды Doom
главным в этом компьютере должен в этот период произошел бурный рост и Descent, то моментально появились
был стать чипсет. Phase 5 объявила, новых игр. Появились два неофици- их неофициальные версии для Amiga.
что весь чипсет будет заключен в одну альных релиза Quake и Myst, кото- Еще один знаменательный релиз –
128-разрядную и работающую на час- рые работали практически как слайд- 3D-shooter Genetic Species. Netscape,
тоте в 200 МГц микросхему под назва- шоу (3-4 fps), но к концу года фирма проиграв в коммерческом соревнова-
нием «Caipirinha». Планировалось уб- ClickBoom официально выпустила оп- нии браузеров Microsoft, открыла ис-
рать разделение памяти на две облас- тимизированные версии этих игр. ходные коды своего браузера, чем вы-
ти, сделав единое адресное пространс- Подразделение Gateway 2000, за- звала немалый ажиотаж в сообщес-
тво, поддерживались разрешения до нимающееся Amiga, под руководством тве пользователей Amiga. Фирмой
1600 x 1200 точек на 24 бита с транфе- того же Тищенко в 1997 году объявило DiscreetFX была объявлена неболь-
ром между модулями в 3200 Мб/с. Ко о разработке новой операционной сис- шая награда тому, кто первым порти-
всему прочему обещалась аппарат- темы AmigaOS 3.5. Amiga International рует NN для AmigaOS. Однако это был
ная MPEG-поддержка, Genlock-совмес- объявила, что больше не будет выпус- сложный комплексный продукт, и пер-
тимый выход, два раздельных видеов- кать аппаратное обеспечение, оста- вые значительные шаги в портирова-
хода, аппаратные окна, продвинутый вив эту прерогативу сторонним фир- нии уже Mozilla и FireFox осуществля-
Blitter и DSP-RISC процессор для 3D- мам наподобие Phase 5 или PIOS. ются только в наши дни. Награда же
графики и видеокомпрессии. На рынке сразу появилось несколько за портирование выросла уже до поч-
В июле Escom внезапно объявила Amiga-совместимых машин от Draco, ти 10 тысяч долларов.
о продаже своего имущества компа- Access, Eagle и прочих производите- То время было бумом дот-комов
нии VISCorp, в связи с финансовыми лей. В сентябре 1997 года Gateway и машинно-независимых языков. В се-
проблемами. Последняя сразу оста- объявил о создании нового подразде- редине года было объявлено, что по-
новила проект Walker и начала выпуск ления Amiga Inc., которое должно бы- мимо рынка настольных систем, бренд
комплектов Amiga Magic, которые пред- ло заниматься будущим Amiga. К концу Amiga будет распространяться на рын-
ставляли собой обычную A1200 с мо- года Phase 5 наконец выпустила свои ке встраиваемых и мобильных сис-
демом и 100 часами в IBM.net. Однако новые процессорные карты, а некото- тем. Для этого начали разработку
финансовое положение VISCorp изна- рые сторонние фирмы ( DCE, Micronik) Java-подобной виртуальной машины
чально было шатким, поэтому в дека- объявили о создании Amiga-совмести- AmigaDE. Для настольных компьюте-
бре бренд Amiga был продан очеред- мых компьютеров нового поколения. ров предлагалось выпустить к 2000
ной фирме Quickpak. Последняя на- Маленькая фирма BlitterSoft анонсиро- году новую ОС версии 4.0. В качестве
ладила выпуск A4000T с процессора- вала новый клон BoXeR, который дол- ее основы планировалось взять ядро
ми MC68060 и объявила о своих пла- жен был иметь улучшенный AGA-чип- от Linux или от BeOS, но в итоге оста-
нах о переносе AmigaOS на процессо- сет, выполненный в FPGA и 680x0-про- новились на варианте QNX. Это бы-
ры DEC Alpha. Однако и этой фирме не цессор. ло очень быстрое и компактное ядро,
повезло с Amiga, и бренд отошел в руки Начало 1998 года было украшено которое умещалось в кеш процессо-
корпорации Gateway 2000, которая бы- новыми анонсами: Phase 5 выпустила ра. С процессором новых систем то-
ла дружественной с фирмой Microsoft. графические адаптеры на базе чипсе- же творилась неразбериха. Снача-
Подразделение, занимающееся Amiga, та Permedia 2 для своих новых процес- ла было объявлено об использовании
переименовали в Amiga International. сорных карт, также был объявлен аль- семейства x86 от Intel, однако боль-
янс между Phase 5, Blitter Soft и Index шая часть сообщества опротестова-
Amiga International Information Ltd. о разработке PowerPC- ла переход на «вражеские» процес-
Phase 5 провела демонстрацию но- рас ширения д ля BoXeR. 10 мар - соры, и тогда сообщили, что основой
вых процессорных карт для сущес- та Phase 5 лицензировала AmigaOS будущих компьютеров могут равнове-
88
ретроспектива
однако коренным ее отличием было их новую разработку – шинный мост +
то, что MorphOS изначально писалась процессорная карта Predator. По обе-
под процессоры PowerPC. Посколь- щаниям должна была получиться пла-
ку слухи о создании новой ОС ходи- та с PCI- и AGP-слотами и процессо-
ли уже с 1996 года, сообщество весь- ром PowerPC G3, которую также пла-
ма негативно отнеслось к этой ново- нировалось использовать в tower-вер-
сти – за последние годы слишком мно- сиях A1200.
го чего анонсировалось и тут же уходи- Известный производитель про-
ло в небытие. Чтобы разбить эти сом- цессорных карт для PowerMacintosh
нения, для публичного теста была вы- MetaBox анонсировала новую кар-
пущена очень сырая beta, которая тем ту для A1200 на базе процессора
не менее работала и даже могла запус- PowerPC G3, к сожалению, из-за внут-
кать некоторые программы. ренних проблем эта фирма скоро обан- Рисунок 3. MicroA1
Несмотря на отмену дальнейшей кротилась, оставив после себя толь-
разработки BoXeR, на рынке аппарат- ко прототип. именно то, чего долгие годы ожидало
ного обеспечения для Amiga в этом го- Amiga Inc. выпустила на рынок сообщество. За основу новой ОС взя-
ду царил бум новых товаров. Извест- новую ОС AmigaDE и SDK под нее. ли исходный код OS 3.x и начали пере-
ный наряду с Phase 5 в прошлом про- Для будущих систем, на которых пла- писывать его под современные требо-
изводитель периферии Apollo выпус- нировалась работа этой ОС, опубли- вания. Большая часть старой AmigaOS
тил платы со слотами расширения ковали спецификацию Zico с систем- была написана на С, однако были и ру-
Zorro-4 для переставленных в tower ными требованиями. Как было сказа- дименты в виде кусков на языке BCPL,
А1200. Zorro-4 – это некий компромис- но ранее, AmigaDE – это аналог Java, предшественнике С, и машииннозави-
сный вариант между Zorro-2 и Zorro-3: платформонезависимая ОС, которую симых частей, написанных на ассемб-
шина имеет 24-битную адресацию, как планировалось использовать в самом лере процессоров 680x0 и под чипсет.
в первом случае, и 32-битную шину широком спектре устройств – от на- Команда разработчиков, занимающая-
данных, как во втором. Польская фир- стольных компьютеров до встраива- ся новым проектом, обязалась перепи-
ма Elbox начала продавать комплекты емой и мобильной техники. Для клас- сать ОС под PowerPC и исключитель-
Mediator. Эти платы также предназна- сических компьютеров совсем неожи- но на С. Для демонстрации возможнос-
чались для А1200 и предоставляли воз- данно начала продаваться AmigaOS тей новой ОС в последующие годы бы-
можность использовать широко рас- 3.9. Если OS 3.5 была лишь набором ла проведена серия туров по многим
пространенную PCI-периферию вмес- патчей для старых ОС, то OS 3.9 пос- странам. Сначала срок выхода пла-
то дорогих аналогов Zorro (для срав- тавлялась с поддержкой PowerPC и на- нировался на конец 2001 года, затем
нения – сетевая карта под Zorro стоит бором очень полезных утилит. его отодвинули на 2002 год. С тех пор
85 $, когда для PCI можно найти ана- были выпущены три официальные бе-
логичную по параметрам за 5-10 $). Современность та-версии (см. рис. 1), однако дата ко-
Сразу после выхода Mediator, англий- В 2001 году Amiga Inc. анонсирова- нечного релиза до сих пор не опреде-
ская компания Eyetech анонсировала ла разработку AmigaOS 4. Это было лена. Единственное, что говорят раз-
работчики – «when it’s done».
Eyetech пересмотрела свои пла-
ны по разработке шинного моста
к A1200 и выпустила новый компьютер
на PowerPC под названием AmigaOne.
Позже было выпущено еще несколь-
ко моделей этого компьютера, отли-
чавшихся процессорами и форматом
плат. Последняя разработка, Micro
AmigaOne, представляет собой ма-
теринскую плату micro-ITX формата
(см. рис. 3). Первые модели поставля-
лись с дистрибутивом Linux, с возмож-
ностью получения бесплатно OS 4, ког-
да она появится в продаже. Позже все
владельцы купленных AmigaOne полу-
чили по почте все три вышедшие бе-
ты, а покупатели новых компьютеров
получали их сразу вместе с компью-
тером. В последнее время (вторая по-
ловина 2005 года) Eyetech приостано-
Рисунок 2. MorphOS вила производство своих компьюте-
90
bugtraq
92
книжная полка
SQL. Cправочник
Кевин Клайн
ализации SQL, из нее вы узнаете о ре- обо всех платформо-специфичных фун-
ляционной модели баз данных, описа- кциях. Программирование баз данных
ние стандартов SQL, познакомитесь с (общий обзор, открытие и закрытие со-
основными реализациями баз данных. единений с DB, управление транзакци-
Основные концепции в виде фунда- ями, выполнение инструкций, извлече-
ментальных основ, необходимых для ние данных, связанные параметры, об-
понимания принципов работы баз дан- работка ошибок). Весь изложенный ма-
ных, а также основные команды опи- териал носит сугубо практический ха-
саны во второй главе. Далее читателю рактер, а большое количество приме-
предлагается справочник по инструк- ров поможет усвоить прочитанное на-
циям SQL (отсортированным в алфа- илучшим образом. Книгу можно реко-
витном порядке). В качестве примера мендовать всем без исключения DBA-,
приводятся реализации для каждой из SQL-программистам, а также систем-
вышеописанных баз данных. В начале ным администраторам, работа которых
главы приводится таблица, из которой так или иначе касается баз данных.
Среди прочих справочников по SQL этот можно узнать о степени реализации
выгодно выделяет то, что он охватыва- той или иной функции в представлен- Издательство: «Кудиц-Образ»
ет практически все базы данных, подде- ных базах данных. Функции SQL – так- Год издания: 2006
рживающие стандарт ANSI SQL 2003, а же отсортированный по алфавиту пе- Количество страниц: 832
именно Microsoft SQL Server 2000 , DB2 речень функций SQL 2003 с описанием ISBN: 5-9579-0114-8
v8.0, Sybase Adaptive server 12.5, Oracle реализаций (агрегатные, оконные, ска- Цена: ≈ 476 руб.
10g, а так же OpenSource DB – MySQL лярные функции). Также, в рамках дан- Книга предоставлена издательством «Кудиц-
4.x и PostgreSQL 7.x . Весь материал ной главы представлена информация Образ».
разделен на пять логических частей.
Первая глава посвящена истории и ре- Обзор книжных новинок подготовил Александр Байрак
№3 март 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 года. Редак-
ция не высылает журналы за пределы Российской Феде-
рации.
Стоимость
подписки через
редакцию:
900* руб.
за 6 номеров
1800* руб.
за 12 номеров
* Включая НДС
и почтовую доставку
РЕДАКЦИЯ
ЧИТАЙТЕ
Исполнительный директор
Владимир Положевец В СЛЕДУЮЩЕМ
НОМЕРЕ:
Ответственный секретарь
Наталья Хвостова
sekretar@samag.ru
Технический редактор
Владимир Лукин
Редактор
Алексей Коршунов Перспективы профессии. тема сборки программ, используемая
Внештатные редакторы Автопортрет во FreeBSD имеет значительно боль-
Алексей Барабанов Кто такие системные администрато- шие возможности, чем те, которые мы
Кирилл Тихонов ры, почему они этим занимаются, что задействовали. Какие это возможнос-
Сергей Супрунов ждет их впереди? Попробуем разо- ти и как их использовать в своих пор-
Татьяна Ильченко браться в настоящем положении дел тах – в продолжении материала.
и сделать предположения на ближай-
РЕКЛАМНАЯ СЛУЖБА
тел./факс: (095) 928-8253
шее будущее. Используем средства
Дарья Хохлова
библиотеки OpenSSL
reсlama@samag.ru Архитектура и реализация для криптографической
файловой системы reiser4 защиты данных
Верстка и оформление Не уступая многочисленным аналогам Защищать данные надо – с этим ут-
maker_up@samag.ru в функциональности (здесь и практи- верждением трудно не согласиться. Са-
Дизайн обложки чески неограниченные размер раздела мым надежным способом скрыть ин-
Николай Петрочук и количество файлов, и динамическое формацию от посторонних глаз являет-
размещение объектов, и эффективная ся ее шифрование. В настоящее время
По вопросам распространения работа с маленькими файлами, и быс- существует большое количество стой-
обращайтесь по телефону: трое восстановление после сбоев), про- ких криптографических алгоритмов,
(095) 928-8253 (доб. 120)
изводительности и масштабируемос- позволяющих надежно защитить кон-
ти, reiser4 предоставляет пользовате- фиденциальные данные, и множество
107045, г. Москва,
Ананьевский переулок, дом 4/2, стр. 1 лям ряд дополнительных возможностей. их программных реализаций, доступ-
тел./факс: (095) 928-8253 Прозрачное сжатие и шифрование фай- ных для свободного использования.
Сайт журнала: www.samag.ru лов, полное журналирование данных, Речь пойдет о библиотеке OpenSSL,
а также практически неограниченную которая предоставляет в распоряже-
РУКОВОДИТЕЛЬ ПРОЕКТА (за счет плагинной архитектуры) рас- ние пользователя набор функций, ре-
Петр Положевец ширяемость, другими словами, способ- ализующих различные криптографи-
ность приспосабливаться к сколь угодно ческие алгоритмы, такие как Triple-DES,
УЧРЕДИТЕЛИ сложным запросам потребителей. Blowfish, AES, RSA и другие. Не углуб-
Владимир Положевец ляясь в детали реализации алгорит-
Александр Михалев
Создаем порт для FreeBSD мов, мы рассмотрим несколько прак-
ИЗДАТЕЛЬ
своими руками. тических примеров использования биб-
ЗАО «Издательский дом Часть 2: расширенные лиотеки OpenSSL для генерации псев-
«Учительская газета» возможности дослучайных чисел, вычисления хэшей
В первой части статьи мы рассмотре- (дайджестов), и шифрования данных
Отпечатано типографией ли основные вопросы создания порта с использованием симметричных и ас-
ГП «Московская Типография №13» для FreeBSD своими руками. Но сис- симетричных алгоритмов.
Тираж 10000 экз.
96