Открыть Электронные книги
Категории
Открыть Аудиокниги
Категории
Открыть Журналы
Категории
Открыть Документы
Категории
ЛИ
С
ЛИ
ТЯ Е
Ж ПИ
ЗА ДНИ
НУ
РА КУ
ЛЫ ГО
ТИ РАС
К У ВО
РО
№9(70) сентябрь 2008
НИ НО
СТ
БЫ
подписной индекс 20780
КА
www.samag.ru
Настраиваем терминальное решение
И
ЬГ
ЬД О
БО А
К
ИС НН
ЕН
РА СК
ТЕ
УС
ИЛ ДА
У
ТП
НА П
Л ОТ
НЧ ЖИ
ВО
РА ЛЕ
КО НЕО
Л
АВ ОС
ХА
УЕ
На страже безопасности –
ЗА
Software Restriction Policies
Так видит журнал читатель, оформивший подписку: Новшества в Windows Server 2008:
стек TCP/IP
Работаем с данными
Active Directory из скриптов
Управление BerkeleyDB
и тонкая настройка Jabberd2
Реклама
в номере
5 ТЕНДЕНЦИИ ИНТЕРВЬЮ
АДМИНИСТРИРОВАНИЕ 60 Точная геонавигация в городе с помощью
технологии Wi2Geo
6 Устанавливаем и настраиваем Интервью с Денисом Алаевым, автором идеи.
терминальное решение на базе Антон Борисов
Citrix Presentation Server 4.5
и тонких клиентов WYSE ЧЕЛОВЕК НОМЕРА
Первые этапы при вводе в строй терминального реше-
ния. Вопросы выбора продуктов, подготовки сетевой 66 Ричард Столлман:
инфраструктуры, особенности установки терминаль- свобода без ограничений
ных продуктов Microsoft и Citrix. Пожалуй, нет в мире человека, знакомого со свобод-
Алексей Бережной ным программным обеспечением и не знающего Ричар-
да Столлмана – человека, подарившего миру идею бес-
16 Новшества в Windows Server 2008: платного ПО с открытым исходным кодом, ярого про-
стек TCP/IP тивника авторского права.
В новой версии ОС Windows Server 2008 стек TCP/IP Дмитрий Мороз
был полностью переработан. Рассмотрим, какие нов-
шества появились в нем. ПРОГРАММИРОВАНИЕ
Андрей Бирюков
70 Распределенная система контроля
20 Используем check_relay в Sendmail версий Bazaar
для борьбы со спамом Основные концепции Bazaar.
Почтовые серверы, такие как Postfix и Exim, предлага- Дмитрий Васильев
ют сравнительно прозрачные способы фильтрации со-
единений. Владельцы же Sendmail вынуждены попотеть, 77 Готовимся к переходу на PHP 5.3
чтобы раскрыть весь потенциал этого MTA. Для плавного перехода с PHP 5.2 на PHP 6 было реше-
Сергей Супрунов но разработать промежуточную версию PHP 5.3, кото-
рая будет содержать большинство улучшений, разра-
27 Jabberd2 – простой и нетребовательный ботанных для PHP 6.
к ресурсам XMPP-сервер. Часть 2 Александр Майоров
Управление базами данных BerkeleyDB и тонкая нас-
тройка Jabberd2. АДМИНИСТРИРОВАНИЕ «1С»
Михаил Кондрин
86 Открываем базу данных одним
34 Работаем с данными Active Directory щелчком мыши
из скриптов Файловое расширение *.MD по умолчанию никак не об-
Часть 1. Применение Bourne Shell рабатывается операционной системой, но это досадное
В корпоративной среде при разработке скриптов ра- недоразумение можно исправить, добавив себе допол-
но или поздно возникает вопрос: «А неплохо было бы нительный функционал для комфортной работы.
иметь базу всех сотрудников с именами, должностями, Андрей Луконькин
адресами и номерами ICQ...». Такая база уже есть. Ее
за нас придумала Microsoft. Это Active Directory. Нужно 87 «1С:Сценарное тестирование»
только уметь с ней общаться. В сентябре вышла ознакомительная версия нового
Рашид Ачилов программного продукта, позволяющего повысить ра-
ботоспособность и отказоустойчивость конфигураций
40 Панель управления хостингом ISPConfig «1С:Предприятие 8».
Обзор решения. Андрей Луконькин
Сергей Яремчук
РЕТРОСПЕКТИВА
44 Лебедь, рак да щука:
САМО-Софт, wine, Etersoft 88 Сквозь тернии к звездам:
Запускаем под Linux «САМО-ТурАгент» – продукт история компании Hewlett-Packard
для автоматизации турфирмы. Их было двое. Одного звали Билл, другого – Дэйв.
Сергей Барановский Они окончили университет в начале тридцатых годов
прошлого века, и были инженерами. Эти парни хоте-
50 Обзор ALT Linux 4.0 Children ли заниматься технологиями. Теперь фамилии Hewlett
Знакомимся с новинкой – бета-версией необычного и Packard знает весь мир.
дистрибутива, предназначенного для детского твор- Илья Александров
чества – ALT Linux 4.0 Children.
Сергей Яремчук 92 КНИЖНАЯ ПОЛКА
53 ЗАКОН ЕСТЬ ЗАКОН 94 СИСАДМИН ТОЖЕ ЧЕЛОВЕК
БЕЗОПАСНОСТЬ 19, 65, 91 BUGTRAQ
54 На страже безопасности –
Software Restriction Policies Код для участия в розыгрыше призов.
Эффективно используем технологию SRP.
Следуйте инструкциям на стр. 2.
Вадим Поданс
Более подробную информацию о сроках и правилах проведения розыгрышей призов смотрите на сайте журнала – www.samag.ru
Реклама
тенденции
Google выпустила свой веб-браузер – поддержку асинхронного ввода/вывода для SATA (NCQ),
Google Chrome поддержку образов VHD (Microsoft Virtual PC).
Пожалуй, самым заметным событием начала осени стало Уже 10 сентября Sun Microsystems развила тему виртуа-
заявление компании Google о намерении выпустить собст- лизации, запустив новый Open Source-проект, нацеленный
венный веб-браузер с открытым кодом – Chrome (http:// на улучшение возможностей решения Sun xVM Server. Анон-
www.google.com/chrome). сированный xVMserver.org стал инициативой Sun по созда-
1 сентября в официальном блоге Google появилось со- нию Open Source-сообщества на базе ее виртуализацион-
общение о том, что 2 сентября, компания одним простым ного программного обеспечения xVM Server. На появившем-
и очевидным шагом буквально ворвется на нестабильный ся веб-сайте разработчики получили возможность скачать
в последние годы рынок веб-браузеров. Обещание в Google первый архив исходного кода Sun xVM Server и внести свой
сдержали, и миллионы пользователей бросились изучать вклад в процесс совершенствования продукта. Объявле-
и тестировать новый продукт интернет-гиганта. И вско- ние о запуске xVMserver.org состоялось вместе с сообще-
ре исследователи из Net Applications заявили, что Chrome нием о доступности программного обеспечения Sun xVM
удалось за несколько часов после официального запус- Server и Sun xVM Ops Center 2.0, которые в Sun называют
ка завоевать 1% рынка браузеров, достигнув пика в 9,7% «ключевыми компонентами в ее всеобъемлющей страте-
на сайте Computerworld на следующий день после дебю- гии по виртуализации».
та (3 сентября). Кроме того, 9 сентября Тим Брэй (Tim Bray), директор
В Google объяснили причину выпуска своего браузера по веб-технологиям в Sun, представил в своем блоге нача-
следующим образом: «Мы уверены, что можем принести ло бета-тестирования Project Kenai – сервиса Sun для хос-
пользу в этой области и в то же время способствовать ин- тинга Open Source-проектов, позиционируемый компанией
новациям в Web». Браузер Google Chrome уже долгое вре- как «Больше, чем просто кузница», апеллируя к SourceForge
мя использовался внутри компании, и теперь его выпусти- (от англ. forge – кузница). Как пояснил Ник Сейгер (Nick
ли для широкой публики. Seiger), разработчик сервиса, одной из причин, побудивших
Среди технических подробностей о Google Chrome к созданию Kenai, стала потребность в демонстрации воз-
можно выделить заимствование компонентов из браузе- можностей создания проектов, работающих поверх тради-
ра Mozilla Firefox и движка рендеринга веб-страниц Apple ционных стеков LAMP/SAMP. В этом заявлении автор ссы-
WebKit, а также использование нового открытого JavaScript- лается на разработки Glassfish, JRuby и Ruby on Rails.
движка V8 (его исходный код был вскоре опубликован
на Google Code). Одной из ключевых особенностей стала Подготовил Дмитрий Шурупов
по материалам www.nixp.ru
изоляция вкладок браузера друг от друга («падение» одно-
го из табов никак не отразится на работе других).
Первый бета-релиз Google Chrome пока доступен толь-
ко для операционной системы Microsoft Windows (в Google
объяснили это желанием получить максимальный отклик
как можно быстрее), но в дальнейшем появятся сборки
и для других платформ (Mac OS X, Linux). Пока в сети мож-
но найти только рекомендации по самостоятельной компи-
ляции Chrome из исходников для этих систем.
Устанавливаем и настраиваем
терминальное решение на базе
Citrix Presentation Server 4.5
и тонких клиентов WYSE
Алексей Бережной
В статье рассказывается о первых этапах при вводе в строй терминального решения на базе
Citrix Presentation Server 4.5. Затрагиваются вопросы выбора продуктов, подготовки сетевой
инфраструктуры, а также особенности установки терминальных продуктов Microsoft и Citrix.
Т
ак уж получилось, что наш отдел раструктуры. Мы остановились на тер- n простота обслуживания;
оказался в численном меньшинст- минальном решении: тонкие клиенты n повышение уровня безопасности;
ве. Два системных администрато- и терминальный сервер. n упрощение процесса резервного
ра (по UNIX и Windows-системам соот- копирования;
ветственно) и один инженер техничес- Преимущества n простота учета компьютерной тех-
кой поддержки на парк компьютеров использования ники;
более 200 машин – это совсем немного. тонких клиентов n невысокая стоимость обслужива-
Помимо всего стартовал новый проект n длительный срок работы клиент- ния тонких клиентов;
по переходу на новую СУБД. Поэтому ских устройств; n низкое энергопотребление;
нужно было искать способ в кратчай- n большой срок морального устаре- n отсутствие шума от вентиляторов
ший срок максимально сократить из- вания оборудования; в системных блоках;
держки на обслуживание сетевой инф- n быстрота развертывания; n отсутствие пыли от компьютеров;
администрирование
n экономия пространства на столе и под столом, а также лей. Все, что нужно для работы, теперь хранится на терми-
возможность использования любой офисной мебели; нальном, или файловом сервере. Соответственно процесс
n стоимость тонкого клиента. резервного копирования упростился в десятки раз.
Быстрота развертывания
Сколько времени уходит на подготовку обычной офисной
рабочей станции? Если устанавливать с «нуля», начиная
с операционной системы и драйверов оборудования и за-
канчивая офисными приложениями, то примерно около двух
часов. Даже при применении средств быстрого развертыва-
ния, например, из образа, созданного посредством Acronis
True Image или Norton Ghost, все равно процедура займет
примерно около часа. В случае с тонким клиентом доста-
точно достать оборудование из коробки и подключить кабе-
ли к разъемам. Что же касается прикладного программно-
го обеспечения, то оно устанавливается один раз на тер-
минальный сервер.
Простота обслуживания
Достаточно выполнить минимальные настройки: задать
первоначальные параметры подключения. В случае неис-
правности тонкие клиенты легко отвезти в гарантийную
мастерскую.
Резервное копирование
В случае с тонкими клиентами не стоит беспокоиться по по-
воду данных, сохраненных на жестких дисках пользовате-
Минусы использования
тонких клиентов
n чрезмерная централизация сете-
вой инфраструктуры;
n утрата некоторых пользователь-
ских функций;
n утрата статуса «большого босса».
Чрезмерная централизация
сетевой инфраструктуры
Когда роль клиентов сведена к мини-
муму функций, роль терминального
Рисунок 1. Окно установки Citrix «Переназначение дисков» (Remapping) и файлового серверов значительно
возрастает. Справедливости ради сто-
операционной системы и прочих ве- в кабинетах. Создавалось впечатле- ит отметить, что в случае с обычными
щей, на которые в большинстве сво- ние, что как будто не хватало чего-то ПК все равно существует большая за-
ем тратятся основные усилия сотруд- привычного. Выход нашелся быстро – висимость от серверной части. Напри-
ников технической поддержки. До- по внутренней громкоговорящей связи мер, все от того же файлового серве-
бавьте к этому крайне низкую веро- стали транслировать тихую музыку. ра, от контроллера домена, от серве-
ятность вмешательства пользовате- ра DNS и т. д.
ля в настройки терминала, и получит- Отсутствие пыли от компьютеров
ся весьма впечатляющая картина «не- Обычный офисный компьютер не прос- Утрата некоторых
потопляемой» IT-структуры. Это вы- то работает, как плохой пылесос. Круп- пользовательских функций
годно не только для крупных компа- ные частички пыли всасываются че- Тонкие клиенты в классическом пони-
ний, но и для небольших фирм, кото- рез щели системного блока, как мель- мании не содержат в своем составе
рые впоследствии смогут окончатель- ницами, измельчаются вентилятора- таких устройств как DVD-ROM и т. п.
но перейти на аутсорсинг. ми и вылетают наружу, оседая на по- вещей. Хотя в то же время процесс
верхностях. Дышать этой пылью – да- просмотра видео, прослушивания ау-
Низкое энергопотребление леко не самая лучшая оздоровитель- диоинформации вполне осуществим
К сожалению, в России в большинстве ная процедура. на большинстве моделей современ-
компаний пока не обращают внимания ных тонких клиентов.
на реальные убытки от перерасхода Экономия пространства на столе
электроэнергии. Но достаточно пред- и под столом, а также Утрата статуса «большого босса»
ставить себе крупный офис с числен- возможность использования Не секрет, что ПК может способс-
ностью от 100 компьютеров и выше, любой офисной мебели твовать удовлетворению тщеславия
чтобы понять, что даже небольшая эко- Не секрет, что некоторые образцы сов- и личных амбиций. Зачастую чем выше
номия в 100 Ватт на каждое устройство ременной офисной мебели не в состо- ранг сотрудника в компании, тем бо-
может вылиться в реальные десятки, янии выдерживать вес современных лее дорогой системный блок стоит
а то и сотни киловатт/час, когда речь системных блоков. Например, некото- у него под столом. Хотя с точки зре-
идет обо всем офисе в целом. рые столы из стекла и/или пластика ния финансовой целесообразности та-
просто разваливаются под тяжестью кая практика измерения статуса край-
Отсутствие шума от вентиляторов обычного персонального компьютера. не негативно отражается на финансо-
в системных блоках Возможность использовать маленький вом положении большинства компа-
Само по себе большое достижение. легкий тонкий клиент позволяет поку- ний, а также на информационной бе-
Бывают забавные случаи, когда, на- пать любую офисную мебель. зопасности и отказоустойчивости. Го-
пример, сотрудники одной компании, раздо выгоднее потратить деньги, сэ-
где был произведен переход на тер- Стоимость тонкого клиента кономленные на амбициях менедже-
минальные решения, пожаловались Как правило, стоимость тонкого кли- ров среднего звена, на модернизацию
руководству на необычную тишину ента примерно на 100-150$ ниже сто- серверного оборудования или, к при-
администрирование
меру, на создание мощной системы дом прикладных программ, таких, как n д и с к о в ы й м а с с и в R A I D 10 –
резервного копирования. банк-клиенты, рукописные СУБД и т. п. 4x250 Гб;
Так как сроки на решение задачи бы- n к о н т р о л л е р S C S I / R A I D –
Выбор тонкого клиента ли весьма ограничены, пришлось ос- I n t e l E m b e d d e d S e r ve r R A I D
Тонкие клиенты выпускает множес- тановить свой выбор на терминаль- Technology II;
тво компаний. Среди них HP, Sun ном решении, основанном на продук-
Microsystems, WYSE, а также огром- тах Windows и Citrix. Решение проблем
ное количество разных мелких сбор- Еще одно дополнительное усло- с печатью
щиков. В силу вышеописанных причин вие, которое определило наш выбор, – Если раньше пользователи распеча-
нам была нужна самая простая и на- пользователи не должны были «заме- тывали на локальных принтерах, под-
дежная модель. тить подмены» при работе с виртуаль- ключенных к персональным компью-
Кроме того, по нашему замыслу он ными рабочими столами. То есть мак- терам, то при переходе на тонкие кли-
должен поддерживать протокол ICA симально сократить и упростить про- енты возникла необходимость реше-
для подключения к Citrix Presentation цесс адаптации рядовых сотрудников ния вопросов сетевой печати. Поэто-
Server и обладать минимумом поль- в новой IT-структуре. Поэтому в итоге, му появилась необходимость значи-
зовательских функций, по принципу – взвесив все «за» и «против», мы ос- тельную часть нагрузки перенести
меньше функций, меньше возможнос- тановились на операционной систе- на имеющиеся сетевые МФУ (много-
тей сбить настройки. Это позволит со- ме Windows Server 2003 R2 Standard функциональные устройства). Для ос-
кратить время на обслуживание за- Edition x64. тавшихся локальных принтеров были
явок от пользователей, переведя все куплены принт-серверы для дальней-
программное обеспечение на терми- Выбор аппаратного шего подключения их к терминально-
нальный сервер. обеспечения му серверу в качестве сетевых печа-
Мы решили остановиться на мо- терминального сервера тающих устройств.
дели от WYSE – S10 (http://wyse.ru/ Первоначально предполагалось под-
products/winterm/S10/index.php). Про- ключить от 30 до 100 пользователей. Почему Citrix?
стота исполнения, эргономичность, Поэтому решено было использовать На начальном этапе можно было ос-
минимум функций и невысокая це- один сервер в ферме с последующим тановиться на Microsoft Terminal Server.
на – эти показатели определили наш подключением новых серверов по ме- Закупленные тонкие клиенты WYSE
выбор. ре возрастания нагрузки. Конфигура- S10 умеют работать по RDP-протоко-
Честно признаться, мы немного ция сервера: лу, что может быть вполне достаточ-
колебались в сторону более продви- n с е р в е р н а я п л а т ф о р м а I n t e l но. Citrix Presentation Server был вы-
нутых моделей, таких как WYSE S50 SR2500ALLXR; бран за возможность масштабирова-
и V50. В этих моделях нас привлекала n материнская плата S5000PAL; ния (серверы объединены в единую
возможность использования протоко- n 2 процессора Xeon(R) CPU E5440 @ ферму, производительность которой
ла X Windows, а значит, возможность 2.83 ГГц 16 Гб RAM; можно увеличивать за счет подклю-
использования Linux в качестве опе-
рационной системы для терминаль-
ных решений. Но, имея ряд нерешен-
ных вопросов, в частности, совмести-
мости используемого ПО, мы реши-
ли отказаться от этой идеи и сосредо-
точиться на терминальных решениях
от Microsoft и Citrix.
Выбор операционной
системы терминального
сервера
Как уже говорилось, нам очень хоте-
лось остановить свой выбор на серве-
ре под управлением бесплатного дист-
рибутива Linux и системой X Windows.
Главным преимуществом данного ре-
шения было отсутствие необходи-
мости покупать операционную сис-
тему. Однако данный выбор, во‑пер-
вых, потребовал бы приобретения бо-
лее сложных дорогих тонких клиен-
тов, во-вторых, могли возникнуть про-
блемы с совместимостью Linux с ря- Рисунок 2. Окно активации Terminal Server Licensing Server Activation Wizard
чения новых серверов). Также выгля- му и установить все необходимые об- Установка терминального сервера
дели весьма привлекательно техноло- новления. Citrix Presentation Server требует уста-
гии публикации программного обеспе- новленного Microsoft Terminal Server
чения посредством технологии Data Переназначение (Remapping) с требуемым количеством лицензий.
Streaming. дисков Важное замечание. Перед уста-
Для того чтобы пользователь при от- новкой Terminal Server необходимо
Подготовка к установке крытии терминальной сессии смог под- выключить удаленный доступ к рабо-
аппаратного обеспечения ключить свои локальные дисковые то- чему столу. Для этого правой кнопкой
Citrix ма, используя не привычные буквы C, мыши необходимо щелкнуть по знач-
n установка операционной системы; D, E и т. д. логическим томам сервера ку «Мой Компьютер» (My Computer),
n переназначение дисков; присваиваются другие буквы. По умол- далее из появившегося меню выбрать
n ввод сервера в домен Active Directory чанию в этом случае используются бук- «Свойства» (Properties), далее перейти
в качестве члена домена; вы, начиная с M (см. рис. 1). на вкладку «Удаленное использова-
n установка терминального сервера; Чтобы запустить данную процеду- ние» (Remote) и снять отметку на оп-
n лицензирование Microsoft Terminal ру, необходимо с установочного диска ции «Включить удаленный доступ к ра-
Server; Citrix Presentation Server запустить про- бочему столу» (Allow users remotely
n выбор хранилища для Data Store; грамму инсталляции. Выбрать пункт to this computer).
n установка среды Microsoft .NET меню Product installations and Updates, Устанавливать Terminal Server луч-
Framework 2.0; в новом окне выбрать Remap Drive. ше всего из окна «Управление Сер-
n у с т а н о в к а M i c r o s o f t I n t e r n e t Не рекомендуется вмешиваться в этот вером» (Manage Your Server). Вызвать
Information Services; процесс без особой на то нужды. его можно из меню «Панель управле-
n установка Microsoft SQL Server 2005 Важное замечание. До перена- ния (Control Panel) → Администриро-
Express Edition. значения дисков сервера не следует вание (Administrative Tools) → Управ-
устанавливать никакое программное ление данным сервером (Manage Your
Установка операционной системы обеспечение. После переназначения Server)». После установки сервер авто-
Никаких особенных нюансов на данном дисков некоторые программы могут матически перезагрузится. По завер-
этапе не существует. не работать из-за изменившихся пу- шении перезагрузки можно проверить
Для повышения производительнос- тей доступа к файлам. с рабочей станции удаленный доступ
ти в отдельных случаях имеет смысл к рабочему столу.
перенести файл подкачки на отдель- Ввод сервера в домен
ный физический том. В нашем случае Active Directory в качестве Лицензирование Microsoft
используется дисковый массив RAID10, члена домена Terminal Server
который обладает достаточной про- Так как у нас сеть построена на осно- Этот вопрос заслуживает отдельного
изводительностью, и переноса файла ве домена Active Directory, следова- рассмотрения. В первую очередь не-
подкачки не требуется. Не забудьте за- тельно, крайне желательно, чтобы все обходимо установить сервер лицензий
регистрировать операционную систе- компьютеры являлись членами домена. (Terminal Server Licensing). Сделать это
10
администрирование
можно из меню «Панель Управления (Control Panel) → Уста- не должно возникнуть особых трудностей, так как данный
новка и удаление программ (Add and Remove Programs) → пакет уже включен в дистрибутив Microsoft Windows Server
Добавить /удалить компоненты Windows (Add/Remove 2003. Аналогично другим устанавливаемым продуктам за-
Windows Components) → Лицензирование сервера терми- ходим в «Панель Управления» (Control Panel) и посредством
налов (Terminal Server Licensing). апплета «Установка и удаление программ» (Add and Remove
Далее необходимо запустить MMC-консоль Terminal Programs) устанавливаем необходимые службы.
Server Licensing и, выбрав нужный сервер лицензий (в на-
шем случае он будет один), кликнуть правой кнопкой мы- Установка Microsoft SQL Server 2005 Express Edition
ши. В появившемся меню выбрать «Активировать Сер- Важное замечание. Microsoft SQL Server 2005 Express
вер» (Activate Server). После чего в появившемся окне при- Edition поставляется в двух редакциях Microsoft SQL Server
ветствия Terminal Server Licensing Server Activation Wizard 2005 Express Edition и Microsoft SQL Server 2005 Express
нажать кнопку Next (далее). В следующем окне предлага- Edition with Advanced Services. В первом случае вы полу-
ется выбрать способ активации. Я выбирал по телефону чите только непосредственно систему управления база-
(Telephone). В следующем окне появилась информация о ми данных без каких-либо дополнительных пользователь-
необходимых телефонах, а также о Product ID, необходи- ских функций. Во втором случае помимо непосредственно
мом для активации (см. рис. 2). После звонка по указан- «движка» (Engine) Microsoft SQL Server 2005 Express Edition
ному телефону меня соединили с милой девушкой, кото- вы получаете дополнительные возможности для построения
рая приняла от меня мой Product ID и продиктовала в от- отчетов, полнотекстового поиска, ну и конечно, консоль уп-
вет License Server ID, который я внес в пустые ячейки. Да- равления SQL Server 2005 Management Studio Express. Не-
лее аналогичным образом активируются лицензии на под- смотря на значительную разницу в объеме скачиваемого
ключение к терминальному серверу. Способ активации по файла (53 Мб против 234 Мб), мы остановили свой выбор
телефону тем и хорош, что если что-то не знаете, вам обя- на втором варианте, чтобы впоследствии иметь дополни-
зательно помогут. тельный инструментарий для просмотра, резервного копи-
рования и других манипуляций с базами данных. Хотя для
Выбор хранилища для Data Store экономии трафика, места на диске, системных ресурсов
Citrix Presentation Server нуждается в средствах СУБД для и т. д. можно использовать и первый вариант. Перед уста-
хранения служебной информации. Для этих целей могут новкой необходимо уяснить некоторые детали.
быть использованы: Как известно, MS SQL начиная с MS SQL 2000 может
n база данных MS Access; быть установлен как экземпляр по умолчанию (Default)
n Microsoft SQL Server 2005 Express Edition;
n Microsoft SQL Server, Oracle database, and IBM DB2.
Рисунок 4. Окно выбора редакции Citrix Presentation Server 4.5 Рисунок 5. Выбор настроек новой фермы серверов
или именованный экземпляр. Разни- ний экземпляр приложения, доволь- в нашем случае CITRIX_METAFRAME.
ца заключается в том, что к экземп- но требовательного к ресурсам, абсо- Запускаем:
ляру по умолчанию можно обращать- лютно не хочется. Должен быть дру-
ся по имени сервера, на котором он гой выход. setup INSTANCENAME=CITRIX_METAFRAME
установлен, а для обращения к ба- И этот выход был найден. Дистри-
зе данных именованного экземпляра бутив загружается с сайта Microsoft Далее установка ничем не отли-
нужно указать не только имя сервера, в сжатом виде. При обычной инс- чается от установки MS SQL Server
но и имя экземпляра. Обычно имено- талляции в качестве экземпляра 2005.
ванные экземпляры устанавливают- по умолчанию достаточно запустить
ся как второй, третий и т. д. на сервер, загруженный файл SQLEXPR.EXE Установка Citrix
где уже установлен основной экземп- или SQLEXPR_ADV.EXE. Для исполь- Presentation Server
ляр по умолчанию, хотя бывают и ис- зования параметров, отличных от инс- Лучше всего устанавливать Citrix
ключения. талляции по умолчанию, нам необходи- Presentation Server при помощи стан-
Для этого в коммерческих вер- мо запустить самораспаковывающий- дартной консоли установки. Обыч-
сиях MS SQL 2005 при инсталля- ся архив с ключом -x: но она стартует в режиме автозапус-
ции программа-установщик пред- ка (Autorun) при помещении устано-
лагает выбрать имя экземпляра. SQLEXPR.EXE –x вочного диска в CD-ROM. При запус-
Но в Microsoft SQL Server 2005 Express ке появится окно с меню из следую-
Edition при обычном способе установки или щих пунктов:
такой выбор не предоставляется. n View installation checklist;
В то же время для нормальной SQLEXPR_ADV.EXE -х n Product installations and Updates;
установки Citrix Presentation Server n Citrix on the Web;
с MSDE 2005 в качестве хранилища в зависимости от используемой вер- n Install Document Center.
Data Store необходимо, чтобы Microsoft сии. Появится маленькое окошко
SQL Server 2005 Express Edition был с предложением ввести имя каталога Перед началом установки насто-
установлен в качестве именован- для распаковки. Лучше указать допол- ятельно рекомендуется еще один раз
ного экземпляра с именем CITRIX_ нительную поддиректорию, иначе про- просмотреть checklist и выполнить под-
METAFRAME. Как разрешить данное грамма распаковки вывалит содержи- готовительные пункты, которые бы-
противоречие? мое архива в тот же каталог, где лежит ли пропущены. Если все готово и вы
Можно решить проблему, что назы- скачанный архив. в этом уверены, приступаем к пункту
вается, «в лоб» и установить сначала Перейдя в каталог распаковки, Product installations and Updates.
один экземпляр по умолчанию MSDE находим файл template.ini, из которо- Перед нами откроется новое ме-
2005, а следом за ним начать уста- го становится ясно, что для установ- ню. Необходимо выполнить все пунк-
новку второго экземпляра. В этом слу- ки Microsoft SQL Server 2005 Express ты по порядку.
чае программа-установщик предложит Edition в качестве именованного эк-
выбрать другое имя устанавливаемо- земпляра нужно запустить установ- Установка сервера лицензий
го экземпляра, чем можно воспользо- ку с ключом: Так как переназначение дисков (Remap
ваться и задать требуемое имя CITRIX_ drivers) мы выполнили сразу после
METAFRAME. Но устанавливать лиш- INSTANCENAME=_ИМЯ_ЭКЗЕМПЛЯРА_ установки операционной системы,
12
администрирование
то сразу переходим ко второму пунк-
ту – установка.
Следующий шаг – необходимо ус-
тановить сервер лицензий. Выбира-
ем Product installation and updates в ок-
не установки Citrix, в следующем окне
Install Citrix Licensing. Во время уста-
новки сервера лицензий ничего осо-
бенного не происходит. В одном окне
вам предложат ознакомиться с лицен-
зионным соглашением, потом выбрать
компоненты инсталляции: License
Server и/или License Management
Console, далее предложат указать
путь для установки, потом выбрать
тип установленного веб-сервера: IIS
или Apache и в конце концов предло-
жат на перезагрузку IIS – установить
переключатель OK to restart Microsoft
IIS Server. После этого в меню «Пуск →
Программы» («Start → Programs») по- Рисунок 6. Разрешить вход на сервер рядовым пользователям
явится подменю «Citrix → Management
Console» (см. рис. 3). выбрать устанавливаемую редак- ности не стоит, я оставил данный пункт
Из данной консоли вы можете ска- цию продук та: Enterprise Edition. без изменений.
чать с сайта Citrix.com и установить до- Advanced Edition или Standard Edition В следующем окне предлагаю ввес-
полнительные файлы лицензий. (см. рис. 4). ти доменное имя (имя хоста), где запу-
Данные редакции в первую очередь щен License Server (Enter the host name
Установка Citrix Presentation отличаются возможностями и соот- of the machine hosting your Citrix License
Server ветственно стоимостью. За подробной Server) или сделать это позднее (Enter
После установки License Server присту- информацией лучше всего обратиться the correct host name later). Поскольку
паем к установке непосредственно са- на официальный сайт Citrix. Мы при по- и License Server и Presentation Server
мого Presentation Server 4.5. купке выбрали редакцию Enterprise у нас установлены на одном сервере,
В окне установки выбираем Product Edition, поэтому оставили отмеченный я указал имя данного хоста.
installation and updates Citrix, в следу- первый пункт без изменений. Далее появится окно вво-
ющем окне Install Citrix Presentation Последующие пункты инсталляции да Configure shadowing. Под тене-
Server 4.5 and its components. И снова лучше оставить по умолчанию вплоть вым управлением (shadowing) в Citrix
знакомимся с лицензионным соглаше- до Create or Join Server Farm. Так как Presentation Server понимается воз-
нием, выбираем компоненты для инс- мы создаем новую ферму, выбираем можность управления сеансами поль-
талляции (лучше оставить список без пункт Create a new farm. зователя. В данном окне вы можете
изменений). В окне задания параметров для но- запретить (Prohibit shadowing of user
Далее нам предложат установить вой фермы вам предложат выбрать session on this server) или разрешить
сервер лицензий, но поскольку его мы имя создаваемой фермы и самое глав- использование (Allow shadowing of user
уже устанавливали, оставляем пере- ное – выбрать тип хранилища (Data session on this server).
ключатель на I already have a license store) для записи служебной инфор- В случае разрешения вы може-
server, or will use the product CD to install мации. Выбираем пункт Use a local те также:
one later. database on this server, и в качестве n Запретить управление (Prohibit
После этого нам продемонстриру- базы данных выбираем SQL Server Remote Control), оставив только
ют полный список устанавливаемых Desktop (SQL Express) Database. Пункт возможность наблюдения за дейс-
компонентов. На данном этапе, сняв Use default zone name я оставил без из- твиями пользователя.
отметки, можно отказаться от установ- менений (см. рис. 5). n Требовать подтверждения (Force
ки тех или иных компонентов, но луч- Появится окно выбора Windows a shadow acceptance popup). Эта оп-
ше этого не делать. пользователя для администрирова- ция запрещает теневые сеансы
Далее попадаем непосредствен- ния фермы серверов. По умолчанию без подтверждения пользовате-
но в окно Citrix Web Installation Setup. предлагается учетная запись пользо- лей.
Единственный важный пункт здесь – вателя, из-под которой производится n Регистрировать все теневые соеди-
выбор или отказ от установки. установка. нения (Log all shadow connections).
Следующий этап – непосредс- В следующем окне предлагается События установления теневых
твенная установка Citrix Presentation разрешить IMA-шифрование. Посколь- сеансов будут регистрироваться
Server 4.5. Здесь вам пред ложат ку повышенных требований к секрет- в журнале.
14
администрирование
Андрей Бирюков
В новой версии ОС Windows Server 2008 стек TCP/IP был полностью переработан. Рассмотрим,
какие новшества появились в нем.
W
indows Server 2008 содержит мере. Когда на какой-либо узел прихо- ся. В текущих реализациях TCP/IP на
множество различных ново- дит обычный unicast-пакет, сетевой ин- Windows Server 2003 и Windows XP ис-
введений. Такие давно ис- терфейс принимает его, если IP-адрес пользуется слабая модель. Более под-
пользуемые и хорошо всем знакомые назначения совпадает с одним из ад- робно с моделями узлов можно озна-
вещи, как реализация стека TCP/IP ресов, который присвоен сетевым ин- комиться в статье [1].
в новой операционной системе, так- терфейсам на данной машине. Такая Next Generation TCP/IP стек снижа-
же претерпела весьма существенные обработка пакетов называется сла- ет нагрузку на драйвер Network Driver
изменения. бой моделью хоста (Weak Host Model). Interface Specification (NDIS) и сетевые
В случае усиленной модели будет об- адаптеры при обработке TCP и дру-
Основные изменения работан пакет только с IP-адресом, со- гих видов трафика. Данный функцио-
и структура ответствующим адресу интерфейса, нал весьма полезен при работе в се-
Приведу список основных измене- на который он пришел. Использование тях с высокой пропускной способнос-
ний в новом сетевом стеке. Прежде слабой модели может сделать не толь- тью. Также в новой версии стека появи-
всего это одновременная поддержка ко конкретный узел, но и всю локаль- лась возможность обработки трафика
как IPv4, так и IPv6. Шестую версию IP ную сеть менее устойчивой к несанк- на многопроцессорных машинах с рас-
сейчас поддерживают практически все ционированным проникновениям, так пределением нагрузки. Для высоко-
выпускаемые операционные системы, как в случае, если на внешний интер- производительных сетевых приложе-
так что поддержка в Windows 2008 бы- фейс узла, выполняющего роль мар- ний, прежде всего различных видео-
ла вполне ожидаема. Новая техноло- шрутизатора, послать пакет с адре- трансляций, многопроцессорная об-
гия поддержки IPv4 и IPv6 называет- сом из внутренней, то при неаккурат- работка также будет полезной.
ся Dual-IP. ной конфигурации такой пакет вполне Еще одним важным нововведени-
Другим нововведением являет- может достичь точки назначения. С ис- ем в стеке Next Generation является
ся поддержка так называемой Strong пользованием усиленной модели даже возможность автоматической настрой-
Host Model (усиленной модели хоста). в случае неаккуратной настройки пра- ки определенных компонентов стека
Что это такое, лучше объяснить на при- вил маршрутизации такого не случит- (например, масштабируемость TCP
16
администрирование
receive window и других) без ручного
внесения изменений в конфигурацию.
Тут следует отметить, что в UNIX-сис-
темах подобные функции существуют
уже давно и существенно упрощают
жизнь системным администраторам.
Так что реализация данного функцио-
нала в Next Generation Stack является
несомненным шагом вперед.
Схематически новую архитектуру
можно изобразить с помощью рисун-
ка. Поясню работу стека последова-
тельно, снизу вверх. За отправку и по-
лучение пакетов на интерфейс отвеча-
ет драйвер NDIS. Затем данные пере-
даются драйверу tcpip.sys.
Архитектура драйвера новой вер-
сии стека TCP/IP, реализованного
в файле tcpip.sys, состоит из следую- Архитектура Next Generation TCP/IP
щих уровней:
n Транспортный уровень – содер- и фильтрации пакетов. Новый набор ным способом для встраивания в стек
жит реализации протоколов TCP компонентов для программирования и модификации данных на уровне па-
и UDP, а также механизм для от- получил название Windows Filtering кетов. Программный интерфейс яв-
сылки базовых IP-пакетов, которым Platform (WFP). WFP обеспечивает воз- ляется частью WFP, обеспечивающей
не требуется наличие TCP или UDP- можность фильтрации на всех уров- доступ к обработке пакетов на се-
заголовков. нях стека протоколов TCP/IP. Также тевом и транспортном уровнях. Но-
n Сетевой уровень – содержит ре- следует отметить, что WFP более тес- вый стек также поддерживает отсыл-
ализации протоколов IPv4 и IPv6 но интегрирован в реализацию TCP/IP ку и получение фреймов (frames), ис-
в виде уровня Dual IP layer (о данной для Windows Server 2008. Это позволя- пользуя NDIS.
технологии я уже писал выше). ет сторонним разработчикам быстрее Завершая детальное описание
n Фреймовый уровень – содержит и легче разрабатывать сетевые драй- нововведений, хочу привести крат-
модули для фрейминга пакетов веры, службы и приложения для рабо- кий список функций, еще не упомяну-
IPv4 и IPv6. Существуют модули для ты с TCP/IP трафиком. Более подробно тых, однако заявленных разработчи-
интерфейсов IEEE 802.3 (Ethernet), с Windows Filtering Platform можно оз- ком. Это улучшенная поддержка про-
IEEE 802.11 и Point‑to‑Point Protocol накомиться в статье [2]. изводительности и коррекция оши-
(PPP). Помимо этого существу- В продолжении темы API хотелось бок, поддержка аппаратных конфигу-
ют модули и для логических ин- бы упомянуть три основных програм- раций и автонастройки, богатые функ-
терфейсов, таких как Loopback мных интерфейса, используемых при- ции расширяемости на уровне ново-
Interface, а также интерфейсов тун- ложениями, сервисами и другими сис- го программного интерфейса, улуч-
нелирования на основе IPv4, кото- темными компонентами для досту- шенная поддержка рабочих станций
рые часто используются в техно- па к новому стеку TCP/IP – это WSK мобильных пользователей, часто пе-
логиях поддержки переключения (Winsock Kernel), используемый кли- реключающихся из одной сети в дру-
с IPv4 на IPv6. ентскими приложениями, Windows гую, взаимодействие с Windows CE,
Sockets, используемый приложениями Xbox и Windows Embedded, устойчи-
После такой обработки получен- и сервисами (программный интерфейс вость к известным DoS и другим сете-
ные данные передаются Winsock Kernel Windows Sockets использует драйвер вым атакам.
и другим обработчикам уровня ядра. AFD – Ancillary Function Driver для вы-
И, наконец, в верхней части архитек- полнения функций на уровне сокетов Новые решения
туры находятся приложения Windows через TCP/IP) и TDI (Transport Driver старых проблем
Socket, которые извлекают непосредс- Interface), используемый NetBIOS over Теперь сравним архитектуру Next
твенные данные и передают их прило- TCP/IP (NetBT) и другими устаревшими Generation TCP/IP Stack с предыдущи-
жениям. клиентами. Для трансляции запросов ми реализациями TCP/IP. Прежде все-
между TDI и новым стеком TCP/IP ис- го вспомним некоторые особеннос-
Новые API пользуется интерфейс TDX. По замыс- ти работы стека в предыдущей вер-
Также, рассказывая о новых функци- лу разработчиков WSK должен со вре- сии операционной системы и их недо-
ях сетевого стека, нельзя не упомя- менем заменить TDI. статки. В пакетах обновлений (service
нуть о новых возможностях для про- Новый стек TCP/IP поддержива- packs) для Windows Server 2003 бы-
граммистов. Прежде всего это появ- ет программный интерфейс Callout ли включены дополнительные воз-
ление новых API для безопасности API, который является унифицирован- можности: в TCP появилось уже упо-
18
bugtraq
Используем check_relay
в Sendmail для борьбы со спамом
Сергей Супрунов
Борьба со спамом вечна, как и сам спам. Способов защиты придумано множество, но ничего
по-настоящему эффективного до сих пор не реализовано. Поэтому иногда приходится
прибегать к «полумерам» типа фильтрации по именам хостов, «типичным» для спамеров.
Такие почтовые серверы, как Postfix и Exim, предлагают сравнительно прозрачные способы
фильтрации соединений. Владельцы же Sendmail вынуждены попотеть, чтобы раскрыть весь
потенциал этого MTA.
20
администрирование
З
ащита от спама на сервере про-
вайдера по сравнению с «корпо- Про «фальшивые» имена
ративным» почтовым сервером О блокировании соединений, разрешение имени для которых возвращает FORGED, сле-
имеет свои особенности. дует сказать особо. Злоумышленники иногда используют следующий приём. Соедине-
Во-первых, здесь нет жёстких пра- ние устанавливается с некоторого IP-адреса, обратную зону для которого контролирует
вил документооборота, позволяющих спамер (например, ему делегирована данная сеть адресов). Указать в PTR-записи мож-
быть уверенным, что никто не ждёт но всё что угодно, хоть barackobama.com. И поэтому имеет смысл дополнительно запро-
писем в одной из японских кодировок сить IP-адрес хоста barackobama.com (на этот запрос уже должен ответить DNS-сервер,
или идущих с израильских доменов. обслуживающий данный домен) и сравнить полученный IP-адрес с исходным. Правда,
Во-вторых, среднестатистический как показывает практика, в наше время под правило FORGED чаще попадают хосты, для
абонент обычно не настолько владеет которых по возвращённому в PTR-записи имени вообще невозможно определить IP‑ад-
компьютером, чтобы эффективно осу- рес (т.е. отсутствует соответствующая A‑запись в прямой зоне):
ществлять «обучение» различных сис- Однако иногда
$ grep "dns rule 2" /var/log/maillog | tail -1
тем контентной фильтрации, а сисад- можно встретить за-
мину заниматься анализом карантина мечания, что подоб- Sep 8 15:29:11 myhost sm-mta[32267]: m88BTATA032267:
ruleset=check_rcpt, arg1=<energo@mydom.ru>,
негоже (в том числе и по этическим со- ная блокировка мо- relay=18971199139.user.veloxzone.com.br [189.71.199.139]
ображениям). Всё это делает системы жет привести к про- (may be forged), reject=550 5.7.1 <energo@mydom.ru>... Relaying
denied (dns rule 2). IP name possibly forged [189.71.199.139]
типа Spamassassin или DSPAM не очень бл е м а м в с л у ч ае
эффективными либо требующими по- «парковки» на один $ nslookup 18971199139.user.veloxzone.com.br
вышенного внимания со стороны ад- IP-адрес нескольких Server: 10.161.193.5
министратора. доменов. Но посколь- Address: 10.161.193.5#53
К тому же контентная фильтрация ку сервер сначала ** server can't find 18971199139.user.veloxzone.com.br: NXDOMAIN
совсем не способствует экономии тра- запрашивает PTR-
фика. Более того, если значительная запись, а затем по полученному имени хоста – IP-адрес, то проблем быть не должно – в ито-
часть писем будет «рубиться» на сер- ге при любом «раскладе» мы выйдем на единственный, исходный IP-адрес. Несоответс-
вере после загрузки и не попадёт к ко- твие же теоретически может возникнуть лишь в случае, когда возвращённое имя хоста
нечным пользователям, то этот трафик указывает на несколько IP-адресов. На практике такое встречается крайне редко, когда
приходится рассматривать как пря- используется балансировка нагрузки (показаны только интересующие нас строки):
мые убытки компании (то есть компа- Но и в этом слу-
$ dig -x 77.88.21.3
ния «покупает» спам, но клиенту уже чае Sendmail, похо-
не «перепродаёт»). же, правильно отра- 3.21.88.77.in-addr.arpa. 13943 IN PTR www.yandex.ru.
22
администрирование
записи (FAIL) блокируются также вре- > /map block5 pool-127-165.gen.ua
менные ошибки DNS и ситуации, когда Тестирование правил map_lookup: block5 (pool-127-165.gen.ua)
запрос A-записи по доменному имени Как известно, от ошибок никто не застрахо- returns @MATCH (0)
возвращает IP-адрес, отличный от ис- ван. Синтаксис регулярных выражений, ес-
ходного (FORGED). ли можно так сказать, «поощряет» опечат- > /quit
Кстати говоря, проверку на раз- ки – один пропущенный символ экраниро- Команда /map проверяет имя хоста
решение имени в последних версиях вания перед точкой, и результат может уже на соответствие той или иной «карте». На-
Sendmail можно включить и просто оп- довольно сильно отличаться от ожидаемо- ши правила тоже являются картами. Ес-
цией FEATURE(`require_rdns'). Но нас- го. Поэтому каждое правило имеет смысл ли соответствие найдено, возвращается
тройка вручную позволит лучше кон- предварительно протестировать (тем бо- @MATCH, если нет – вы получите сообще-
тролировать как порядок, так и сос- лее, что разрабатывать правила вы, ско- ние «no match».
тав проверок. рее всего, будете, ориентируясь на впол- Проводить тестирование лучше все-
Как показывает практика, льви- не определённые имена хостов). Сделать го после компиляции нового конфи-
ная доля спама идёт с адресов вида это можно следующим образом: гурационного файла (make), но до его
123-45-67-89-nekiy.domen.provaidera.ru $ sendmail -bt инста лляции (make install) и переза-
или m123.dialup.domain.com. Имен- пуска работающего почтового сервера
ADDRESS TEST MODE
но такие имена хостов провайде- (ruleset 3 NOT automatically invoked) (make restart). В этом случае потребуется
ры, не мудрствуя лукаво, обычно на- Enter <ruleset> <address> явно указать новый конфигурационный
значают динамическим соединени- файл (sendmail ‑bt ‑C mydom.ru.cf), но за-
ям. То есть либо в имени присутству- > /map block4 pool-127-165.gen.ua то в случае ошибок вы сможете их испра-
ет в том или ином виде сам IP-адрес map_lookup: block4 (pool-127-165.gen.ua) вить до того, как они скажутся на реаль-
(цифры, разделённые точками, под- no match (0) ной работе.
чёркиваниями, дефисами и иногда
символами «x»), либо фигурируют некоторые характер- верхнюю границу на число цифр в группе, так как циф-
ные «слова» – dial, ppp, adsl, dynamic, dhcp, pool, client и т. п. ры в данном случае не всегда означают часть IP-адреса):
Оформим эти случаи в следующие правила (поскольку ([0‑9]+[._x-]){2,}.*(\..*){2,}. Продолжим.
на второй линии обороны у нас стоит milter-greylist, то пра-
вила будут достаточно строгими, чтобы свести к миниму- Правило 3: Имя хоста содержит более восьми
му риск блокировки нормальных соединений). шестнадцатеричных цифр подряд
Иногда встречаются и такие имена, как bd21a1bd.virtua.com.br
Правило 1: Имя хоста содержит четыре группы (обычно цифр 8, т.е. записывается IP-адрес в hex-формате,
цифр, разделённых символами [._x-] но может встречаться и больше). Поскольку здесь участ-
Соответствующее регулярное выражение будет выглядеть вуют и буквы, то можно «нарваться» на добропорядочный
так: ([0-9]{1,3}[._x-]){4}. Под это выражение будут подпадать адрес типа affeccade.chto-to.tld, так что дополнительно пот-
имена следующего вида (показанные здесь и далее имена ребуем, чтобы такая группа символов была частью домена
хостов взяты из лог-файла и соответствуют хостам, с кото- не менее четвёртого уровня: [0-9a-f]{8,}(\..*){3,}. Ну и для се-
рых реально поступал спам; если кто увидит свой домен – бя отметим, что здесь требуется дополнительное внима-
я не специально): ние к логам (по-хорошему, это правило лучше бы вообще
n cpe-98-27-181-209.neo.res.rr.com; исключить, но мне пока оно проблем не создавало; вас же
n dialup-88-147-133-182.san.ru; я предупредил).
n 109.251-224-87.telenet.ru;
n 125x103x16x176.ap125.ftth.ucom.ne.jp;
n 219-180-207-85.zapcechy.adsl-llu.static.bluetone.cz.
24
администрирование
меньшее зло, нежели отвергнуть
нужное сообщение. Рассматри- Стандарт есть стандарт этого будут выполняться наши проверки
ваются лишь поддомены и отде- Согласно RFC822 и RFC1123 каждый почто- check_relay. Кстати, в лог-файл информа-
льные хосты указанных доменов вый сервер должен безоговорочно прини- ция о блокировках отныне будет заносить-
(предполагается, что сами домен- мать почту на адрес postmaster@<domain.tld>. ся с пометкой «ruleset=check_rcpt», пос-
ные имена ни под одно из последу- RFC2142 добавляет к этому списку также кольку теперь наборов правил check_relay
ющих правил блокировки не под- адрес abuse@<domain.tld>. Это обуслов- и check_mail в sendmail.cf нет – вместо них
падают). Не забывайте экраниро- лено тем, что у отправителя всегда долж- при использовании вышеуказанной ди-
вать символы «.». на быть возможность сообщить вам о про- рективы появляются «нестандартные»
n 10\.5\.([0-9]){1,3}\.([0-9]){1,3} – блеме. В нашем примере это требование checkrelay и checkmail соответственно, ко-
здесь мы будем пропускать соеди- стандарта не выполняется, т.к. в случае торые вызываются из check_rcpt. Побоч-
нения с IP-адресов вида 10.5.x.y, «неправильного» имени хоста наш сервер ным эффектом этого будет то, что в daily-
предполагая, что данные адре- сразу разорвёт соединение, не спросив да- сообщениях везде будет фигурировать
са принадлежат нашим клиентам, же имени отправителя (MAIL FROM), не го- ваш домен:
для которых имена хостов в DNS воря уже о том, чтобы узнать, кому тот хо-
Checking for rejected mail hosts:
не прописаны (а значит, в качестве тел написать письмо (RCPT TO). 8252 mydom.ru (554... 1))
таковых будут передаваться IP-ад- Как было показано, проверки check_ 1492 mydom.ru (554... 2))
668 mydom.ru (554... 3))
реса). Если «своих» сетей несколь- relay выполняются до проверок check_mail 534 mydom.ru (554... 4))
ко, лучше для каждой из них ука- и check_rcpt. Однако этот порядок можно 424 mydom.ru (554... 5))
зать отдельное правило. изменить. Для этого в mc-файл нужно до- 111 mydom.ru (550... [218.9.79.68])
108 mydom.ru (550... [89.38.12.29])
бавить следующую директиву: 91 mydom.ru (550... dul.ru)
Изменяем конфигурацию FEATURE(`delay_checks', `friend')
76 mydom.ru (451... resolve)
. . .
Теперь добавим всё это в файл кон-
фигурации Sendmail. Редактировать Это, во-первых, отложит проверки Происходит это из-за того, что скрипт
непосредственно sendmail.cf – не са- check_relay и check_mail до того момен- /etc/periodic/daily/460.status-mail-rejects (на-
мая лучшая идея, так как этим вы об- та, пока не пройдёт check_rcpt. Во-вторых, помню, что речь идёт о FreeBSD) выбира-
речёте себя на необходимость выпол- аргумент «friend», переданный директиве, ет домен из подстроки arg1, записываемой
нять абсолютно всю настройку именно позволяет задать в базе access правило в лог-файл для каждого факта блокиров-
в этом файле, поскольку при использо- SPAMFRIEND для нужных адресов: ки, а для check_rcpt туда передаётся адрес
вании mc-файла внесённые в cf‑файл To:postmaster@ SPAMFRIEND получателя (т.е. адрес вашего пользовате-
изменения будут теряться. К счастью, To:abuse@ SPAMFRIEND ля). Кроме того, такое изменение порядка
«cf‑фрагменты» при необходимости Пересобрав базу access (командой следования правил увеличивает нагрузку
можно добавлять и в mc-файл, где они make в каталоге /etc/mail), вы обеспечи- на систему. Но зато у отправителей будет
будут учитываться препроцессором m4 те безоговорочное прохождение сообще- больше шансов сообщить вам о допущен-
и переноситься в итоговый cf-файл. ний на указанные адреса, и лишь после ной вами ошибке.
Для этого в самом конце mc-файла
(после опций MAILER) добавим следующее (длинные стро- # Выполняем разрешение имени клиента
R$* $: < $&{client_resolve} >
ки для удобства разбиты на несколько, строка-продолже- R<TEMP> $#error $@ 4.4.0 $: ↵
ние начинается с пробелов): "450 Temp. (dns rule 1). Cannot resolve PTR for " ↵
$&{client_addr}
R<FORGED> $#error $@ 5.7.1 $: ↵
LOCAL_CONFIG "550 Denied (dns rule 2). IP name forged " ↵
$&{client_name}
# Правила-исключения R<FAIL> $#error $@ 5.7.1 $: ↵
Krelays regex -a@MATCH ^(mail|relay|mx| ↵ "550 Denied (dns rule 3). IP name lookup failed " ↵
smtp|mta).*[0-9]*(\..*){2,} $&{client_name}
Kexdoms regex -a@MATCH \.(mydom\.ru|hotmail\.com| ↵
rambler\.ru|yandex\.ru|mail\.ru)$ # Применяем оставшиеся правила-исключения
Kournet1 regex -a@MATCH 10\.5\.[0-9]{1,3}\.[0-9]{1,3} R$* $: $(relays $&{client_name} $)
R@MATCH $@ OK
# Правила блокировки R$* $: $(exdoms $&{client_name} $)
Kblock1 regex -a@MATCH ([0-9]{1,3}[._x-]){4} R@MATCH $@ OK
Kblock2 regex -a@MATCH ([0-9]+[._x-]){2,}.*(\..*){2,}
Kblock3 regex -a@MATCH [0-9a-f]{8,}(\..*){3,} # Блокируем соединения согласно правилам блокировки
Kblock4 regex -a@MATCH [0-9].*(dsl|dial|dynamic| ↵ R$* $: $(block1 $&{client_name} $)
static|ppp|pool|client|user|dhcp|gprs).*(\..*){2,} R@MATCH $#error $@ 5.7.1 $: "554 Bad hostname ↵
Kblock5 regex -a@MATCH (dsl|dial|dyn|static| ↵ for mailserver: " $&{client_name} " (regex rule 1)"
ppp|pool|client|user|dhcp|gprs|ip| ↵ R$* $: $(block2 $&{client_name} $)
vpn|nat)[a-z_-]*[0-9]+.*(\..*){2,} R@MATCH $#error $@ 5.7.1 $: "554 Bad hostname ↵
Kblock6 regex -a@MATCH (vectranet\.pl| ↵ for mailserver: " $&{client_name} " (regex rule 2)"
mediating\.barrier\.volia\.net)$ R$* $: $(block3 $&{client_name} $)
R@MATCH $#error $@ 5.7.1 $: "554 Bad hostname ↵
LOCAL_RULESETS for mailserver: " $&{client_name} " (regex rule 3)"
R$* $: $(block4 $&{client_name} $)
SLocal_check_relay R@MATCH $#error $@ 5.7.1 $: "554 Bad hostname ↵
for mailserver: " $&{client_name} " (regex rule 4)"
# Пропускаем соединения со своей подсети R$* $: $(block5 $&{client_name} $)
R$* $: $(ournet1 $&{client_name} $) R@MATCH $#error $@ 5.7.1 $: "554 Bad hostname ↵
R@MATCH $@ OK for mailserver: " $&{client_name} " (regex rule 5)"
26
администрирование
Михаил Кондрин
В первой части статьи [1] была рассмотрена установка и базовая настройка XMPP‑сервера
Jabberd2. Однако дальнейшая настройка и отладка потребуют «хирургического» вмешательства
и непосредственного редактирования его баз данных.
И
так, сервер запущен, список можно обмениваться сообщениями ше? Как вы помните, одним из условий
пользователей создан, с по- как с пользователями нашего сервера, техзадания для нашего Jabber-серве-
мощью Jabber-клиента Pidgin так и с внешними серверами. Что даль- ра был отказ от использования специ-
28
администрирование
и удалить лишние с помощью: # db_recover -c -v -h ./ -e
щью команды:
Последний вопрос, который обычно возникает у адми-
# db_checkpoint -v -1 нистраторов баз данных, – это оптимизация работы ба-
db_checkpoint: checkpoint begin: Sun May 4 00:32:31 2008 зы данных. Для BerkeleyDB решение этого вопроса сво-
db_checkpoint: checkpoint complete: Sun May 4 00:32:31 2008 дится к написанию файла DB_CONFIG с параметрами
environment, более отвечающими мощности и возможнос-
Только учтите, что на самом деле db_checkpoint – это тям вашей системы.
не одноразовая операция, а демон, который, будучи за- С помощью перечисленных параметров можно управ-
пущенным без ключа -1, периодически проверяет состоя- лять величиной дискового кэша и кэша в памяти, мето-
ние log-ов в текущей директории и по мере их заполнения дом ведения логов и их размерами, механизмами блоки-
или в определённые промежутки времени производит син- ровок и т. д.:
хронизацию баз данных. n set_cachesize
Содержимое директории с резервной копией сейчас вы- n set_data_dir
глядит таким образом: n set_flags DB_AUTO_COMMIT|DB_CDB_ALLDB|DB_
DIRECT_DB|DB_DIRECT_LOG|DB_DSYNC_DB|DB_
# ls /root/backup DSYN C_ LOG|D B _ LOG _ AUTO REMOVE|D B _ LOG _
authreg.db log.0000000001 sm.db INMEMORY|DB_NOLOCKING|DB_MULTIVERSION|DB_
N O M M A P | D B _ N O PA N I C | D B _ O V E R W R I T E | D B _
В таком виде база данных не работоспособна. То есть PA N I C _ E N V I R O N M E N T | D B _ R E G I O N _ I N I T | D B _
после копирования необходимо будет её восстановить, TIME_ NOTGRANTED|DB_TXN _ NOSYNC|DB_TXN _
предварительно переместив в ту же директорию конфигу- SNAPSHOT|DB_TXN_WRITE_NOSYNC|DB_YIELDCPU
рационный файл DB_CONFIG (если вас не устраивают па- n set_lg_bsize
раметры по умолчанию) и запустив там команду: n set_lg_dir
30
администрирование
ном случае [set z] приводит к подстановке вместо пере- вание db_load применимо только для баз данных, содер-
менной её значение. В качестве синтакcической глазури жащих только строковые значения, так что нам в некото-
в tcl для той же самой цели используется более привыч- ром смысле повезло, что authreg.db не содержит записей
ный $. Команда set используется также для присваивания другого типа.
set z 1, например. Тип доступа и механизм индексации в базах данных мож-
BerkeleyDB устроена более примитивно, чем более попу- но выбрать при создании базы данных. Всего BerkeleyDB
лярные иерархические или реляционные базы данных, пос- поддерживает 4 типа – Queue, Recno, Hash, BTree. Ус-
кольку все данные в BerkeleyDB хранятся в виде списков ловно говоря, эти типы означают, каким именно образом
пар – «ключ-значение». Если проводить аналогию с реляци- BerkeleyDB индексирует и хранит базы данных. Все базы,
онными базами данных, то мы имеем как бы таблицу с од- используемые в Jabberd2, представляют собой хэши.
ной колонкой – первичным индексом, и второй – значени- Любой файл базы данных BerkeleyDB (*.db) на самом
ем. В то же время именно простота устройства BerkeleyDB деле может содержать несколько «таблиц»/списков. Чтобы
позволяет использовать её в качестве строительного бло- посмотреть, что представляет собой база данных sm.db из-
ка для создания как иерархических (OpenLDAP), так и ре- нутри, откроем её с помощью скрипта list-sm.tcl:
ляционных (MySQL) баз данных.
Вторым отличительным моментом BerkeleyDB являет- load /usr/lib/libdb_tcl-4.4.so
[berkdb env -home ./ -recover] close
ся отсутствие типизации данных, так что в качестве клю- set e [berkdb env -data_dir ./ -home ./]
чей и их значений могут быть использованы любые типы set h [berkdb open -rdonly -env $e sm.db]
set c [$h cursor]
данных, в том числе массивы, списки, если только прило- catch {
жения, подключённые к базе данных, умеют их правиль- for {set entry [$c get -first] } { $entry != {} } ↵
{ set entry [$c get -next] } {
но интерпретировать. C одной стороны, это даёт боль- eval entry $entry
ший простор для разработчиков приложений, так как они puts [lindex $entry 0]
}
не ограничены в выборе структур данных. А с другой – ус- }
ложняет обмен данными между приложениями, поскольку $c close
$h close
для работы с базой данных приложение должно изначаль- $e close
но точно знать используемые типы структур. Собственно
поэтому и не существует универсальных утилит для дос- Идея проста. Вначале подгружается интерфейс доступа
тупа к базам данных BerkeleyDB. Вообще-то, и использо- к библиотеке BerkeleyDB, а потом открывается environment,
source ../scripts/serialize.tcl
load /usr/lib/libdb_tcl-4.4.so
[berkdb env -home ./ -recover] close
set e [berkdb env -home ./]
set h [berkdb open -env $e sm.db vcard]
set c [$h cursor]
catch {
for {set entry [$c get -first] } { $entry != {} } ↵
{ set entry [$c get -next] } {
eval set vcards $entry
puts "->key(jid) = [lindex $vcards 0]"
set card [deserialize [lindex $vcards 1]]
foreach {field value} $card {
puts "$field : $value"
Рисунок 1. Электронная визитка }
}
}
что (как вы помните) позволяет безопасным образом конт- $c close
ролировать доступ к базам данных. $h close
$e close
На самом деле окружение открывается дважды, пер-
вый раз в режиме восстановления, что является рекомен- Как видите, по сравнению с предыдущим скриптом из-
дуемым способом обработки ошибок, вызванных возмож- менений немного. Во-первых, на этот раз открывается толь-
ным некорректным завершением работы при предыду- ко одна из «таблиц» (vcard) базы данных sm.db, и, во-вторых,
щем открытии базы данных. Затем в уже созданном окру- добавлена специальная обработка значений с помощью до-
жении открывается интересующая нас база данных, при- полнительного файла serialize.tcl. Хотя как ключ, так и дан-
чём делается это в режиме read-only, поскольку для баз, ные в BerkeleyDB могут быть любого типа, но разработчики
содержащих несколько таблиц, иного выбора нет (поз- Jabberd2, как правило, используют в качестве ключей стро-
же вы увидите, как открыть доступ к отдельным табли- ки, а для значений используют список-хэш. Формат спис-
цам на запись). ка выглядит так – вначале идёт имя элемента списка в ви-
Далее в базе данных создаётся курсор-итератор, и в цик- де строки, заканчивающейся нулём, затем идёт целое чис-
ле последовательно перебираются все ключи, которые пред- ло, которое обозначает тип элемента, затем его значение,
ставляют собой имена списков. Вся логика работы с базой и так для каждого из элементов.
данных собрана в операторе перехвата ошибок catch, что Функция deserialize как раз и служит для разбора запи-
гарантирует корректный переход к закрытию всех откры- сей, выполненых в таком форматe, и возвращает их в ви-
тых дескрипторов точек доступа к файлам и базам данных де парного Tcl-списка, который потом группируется попар-
при возникновении ошибок. но через разделитель-двоеточие и выводится на экран.
Запускается скрипт в директории, где находится файл Вот, например, моя электронная визитка (та же самая, что
sm.db, таким образом: и на рис. 1):
32
администрирование
Не стоит думать, что BerkeleyDB поддерживает толь- мещения в базу дан-
ко простые таблицы. Поскольку BerkeleyDB позволяет осу- ных выглядит доволь-
ществлять объединение (join) по первичному и вторичному но уродливо, и поэто-
индексам, в нем можно хранить данные достаточно слож- му вынесена также в
ной структуры. Также замечательной чертой BerkeleyDB подгружаемый файл
является наличие транзакций, что позволяет вносить из- serialize.tcl. В итоге
менения в несколько таблиц атомарным способом, в сти- результат выглядит
ле «всё или ничего». примерно так, как по-
Как раз для решения поставленной вначале задачи – казано на рис. 2.
заполнение published-roster – нам и придётся столкнуться На этом зада-
с транзакциями. В данном случае это будет скорее вынуж- ч у м ож н о с ч и т а т ь
денной мерой, поскольку в Jabberd2 доступ ко всем табли- решённой. При вхо-
цам из sm.db возможен только в режиме транзакций. Чтобы де на сервер каждый
Jabberd2 мог использовать созданную нами таблицу, в точ- пользователь теперь
но таком же режиме нам и следует открыть published-roster. должен видеть от- Рисунок 2. Открытая база данных
Все элементы в таблице имеют ключ, состоящий из пустой дельные общие груп-
строки, а в качестве значений используется хэш-список пы со списком «опубликованных» пользователей, которые
с полями ask from to (целочисленными) jid name group (стро- администратор может пополнять с помощью скрипта, при-
кового типа). Эта информация построчно заносится в текс- ведённого выше. Следует подчеркнуть, что использова-
товый файл published.txt, откуда она и будет впоследствии ние именно локальной базы данных для этой цели связа-
считываться скриптом. Например, в нашем случае можно но с «техническим заданием», которое мы перед собой пос-
предложить такой вариант этого файла: тавили. Если же, скажем, у вас уже есть готовый каталог
LDAP с электронными визитными карточками сотрудников,
root@myrealm.ru 0 0 0 Admin root то вам, скорее, имеет смысл использовать его в качестве
postmaster@myrealm.ru 0 0 0 Admin postmaster
mike@myrealm.ru 0 0 0 Colleagues mike хранилища v‑cards. Jabberd2 достаточно гибок в этом от-
ношении и позволяет выбрать тип хранилища информации
где учётные записи разнесены по двум группам – реаль- для каждого из модулей индивидуально. Например, в кон-
ных пользователей (группа Colleagues) и административ- фигурационном файле sm.xml.dist из дистрибутива Jabberd2
ных/технических аккаунтов (Admin). Скрипт выглядит та- показано, каким образом можно настроить хранение визи-
ким образом: ток и published roster в каталоге LDAP, отдельно от осталь-
ных данных, для которых используется сервер MySQL.
source ../scripts/serialize.tcl И в завершение небольшая ложка дёгтя. Как уже гово-
load /usr/lib/libdb_tcl-4.5.so
[berkdb env -home ./ -recover] close рилось, основной недостаток Jabberd2 – это практически
set e [berkdb env -home ./] полное отсутствие документации и несовпадение уже име-
set h [berkdb open -dup -hash -create -auto_commit -env ↵
$e sm.db published-roster] ющихся руководств с реальным положением дел. В эту же
set f [open published.txt] ловушку попал и я сам. Этот цикл статей был написан в рас-
set t [$e txn]
set err [ catch { счете на серию релизов Jabberd2 2.1.x, последний из кото-
foreach line [split [read $f] "\n"] { рых (2.1.24.1) вышел в апреле этого года. Однако уже в сле-
set a [ pub_roster_format $k]
$h put -txn $t "" $a дующем релизе (2.2.0) произошли изменения в архитекту-
} ре Jabberd2, в результате чего схема, приведенная в пре-
}]
if { $err } { дыдущей статье, уже не соответствует действительнос-
$t abort ти. Компонент resolver был упразднен, а вся его функцио-
} else {
$t commit нальность перенесена в компонент s2s. При этом единст-
} венный информативный блок <lookup> из его конфигура-
close $f
$h sync ционного файла также перемещен в файл s2s.xml. В об-
$h close щем-то, для динамично меняющегося проекта такие рез-
$e close
кие изменения не являются чем-то необычным, но хоте-
Открытие базы данных sm.db происходит в транзакци- лось бы, чтобы эти изменения хоть каким-то образом на-
онном режиме за счёт выставленного флага auto_commit, ходили свое отражение в документации, хотя бы на уров-
она имеет тип Hash и не требует уникальности индекса не файлов README (где по-прежнему упоминается resolver,
(‑dup). Все изменения, вносимые в файл, обернуты в тран- как один из независимых компонентов) и ChangeLog. К со-
закцию, причём в отличие от предыдущих случаев вызов жалению, этот призыв можно адресовать не только авто-
catch анализируется на предмет обнаружения ошибок, рам Jabberd2, но и многим другим разработчикам свобод-
и (в зависимости от результата) транзакция либо откатыва- ного программного обеспечения.
ется, либо нормальным образом завершается после прочте-
ния файла и заполнения published-roster. Затем база данных 1. Кондрин М. Jabberd2 – простой и нетребовательный к ресур-
синхронизируется, т.е. все изменения, хранящиеся в кэше, сам XMPP-сервер. //Системный администратор, №8, 2008 г. –
в памяти, принудительно сбрасываются на диск. Сама про- С. 34-40.
цедура форматирования записей pub_roster_format для по- 2. Himanshu Yadava. The Berkeley DB Book. Apress, 2007.
Работаем с данными
Active Directory из скриптов
Часть первая. Применение Bourne Shell
Рашид Ачилов
В корпоративной среде при разработке скриптов рано или поздно возникает вопрос:
«А неплохо было бы иметь базу всех сотрудников с именами, должностями, адресами
и номерами ICQ...», что зачастую приводит к самостоятельным разработкам разной степени
удачливости. Но есть и более простой способ. Такая база уже есть. Ее за нас придумала
Microsoft. Это Active Directory. Нужно только уметь с ней общаться.
Просто LDAP, называть ее AD) в серьезных справоч- нем (pre-Windows 2000) «CATS», име-
и ничего особенного никах для администраторов Windows, нем самого компьютера BIGCAT.
В статье не будет рассматриватся, например [3]. Мы обсудим здесь толь- Человек, никогда не видевший AD,
что такое Active Directory и как она ра- ко те особенности, которые пригодят- получив сетевой доступ к серверу AD,
ботает – на эту тему написано мно- ся нам в дальнейшем. непременно воскликнет: «Так ведь
жество книг, например [1, 2], а так- Для тестирования всюду будет ис- это же сервер LDAP!». И будет прав.
же описание принципов работы Active пользоваться Windows 2003 Server Действительно, со стороны сети сер-
Directory (договоримся в дальнейшем с именем AD shelton.net, коротким име- вер AD выглядит как сервер LDAP.
34
администрирование
Вот какие открытые порты можно обнаружить на нем: программа, написанная на Java (Swing), для работы с LDAP
в графическом режиме (см. рисунок).
Starting Nmap 4.62 ( http://nmap.org ) at 2008-08-01 01:45 NOVST
Interesting ports on bigcat (192.168.50.1):
Что касается ldapbrowser, то с ним практически сразу все
Not shown: 1699 closed ports ясно (кроме настроек подключения, которые станут ясными
PORT STATE SERVICE сами по себе после описания ldapsearch). А вот о ldapsearch
42/tcp open nameserver
53/tcp open domain хотелось бы поговорить особо.
88/tcp open kerberos-sec Ldapsearch – это программа, чрезвычайно важная
135/tcp open msrpc
139/tcp open netbios-ssn
для администратора LDAP, примерно такая же, как ping
389/tcp open ldap и traceroute для администратора сетевого. Она позволяет
445/tcp open microsoft-ds получить, а после несложных манипуляций и использовать
464/tcp open kpasswd5
593/tcp open http-rpc-epmap практически любые данные, что есть в LDAP. Но...
636/tcp open ldapssl У нее собственный язык запросов. Он не то что бы яв-
1026/tcp open LSA-or-nterm
1027/tcp open IIS
ляется сильно сложным, но повергает в изумление лю-
1067/tcp open instl_boots бого, кто сталкивается с ним в первый раз. Он построен
3268/tcp open globalcatLDAP в соответствии с принципом «обратной польской записи»,
3269/tcp open globalcatLDAPssl
3389/tcp open ms-term-serv как в старинных программируемых калькуляторах, ког-
да сначала задается знак операции, а потом перечисля-
Это типичный набор сервисов для контроллера доме- ются операнды. Все операнды разделяются отдельными
на (domain controller, dc). Он может слегка варьировать- скобками, из-за этого выражения приобретают невероят-
ся, но сервис, который нас интересует – ldap (порт 389), – ную громоздкость. Поскольку это язык запросов, то в нем
обязан присутствовать. Неизвестно, почему Microsoft ре- присутствуют только логические операции – И (&), ИЛИ (|),
шила не изобретать свой велосипед, как поступает обыч- НЕ (!). Не путайте ИЛИ и НЕ, несмотря на то, что они сход-
но, а использовало хорошо известный и хорошо докумен- ны по начертанию! Например:
тированный LDAP. Зато над созданием схемы LDAP она n (description=*) – любой объект, у которого определе-
«поработала» изрядно – скажем, на схему inetOrgPerson но поле description. При этом совершенно не важно бу-
ее схема непохожа совершенно – типичный объект AD дет, сколько и каких в поле символов – один символ «?»
«пользователь» с точки зрения ldapsearch выглядит вот точно так же попадет под этот фильтр, как и «длинная-
таким образом: длинная строка».
n (&(objectClass=user)(mail=*)) – любой объект, у которо-
dn: CN=LDAP Reader,CN=Users,DC=shelton,DC=net
objectClass: top
го поле objectClass равно user и определено поле mail.
objectClass: person n (&(objectClass=user)(!(mobile=100*)(mobile=200*))) –
objectClass: organizationalPerson
objectClass: user
любой объект класса user, у которого поле mobile начи-
cn: LDAP Reader нается с цифр 100 или 200.
sn: Reader
givenName: LDAP
n (&(sAMAccountName=*)(homeMTA=*)(!(|(title=*)
distinguishedName: CN=LDAP Reader,CN=Users,DC=shelton,DC=net (department=*)))) – любой объект, у которого определе-
instanceType: 4
whenCreated: 20080817091820.0Z
ны поля sAMAccountName и homeMTA и не определены
whenChanged: 20080817091820.0Z поля title или department. Обратите внимание на распо-
displayName: LDAP Reader
uSNCreated: 954394
ложение знаков логических операций и баланс скобок
uSNChanged: 954399 в последнем примере.
name: LDAP Reader n (&(&(&(mailnickname=*)(|(&(objectCategory=person)
objectGUID:: S2M6nZo2XkCfS2jjHt4XBg==
userAccountControl: 66048 (objectClass=user)(!(homeMDB=*))(!(msExchHome
badPwdCount: 0 ServerName=*)))(&(objectCategory=person)(object
codePage: 0
countryCode: 0 Class=user)(|(homeMDB=*)(msExchHomeServer
badPasswordTime: 128634384464218750 Name=*)))(&(objectCategory=person)(objectClass=
lastLogoff: 0
lastLogon: 128634384682968750 contact))(objectCategory=group)(objectCategory=
pwdLastSet: 128634383003906250 publicFolder))))) – этот поистине чудовищный запрос ис-
primaryGroupID: 513
objectSid:: AQUAAAAAAAUVAAAAtInjRe4dmI0lvJgpVwQAAA== пользуется в KAddressbook для получения глобальной
accountExpires: 9223372036854775807 адресной книги из LDAP. Вы можете попрактиковаться
logonCount: 0
sAMAccountName: ldapread в его разборе самостоятельно. Создавал его не я, мне
sAMAccountType: 805306368 его посоветовали в рассылке, посвященной KDE PIM.
userPrincipalName: ldapread@shelton.net
objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=shelton,DC=net Тот, кто его создавал, явно не знал ничего про структу-
ру AD, потому что то же самое можно добиться запросом
Это, разумеется далеко не полный перечень полей объ- (&(sAMAccountName=*)(|(sAMAccountType=805306368)
екта, а только те, что создаются при создании учетной запи- (sAMAccountType=268435456))(mail=*)). В приводимых
си пользователя с минимальным вводом данных о нем. числах в sAMAccountType нет ничего магического – это
Ну и раз мы условились считать AD «просто LDAP», просто 0x30000000 и 0x10000000 в десятичной форме.
то, естественно, к ней будут применимы все средства тести-
рования для работы с LDAP, например, ldapsearch, програм- Более подробно язык запросов описан в [5].
ма из комплекта OpenLDAP Toolkit, а также ldapbrowser – С языком запросов немного разобрались. Остается сле-
# ldapsearch -D ldapread@SHELTON.NET -w qwerty{123} ↵ Как мы видим, [6] не обманывает нас – это действитель-
-LLL -h 192.168.50.1 -b dc=shelton,dc=net -P 3 ↵
-a always (sAMAccountName=ld*) distinguishedName ↵ но строка UTF-8, закодированная через Base64. Этот при-
sAMAccountType ем – перекодирование через mmencode и преобразование
dn: CN=LDAP Reader,CN=Users,DC=shelton,DC=net через iconv – это уже практически готовая часть скрипта,
sAMAccountType: 805306368 к рассмотрению которого мы сейчас и приступим.
36
администрирование
Работаем из Bourne Shell done
fi
Разумеется, решать «задачу ради задачи» скучно. Поэтому _passwd=`echo $_ideconv | $util_mmencode -u`
возьмем вполне конкретный пример – для использования }
программой Sarg сформировать так называемый usertab-
файл, который задает соответствие логинов, использован- Пояснять тут особо нечего – если второй параметр
ных в процессе аутентификации в Squid и их имен, так как не нуль, то циклом дописать в конец строки столько зна-
они будут выведены в отчете, так что получается вроде: ков заполнения, сколько передано во втором параметре,
и декодировать строку.
ivanov-iv Иванов Иван Основной принцип работы скрипта следующий: после
petrov-pp Петров Петр
root Администратор вводной части (загрузки конфигурационного файла, раз-
бора командной строки, поиска необходимых программ)
Последовательность действий будет практически та- скрипт «расшифровывает» пароль, создает временный
кая же, как мы только что проводили вручную – подклю- каталог для работы, потом запрашивает из LDAP логины
чаемся к LDAP с соответствующим фильтром и списком и имена пользователей и сохраняет их во временных фай-
полей, получаем вывод, преобразовываем его и сохраня- лах (процедуры описаны ниже и довольно подробно):
ем в виде файла. Нас интересуют только поля displayName
и sAMAccountName. Поскольку это демонстрационный safe_logger "LDAPQuery ver. $revisionNumber started"
# Обратное преобразование пароля
скрипт, а не полная версия (полная версия содержит боль- demux_passwd $ldap_password
ше элементов и исполняется в соответствующем окруже- _ldap_pwd=$_passwd
# Создать временный каталог, если еще не создан,
нии), то некоторые части его будут опущены – они в прин- # и перейти в него
ципе уже не раз приводились и могут быть взяты из любо- make_tempdir
# Выполнить поиск в LDAP и сохранить результат
го другого скрипта с [4]. Рассматриваться будут только те ldap_data_query sAMAccountName $tempdir/users.ldif
части, которые непосредственно отвечают за выполнение # Преобразовать данные в читаемый вид
ldap_data_deconvert $tempdir/users.ldif $tempdir/users.list
интересующих нас действий. Так, например, не будут рас- # Выполнить поиск в LDAP и сохранить результат
сматриваться функции usage() и safe_logger(). ldap_data_query displayName $tempdir/names.ldif
# Преобразовать данные в читаемый вид
Данный скрипт будет использовать конфигурационный ldap_data_deconvert $tempdir/names.ldif $tempdir/names.list
файл типового формата, в котором собраны настройки под-
ключения к LDAP: Далее выполняется прием, который я применяю очень
часто – два вложенных цикла сравнения двух списков. Пер-
ldap_server=192.168.50.1 вый список – это список полученных из LDAP логинов, вто-
ldap_basedn="dc=shelton,dc=net"
ldap_binddn=ldapread@SHELTON.NET рой – список логинов пользователей, уже присутствующих
ldap_password="cXdlcnR5YXNkZgo 1" в файле. Он получается тривиальной командой на awk.
ldap_common_filter="(&(sAMAccountName=*) ↵
(sAMAccountType=805306368)(telephoneNumber=*))" Суть его в том, что оба списка считываются в переменные,
etcdir=/usr/local/etc берется один элемент «внешнего» списка и сравнивается
sargdir=sarg2
sargfile=sargusers со всеми по очереди элементами «внутреннего» списка.
Когда находится совпадение, выполняются необходимые
Здесь все должно быть понятно. Кроме пароля. Для па- действия, потом внешний цикл переходит к следующему
роля применена такая странная запись по следующим при- элементу (в Bourne Shell такое возможно – указать опера-
чинам. Во-первых, то, что хранить пароли в открытом виде – тору break или continue число уровней вложенности, на ко-
зло, знают все. Но в то же время трудно найти обратимую торые он одновременно воздействует).
функцию для того, чтобы надежно зашифровать пароль, Во внешнем цикле, идущем по списку логинов из LDAP,
и потом столько же надежно его расшифровать, не прибе- обнуляется счетчик позиции, который будет отмечать пози-
гая к помощи PGP. Поэтому был выбран компромисс – про- цию имени в списке имен. Внутренний же цикл идет по спис-
стейшее преобразование формата, защищающее от слу- ку пользователей, уже присутствующих в файле. Если ло-
чайного взгляда, и не более. Это именно преобразование, гин из LDAP уже присутствует в файле, то незачем его ис-
а не шифр. Точнее говоря, это Base64, у которого отброше- кать дальше, и переходим к следующему логину. Если же от-
ны заполнители и вместо них проставлено их число, что- сутствует, то берется имя пользователя из списка имен, от-
бы слегка запутать. Разворачивается этот пароль вот та- ступив с помощью tail на значение счетчика позиции и взяв
кой несложной процедурой: оттуда одну строку, после чего формируется строка вывода
и выводится в список пользователей Sarg с дозаписью:
# Обратное преобразование строки пароля
# Вход: $1 enconved (строка) - пароль из файла конфигурации # Внешний цикл по списку пользователей из LDAP
# Выход: _passwd - пароль в текстовом виде for _oneldapuser in $ldapusers
demux_passwd() do
{ _togo=0
local _ideconv _iadd _ifill # Внутренний цикл по списку пользователей Sarg
_ifill="=" for _onesarguser in $sargusers
_ideconv=$1 do
if [ ! $2 -eq 0 ]; then # Если пользователь найден, то мы прерываем
_iadd=$2 # и внутренний, и внешний циклы.
while [ $_iadd -gt 0 ]; do # Переходим к следующей записи внешнего цикла
_ideconv=$_ideconv$_ifill if [ $_oneldapuser = $_onesargluser ]; then
_iadd=$(($_iadd-1)) continue 2
38
администрирование
# Если же одна переменная – это промежуточная строка, # $2 attribute (строка) - имя атрибута
# и она должна быть присоединена к значению буфера # $3 enconved (digit) - 1 значит, что данные
if [ ${#2} -eq 0 ] && [ ${#3} -eq 0 ] && ↵ # не требуют преобразования
[ $_skip -eq 0 ]; then # Выход: none
_tempstr=$_tempstr$1 write_when_not_dn()
fi {
IFS=$newline # Если установлен $1, значит, это первая строка данных,
done # и нужно записать предыдущее содержимое
# Если данные не требуют преобразования – выводим # промежуточного буфера
# в один файл, если требуют - в другой, потому что [ ${#1} -eq 0 ] && return
# mmencode пытается преобразовать все данные, # Если промежуточный буфер содержит накопленные данные,
# переданные ей # их нужно записать
if [ $_enconved -eq 1 ]; then if [ ${#_tempstr} -ne 0 ] && [ $_skip -ne 1 ]; then
echo $_tempstr >> unconved.data # Если данные не требуют преобразования, записать
else # в один файл, если требуют — в другой, потому что
echo $_tempstr >> conved.data # mmencode преобразовывает все
fi if [ $_enconved -eq 1 ]; then
# Сортируем данные в обоих файлах и удаляем echo $_tempstr >> unconved.data
# дублирующие строки _enconved=0
cat unconved.data | sort -df | uniq > $_outfile else
cat conved.data | sort -df | uniq > deconved.data echo $_tempstr >> conved.data
# Построчно перекодируем файл fi
deconved=`cat deconved.data` fi
for one in $deconved # Если атрибут — dn, мы пропускаем эту и следующие строки
do # до тех пор, пока не начнется
echo $one | $util_mmencode -u | $util_iconv ↵ # новый атрибут
-f utf-8 -t koi8-r >> $_outfile if [ $2 = "dn" ]; then
printf "\n" >> $_outfile # Пропускать следующие строки
done _skip=1
IFS=$saveifs return
} else
# Использовать следующие строки и накапливать данные
# во временном буфере
Первые три строки после объявления переменных – _skip=0
_tempstr=$1
пример того, как можно отбросить путь (еще для этого ис- # Отметим, если данные не требуют преобразования
пользуется $(basename $1)) и расширение файла, оставив if [ $3 -eq 1 ]; then
_enconved=1
только его имя. Затем отбрасываем в файле все коммен- fi
тарии и пустые строки (unspace()) и начинаем его построч- fi
}
ную разборку. Поскольку в выводе ldapsearch имя поля от-
деляется от данных двоеточием, каждую строку разбива- Если первый параметр не задан (а такое сплошь и ря-
ем по этому символу. дом, когда разбираются закодированные данные), то сразу
Если после разбора есть второе поле, то данные не нуж- выйти, ничего не делать. Если существуют данные во вре-
но преобразовывать, достаточно проверить, не dn ли это менном буфере, сброшенные туда при предыдущем вызо-
(write_when_not_dn()). Если же после разбора есть третье по- ве, то их нужно записать в соответствующий файл.
ле (второе при этом не проверяется), то значит, это base64- Если атрибут – dn, то пропустить данные, переданные
данные, и они должны быть преобразованы, опять же, ес- при вызове, и все следующие строки, пока не будет сно-
ли это не dn (write_when_not_dn()). Если же нет ни второго, ва обнаружено два поля в строке. Иначе – поместить дан-
ни третьего полей – это промежуточная строка закодиро- ные во временный буфер, и, если они не требуют преобра-
ванных данных, и она должна быть присоединена к буфе- зования, отметить это.
ру, в которые помещается недописанная строка. Это про-
должается до конца входного файла. Заключение
Если были обнаружены закодированные данные, Язык Bourne Shell не очень-то годится для таких вещей, как
то сбросить последнюю строку данных в файл с данными обработка данных, полученных из AD, честно говоря. При-
для раскодирования, иначе в файл, который не будет рас- ходится пускаться на различные ухищрения, и все равно
кодирован. Дело в том, что mmencode не проверяет пере- работа получается с ограничениями – например, мне так и
данный ей текст, а пытается перекодировать его, незави- не удалось сделать одновременный запрос нескольких по-
симо от содержимого. лей. Но для решения несложных задач типа приведенной
После этого отсортировать файлы, отобрать уникаль- его вполне можно использовать.
ный текст (зачем перекодировать что-то более одного ра-
за?) и декодировать файл с кодированным текстом. Деко- 1. C. Реймер, М. Малкер. Active Directory для Windows 2003 Server.
дирование идет по одной строчке с последующим преобра- Справочник администратора. Пер. с англ. – М.: «СП-ЭКОМ»,
зованием в KOI8 (это можно убрать, кому не нужно) и выво- 2004 – 512 с.
дом символа перевода строки после каждой строки. 2. Active Directory, 2nd Edition. Robbie Allen, Alistair G. Lowe-Norris.
Последней интересной процедурой является write_when_ O'Reilly, 2003. ISBN 0-596-00466-4.
not_dn(). Она не очень большая, но весьма запутанная, по- 3. Ч. Расселл, Ш. Кроуфорд, Дж. Деренд. Microsoft Windows 2003
тому что постоянно используются внешние переменные: Server. Справочник администратора/Пер. с англ. – М.: Изда-
тельство «СП ЭКОМ», 2004 – 1392 с.: ил. ISBN 5-9570-0016-7.
# Сформировать файл с данными для преобразования, если оно 4. http://openoffice.mirahost.ru – Сайт, где выложен скрипт.
# требуется, иначе с данными, не требующими преобразования,
# в том случае, если это не dn 5. http://www.ietf.org/rfc/rfc2254.txt.
# Вход: $1 line (строка) - данные из исходного файла 6. http://www.ietf.org/rfc/rfc2849.txt.
Панель управления
хостингом ISPConfig
Сергей Яремчук
Управление хостингом никогда не являлось простой задачей. Здесь на помощь приходят
специальные инструменты, называемые панелями управления хостингом. Одним из таких
решений является ISPConfig.
В
журнале уже шла речь об одной но, но в процессе установки и работы n управлять виртуальными почтовы-
из панелей управления хостин- он не предлагается вообще (см. рис. 1), ми серверами и ящиками пользова-
гом – SysCP [1]. Недавнее зна- хотя языковые файлы присутствуют телей;
комство с этим продуктом показало, (не для всех меню). Отдельно файлы n управлять почтовыми фильтрами,
что за прошедший год мало что изме- локализации можно скачать по адре- автоответчиками, антиспам- и ан-
нилось, номер версии далеко вперед су [3]. В версии 3, находящейся в ста- тивирус-проверками, работать
не ушел (сегодня актуальна 1.2.19). дии активной разработки, русский ин- с почтой через веб-интерфейс;
Но анализ ссылок по запросу «hosting» терфейс пока недоступен. Но система n устанавливать дисковые квоты
на сайте freshmeat.net показал, что рас- имеет удобный интерфейс для его ло- и лимиты трафика;
клад среди свободных решений стал кализации, и при знании базового ан- n управлять виртуальными FTP-сер-
несколько иной. Из всего списка пос- глийского, потратив несколько часов, верами и пользователями;
тоянно обновляются всего десяток легко это сделать самостоятельно. Го- n управлять SSL-сертификатами, ис-
проектов. На момент написания этих товый на 80% файл доступен на стра- пользованием PHP и CGI;
строк проблем с локализацией не бы- нице «Исходный код» сайта журнала [4] n несколько уровней доступа в за-
ло в SysCP, DTC, VHCS, ispCP. Проект и отправлен авторам ISPConfig, по за- висимости от задач: администра-
VHCS (Virtual Hosting Control Panel) [6] вереням которых будет в ближайшем тор сервера, реселлер, пользова-
уже практически два года не обновлял- времени выложен на SVN. тель (ресурсов сервера). Некото-
ся и содержит несколько критических В остальном функции проектов рые решения предоставляют и воз-
ошибок. Учитывая, что некоторые раз- схожи, и, выбрав любой, можно: можность доступа к почтовым ящи-
работчики на его основе создали ispCP, n управлять веб-сервером (обычно кам и обычным пользователям;
использовать VHCS не стоит. Apache 1.x/2.x), создавать вирту- n собирать статистику по всем воп-
Есть средства для локализации альные серверы; росам;
и в ISPConfig [2], о котором речь пойдет n редактировать DNS-записи (A, n отслеживать обращения в техпод-
дальше, но в последней стабильной CNAME, MX, иногда SPF) на под- держку (ticket system).
версии 2.2.25 этому вопросу приходит- держиваемом DNS-сервере, соз-
ся уделять несколько больше времени, давать домены и субдомены; Все эти функции есть и ISPConfig.
чем в остальных продуктах. Тем бо- n управлять базами и пользователя- Отличия лишь в серверах, которые
лее что здесь небольшая путаница. ми MySQL (другие почему-то мне поддерживает та или иная панель. Ес-
В описании на сайте сказано, что рус- не встречались, по крайней мере ли места для веб и СУБД традиционно
ский язык поддерживается изначаль- в списке основных); заняты Apache и MySQL (альтернативы
40
администрирование
для них предлагаются реже), то для ор-
ганизации SMTP/POP3/IMAP может
быть задействовано любое из до-
ступных сегодня свободных решений.
Поэтому при выборе хостинг-панели
следует внимательно присмотреться
к требованиям. Но, например, Domain
Technologie Control (DTC) [5], который
на сегодня поддерживает самое боль-
шое количество серверов, из-за своей
функциональности не так прост в уста-
новке. Не спасает и то, что он есть в ре-
позитариях многих дистрибутивов (на- Рисунок 1. В интерфейсе ISPConfig русский язык не предлагается
пример, в отличие от остальных реше-
ний он единственный присутствует в Ubuntu). ностью, поэтому грань между ним и пользователем прак-
Официально ISPConfig поддерживает все популярные тически отсутствует. Но для организации хостинга без ре-
сегодня дистрибутивы: Mandrake 8.1 – 10.2, Mandriva от 2006, селлеров того, что есть, вполне достаточно. Также будем
Red Hat Linux 7.3 – 9.0, Fedora (Core) от 1, CentOS 4.1 до 5.2, учитывать, что перед нами все-таки бета, и в дальнейшем
SuSE Linux 7.2 – 11.0, OpenSuSE от 5.2, Debian от 3.0 и Ubuntu все может измениться.
от 5.04. Хотя, вероятно, будет работать и в других решени- В качестве системы для установки рекомендованы
ях, для которых доступны: Debian 4.0 или Ubuntu 7.10. Я использовал Ubuntu 8.04 LTS,
n Apache 1.3.х или / 2.х; проблем в работе замечено не было. Инструкции по уста-
n Sendmail или Postfix; новке найдете на сайте проекта и внутри архива.
n ProFTPd и Pure-FTPd как (standalone) или vsftpd как (inetd/ Вначале обновляем систему:
xinetd/standalone);
n PHP 4.0.5 и выше; $ sudo apt-get update
$ sudo apt-get -u upgrade
n MySQL 4/5;
n POP3/IMAP, поддерживающий форматы – традиционный Приступаем к установке компонентов будущей систе-
Unix-Mailbox (gnu-pop3d, qpopper, ipop3d, popa3d или vm- мы, если какие-то из пакетов уже в системе присутству-
pop3d) или Maildir (Courier-IMAP, Dovecot); ют, их установку можно пропустить. Устанавливаем Postfix,
n BIND 8/9 для ISPConfig 2 или MyDNS для ISPConfig 3; Courier, Saslauthd, MySQL, phpMyAdmin:
n phpMyAdmin, Webalizer, Quota, iptables или ipchains.
$ sudo apt-get install postfix postfix-mysql mysql-client ↵
mysql-server courier-authdaemon courier-authlib-mysql ↵
И некоторые другие приложения. На странице закачки courier-pop courier-pop-ssl courier-imap ↵
можно найти ссылки на некоторые дополнительные инстру- courier-imap-ssl libsasl2-2 libsasl2-modules ↵
libsasl2-modules-sql sasl2-bin libpam-mysql ↵
менты, расширяющие стандартные возможности ISPConfig. openssl courier-maildrop getmail4
Распространяется ISPConfig по BSD-лицензии.
В процессе установки приложений мастер настройки
Установка ISPConfig пакетов будет задавать вопросы по конфигурации. При ус-
Как уже говорилось, на данный момент развиваются две тановке Courier на вопрос «Create directories for web-based
версии: стабильная 2.2.25 и тестовая 3.0.0.6 Beta. Их ин- administration?» отвечаем «No». При установке Postfix
терфейс, а также процесс установки и локализации от- на вопрос «General type of configuration?» выбираем «Internet
личаются. Например, в версии 3 для установки компонен- site». Далее вводим имя почтового домена и на вопрос «SSL
тов используются программы из репозитария дистрибу- certificate required» выбираем «Ok».
тива, а в версии 2 некоторые приложения (Apache 1.3.41, Пароль для пользователя root в MySQL по умолчанию
ClamAV 0.93.3, PHP 5.2.6 и некоторые другие) компилиру- отсутствует. Его нужно добавить.
ются из исходных текстов. Все программы, которые нужно
компилировать, включены в архив, поэтому и размер его $ mysqladmin -u root password password
почти 45 Мб. Даже при соблюдении всех инструкций ком-
пиляция иногда заканчивается неудачей, и установочные Теперь очередь Amavisd-new, Spamassassin и Clamav:
скрипты по разным причинам (чаще несовместимость биб-
лиотек) отказываются дальше работать. Скрипты рассчи- $ sudo apt-get install amavisd-new spamassassin clamav ↵
clamav-daemon zoo nomarch lzop cabextract ↵
таны именно на такую установку, к ним привязаны и инс- apt-listchanges libnet-ldap-perl ↵
трукции. Если, к примеру, необходим Apache2, процесс ус- libauthen-sasl-perl daemon libio-string-perl ↵
libio-socket-ssl-perl libnet-ident-perl ↵
тановки несколько усложняется. libnet-dns-perl
Так как в будущем, вероятно, версия 3 будет основной,
о ней и пойдет речь дальше. Хотя, сравнивая возможности Дальше Apache2, PHP5 и phpMyAdmin:
интерфейса, версия 3 на данный момент проигрывает 2. На-
пример, возможности реселлера пока реализованы не пол- $ sudo apt-get install apache2 apache2.2-common ↵
После установки веб-сервера следует активировать не- $ sudo apt-get install vlogger webalizer
которые модули:
С установкой зависимостей закончили. Теперь скачива-
$ sudo a2enmod suexec ем архив с ISPConfig, распаковываем и ставим:
$ sudo a2enmod rewrite
$ sudo a2enmod ssl
$ sudo a2enmod fastcgi $ wget http://www.ispconfig.org/downloads/ ↵
ISPConfig-3.0.0.6-beta.tar.gz
$ tar xvfz ISPConfig-3.0.0.6-beta.tar.gz
Далее для работы потребуется модуль capability. В вер- $ cd ispconfig3_install/install/
$ sudo php -q install.php
сии 8.04 он вкомпилирован в ядро:
После запуска установочный скрипт будет задавать ряд
$ grep -i capabilities /boot/config-2.6.24-16-generic вопросов (см. рис. 2). Здесь ничего необычного. В квадрат-
CONFIG_SECURITY_CAPABILITIES=y
ных скобках предлагаются ответы по умолчанию, если он не
Иначе его следует загружать в виде модуля: подходит, вводим свое значение. После установки инфор-
мацию можно найти в журнале /var/log/ispconfig_install.log:
$ sudo modprobe capability n Select language (en,de) [en]: – выбираем язык;
$ sudo echo 'capability' >> /etc/modules
n Installation mode (Standard,Expert) [Standard]: – вариант
Ставим пакеты Pure-FTPd и quota: установки.
$ sudo apt-get install pure-ftpd-common ↵ В варианте Expert скрипт будет задавать чуть больше
pure-ftpd-mysql quota quotatool
вопросов по настройке конкретного сервиса, обычно необ-
Отключаем определение имен узлов в журнале Pure- ходимости прибегать к нему нет.
FTPd, при этом записи станут менее информативными, n Fu l l q u a l i f i e d h o s t n a m e ( FQ D N ) o f t h e s e r ve r,
но зато будет требоваться меньше ресурсов: eg foo.example.com [example.com]: – вводим полное имя
сервера;
$ sudo sh -c 'echo 'yes' > /etc/pure-ftpd/conf/DontResolv' n MySQL server hostname [localhost]: – параметры для дос-
тупа к MySQL.
Для третьей версии ISPConfig в качестве DNS-серве-
ра рекомендуется MyDNS. На вопрос «Почему?» ответа Если MySQL принимает подключения не на стандартном
не получил. Все стартовые скрипты рассчитаны именно порту, придется подправить команду подключения внутри
на него, а не BIND. В репозитарии Ubuntu MyDNS нет, по- установочного скрипта.
этому его нужно скомпилировать. Ставим пакеты, необхо- n MySQL root username [root]: – имя root;
димые для сборки: n MySQL root password []:password – пароль для root;
n MySQL database to create [dbispconfig]: – создание базы
$ sudo apt-get install build-essential libmysqlclient15-dev данных.
Скачиваем и устанавливаем MyDNS обычным образом: Далее скрипт создаст базы данных и таблиц, и будет
сгенерирован сертификат, в процессе создания которого
$ wget http://mydns.bboy.net/download/mydns-1.1.0.tar.gz будут заданы традиционные вопросы (страна, город, орга-
$ tar xvfz mydns-1.1.0.tar.gz
$ cd mydns-1.1.0 низация и так далее) и предложено указать порт для под-
$./configure ключения к ISPConfig. По умолчанию – 8080, если этот порт
$ make
$ sudo make install уже занят, меняем его, введя новое значение.
Затем будут созданы пользователь и группа ispconfig, ус-
тановлены задания для crontab и запущены все сервисы.
Веб-интерфейс ISPConfig
После установки набираем в браузере http://hostname:8080,
для регистрации используем учетную запись – admin и па-
роль – admin (пароль после регистрации не забываем сме-
нить). Интерфейс визуально разделен на три поля и стан-
дартен для такого рода программ (см. рис. 3). Вверху на-
ходится основное меню, открывающее доступ к опреде-
ленным настройкам: System, Client, Email, Monitor, Sites,
DNS. Плюс по умолчанию отключенный модуль BE Designer
(включается в настройках учетной записи). При выборе лю-
бого пункта слева будет доступна группа меню, относяща-
Рисунок 2. Работа установочного скрипта яся к нему. Все настройки производятся в центре страни-
42
администрирование
цы. Чтобы разобраться с возможнос-
тями интерфейса, достаточно потра-
тить полчаса времени, все находится
на своих местах и там, где ожидаешь.
Сюрпризов не возникает. На создание
новой DNS-записи, домена, субдоме-
на, виртуального почтового или веб-
сервера, почтового ящика и прочего
уходит 1-2 минуты. Заполняем пред-
ложенные поля и следуем указаниям
системы, в случае проблем появится
предупреждающая надпись.
При создании учетной записи но-
вого пользователя доступные ему
пункты меню реализуются при помо-
щи подключения модулей. Последняя
функция очень удобна, так как пользо-
вателю можно дать именно такой ин-
терфейс, который полностью подхо-
дит для выбранной задачи. Ни больше
ни меньше. Например, можно создать
несколько записей с правами админи-
стратора, передав им часть функций по
управлению. Меню BE Designer позво-
ляет редактировать меню, убирать или Рисунок 3. Интерфейс администратора ISPConfig
добавлять новые пункты. При созда-
нии клиентской учетной записи есть
возможность установки разнообраз-
ных лимитов.
Интерфейс версии 3 переведен
на 6 языков, русского в этом списке нет.
Но разработчики предоставили удоб-
ный инструмент, чтобы сделать это са-
мостоятельно.
В меню System находится отдель-
ный пункт Language Editor. Есть, как
минимум, два варианта работы с ним.
Для начала создаем новый язык, вы-
брав New Language, затем в поле Select
language basis указываем язык, ис-
пользуемый в качестве базового, и
вводим название из двух букв, в New
language (в нашем случае ru). Теперь,
перейдя в меню Languages, выбира-
ем в списке Select language свой язык
и получаем возможность редактиро-
вания отдельных файлов при помощи
веб-интерфейса (см. рис. 4). Но удоб-
нее экспортировать языковый файл, Рисунок 4. Редактирование языкового файла
выбрав в меню Export язык. Создан-
ный файл сохраняем на жесткий диск, ляется со своими задачами. Если час- 2. Сайт проекта ISPConfig – http://www.
в дальнейшем его можно редактиро- то необходимо редактировать DNS-за- ispconfig.org.
вать при помощи любого текстового писи, создавать виртуальные серве- 3. Файл локализации для версии 2.x –
редактора, поддерживающего юникод. ры, стоит присмотреться к этому ре- http://www.wifi-ufa.ru/ispconfig.ru.lng.zip.
По окончании импортируем его через шению. 4. http://www.samag.ru/source.
меню Import. 5. Сайт проек та Domain Technologie
Несмотря на то что перед нами по- 1. Яремчук С. Панель управления хостин- Control – http://www.gplhost.com/software-
ка еще версия ISPConfig, находящая- гом SysCP. //Системный администра- dtc.html.
ся в разработке, она полностью справ- тор, №8, 2007 г. – С. 74-79. 6. Сайт проекта VHCS – http://vhcs.net.
Сергей Барановский
История о том, как «лебедь, рак да щука везти с поклажей воз взялись», известна всем.
Если рассмотреть эту басню с точки зрения механики удалось Якову Перельману в своей книге
«Занимательная физика», то с точки зрения автоматизации работы турфирм ситуация очень
похожа и можно назвать аналогичную троицу: «САМО-Софт», wine, Etersoft.
О
бщее положение т урф ирм продукт – «САМО-ТурАгент» и описы- ня задуматься. Например, оказалось,
на рынке автоматизации их де- вается способ его запуска под Linux. что тираж журнала велик, продукт бо-
ятельности было описано в май- лее чем известен и интересен читате-
ском номере [2], как и решение по за- «Жареный петух клюнул» лям, а территория распространения
пуску «САМО-Тур» под Linux. Дальше Результат от моей первой статьи пре- журнала широка.
описываются произошедшие измене- взошёл ожидания. Если вопросы ви- Так, при личном общении главный
ния после выхода статьи, а также рас- да «А твоя ли эта статья?» были ожи- разработчик фирмы «САМО» признал-
сматривается ещё один туристический даемы, то другие вещи заставили ме- ся, что «ксерокс» статьи ему подарили
44
администрирование
коллеги сразу после выхода журнала в свет, когда он был
в командировке в Украине.
Ошибка «Variant does not reference an automation object.»
была исправлена уже в июньском выпуске «САМО-Тура»,
а вот сообщить нам об этом и что делать дальше «САМО»
так и не смогли. Самое главное, что дело сдвинулось
с «мёртвой точки» и начался диалог. Нами был передан на
временное хранение в фирму «САМО» компьютер с уста-
новленным Linux для «экспериментов на месте», а так как
наша фирма использует в своей деятельности ещё и дру-
гой продукт фирмы «САМО», о котором речь пойдёт в этой
статье, то общение шло по двум направлениям. Так, про-
граммистом из «САМО» Игорем Калашниковым мы были
направлены в фирму Etersoft [3], которая как раз специа-
лизируется на запуске различных приложений под Linux,
а другой программист – Куракин Вячеслав исправил ряд
ошибок в работе «САМО-ТурАгента». Всё это положитель-
но сказалось на автоматизации нашей турфирмы, но, не-
смотря на это, оперативность, инициативность и качество
работы с клиентами оставляют желать лучшего.
Etersoft
Если зайти на сайт компании [3], то в разделе «о фирме» Рисунок 1. Переключение на OpenOffice в профиле пользователя
можно узнать, что «компания «Этерсофт» была создана
в конце 2003 года группой Linux-разработчиков для оказа- что они отнюдь не заинтересованы в совместных проек-
ния услуг по разработке решений на базе операционной тах, хотя их координаты неоднократно пересылались друг
системы ALT Linux; одной из миссий является популяриза- другу и доступны на сайтах фирм.
ция и внедрение свободных программ в любых областях, Скорее всего, эта ситуация связана с недостаточно
где применяется компьютерная техника». сформированным спросом на услуги со стороны турфирм
Фирма выпускает много интересных решений по разум- и с тем, что у производителей программного обеспечения
ным ценам и бесплатных. Вот некоторые из них, что при- нет существенных конкурентов. Многие маленькие турфир-
влекли наше внимание: модифицированная и улучшен- мы по всей России имеют число компьютеров не больше
ная версия wine, универсальный транслятор SQL-запро- числа пальцев на одной руке и, как вариант, не содержат
сов из диалекта T-SQL в pgSQL (он позволяет использо- технических отделов, т.е. не способны обоснованно сделать
вать PostgreSQL в приложениях, разработанных для работы выбор программного обеспечения, а также имеют затруд-
с MS SQL), UniOffice (позволяет использовать Open Office. нения с настройкой.
org вместо MS Office, выполняя трансляцию COM-запросов В случае каких-либо проверок по используемому про-
к MS Office в вызовы Open Office.org). граммному обеспечению турагентствам проще перепла-
Что интересно, фирма открыта к сотрудничеству тить и купить понятный им Windows, чем связываться с оте-
и без труда предоставляет коммерческие версии своих про- чественными разработчиками программного обеспечения.
дуктов для тестирования по «гарантийному письму» в их ад- То есть вместо того, чтобы кормить свою армию програм-
рес, чем мы и воспользовались. мистов, мы кормим чужую.
Общение с техподдержкой, как для клиентов, так и для «Под лежачий камень вода не течёт» – гласит послови-
«тестеров», происходит по электронной почте. ца. Поэтому наша фирма вынуждена заниматься не толь-
Договориться об иной форме сотрудничества с этой ко своей основной деятельностью – туризмом, но и разра-
фирмой у нас, увы, не получилось, даже в ответ на наше боткой, усовершенствованием и настройкой программно-
предложение оплатить командировку для представителя го обеспечения. Чтобы опыт не пропал зря, я хочу им по-
Etersoft в наш офис. делиться с вами на страницах журнала.
Другие решения
Существует достаточно много реше-
ний по запуску бухгалтерских про-
Рисунок 2. Ошибка «OLE error 800401F3» Рисунок 3. Сообщение об ошибке
при осуществлении операции экспорта «Вход в систему невозможен» грамм «1С» под Linux. Один из спо-
собов – использование различных
порт». Далее можно осуществить вы- на кнопку со значком Excel, выска- библиотек вместе с wine (например
грузку выбранных данных в Excel или кивает ошибка «OLE error 800401F3» dcom98). Cкорее всего, этим опытом
Open Office Calc в зависимости от то- (см. рис. 2). можно воспользоваться и для продук-
го, как настроен ваш профиль. А в ряде мест так и не исправлена тов «САМО». По крайней мере, фору-
Для того чтобы можно было сделать ошибка «Variant does not reference an мы изобилуют различной информа-
выгрузку в Open Office Calc под Linux, automation object.» Очень напомина- цией, на переработку и проверку ко-
необходимо: ет случай: «Обработать напильником торой требуется время. Также не сле-
Установить под wine ещё один па- до придания нужной формы». дует забывать и про другие сущест-
кет OpenOffice (для Windows c под- Позиция фирмы «САМО» понятна, вующие эмуляторы вроде CrossOver
держкой Java), например, послед- они не видят смысла тратить время Office. В любом случае решение бу-
нюю версию 2.4.1-1. Поддержка Java на переписывание нечасто использу- дет найдено.
для экспорта обязательна и в слу- емых форм экспорта, когда нет време-
чае работы под Windows тоже нуж- ни и во всю идёт разработка «САМО2», Экспорт в почтовую
на. Иначе при попытке экспорта бу- а также появилась возможность вы- систему
дет выдана ошибка «Для выполнения вода форм через «FastReport» [5] Кроме экспорта различных таблиц,
данного задания OpenOffice.org не- и «QuickReport». связь «САМО-Тура» с внешним миром
обходимо установленное окружение происходит и через электронную почту.
Java(JRE). Установите JRE и переза- FastReport Сотрудники туроператорских офисов
пустите OpenOffice.org.». Использова- Хочется отметить, что «FastReport» [5] – регулярно отправляют письма по элек-
ние двух пакетов OpenOffice (родной это интересный проект, заслуживаю- тронной почте как своим партнёрам
под Linux и второй под wine) можно от- щий отдельного внимания. Он удобен с просьбой забронировать ту или иную
нести к издержкам данного способа тем, что без программирования поз- услугу, так и агентствам в виде писем-
и понадеяться, что когда-нибудь про- воляет делать вывод всевозможных подтверждений.
грамма будет одна. форм и отчётов, вставляя в них различ- По мере увеличения объёмов про-
Переключить в профиле пользова- ную информацию, выдаваемую про- даж создание новых писем и нахож-
теля «Использовать пакет OpenOffice» граммами. Несколько слов о настрой- дение нужного адреса занимает мно-
(см. рис 1). ке wine на работу с «FastReport» будет го времени, поэтому требуется автома-
Под wine запустить редактор реест- сказано в разделе «САМО-ТурАгент». тизация этого процесса. Время сокра-
ра (wine regedit), далее в нём перейти Всё упомянутое дальше можно сме- щается за счёт использования различ-
в следующий раздел HKEY_CLASSES_ ло использовать при работе с «САМО- ных шаблонов писем и экспорта в поч-
ROOT\xmlfile\shell\open\command и ис- Туром» и тем самым увеличить число ту. Путём одного-двух кликов менед-
править значение по умолчанию на мест в программе, откуда можно де- жеры получают готовое письмо, кото-
«"путь_к_openoffice" %1». Например: лать вывод информации. рое остаётся только прочитать и на-
жать кнопку «Отправить». В качест-
"С:\Program Files\OpenOffice.org 2.4\ ↵
program\soffice.exe" %1
Uni Office ве почтового клиента нами исполь-
Вторым из решений может быть ис- зуется Mozilla Thunderbird. Несмотря
В половине используемых на прак- пользование транслятора COM-объ- на то что этот клиент является крос-
тике случаев этого хватает. Но дру- ектов [4]. Для этого следует скачать сплатформенным, использование
гая половина экспорта остаётся так с сайта [4] дистрибутив unioffice.msi под Linux имеет свои тонкости. Род-
и недоделанной со стороны фирмы и установить его командой: ная Linux-версия не подойдёт, придёт-
«САМО». Проблема экспорта у них су- ся ставить ещё одну под wine, ситуация
ществует не только под Linux. Если $ wine msiexec /i /путь/unioffice.msi схожа с OpenOffice. Далее, в Windows
взять компьютер, где будет Windows, передачей данных от «САМО-Тура»
«САМО-Тур» и OpenOffice и не будет По факту установка данного паке- к Thunderbird занимается библиоте-
MSOffice (т.е. исключаем проблемы та не сильно повлияла на экспорт. Ос- ка mapi32.dll – её надо скопировать.
портирования под Linux), то в ряде мест новные необходимые функции экс- Есть и 16-битная версия этой библио-
экспорт всё равно не работает. Естест- порта продолжают не работать. Плюс теки – mapi.dll. Чтобы читатель на на-
венно, все эти проблемы наследуются в том, что этот продукт бесплатный ступал на грабли, отмечу, что, исполь-
при запуске под wine. Так, если нажать и может быть полезен кому-либо ещё. зуя Dependency Walker [6], можно вы-
46
администрирование
яснить зависимости и получить име-
на ещё шести библиотек: advapi32.dll,
gdi32.dll, kernel32.dll,ntdll.dll, rpcrt4.dll,
user32.dll, которые, казалось бы, тоже
нужны, но на практике установка всех
их под wine приводит к ошибкам и не-
работоспособности приложений. Из-
начально имеющиеся wine-аналоги
в директории system32 работают луч-
ше, поэтому мы ограничимся копиро-
ванием файлов mapi32.dll и mapi.dll
в директорию ~/.wine/drive_c/windows/
system32. Скорее всего и 16-битная
версия не нужна.
После копирования следует сооб-
щить wine о библиотеке, для этого че-
рез меню «Приложения → Wine → Wine
Configuration» нужно запустить на-
стройщик (см. рис. 7), где следует вы- Рисунок 4. Установка «САМО-ТурАгента»
брать вкладку «Библиотеки» и там в па-
дающем меню «Новое замещение для их деятельности. Одни работают не- шие проблемы. Если его устанавли-
библиотеки» найти по одной (или на-посредственно с будущими туриста- вать через:
писать) названия библиотек, после ми – они называются турагентствами,
нажать кнопку «Добавить» и увидеть,а другие не работают с туристами на- # yum install wine
как они добавятся в окошечке ниже. прямую, но обеспечивают сами услу-
После необходимо в реес тре ги – это туроператоры. то установится его последняя версия
wine (меню «Приложения → Wine → Если продукт САМО-Тур нужен опе- 1.0.1, а она, увы, не «дружит» с «САМО-
раторам, то для автоматизации работы ТурАгентом». Всё ставится, запускает-
regedit») создать раздел HKEY_LOCAL_
агентств существует другой продукт – ся, выдаётся окно запроса логина и па-
M AC H I N E \ S O F T WA R E \ M i c ro s of t \
Windows Messaging Subsystem и про- это «САМО-ТурАгент». роля на вход, но после подключения
писать в нём значение параметра Агентств больше, и наверно, бо- не происходит и выдаётся сообщение
«"MAPI"="1"». лее правильным было бы первую ста- об ошибке «Вход в систему невозмо-
тью посвятить именно этой програм- жен» (см. рис. 3). Проблема решает-
После этих операций у нас местами
ме, но т.к. её запуск значительно про- ся установкой версии 0.9.58-1.fc8. Вы-
заработал экспорт в почту, например,
если из меню «Справочники → Заяв- ще запуска «САМО-Тура», то эта про- яснилось это случайно, т.к. на момент
грамма идёт вторым планом.
ки» выбрать заявку с гостиницей и на- начала работы с программой это бы-
жать на правом меню «E-mail → Бро- Имея за плечами опыт использова- ла самая последняя версия wine и всё
нирование → Для партнёра гостини- ния этой программы под Linux во всех работало. После вышло обновление,
наших офисах продаж уже около го- с которым и возникли проблемы. Раз-
цы ...», то там работает. А вот соседний
пункт «E-mail → Подтверждение/Отме-да, хотелось бы рассказать о том, работчики «САМО» подтвердили ситу-
на – ...» выдаёт сообщение «Ошибка как заставить работать этот продукт ацию, да и вообще на версию 1.0.1 мно-
под Linux, а также о тех недостатках, го нареканий, поэтому пока единствен-
при отправке электронной почты». Ис-
править пока не удалось. с которыми приходилось и приходит- ное доступное решение сделать down-
ся сталкиваться в работе.
Бол е е п рав ил ьн а я п о з и ц ия – grade до версии 0.9.58. На других вер-
это не работать с различными транс- Допускаю наличие более удоб- сиях проверка не производилась.
ляторами запросов и конверторами, ных продуктов других фирм, и было Найти старые версии в виде rpm
проводя рабочие часы на форумах, бы хорошо прочитать о них на стра- можно, например, на http://rpmfind.net.
а чтобы разработчики программного ницах журнала, но по ряду причин на-
обеспечения учитывали потребности ша фирма не смогла найти альтерна-
рынка более гибко и сами создавали тивный продукт и мы вынуждены бы-
необходимые функции в своих продук-ли купить этот.
тах. Никто, кроме самих разработчи- В установке «САМО-ТурАгента» нет
ничего сложного. Для этого требуется
ков, не знает лучше свой собственный
дистрибутив программы, установлен-
код, но по жизни получается, что мир
держится на Кулибиных. ный Linux, например Fedora 8, а также
пакет wine. Если вы прочитали первую
САМО-ТурАгент часть статьи [2], то проделать эти шаги
Все туристические фирмы можно гру- для вас не составит труда.
бо поделить на две части по сферам А вот с wine нас ожидают неболь- Рисунок 5. Вводим логин и пароль
Если у вас не получится найти, то пи- сами примерно со следующим содер- под Windows, если в настройках IE
шите на форум журнала – поделюсь. жанием: был прописан прокси, то и программа
По-хорошему, следует откатывать подключалась, используя этот прок-
все файлы, но у меня работает и для [Settings]^M си. При этом галочка «Использовать
Locale=0^M
двух основных. Сначала удаляем фай- ConnectionIndex=0^M прокси-сервер» установлена не была.
лы с ключом --nodeps: ^M Приходилось её ставить, прописывать
[Connection0]^M
Port=88^M «левый» прокси, а после в списке ис-
# rpm -e wine wine-core –nodeps Name=Connection^M ключений прописывать реальный ад-
Host=192.168.0.1^M
UserName=^M рес сервера, тогда подключение к не-
а затем устанавливаем предыдущие: Login=^M му шло напрямую.
Также интересно, что настройка
# rpm -ihv wine-0.9.58-1.fc8.i386.rpm ↵ где ^M – так отображается перевод для поля agentinfo находится отдель-
wine-core-0.9.58-1.fc8.i386.rpm ↵
--nodeps --force строки. Не забывайте, что в Windows но от настроек подключения. Так раз-
и Linux есть различия. Поэтому или работчики нам сообщили, что сама
Да лее копируем дис трибу тив по другим причинам с созданием фай- программа при подключении к сер-
«САМО-ТурАгента» на компьютер и за- ла автоматически, при запуске про- веру не обращает внимания на сис-
пускаем из-под wine файл setup.exe, граммы, возможны проблемы. При ко- темные настройки прокси у IE, а вот
после чего начинается обычная уста- пировании работающего файла проб- agentinfo (справа внизу) на них смот-
новка (см. рис. 4). лем нет. реть будет. Настройки лежат в реес-
Далее, копируем с Windows-ма- Далее, запускаем программу, щёл- тре wine. Проверьте в ветке реест-
шины файл client.conf в директорию: кнув по иконке (пальмочка в меню ра HKCU\Software\Microsoft\Windows\
~/.wine/drive_c/Program Files/SAMO-Soft/ «Приложения → Wine → Программы → CurrentVersion\Internet Settings пара-
TourAgent SQLNet 5.2 или создаём его САМО-ТурАгент SQL 5.2 → САМО-Тур- метр ProxyEnable, он должен быть
Агент SQL 5.2»). Вводим логин и пароль установлен в 1. ProxyServer хранит
и подключаемся (см. рис. 5). адрес прокси-сервера, например
При первой установке будет за- server:3128. Параметры аутентифи-
прос от Wine Gecko Installer – нажима- кации, скорее всего, следует пропи-
ем Install. В случае отмены – нажатие сать там же.
Cancel, вопрос будет задан при повтор- На мой взгляд, это не самое удач-
ном запуске, а в правом нижнем углу ное решение, но другого нет.
не будет показана информационная
панель agentinfo. Что ещё не работает
Информация на панели берётся (не работало)?
с адреса http://www.samo.ru/agentinfo/?, Первые версии программы не закры-
и кажется, в настройках программы вались с помощью «крестика» в пра-
этот адрес не меняется. Если в вашем вом верхнем углу. Пришлось обучить
случае для выхода во внешний мир всех пользователей использовать xkill.
используется прокси-сервер с аутен- Далее, в середине лета Вячеславом
тификацией, то программа не предо- Куракиным ошибка была исправле-
ставляет отдельного меню по настрой- на. Размер файла client_sqlnet.exe,
ке его параметров. где ошибка исправлена, равен 5710336
Что интересно, в первых версиях байт.
«САМО-ТурАгента» при работе из ло- При сворачивании окна оно прак-
Рисунок 8. Настройка wine,
замещения dll кальной сети версий, запущенных тически никогда после не разворачи-
48
администрирование
вается, и программу приходится за- wine (меню «Приложения → Wine → знаменитым «квартетом» из всё той же
вершать и запускать заново. Для это- Wine Configuration») (см. рис. 7). басни И.А. Крылова.
го пользователи были научены рабо- Во вкладке «Библиотеки» следу-
тать с разными виртуальными столами ет выбрать в падающем меню «Новое 1. Я.И. Перельман. Занимательная фи-
и запускают «САМО-ТурАгент» на от- замещение для библиотеки» нужные зика, изд. 15-е, Государственное изда-
дельном столе. файлы и нажать после кнопку «Доба- тельство технико-теоретической лите-
При попытке сохранить данные вить», после чего они появятся в око- ратуры, М.:1949.
из «Мастера оформления заявки» шечке ниже (см. рис. 8). 2. Барановский С. Как запустить «САМО-
выдаётся окно «Ошибка подключе- После следует скопировать нуж- Тур» для Windows под Linux. //Сис-
ния» (см. рис. 6). При этом данные всё ные шрифты в папку ~/.wine/drive_c/ темный администратор, №5, 2008 г. –
же сохраняются. Аналогичная ошиб- windows/fonts. Например, можно поп- С. 42‑29.
ка выскакивает при удалении заяв- робовать взять целиком папку Fonts 3. Сайт фирмы Etersoft, занимающей-
ки. Пользователи просто игнориру- с какой-нибудь Windows-машины. Пос- ся вопросами запуска приложений
ют ошибку и работают, как если бы ле этих действий все отчёты через под Linux – http://www.etersoft.ru.
её не было. FastReport отображаются, и их можно 4. Uni Office@Etersoft, транслятор COM-
При печати отчётов использует- печатать, например, «Договор с кли- объектов MS Office – http://wiki.etersoft.ru/
ся «FastReport» [5]. Была ситуация, ентом» и другие. UniOffice.
что не видны часть шрифтов, пропа- 5. Fast Reports Inc., генератор отчётов,
дают буквы и абзацы текста. Реше- Заключение создание и разработка отчётов – http://
ние было найдено следующее – ско- Очень хочется, чтобы упоминаемые fast-report.com/ru.
пировать с Windows машины в папку «лебедь, рак да щука» решили пробле- 6. С а й т п р о г р а м м ы D e p e n d e n c y
~/.wine/drive_c/windows/system32 фай- му, сместив воз с места, без привлече- Walker, которая ищет зависимос-
лы riched20.dll и riched32.dll. После это- ния кого-то четвёртого, иначе «знаме- ти меж ду би блиотеками – ht tp: //
го надо их прописать в конфигурации нитое трио» может оказаться не менее www.dependencywalker.com.
Обзор
ALT Linux 4.0
Children
Сергей Яремчук
В конце июля компания ALT Linux представила бета-версию необычного дистрибутива,
предназначенного для детского творчества – ALT Linux 4.0 Children. Познакомимся с новинкой.
Мысли вслух циализированные дистрибутивы, с ко- ку общаться с компьютером на рав-
Дистрибутивов Linux сегодня насчиты- торыми удалось за это время познако- ных. Дети быстро осваивают основные
вается уже не одна сотня, а новые ре- миться, ориентированы в первую оче- манипуляции и с радостью предаются
шения появляются практически еже- редь на образование, а значит, на при- игре. С другой стороны, ту часть зна-
недельно. Места среди дистрибутивов сутствие специалистов, которые будут ний, которую дети могут освоить в до-
массового пользования отлично вид- настраивать и обслуживать систему. школьном возврасте, они вполне мо-
но по рейтингу сайта Distrowatch.com. Поэтому, почитав описание ALT Linux гут получить и без помощи компьюте-
Но это не значит, что остальные реше- Children, делаем вывод, что этот дис- ра. Ситуацию обостряют и разнообраз-
ния являются плохими и не заслужива- трибутив несколько выпадает из это- ные публикации на эту тему, в которых
ют внимания. Среди специализирован- го списка, так как «использование де- рассказывается о возможных пробле-
ных дистрибутивов уже нет такой жест- тьми любого дошкольного возраста» мах со здоровьем у детей: ухудшает-
кой конкуренции и распределения сим- подразумевает скорее работу на до- ся зрение, плохо развивается опорно-
патий пользователей. И поэтому впол- машнем компьютере и, что немало- двигательный аппарат, а еще добавим
не можно создать решение, которое бу- важно, без наличия рядом специалис- электромагнитное поле, которое также
дет замечено и принято пользователя- та. Отсюда выдвигаем несколько сво- здоровья не прибавляет. При длитель-
ми. Дистрибутив ALT Linux Children, на- их требований к этому дистрибутиву: ном «общении» с компьютером ребе-
верное, можно отнести к специализи- простота в настройке и использовании, нок становится «чужим», все больше
рованным решениям, направленность автоматическое определение обору- погружаясь в виртуальный мир. Неко-
его звучит как развивающий дистри- дования, наличие удобных программ торые психологи устанавливают воз-
бутив для детского творчества. Ори- для всех возможных задач. С этой точ- растной ценз при знакомстве с ком-
ентирован Children на использование ки зрения и будем в дальнейшем рас- пьютером в 12 лет, Интернет – еще че-
детьми любого дошкольного и школь- сматривать ALT Linux 4.0 Children. рез 2-3 года.
ного возраста, начиная от 4 лет. Нуж- Некоторая доля правды здесь есть.
но отметить, что сегодня уже есть не- Спорный вопрос Но параллельно слышим обратное
сколько дистрибутивов, направленных Единственный вопрос, который мож- мнение, что ребенок, незнакомый с де-
на образовательные цели, частично но назвать спорным при знакомстве тсадовского возраста с компьютером,
о них рассказывалось в статье «Linux с описанием дистрибутива, это воз- уже отстает в развитии. Сегодняшние
в школе?» [2]. За это время ситуация раст ребенка – от 4 лет, при котором компьютерные энциклопедии для ре-
мало изменилась, хотя некоторые про- ему предлагается «осуществить плав- бенка с успехом заменяют бумаж-
екты уже прекратили существование ное погружение в мир свободного про- ные, ведь можно не только прочитать,
или изменили прописку. граммного обеспечения». но и увидеть предмет, описание кото-
В каталоге ПО для Linux на сай- Если почитать советы специалис- рого сейчас интересует. Это намного
те виртуальной энциклопедии http:// тов, то их мнения по поводу того, с ка- интереснее. Добавим сюда еще и обу-
rus-linux.net имеется специальный кого возраста можно начинать зна- чающие видео, недостатка в которых
раздел, содержащий ссылки на об- комство с компьютером, сильно рас- сейчас нет. Хотя это не сделает из ре-
разовательное и развивающее ПО ходятся. C одной стороны, интерак- бенка вундеркинда, но положительный
для Linux. Но сработает это при усло- тивность – одно из главных достоинств результат в любом случае гарантиро-
вии, что Linux уже установлен. Все спе- любой программы – позволяет ребен- ван. На моем домашнем компьютере
50
администрирование
Edubuntu появился на полгода раньше
Ubuntu и именно из-за наличия разви-
вающих программ, полезных для мо-
его ребенка. Благодаря ему мы быст-
ро выучили азбуку, математику, узнали
про космос, окружающий мир и многое
другое. Не говоря уже о том, что прос-
то провели вместе время.
Но есть еще один немаловажный
момент. На некоторых форумах мне
встречались сообщения о детях, ко-
торые в трехлетнем возрасте уже про-
шли Silent Hill, и родители пытаются
для своего чада найти что-то подоб-
ное. Естественно, что можно говорить
о психике такого ребенка и о подходе
родителей? Ведь даже на то, чтобы
пройти игру полностью, следует пот-
ратить не один час времени. Это очень
много. В 12 лет просмотр телевизора
не должен составлять больше 30 ми- Рисунок 1. Меню загрузки ALT Linux 4.0 Children
нут в сутки, а для младшего возраста
эти требования еще жестче. Я уже не темы, терпеть-то ребенок уже не мо- не совсем комфортное на современ-
говорю об игровой атмосфере, кото- жет, ему нужно сейчас и сразу. ных мониторах.
рую создали разработчики Silent Hill. По кнопке <F2> можно выбрать Итак, через некоторое время пе-
Стоит ли говорить, что это явный пере- язык системы, но только при акти- ред нами предстанет рабочий стол
бор. Очевидно, взрослым следует по- вации «Россия» и «Украина» систе- KDE 3.5.9. Все разделы жесткого дис-
нимать, что компьютер не нянька, зада- ма сразу же начнет «говорить» на вы- ка, в том числе и NTFS, монтируются
ча которой отвлечь ребенка, пока ро- бранном языке. Проблем с локализа- в режиме чтение-запись. Их ярлыки
дители чем-то заняты. Самостоятель- цией в дальнейшем для этих языков выводятся на рабочий стол, обеспечи-
ное и бесконтрольное освоение ком- нет. Но если выбрать Казахстан или вая быстрый доступ к файлам на жест-
пьютера не может дать положитель- Беларусь, язык меню становится анг- ком диске. Вставленные в USB флеш-
ного результата. лийским, а как показали дальнейшие накопитель и цифровой фотоаппарат
эксперименты, рабочий стол в таких тут же обнаруживаются, ярлык поме-
Пробуем в работе системах содержит подписи как мини- щается на рабочий стол. Безопасно
Стильное меню, появившееся после мум на трех языках (русском, английс- извлечь его можно при помощи кон-
инициализации диска по умолчанию, ком и выбранном) (см. рис. 2). Но, оче- текстного меню. Правда, появляюще-
предлагает загрузку с жесткого дис- видно, это не недостаток конкретно- еся сообщение «Накопитель отключен,
ка (см. рис. 1). В качестве альтерна- го дистрибутива, а уровень локализа- но не может быть извлечен» пугает да-
тивы – работа в Live CD и тест памяти. ции рабочей среды на этом языке, что же бывалого пользователя. Команда
Честно говоря, почитав описание дис- косвенно подтверждает и информа- mount показывает, что все нормально
трибутива на сайте проекта, я поче- ция о состоянии перевода интерфей- и флешку можно удалять из разъема.
му-то предполагал, что основным бу- са на странице Translations Ubuntu [5]. Повседневная работа ведется от име-
дет работа в LiveCD. То есть ребенок Несмотря на то что <F4> подписана как ни пользователя altlinux, прав у которо-
вставил диск в привод, нажал кнопку «Источник установки», установка дис- го хватает на все операции, в которых
включения питания, подождал некото- трибутива на жесткий диск не предус- может возникнуть необходимость.
рое время и затем спокойно запустил мотрена. Во всяком случае, в меню та-
любимую программу (даже учитывая кого пункта я не обнаружил. Проблем Приложения
все сказанное выше, загрузку систе- с определением оборудования на ком- В ALT Linux Children разработчики по-
мы вполне можно ему поручить). Ко- пьютерах, которые имелись под рукой, местили приложения для самых раз-
нечно, объяснить 4-летнему ребенку, не было. Также тестирование показа- нообразных задач, с которыми может
что нужно переключиться, просто, он ло, что дистрибутив неплохо работа- столкнуться юный пользователь. Этот
поймет (проверено), но вот на его реак- ет и в виртуальных машинах. Поэто- набор тщательно выверен, и состав
цию я бы сильно рассчитывать не стал. му не обязательно прожигать болван- минимизирован. Критерием подбора
Опыт показывает, что в большинстве ку и перегружать систему, когда при- служила простота освоения и удобс-
случаев дети отвлекаются и «забыва- шло «детское время». Проще запустить тво использования. При этом дистри-
ют» вовремя среагировать. Как итог – VirtualBox и переключить в полноэк- бутив не забит «под завязку», размер
утомительная процедура перезагрузки ранный режим. Единственный минус – ISO-образа чуть больше 500 Мб. Ме-
установленной на жестком диске сис- низкое разрешение экрана 800х600, ню KDE выполнено традиционно. Все
52
закон есть закон
(Продолжение, начало в №7 и №8 следствию пароли и коды шифро-
за 2008 г.) вания?
Такой обязанности не предусмотре-
Для чего и как производится опеча- но. Всегда можно сослаться на свою
тывание изымаемой техники? Как забывчивость. Другое дело, что чело-
можно опечатать ноутбук или ком- век на предприятии – это слабое зве-
муникатор и какая следственная но: пароли оставляются прямо на ра-
процедура гарантирует от злоупот- бочем столе, лежат на видном месте.
ребления следствия и от того, что- Да и смысла скрывать пароль обычно-
бы сами следователи могли допи- му работнику нет, он не несет ответс-
сать что-то на системы хранения твенности за установленное на его
данных? компьютере ПО. Системный адми-
Опечатывание изымаемой техники нистратор и директор могут сослаться
Рубрику ведет юрист
делается для того, чтобы впослед- на право не свидетельствовать против Юлия Штокало
ствии доказать неизменность ком- себя. Даже в случае привлечения в ка-
пьютерной информации. Техника опе- честве свидетелей это право остаётся ля администрации соответствующей
чатывается и упаковывается таким и распространяется на информацию, организации. Под представителем ор-
образом, чтобы ее нельзя было до- которая может быть в дальнейшем ис- ганизации в данном случае будет по-
стать, не нарушив целостности упа- пользована против этих лиц. ниматься любой управленческий пер-
ковки. В протоколе осмотра отража- сонал организации, даже не уполномо-
ется, какой печатью (наименование, Подлежат ли досмотру данные, раз- ченный на то руководителем.
номер и принадлежность определен- мещенные на миниатюрных устрой- Несогласие с порядком, процеду-
ному учреждению печати) опечатана ствах хранения – флешках, карточ- рой проверки, любые замечания и до-
упаковка и чьими подписями данное ках, данные на CD? Существует ли полнения по ходу проводимой провер-
действие заверено: данные о следо- в этом случае категория личных ве- ки фиксируются представителем ад-
вателе и понятых. Эксперт в заключе- щей, не подвергаемых проверке? министрации, участвующим в данной
нии должен указать на неизменность Все зависит от того, с каким постанов- проверке, в протоколе. Не следует от-
доказательств, а именно: были ли опе- лением к вам пришли. Если это поста- казываться от подписания протокола,
чатаны разъемы питания и подключе- новление на обыск, то следователь мо- лучше изложите замечания к нему;
ния периферии у изъятых компьюте- жет потребовать открыть запертые по- не следует также подписывать неза-
ров, не нарушена ли их целостность, мещения, а в случае отказа вскрыть их; полненный протокол; всегда требуйте
если техника упакована – не наруше- может быть проведен личный обыск – копию протокола – обязанность пре-
на ли целостность упаковки. если у следователя возникнут доста- доставить вам копию предусмотрена
По правилам ноутбук должен изы- точные основания полагать, что лицо, законодательством.
маться следующим образом: вытас- находящееся в помещении, в котором
кивается батарейка, опечатывается производится обыск, скрывает при се- Какой в точности перечень докумен-
разъем под батарейку, разъем под пи- бе предметы или документы, которые тов, созданных на этапе и по резуль-
тание, периферию: чтобы не допустить могут иметь значение для уголовного татам проверки, будет представлен
доступ к ноутбуку, либо ноутбук упа- дела. При проведении осмотра и про- в суде, например протокол, акты, ак-
ковывается таким образом, чтобы его верок милиции – досмотр личных ве- ты экспертизы и прочее?
нельзя было достать, не нарушив це- щей и личный обыск возможны толь- Точного перечня документов назвать
лостность упаковки. ко на основании отдельного постанов- нельзя. Нет такого положения, кото-
Коммуникатор и наладонный ком- ления на выполнение каждого из этих рое бы регламентировало, что по од-
пьютер (КПК) изымаются в режиме за- действий. ному делу должны быть обязательно
сыпания без выключения, так как пос- представлены на рассмотрение доку-
ле выключения теряется часть инфор- Кем должен подписываться акт менты согласно определенному спис-
мации. При изъятии не допускается на- со стороны компании? Если ли- ку. Каждый следователь формирует
жатия на его сенсорный экран, опеча- цо, действующее без довереннос- дело исходя из наработанного опыта
тываются его разъемы и устройство ти (директор) отсутствует, то кто и знаний. Обязательными являются
упаковывается так, чтобы доступ к его выпишет доверенность выступать документы, фиксирующие процессу-
управлению был невозможен. В про- от имени проверяемого юридичес- альные действия, как то: возбуждение
тивном случае такую улику можно пос- кого лица? Как, в какой форме мож- уголовного дела, проведение обысков,
тавить под сомнение. но заявить свое несогласие с пред- проверок, привлечение в качестве об-
метом проверки, с процедурой про- виняемого, назначение производства
Во многих сетях применяются сис- верки и с её результатами? Как дан- экспертизы и другие.
темы шифрования. Кроме того, ное несогласие должно быть зафик-
все системы защищаются пароля- сировано проверяющими? Присылайте Ваши вопросы по адресу
ми. Обязаны ли служащие прове- Осмотр помещения организации про- sekretar@samag.ru или оставляйте на фо-
ряемой компании предоставлять изводится в присутствии представите- руме журнала www.samag.ru/forum.
На страже
безопасности –
Software Restriction Policies
Вадим Поданс
54
безопасность
З
адачей каждого системного ад- Политики SRP имеют 3 уровня
министратора является поддер- безопасности, которые отображены
жание в безопасности IT-инфра- в Security Levels:
структуры своего предприятия, а также n Disallowed – запрещено всё, кро-
ограничивать запуск ненужных пользо- ме исключений в Additional Rules.
вателю для работы приложений. n Unrestricted – разрешено всё, кро-
Microsoft предлагает интегриро- ме исключений в Additional Rules. Рисунок 1. Внешний вид консоли
управления политикой Software
ванное в линейку Windows Server n Basic User – то же самое, что и Restriction Policies
и линейку корпоративных настольных Unrestricted, только дополнитель-
систем Windows XP/Windows Vista ре- но включает запрет запуска при-
шение, которое называется Software ложений с повышенными приви-
Restriction Policies (сокращённо SRP) – легиями.
политики ограниченного использова-
ния программ. Далее следует объект Enforcement
Данная технология предлагается (см. рис. 2). В этом окне можно форси-
ещё с линейки Windows 2000 и раз- ровать применение политики не толь-
вивается до сих пор. Тем не менее ко к исполняемым файлам, но и к свя-
многие системные администраторы занным с ними библиотекам DLL.
не знают даже о существовании этой Включение данной опции может зна-
политики или избегают её исполь- чительно повысить нагрузку на сис-
зования из-за сложности настройки. тему, так как при запуске приложения
В широком смысле данная политика через политику проходят и все фай-
определяет, какие приложения мож- лы библиотек, из-за чего расходует-
но запускать пользователю, а какие ся и время, и процессорные мощнос-
запрещено, тем самым снижая риск, ти. Но при этом данная опция позво- Рисунок 2. Окно выбора степени
что пользователь запустит недозво- ляет программе при старте подгру- воздействия политики SRP. Настройки
этого окна влияют на глобальную
ленное программное обеспечение, жать библиотеки только из разре- эффективность политик SRP
скачанное из Интернета, принесен- шенных мест. Например, если при за-
ное на флешке или полученное дру- пуске программы последняя пытает- лируются Software Restriction Policies.
гими противоречащими корпоратив- ся загрузить библиотеки из профи- Если пользователям необходимо за-
ной политике способами. ля пользователя и путь размещения пускать (или запрещено запускать)
Самый простой способ назначить библиотек не указан в исключени- файлы с указанными в этом списке
политику – запустить Group Policy ях, то политика блокирует их загруз- расширениями, то для них нужно со-
Management Console. Затем перейти ку в память. ставлять исключения для уровня бе-
в узел: «Computer/User Configuration → Чуть ниже предлагается выбор при- зопасности по умолчанию (об этом
Windows Setings → Security Settings → менения политики для всех пользова- подробнее чуть дальше). Данный спи-
Software Restriction Policies». телей без исключения или для всех сок можно редактировать под свои
При создании политики (кликнуть пользователей, кроме членов группы условия.
правой кнопкой мыши и выбрать Create Administrators. И последний элемент – Trusted
New Policy) она переходит в состояние Здесь хочу отметить, что при вклю- Publishers (см. рис. 3). В этом окне ре-
Unrestricted, то есть не запрещает ни- ченном UAC (User Account Control) ло- гулируются настройки доверенных из-
чего. Внутри консоли будет 5 объек- кальные администраторы не выво- дателей сертификатов, которыми под-
тов (см. рис. 1): дятся из-под действия политики SRP писываются приложения. Данное окно
n Security Levels – определяет ос- и освобождаются от фильтрации толь- актуально, только если используются
новной уровень безопасности по- ко приложения, которые запущены с правила для сертификатов. В осталь-
литики по умолчанию. использованием повышенных приви- ных случаях оно не используется. Од-
n Additional Rules – здесь задаются легий. Также в доменной среде дан- нако для корректной работы некоторых
исключения для уровня по умолча- ная опция доступна только в секции программ (например, Windows Update
нию. Computer Configuration редактора груп- в Windows XP/Windows Server 2003) не-
n Enforcement – окно для выбора повых политик. обходимо разрешить управление спис-
степени действия политики. И последняя опция – Enforce ком Trusted Publishers для End users (са-
n Designated File Types – окно управ- Certificate Rule. На практике прави- мая верхняя опция).
ления списком расширений фай- ла сертификатов редко используют- И, наконец, рабочая область – раз-
лов, которые проверяются прави- ся, и зачастую есть смысл отключить дел Additional Rules (см. рис. 4). В этом
лом по умолчанию. их проверку, что приведет к ускорению разделе составляются все исключения
n Trusted Publishers – представляет обработки политики. для действия политики по умолчанию.
настройки управления списками Следом идёт элемент Designated Можно использовать следующие типы
доверенных подписчиков для при- File Type. Здесь перечислен список исключений (дополнительных правил)
ложений и скриптов. расширений файлов, которые контро- с учётом порядка их применения:
56
безопасность
шено запускать программу, на которую указывает сам яр- ограниченного использования программ, которая позволит
лык, еще должно быть разрешающее правило и для са- контролировать, что пользователи могут запускать только
мой программы. То есть пользователь не сможет просто те файлы, которые разрешены политикой компании.
изменить путь, на который указывает ярлык для програм-
мы в меню «Пуск». Полезные приёмы
Для этих двух правил необходимо выставить уровень Как правило, при реализованных политиках SRP использу-
Unrestricted, в результате чего пользователи смогут спокой- ется общий уровень безопасности Disallowed, который поз-
но запускать ярлыки из меню Start и из вложенных папок воляет достаточно комфортно и безопасно работать в сис-
первого уровня (например, «Accessories → Paint.lnk»). Од- теме, но вносит ограничение на некоторые операции, та-
нако для систем Windows XP/Windows Server 2003 и систем кие как установка новых приложений. На время процесса
с локализацией на других языках эти пути могут изменять- инсталляции приложений или других админинстративных
ся в зависимости от языка системы. операций требуется кратковременно отключать действие
Для унификации работы с папками профилей пользова- политики по умолчанию. Делать это в редакторе политик
телей политика SRP предлагает возможность чтения зна- не очень удобно. Но есть и другое решение – временная
чений из реестра. Ветка реестра: HKEY_CURRENT_USER\ деактивизация через реестр. Для этого можно воспользо-
Software\Microsoft\Windows\CurrentVersion\Explorer\Shell ваться тремя .REG-файлами, которые кратковременно из-
Folders\ содержит пути для большинства пользователь- меняют уровень безопасности (только для Windows Vista/
ских папок профиля. Для указания пути к Start Menu реко- Windows Server 2008):
мендуется использовать значения реестра для каждой ло- n SRP_Enable – включает уровень политики в Disallowed:
кальной машины. Чтобы использовать значения реестра,
его ключ нужно заключить в знаки процента «%», как это Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\ ↵
показано на примерах: Windows\safer\codeidentifiers]
"DefaultLevel"=dword:00000000
%HKEY_CURRENT_USER\Software\Microsoft\Windows\ ↵
CurrentVersion\Explorer\Shell Folders\Programs%*.lnk
%HKEY_CURRENT_USER\Software\Microsoft\Windows\ n SRP_Disable – включает уровень политики в Unrestricted:
CurrentVersion\Explorer\Shell Folders\ ↵
Start Menu%*\*.lnk
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\ ↵
Для того чтобы разрешить запуск ярлыков из меню Windows\safer\codeidentifiers]
быстрого запуска (Quick Launch), нужно добавить прави- "DefaultLevel"=dword:00040000
ло для пути:
%userprofile%\AppData\Roaming\Microsoft\ ↵
Internet Explorer\Quick Launch\*.lnk
Рисунок 5. Окно UAC, которое требует подтвердить использование Рисунок 6. Результат выполнения команды «ipconfig /release»
повышенных привилегий или отменить эту операцию в консоли CMD.EXE с использованием повышенных привилегий
n SRP_Basic – включает уровень политики в Basic User: вень безопасности Basic User, который является расшире-
нием UAC (User Account Control). В начале статьи ему было
Windows Registry Editor Version 5.00 дано только определение, а теперь рассмотрим его на прак-
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\ ↵
Windows\Safer\CodeIdentifiers] тических примерах.
"DefaultLevel"=dword:00020000 Для начала стоит внести ясность в модель User Account
Control. Данный механизм позволяет пользователям с ад-
И .REG-файлы для Windows XP /Windows Server 2003: министративными учётными записями работать в системе
n SRP_Enable – включает уровень политики в Disallowed: в режиме простого пользователя без использования адми-
нистративных привилегий. То есть локальный админист-
Windows Registry Editor Version 5.00 ратор в обычном режиме по сути не отличается от обычно-
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\ ↵
Windows\safer\codeidentifiers] го пользователя, что обеспечивает защиту от случайных
"authenticodeenabled"=dword:00000000 действий администратора.
Когда требуется выполнить административное действие,
n SRP_Disable – включает уровень политики в Unrestricted: UAC запрашивает подтверждение на использвание адми-
нистративных привилегий, и после подтверждения права
Windows Registry Editor Version 5.00 администратора значительно повышаются, позволяя изме-
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\ ↵
Windows\safer\codeidentifiers] нять настройки системы.
"authenticodeenabled"=dword:00040000 Также UAC позволяет и рядовым пользователям при не-
обходимости повышать свои полномочия до администра-
Для администраторов рекомендуется использовать ло- тивных путём ввода пароля администратора в окно UAC.
гон-скрипт, который будет копировать эти файлы в систем- Подробнее про UAC можно почитать тут – http://technet.
ную папку и заодно будет копировать ярлыки на рабочий microsoft.com/ru-ru/magazine/cc138019.aspx.
стол администратора при входе на любую рабочую станцию Уровень политики SRP – Basic User позволяет пользо-
домена. И при необходимости администратор этими ярлы- вателям и/или администраторам запускать приложения
ками может временно изменить состояние политики на ло- в обычном режиме (без использования административных
кальной машине. После перезагрузки системы или очеред- привилегий), но запрещает запуск того же приложения с ис-
ного обновления групповых политик восстановятся исход- пользованием повышенных привилегий.
ные настройки политик. Для понимания Basic User приведу два наглядных при-
мера.
Что нового в Windows Vista/Server 2008?
Пользователей и администраторов, использующих Windows Пример 1. Запуск консоли CMD для сброса
Vista и/или Windows Server 2008, может заинтересовать уро- настроек IP всех сетевых интерфейсов
Данное действие из консоли командной строки требует
использование повышенных привилегий. Как это выгля-
дит в действительности? Для этого нужно войти в систему
под административной учётной записью, кликнуть правой
кнопкой мыши на ярлык Command Prompt и выбрать Run As
Administrator. После чего UAC попросит подтвердить приме-
нение административных привилегий (см. рис. 5).
Подтвеждаем эту операцию (нажимаем Continue) и вы-
полняем команду IPCONFIG /RELEASE, которая сбрасыва-
ет настройки IP для всех сетевых интерфейсов (см. рис. 6).
Команда успешно выполнилась, и настройки обнулились.
Для реализации уровня Basic User в Additional Rules
Рисунок 7. Результат выполнения команды «ipconfig /release» создадим хэш-правило для файла CMD.EXE и в качестве
в консоли CMD.EXE с отфильтрованными привилегиями уровнем Security Level укажем Basic User (см. рис. 8).
Basic User
58
безопасность
Теперь повторяем операцию, под-
тверждаем использование повышен-
ных привилегий и повторяем коман-
ду (см. рис. 7). Как видно из картинки,
данная операция не удалась. Хоть мы
и запросили повышенные привилегии,
уровень Basic User не позволил их по-
лучить и и запустил консоль в обычном
пользовательском режиме.
Антон Борисов
При посещении крупных городов как часто вам приходит в голову мысль: как же легко здесь,
наверное, заблудиться? Если частенько, то стоит вас разочаровать. Заблудиться в каменных
джунглях становится всё труднее и труднее. Несмотря на отсутствие качественного приема
сигналов GPS в местах городской застройки, появляются новые методы определения точного
местоположения человека.
Е
сли раньше нам, как потреби- доставлять самим себе ту или иную ус- что вы намереваетесь посетить с твор-
телям информационной про- лугу, то сейчас постепенно на главную ческим визитом некий мегаполис. До-
дукции, предлагались решения, роль выходит предоставление готовых ма предварительно вы обзавелись
с помощью которых мы самостоятель- сервисов и услуг. Удобнее разобрать картами города для КПК или ноутбу-
но должны были реализовывать и пре- на конкретном примере. Предположим, ка. Естественно, что начертание улиц
60
интервью
и шоссе в нем будет почти в актуаль-
ном состоянии. Чего нельзя будет ска-
зать о расположении гостиниц, кафе,
магазинов. Понятно, что кто-то посто-
янно производит мониторинг подобно-
го рода информации и поддерживает
карты в должном состоянии. Но карты
надо еще найти, а затем, уже будучи
на месте, попытаться сориентировать-
ся с помощью того же GPS. Человек –
существо своеобразное. Ему хочется
если уж не «всего и сразу», то уж точ-
но в виде «здесь и сейчас». То есть хо-
чет знать свое расположение без вся-
кого поиска карт, их закачивания в КПК
и уж точно без долгого ожидания, по-
ка приемник GPS выдаст точные коор-
динаты. Благо быстро и точно опреде-
лить свои координаты в городских ус- Схема работы Wi2Geo
ловиях уже можно.
Как это реализуется на практи- дет идти через любые интернет-ка- ды и продолжает увеличиваться. Со-
ке, в повседневной жизни? Предла- налы? Предполагается ли клиент- гласно исследованиям ABI Research,
гаю с автором идеи Денисом Алае- скую часть распространять вмес- к 2012 году количество продаж Wi‑Fi-
вым рассмотреть организацию услуги те с базой данных точек присутс- чипсетов достигнет миллиарда в год.
Wi2Geo, которой и посвящено сегод- твия Wi‑Fi? ABI также прогнозирует, что к 2011 го-
няшнее интервью. Да, отправка запросов на серверную ду будет продаваться больше 250 мил-
часть будет идти через любые интер- лионов электронных устройств и более
Денис, в чем заключается идея про- нет-каналы. Это может быть GPRS, 360 миллионов карманных устройств,
екта? CDMA, тот же Wi‑Fi, главное, чтобы оснащенных Wi-Fi. На данный момент
Основой проекта является технология клиентское приложение могло соеди- почти 100% выпускаемых ноутбуков
позиционирования в городе при помо- ниться с нашим сервером. На данный содержат Wi‑Fi-чипсет в базовой ком-
щи Wi-Fi-сетей. Принципиальное отли- момент уже существует приложение плектации. Все владельцы таких ус-
чие от существующих систем навига- для ноутбуков, которое хранит базу тройств являются потенциальными
ции (GPS) заключается в интерактив- данных о Wi‑Fi-точках локально, но пользователями нашего сервиса.
ности, т.е. создаваемый сервис будет используется оно только для внутрен-
не только средством для определения него тестирования. Думаю, что в бли- Какова бизнес-модель? За счет че-
местоположения, но и инструментом жайшее время мы начнем распростра- го предполагается зарабатывать
общения, обмена информацией (теку- нять базу данных точек вместе с кли- деньги?
щее местоположение, история переме- ентскими приложениями для ноутбу- Конечному пользователю основные
щений). Среди прочих отличий и пре- ков, это намного увеличит скорость сервисы будут предоставляться бес-
имуществ важно отметить: позиционирования и уберет необходи- платно. Зарабатывать мы предполага-
n возможность навигации в любой мость подключаться к интернет-кана- ем на дополнительных сервисах, воз-
точке города, в том числе на узких лам. Но тем не менее стоимость GPRS- можно, на рекламе, а также на прода-
улицах и внутри зданий; трафика не такая уж и большая, а на же доступа к API для сторонних раз-
n существенно меньшее, чем у GPS, каждый запрос приходится не боль- работчиков, которым интересно доба-
время, требуемое для приведения ше 200 байт в обе стороны, так что вить возможность Wi‑Fi-позициониро-
устройства в рабочий режим; мы не видим каких-либо серьезных вания в уже существующие или какие-
n более высокая точность по сравне- причин добавлять возможность оф- то новые проекты. То, что такая заинте-
нию с GPS и системами GSM-пози- флайн-позиционирования в мобиль- ресованность есть, мы уже уверены –
ционирования (до 1 метра); ные клиенты. на данный момент у нас есть несколь-
n cущественно большая аудитория ко договоренностей с уже существу-
и нулевая стоимость входа (чтоб Кого вы рассматриваете в качестве ющими проектами, которые хотят до-
начать пользоваться, не нужно ни- потенциальной аудитории? бавить возможность позиционирова-
чего покупать, достаточно поста- Благодаря широкому распростране- ния через Wi‑Fi.
вить клиентское приложение). нию технологии Wi-Fi и значительно-
му снижению цен на Wi-Fi-совмести- Можете назвать эти проекты или хо-
Исходя из вышеперечисленного мые мобильные устройства количест- тя бы их сферу деятельности?
означает ли, что отправка запро- во таких устройств и точек доступа су- Их огласить пока нельзя, а сфера их
сов на серверную часть проекта бу- щественно выросло в последние го- деятельности – в основном информа-
62
интервью
ню, включив которое, можно увидеть переговоры с несколькими венчурны- ний день оставляют желать лучшего.
больше одной соты. Но доступ к это- ми фондами и компаниями о возмож- Мы пытаемся это изменить.
му меню был только в старых моделях. ном финансировании проекта. На ран-
В современных же телефонах до него ней стадии проект финансировался А выбранный вами инструмента-
практически невозможно достучаться, из средств основателей. Текущие ис- рий – операционная система, SQL-
а значит, и видеть больше одной соты, точники финансирования мы не хоте- движок, механизмы масштабирова-
отсюда не может быть и триангуляции. ли бы называть. ния, на чем остановили выбор?
Приходится определять навигацион- Серверы стоят на операционной систе-
ные координаты только по одной точ- Когда вы знакомились с зарубеж- ме FreeBSD, мы используем PHP в ка-
ке, а это, как ни крути, в лучшем слу- ным материалом, то каковы теку- честве FrontEnd, в качестве BackEnd
чае метров 300-500 (в центре Москвы, щие применения (или возможные выступает движок WiGONE (Wi2Geo
там где базовые станции стоят доста- применения) увидели для промыш- Orientation and Navigation Engine), ко-
точно часто). ленного сектора, среднего или ма- торый, собственно, занимается рас-
Также выяснилось, что несмот- лого бизнеса? Понятно, что сфера четом координат через Wi‑Fi и GSM,
ря на то что у Google Maps есть API, развлечений, по всей видимости, сам движок написан на Java, в качест-
для Google Maps Mobile такого API будет лидировать. ве базы данных мы используем MySQL
нет. Обычное API использовать нель- Безусловно, есть много применений и OLAP4J (the Open Java API for OLAP),
зя, так как урезанный Javascript в те- для бизнеса. Наш сервис можно при- в силу специфики алгоритма он нам
лефонах не умеет работать с настоя- менять для служб такси, тогда диспет- очень помогает. Технология просто
щим API. Пришлось фактически повто- черы будут точно знать, где находятся масштабируется, нужно только поста-
рять путь Google и писать собственного их автомобили, также мы видим боль- вить второй Java-сервер и начать рас-
клиента для мобильных карт. На дан- шую зону применения для курьерских пределять запросы между ними. По на-
ный момент мы используем Google служб и вообще для всех логистичес- шим расчетам, один такой сервер смо-
Maps Static, правда, с некоторыми до- ких компаний. жет выдерживать до 100 тысяч пользо-
работками, чтобы добавить возмож- вателей ежедневно.
ность плавной прокрутки, правильный То есть привязать можно разные
зум и так далее. сферы, например, Аэрофлот и ту- Почему выбрали FreeBSD? Было ли
Со сбором информации об окру- ристические агентства? В том пла- это сделано исходя из каких-то по-
жающих Wi‑FI-сетях проблем осо- не, что предоставлять местополо- литических соображений или ис-
бых не было, ни на Windows Mobile, жение разных структур рядом с аэ- ходя из прагматических соображе-
ни на Windows XP/Vista (на момент на- ропортами, местами отдыха. ний и опыта?
писания этих строк у нас есть ПО толь- Конечно, привязать можно абсолют- Во-первых, конечно, благодаря опы-
ко под эти две платформы). За исклю- но разные сферы. Навигация так- ту. Мы в принципе достаточно давно
чением того, что в ОС Windows Vista же плотно связана с нашей жизнью уже используем FreeBSD (начинали
лучше пользоваться утилитой netsh, и всем, что мы делаем, как и телефон- еще с 3.х). Во-вторых, основной дви-
нежели запросами через NDIS, к со- ная связь. Вот только используемые жок написан на Java, а, как известно,
жалению, вариант через NDIS работает для навигации средства на сегодняш- языку Java – почти все равно, на ка-
только в очень ограниченном количест-
ве Wi‑Fi-чипсетов, например, с Atheros
работает, а с Broadcom – нет.
64
bugtraq
Ричард Столлман:
свобода без ограничений
Ричард Столлман – выдающийся мыслитель и деятель,
одним из первых поднявший вопрос о соотношении
морали и современного законодательства об авторском
праве и предложивший эффективное решение в виде
лицензий и самого проекта GNU.
Алексей Новодворский,
заместитель генирального директора
компании ALT Linux
Р
ичард Мэтью Столлман (Richard «Ричард Столлман – это моё мирское Йорке, на кафедре биологии Универ-
Matthew Stallman) – именно такая имя; можете называть меня RMS». Та- ситета Рокфеллера, а также в недрах
запись была сделана в свиде- ким образом эти три буквы и вош- лаборатории по исследованию искус-
тельстве о рождении, полученном Дэ- ли в обиход, став его визитной кар- ственного интеллекта (далее AI Lab)
ниелем Столлманом (Daniel Stallman) точкой. Массачусетского технологического
и Эллис Липпман (Alice Lippman) в день Ещё в студенческие годы, ког- университета (MIT).
появления их сына на свет. Произошло да увлёкшийся программированием Позже, окончив Гарвардский уни-
это радостное событие 16 марта далё- Столлман изучал предметы в Гарвард- верситет и получив степень бакалав-
кого 1953 года. ском университете, он открыл для се- ра по физике, Столлман перебрался
Однако герой сегодняшнего рас- бя чарующий мир хакерства в изна- в MIT, где продолжил постигать данную
сказа предпочитает своему имени чальной его концепции. Во время сво- дисциплину. Однако в стенах этого за-
и фамилии сокращённый вариант. ей учёбы в высшем учебном заведении ведения с учёбой у RMS не сложилось,
В первом издании книги «Словарь ха- RMS также успел поработать в стенах и спустя короткий промежуток време-
кера» (Hacker's Dictionary) он написал: исследовательского центра IBM в Нью- ни он оставил планы по получению
66
человек номера
учёной степени кандидата физичес- ли работать на компьютерах различ- нимом GNU's Not UNIX, что в переводе
ких наук, продолжив работать в AI Lab. ных типов и архитектур, продемонс- означает «GNU – это не UNIX».
Стоит, однако, отметить, что впослед- трировало, что способность пользо- Почему именно UNIX? Компания
ствии Ричард был четырежды удосто- вателя к модификации и распростра- AT&T, владевшая правами на эту опе-
ен почётной докторской степени. нению программного обеспечения мо- рационную систему, до начала 80-х
Во время своей работы в лабо- жет стать серьёзной помехой в разви- распространяла её совершенно бес-
ратории искусственного интеллекта тии бизнес-стратегий производителей платно. Однако в новом десятилетии
Столлман прослыл ярым противни- компьютерных систем. Дабы искоре- компания, осознав ценность UNIX, ре-
ком различного рода запретов и огра- нить возможность запуска собственно- шила зарабатывать на ней деньги,
ничений. Когда в 1977 году лаборато- го ПО на ЭВМ конкурентов, компании в результате чего с 1982 года данная
рия компьютерных наук Массачусет- перестали поставлять исходные коды ОС перешла в разряд платных систем.
ского университета ввела в обиход программ, а также начали ограничи- Своим акронимом Столлман выражал
систему контроля доступа на основе вать права на их копирование и рас- протест против решения AT&T ограни-
паролей, RMS нашёл способ их рас- пространение путём регистрации ав- чить свободу пользователей UNIX.
шифровки и разослал каждому поль- торских прав на свою продукцию. Суть GNU заключалась в создании
зователю сообщение, в тексте которо- Именно тогда Столлман осознал свободной операционной системы с от-
го содержался пароль, а также пред- необходимость в свободном програм- крытым исходным кодом, которую лю-
ложение изменить его на пустую стро- мном обеспечении с открытым исход- бой человек мог бы изменять по свое-
ку, дабы организовать открытый дос- ным кодом, который мог бы изменять му усмотрению. Тем самым пользова-
туп к компьютерным системам лабо- для своих нужд любой желающий. тель был сам волен решать, каким об-
ратории. Приблизительно 20% всех RMS понимал, что подобными шагами разом ОС будет работать на его ком-
пользователей последовали его со- компании сильно ограничивают свобо- пьютере. «Если люди не будут иметь
вету, хотя в конечном итоге «система» ду и права пользователей, и смирить- доступа к исходным текстам программ,
восторжествовала. Тем не менее пос- ся с этим не мог. с которыми работают, они станут уз-
тупок Столлмана не был забыт, и в бу- На протяжении двух лет, с 1982 никами собственного программно-
дущем послужил примером для других по 1983 год, Ричард в одиночку борол- го обеспечения», – говорит Столлман.
борцов за свободу. ся с программистами Symblics (компа- «Свобода без ограничений» – вот глав-
За время своей работы в MIT Ри- ния-производитель Лисп-машин, «вы- ный лозунг, с которым шагает по жиз-
чард успел поработать над текстовым шедшая из недр» AI Lab), дабы предо- ни наш герой.
редактором TECO, а также операцион- твратить получение ими абсолютного Параллельно с операционной сис-
ной системой для Лисп-компьютеров контроля над компьютерными систе- темой RMS начал писать манифест,
(Lisp Machine) – ЭВМ общего назначе- мами в лаборатории. К тому времени, который был призван объяснить цели
ния, также разработанных в недрах AI однако, Столлман остался последним проекта, а также популяризировать
Lab. Кроме того, именно в этой лабо- из своего поколения хакеров в AI Lab, идеи свободного программного обес-
ратории RMS создал свой знаменитый и сопротивляться ему было всё слож- печения. Ради работы над собствен-
текстовый редактор Emacs. нее и сложнее. Во время кульмина- ным проектом Ричард в 1984 году при-
Изначально Emacs представлял со- ции противостояния ему было пред- нял решение уйти из AI Lab.
бой набор функциональных улучше- ложено подписать соглашение о не- Столлман утверждает, что писал
ний и макросов для TECO, написанный разглашении конфиденциальной ин- текст манифеста GNU, основываясь
Столлманом и Гаем Стили-младшим формации, а также выполнить ряд дру- на принципах, по которым он живёт.
(Guy L. Steele, Jr.) в 1976 году. Спустя гих действий, которые он считал пре- Его взгляды на жизнь, мир и сооб-
несколько лет, в 1984 году, RMS пере- дательством по отношению к своим щество – всё это зашифровано между
писал Emacs на языке программирова- принципам. строк документа. «Мой главный прин-
ния С, намереваясь сделать его базо- «Мне пришлось столкнуться с ди- цип заключается в том, чтобы мы помо-
вым текстовым редактором для свое- леммой. Я мог либо принять предло- гали друг другу жить вместе лучше», –
го нового проекта – GNU. В результа- жение, тем самым признав, что мир говорит RMS. «Совершенствование
те на свет появился GNU Emacs, о ко- меняется, и настала пора изменить- человеческих знаний является час-
тором речь пойдёт дальше. ся и мне, либо же я мог найти другой, тью моего замысла; каждый человек
более этический путь решения про- должен иметь к этому свободный дос-
Свобода – как много блемы», – сказал Столлман. «Если бы туп и благодаря всеобщему сотрудни-
в этом слове… я согласился, то впоследствии гово- честву чувствовать себя частью сооб-
В начале 1980-х годов хакерское сооб- рил бы: «Я потратил всю свою жизнь щества. Эти идеи могут быть примени-
щество, являвшееся для Столлмана на возведение стен, призванных раз- мы к различным аспектам нашей жиз-
второй семьёй, начало распадаться. делять людей». Поэтому Столлман от- ни, но что касается области програм-
Причиной тому стали постоянно ус- казался, решив продолжать бороться много обеспечения, они ведут прями-
ложняющиеся отношения между про- с «системой». ком к свободному ПО».
граммистами и крупными компаниями. В сентябре 1983 года RMS начал В своём манифесте Столлман опи-
Появление переносимого ПО – про- работать над проектом GNU, название сывал GNU как «полноценную опера-
грамм, которые после доработки мог- которого является рекурсивным акро- ционную систему, совместимую с UNIX,
68
человек номера
названием Wikimania, а также конфе- лософии, что в конечном
ренции разработчиков свободного ПО итоге ослабит нас и наши
FOSDEM и LinuxTag. принципы, за которые мы
Выступления Столлмана слушали боремся».
во всех уголках земного шара. Не ста- Отношения меж ду
ла исключением и Россия, первый раз Столлманом и Торваль-
которую он посетил в 1993 году с целью дсом накалились до пре-
договора о переводе и издании доку- дела, когда Линус объ-
ментации проекта GNU. Второй при- явил, что существовав-
езд RMS в страну состоялся в марте шая на тот момент вто-
этого года, во время которого Ричард рая версия лицензии
прочёл две лекции на тему «Свобод- GPL удовлетворяла всем
ное программное обеспечение: этика потребностям разработ-
и практика» на факультете ВМК МГУ чиков и пользователей,
и МФТИ. и что не было смысла
разрабатывать новую
Борьба за терминологию версию: «В мире сущест-
Столлман очень дотошен, когда речь вует около полусотни
касается терминологии. «В английс- различных лицензий для
ком языке у слова «free» два разных ПО с открытым исход-
значения – «бесплатность» и «свобо- ным кодом, и GPLv3 ста- GNU Emacs
да», – отмечает он. «В результате люди нет лишь одной из них». или же совершенство?» RMS считает:
часто путают свободное ПО с бесплат- На этот счёт у RMS существует своё если новая функциональность каким-
ным. Однако бесплатность програм- мнение: «Тот факт, что Линус гово- либо образом влияет на свободу поль-
мы ещё не гарантирует её «свободно- рит «ПО с открытым исходным кодом» зователя, её нет необходимости реа-
го» статуса. Лишь в случае, когда про- вместо «свободное программное обес- лизовывать.
граммное обеспечение удовлетворя- печение» говорит о его принципах. Я Однако даже несмотря на подоб-
ет четырём «свободам», заложенным написал GNU GPL для защиты свобо- ные разногласия, и критики, и тем бо-
в манифест GNU, оно может считать- ды всех пользователей любых вер- лее сторонники Столлмана сходятся во
ся «свободным, как воздух». Сегодня сий той или иной программы. Третья мнении, что без влияния, оказанного
распространение получил другой тер- версия лицензии призвана лишь ещё этим человеком, а также его проекта-
мин – ПО с «открытым исходным ко- лучше выполнять свои обязанности». ми GNU и GPL на мировую обществен-
дом» (Open Source), однако Столлман Столлман считает, что Торвальдс отри- ность, компьютерная индустрия была
не считает его удовлетворяющим кон- цает этот факт, вот почему, возможно, бы сегодня совсем другой.
цепции «свободного» программно- он так не любит GPLv3. «Я уважаю его На сегодняшний день Ричард
го обеспечения, мотивируя своё мне- право выражать свои взгляды, однако Столлман продолжает отстаивать пра-
ние тем, что данное название скры- считаю их дурацкими. Так что если вы ва и свободы людей. Он протестует
вает от пользователя саму суть таких не хотите потерять свою свободу, луч- против производителей аппаратно-
программ – свободу: «Бесплатное ПО – ше не идите у него на поводу». го обеспечения, пищи и напитков, ре-
политическое движение, программное Столлман настолько яростно от- кординговых компаний, авторов книг,
обеспечение с открытым исходным ко- стаивает чистоту своей терминологии, аэропортов Англии, идентификацион-
дом – модель разработки». что готов общаться с представителями ных карточек для удостоверения лич-
Не согласен RMS и с тем, что об- прессы и участниками конференций ности... Список акций на его странице
щественность в подавляющем боль- лишь при условии, что они принимают stallman.org, которые он организовал
шинстве называет операционную сис- условия его игры и готовы называть ве- либо в которых принимает активное
тему GNU/Linux просто Linux. Столлман щи своими истинными именами. участие, состоит из нескольких десят-
считает, что данный термин необходи- Естественно, среди множества при- ков пунктов. «Свобода без ограниче-
мо понимать как «ОС, созданная на ос- верженцев и сторонников идей RMS ний», и никаких оговорок!
нове системы GNU и ядра Linux». «Со- находятся и те, кто в той или иной сте-
обществу известно, что Линус Тор- пени не согласен с ним. Критика в ад- Дмитрий Мороз
вальдс написал Linux для развлече- рес Столлмана звучит за излишне ра-
ния. И они знают, что Линус ничего не дикальную политику по отношению 1. http://www.wikipedia.org.
говорил о том, что неправильно запре- к любому коммерческому программно- 2. http://www.gnu.org.
щать людям распространять и изме- му обеспечению. Свободолюбивый Ри- 3. http://www.stallman.org.
нять программы, которые они исполь- чард непреклонен: «Если вы не може- 4. http://kerneltrap.org.
зуют. Поэтому если общественность те писать свободное ПО, не создавайте 5. http://cs-exhibitions.uni-klu.ac.at.
считает, что именно с Торвальдса всё в таком случае вообще ничего». 6. http://superuser.com.au.
началось и что ему надлежит отдавать Нельзя не упомянуть и о спорной 7. http://www.linuxdevcenter.com.
почести, оно будет следовать его фи- дилемме «Что предпочесть – свободу
Распределенная
система
контроля
версий Bazaar
Дмитрий Васильев
Когда активно работаешь с файлами, будь то исходные тексты программ, файлы
конфигурации или статья, то в большинстве случаев нужно использовать какую-либо
систему контроля версий. Например, в данный момент я переписываю это введение, и так как
я использую систему контроля версий, то смогу в любой момент вернуться к одному
из предыдущих вариантов, если мне не понравится этот. Так как основная работа с файлами –
это их изменение, то наличие возможности вернуться к предыдущей версии дает огромную
уверенность, что, в свою очередь, положительно влияет на производительность. Если работа
идет в команде, то система контроля версий необходима, в противном случае в какой‑то
момент времени работа команды может застопориться.
От централизованных ное движение в эту сторону. Например, n S ubve rsion (ht tp: //subversion.
систем к распределенным из централизованных систем боль- tigris.org) – на данный момент на-
Рассмотрим, что сейчас происходит шинство могут назвать следующие: иболее популярная централизо-
в области систем контроля версий с от- n CVS (http://www.nongnu.org/cvs) – ванная система контроля вер-
крытым исходным кодом. Пока это мо- постепенно исчезающая, но все сий, изначально разработанная
жет быть не так очевидно, но просмат- еще популярная система, разрабо- как «лучший CVS» и в итоге испра-
ривается постепенный рост количест- танная поверх формата RCS фай- вившая многие ошибки в дизайне
ва распределенных систем и идет яв- лов; CVS;
70
программмирование
А что же распределенные системы? трального хранилища версий – репози- каждого изменения, чтобы избежать
Вот наиболее популярные и активно тория. В случае распределенных сис- конфликтов и ошибок. Для распреде-
развивающиеся системы: тем набор версий может быть полно- ленных систем контроля версий вет-
n Git (http://git-scm.com) – распре- стью или частично распределен между ки разработки являются одной из ос-
деленная система контроля вер- различными хранилищами, в том чис- новополагающих концепций – в боль-
сий, разработанная Линусом Тор- ле и удаленными. шинстве случаев каждая копия хра-
вальдсом. Изначально Git пред- Такая модель отлично вписывает- нилища версий является веткой раз-
назначалась для использования ся в работу распределенных команд, работки.
в процессе разработки ядра Linux, например, распределенной по все- Таким образом, механизм объеди-
но позже стала использоваться му миру команды разработчиков, ра- нения изменений с одной ветки на дру-
и во многих других проектах – та- ботающих над одним проектом с от- гую в случае распределенных систем
ких, как, например, X.org и Ruby on крытым исходным кодом. Разработ- является одним из основных, что поз-
Rails. На данный момент Git явля- чик такой команды может скачать се- воляет пользователям прикладывать
ется самой быстрой распределен- бе всю информацию по версиям и пос- меньше усилий при пользовании сис-
ной системой, использующей са- ле этого работать только на локаль- темой.
мое компактное хранилище реви- ной машине.
зий. Но в то же время для пользо- Как только будет достигнут резуль- Основные концепции
вателей, переходящих, например, тат одного из этапов работы, измене- Bazaar
с Subversion интерфейс Git может ния могут быть залиты в один из цен- Итак, начнем ближе рассматривать
показаться сложным; тральных репозиториев или опублико- Bazaar. На момент написания этой ста-
n Mercurial (http://www.selenic.com/ ваны для просмотра на сайте разра- тьи последняя версия Bazaar 1.6.
mercurial) – распределенная сис- ботчика или в почтовой рассылке. Но прежде чем рассматривать ра-
тема, написанная на языке Python Другие участники проекта, в свою боту с этой системой контроля версий,
с несколькими расширениями очередь, смогут обновить свою копию сначала обратим внимание на основ-
на C. Из использующих Mercurial хранилища версий новыми изменени- ные концепции, лежащие в ее основе.
проектов можно назвать такие, ями или попробовать опубликованные Если эти термины уже знакомы вам
как Mozilla и MoinMoin. изменения на отдельной, тестовой вет- по централизованным системам, они
n Bazaar (http://bazaar-vcs.org) – сис- ке разработки. могут иметь немного другое значение
тема, разработка которой поддер- К сожалению, без хорошей орга- в приложении к распределенной сис-
живается компанией Canonical – низации проекта отсутствие одного теме Bazaar, и их понимание важно
известной своими дистрибутивом центрального хранилища может быть для дальнейшего рассмотрения.
Ubuntu и сайтом https://launchpad.net. минусом распределенных систем. Ес- n Ревизия – это сохраненное состоя-
Система в основном написана ли в случае централизованных сис- ние файлов и директорий, включая
на языке Python и используется тем всегда есть один общий репози- их содержимое и иерархию в задан-
такими проектами, как, например, торий, откуда можно получить послед- ный момент времени. С ревизией
MySQL и Drupal. нюю версию проекта, то в случае рас- также связана мета-информация,
пределенных систем нужно организа- например:
Рассмотрим одну из наиболее гиб- ционно решить, какая из веток проек- автор изменения;
ких, на мой взгляд, распределенных та будет основной. дата изменения;
систем контроля версий – Bazaar. Почему распределенная система комментарий, связанный с из-
Одним из примеров гибкости Bazaar контроля версий может быть интерес- менением;
может служить возможность использо- на кому-то, кто уже использует цен- родительские ревизии, от кото-
вания как централизованной модели, трализованную систему – такую как рых произведена данная реви-
так и распределенной и даже смешива- Subversion? зия.
ние этих моделей контроля версий. Любая работа подразумевает при-
Даже если вы не согласны со мной нятие решений, и в большинстве слу- После создания, ревизии не ме-
по вопросу выбора конкретной сис- чаев необходимо пробовать различ- няются и могут быть идентифици-
темы, эта статья поможет вам понять ные варианты: при работе с система- рованы глобально уникальным но-
общие принципы работы распреде- ми контроля версий для рассмотрения мером ревизии (revision-id), напри-
ленных систем и затем остановить различных вариантов и работы над мер таким: «pqm@pqm.ubuntu.com-
свой выбор на одной из перечислен- большими изменениями служат вет- 20071129184101-u9506rihe4zbzyyz».
ных выше. ки разработки. Идентификаторы ревизий созда-
И хотя это естественная концепция, ются в момент фиксации (commit) из-
Зачем нужны пользоваться ею в Subversion непрос- менений или в момент импорта реви-
распределенные то. Тем более все усложняется в слу- зий из других систем. Идентификато-
системы? чае множественных последовательных ры ревизий необходимы для функцио-
Как следует из названия, одна из ос- объединений с одной ветки на другую – нирования системы, но вряд ли кто-
новных идей распределенных систем – в этом случае нужно безошибочно ука- то сможет использовать идентифика-
это отсутствие четко выделенного цен- зывать начальные и конечные версии тор такого типа в разговоре. Специ-
72
программмирование
n locations.conf – описывает конфигурационные пара- ки. Если требуется зафиксировать только отдельную ди-
метры для отдельных веток; ректорию или набор файлов, их можно указать вслед за ко-
n authentication.conf – описывает идентификационную мандой, как здесь:
информацию для доступа к удаленным серверам.
bzr commit -m "Изменения" README.txt src
Каждая ветка также может содержать файл конфигу-
рации, в этом случае он находится в каталоге .bzr/branch/ Если при создании нового проекта планируется созда-
branch.conf внутри ветки. вать несколько локальных веток, то можно воспользовать-
После того, как мы настроили свое имя и e‑mail командой ся описанным выше разделяемым репозиторием для эко-
whoami, эта информация записывается в файл bazaar.conf, номии места:
и в простейшем случае он будет выглядеть так:
$ bzr init-repo repo
$ cd repo
[DEFAULT] $ bzr init trunk
emai = John Doe <john@nowhere> $ cd trunk
Создание файлов
Работаем самостоятельно $ bzr add
Даже если вы работаете в команде, в какой-то момент $ bzr commit -m "Испортирование проекта"
времени все равно приходится работать одному, и с точки
зрения многих команд Bazaar в этом случае мало что ме- Первая команда init-repo создает в директории repo раз-
няется. деляемый репозиторий, и под директорией repo могут хра-
Если у вас уже есть готовый проект и его надо поста- нится различные ветки проекта. Основную ветку мы созда-
вить под контроль версий, нужно начать со следующей це- ем следующей командой init, которая уже была описана вы-
почки команд: ше. В случае создания разделяемого репозитория в дирек-
тории repo/.bzr хранится репозиторий и в директории repo/
$ cd project-directory trunk/.bzr ветка.
$ bzr init
$ bzr add Если при добавлении мы хотим игнорировать какие-
$ bzr commit -m "Импортирование проекта" либо объекты, можно воспользоваться командой ignore,
ее синтаксис:
Здесь первая команда init создает в рабочей директо-
рии project-directory служебную директорию .bzr, в которой bzr ignore имена объектов
хранятся репозиторий и ветка проекта.
Следующая команда, add, рекурсивно добавляет все Эта команда создаст в корневой директории ветки файл
файлы и директории в рабочем каталоге под контроль вер- .bzrignore, в котором будут записаны имена или шаблоны
сий. Если нет необходимости в рекурсивном добавлении, для игнорирования. Если удобно, то данный файл также
то можно использовать опцию --no-recurse или перечис- можно редактировать в текстовом редакторе.
лить необходимые для добавления объекты сразу вслед Глобальные правила игнорирования можно задать в кон-
за командной. фигурационном файле ignore в каталоге с конфигурацией,
Bazaar может контролировать и, соответственно, добав- ~/.bazaar/ignore для UNIX-подобных систем.
лять командой add, файлы, директории и символические Кроме задания полных имен и шаблонов, используемых
ссылки (для ссылок хранится значение ссылки, а не объ- командной оболочкой, таких как *.py[co], *.o, можно исполь-
ект, на который она ссылается). зовать регулярные выражения:
Если в процессе работы над проектом создаются новые
файлы и директории, которые нужно хранить под контро- bzr ignore "RE:lib/.*\.o"
лем версий, они также должны быть добавлены командой
add или внесены в список игнорируемых файлов, описан-
ной ниже, командой ignore. Если этого не сделать, файлы Просмотр изменений
будут показываться Bazaar как неизвестные. Когда закончен очередной этап изменений, хорошей прак-
И последняя команда, commit, фиксирует изменения тикой, прежде чем фиксировать эти изменения в системе
на ветке и в репозитории, создавая новую ревизию. Опция контроля версий, может быть их просмотр.
-m позволяет указать комментарий к ревизии прямо из ко- Команда status показывает изменения в рабочем дере-
мандной строки. Без этой опции для создания коммента- ве с момента последней ревизии:
рия будет вызван текстовый редактор.
На данный момент в Bazaar нет жесткого ограниче- $ bzr status
ния на размер комментария (единственное ограничение – modified:
это достаточно большой, максимальный размер строки README.txt
unknown:
в Python), но рекомендуется делать их разумной длины, до- db.tmp
статочной для описания сделанных изменений.
По умолчанию команда commit фиксирует все измене- Команда diff показывает изменения в текстовых фай-
ния на ветке, даже если запущена из-под директории вет- лах в стандартной унифицированной форме:
bzr diff -r 100.. При выпуске каждой версии имеет смысл помечать ее,
bzr diff -r 100..120
чтобы в будущем можно было использовать более простые
Первая команда показывает все изменения, начиная символические имена для работы с этой ревизией. Это мож-
с ревизии 100, а вторая – между ревизией 100 и 120. но сделать командой tag:
Для просмотра истории ревизий используется коман-
да log. Bazaar использует иерархическую историю, где объ- bzr tag version-1.0
единенные с данной веткой ревизии показываются с от-
ступами в виде дерева. В этом случае визуально проще После этого созданную метку можно использовать в дру-
отделить объединенные изменения от изменений на ос- гих командах следующим образом:
новной ветке:
bzr diff -r tag:version-1.0
$ bzr log
------------------------------------------------------------
revno: 100 Исправление ошибок
committer: John Doe <john@nowhere>
branch nick: trunk
К сожалению, ошибок невозможно избежать, они случают-
timestamp: Tue 2008-08-19 16:25:36 +0100 ся, и это надо принимать и быть к этому готовым. Bazaar
message: разработан таким образом, что большинство ошибок мож-
Объединены изменения с работы
но исправлять, в том числе и с использованием отдель-
------------------------------------------------------------
revno: 100.1.1 ных команд. Рассмотрим различные ситуации и их раз-
committer: John Doe <john@nowhere> решение.
branch nick: work
timestamp: Tue 2008-08-19 09:54:08 -0500 Если вы случайно поставили под контроль версий
message: не то рабочее дерево, то можно удалить служебный ката-
Добавлен файл README.txt лог .bzr, хотя стоит быть внимательным, чтобы не удалить
что-то нужное.
С командой log так же, как и с командой diff, можно ис- Если случайно под контроль версий был поставлен
пользовать опцию -r для указания необходимых ревизий файл, который нет необходимости хранить под контролем
для просмотра. версий, то его можно удалить командной remove, но без ис-
Для просмотра краткой истории изменений, не включа- пользования опций команда не будет удалять изменен-
ющей описание ревизий с объединенных веток, можно вос- ный файл:
пользоваться опцией --short:
bzr add file.txt
bzr remove file.txt
$ bzr log --short
bzr: ERROR: Can't safely remove modified or unknown files:
100 John Doe 2008-08-19 [merge]
Объединены изменения с работы
added:
file.txt
Use --keep to not delete them, or --force to delete them
Кроме того, историю ревизий можно просматривать regardless.
для отдельного файла или директории, добавив его имя
после команды: Соответственно, можно использовать опцию --keep, что-
бы оставить файл на диске, но удалить его регистрацию
bzr log README.txt или опцию --force, чтобы удалить и регистрацию, и файл.
Надо заметить, что если вы удалите файл, не используя
Команда cat выводит содержимое файла для ревизии Bazaar, то Bazaar будет считать, что необходимо удалить
заданной опцией -r: и регистрацию файла.
Команда revert возвращает все файлы и директории
$ bzr cat -r 100 README.txt в состояние на момент последней фиксации, но при этом
Файл README сохраняет измененные файлы под другими именами. Она
действует рекурсивно, и если нужно вернуть только не-
После просмотра изменений их можно зафиксировать сколько файлов, то надо быть внимательным и указывать
командой commit, которая была описана выше. в командной строке только их:
74
программмирование
bzr revert ветку в каталоге remote, и в итоге создаем еще одну копию,
копируя локальную ветку в каталог local:
Если вы случайно сделали фиксацию, то можно исполь-
зовать команду uncommit, чтобы убрать последнюю ревизию $ cd projects
$ bzr init-repo project
и вернуть рабочее дерево в состояние до момента фикса- $ cd project
ции. Эта команда позволяет также исправлять и коммен- $ bzr branch bzr+ssh://some.host/some/project remote
тарии к ревизии: Branched 10 revision(s).
Кроме того, команда uncommit позволяет отменить не- Если теперь в каталоге remote мы посмотрим инфор-
сколько последних ревизий, например, три последние: мацию о ветке командной info, то увидим ассоциирован-
ную родительскую ветку:
bzr uncommit -r -3
$ cd remote
$ bzr info
Если нет необходимости удалять ревизии, а нужно толь-
Standalone tree (format: pack-0.92)
ко вернуть рабочее дерево в прежнее состояние, то можно
Location:
использовать команду revert с опцией -r: branch root: .
Исправить неправильно поставленные метки можно Хотя возможно большое количество сценариев работы,
с помощью команды tag, например, перенести метку на дру- в нашем примере все локальные изменения будут делать-
гую ревизию можно с помощью опции --force, а удалить с по- ся на ветке в каталоге local, а ветка в каталоге remote будет
мощью опции --delete: отслеживать все изменения, сделанные на удаленной вет-
ке. Но в простейшем случае можно использовать и только
bzr tag --delete version-1.0 одну локальную ветку.
bzr tag --force version-2.0
Итак, представим, что мы проделали некоторую рабо-
ту и создали несколько ревизий на ветке local. Теперь мы
Работаем в команде обновим копию удаленной ветки изменениями, сделанны-
После того как мы рассмотрели работу с Bazaar в одино- ми другими разработчиками, и потом объединим наши из-
честве, рассмотрим распределенные возможности при ра- менения. Для обновления ветки нужно выполнить коман-
боте в команде (или по такому же сценарию вы можете ра- ду pull в каталоге remote, при этом будут скачаны и добав-
ботать из нескольких мест, например, c работы и из дома). лены все ревизии, которые были сделаны на родительской
В простейшем случае, если вы работаете в команде, кто- ветке после момента последнего обновления:
то из разработчиков уже мог создать центральную ветку
Bazaar, или при работе в паре это может быть одна из ло- bzr pull
кальных веток другого разработчика, которую вам необхо-
димо скопировать к себе. Кроме работы с файловой сис- Так как изменения на ветке local происходили парал-
темой, Bazaar может работать со следующими протокола- лельно с изменениями на удаленной ветке, то мы не мо-
ми: FTP, HTTP, HTTPS, SFTP и собственным оптимизиро- жем просто сделать pull, а должны объединить изменения
ванным протоколом bzr. Одним из простейших способов с помощью команды merge в каталоге remote:
открыть к ветке доступ для чтения может быть использо-
вание HTTP/HTTPS. В этом случае достаточно в конфигу- bzr merge ../local
рации веб-сервера открыть, с учетом необходимых огра-
ничений, директорию с веткой на доступ, как и любую дру- Если путь не указан, то merge как и pull будет использо-
гую директорию. Для доступа на запись рекомендуется ис- вать путь к родительской ветке. При объединении изменя-
пользовать соединение через SSH, которое можно устано- ется только рабочее дерево, чтобы сохранить объединен-
вить, используя схему bzr+ssh://. В этом случае автомати- ные изменения, нужно сделать фиксацию командой commit.
чески будет использоваться собственный протокол Bazaar Bazaar использует качественный алгоритм объединения,
через SSH туннель. К сожалению, на данный момент собст- учитывающий возможные прошлые объединения, и во мно-
венный протокол сам по себе не имеет никаких ограниче- гих случаях не надо заботиться о таких тонкостях, как на-
ний на доступ. чальная и конечная ревизии для объединения.
Для копирования ветки используется команда branch, В случае если в параллельных ветках было изменено
которая по умолчанию копирует все ревизии из указанно- одно и то же место в файле, автоматическое объединение
го места в локальный каталог, создавая новую ветку. В при- может не сработать, и требуется устранить конфликты вруч-
мере ниже мы создаем разделяемый репозиторий для эко- ную. При объединении бинарных файлов по умолчанию лю-
номии места и затем копируем удаленную ветку, создавая бые параллельные изменения всегда будут конфликтовать,
76
программирование
Готовимся к переходу
на PHP 5.3
Александр Майоров
Обзор основных нововведений, доступных в PHP 5.3.
P
HP 5.2 существует уже почти ступны на http://snaps.php.net. PHP 5.3, n поддержка драйвера MySQLnd;
2 года. В нем найдено несколь- как ожидается, будет отличаться боль- n синтаксические изменения;
ко серьезных ошибок, которые шей стабильностью и производитель- n улучшена производительность;
не могут быть исправлены без поте- ностью, а также содержать новые фун- n расширение системы конфигури-
ри бинарной совместимости. В раз- кциональные расширения и синтакси- рования;
рабатываемом PHP 6 из-за перехода ческие конструкции. n новые возможности SPL.
на Unicode перестанет работать боль- Цель альфа-версии состоит в том,
шое количество наработанного кода, чтобы стимулировать php-програм- Пространства имен
также для него было разработано мно- мистов не только активно участвовать Если вы являетесь постоянным чита-
го интересных дополнений и улучше- в выявлении ошибок, но и в обеспече- телем нашего журнала, то вы долж-
ний, которые не могут быть совмести- нии того, чтобы все новые возможнос- ны иметь представление о пространс-
мы со старыми наработками. Для плав- ти были протестированы на практике. твах времён из статьи в № 12 за 2007
ного перехода с PHP 5.2 на PHP 6 было Также разработчикам важно ваше мне- год. Так что вы можете использовать
решено разработать промежуточную ние о новых возможностях языка, кото- ту статью как подробную инструкцию
версию PHP 5.3, которая будет содер- рыми вы будете в дальнейшем пользо- по данной теме. Для тех, кто не имел
жать большинство улучшений, разра- ваться. Вы можете все это сделать че- возможности прочесть этот материал,
ботанных для PHP 6, но также способ- рез список рассылки либо в багтреке- я проведу краткий обзор и опишу до-
на выполнять существующие скрипты ре на php.net. полнительные возможности, которые
без каких-либо изменений. В этой статье описаны основные были добавлены в этой версии.
Команда разработчиков PHP 1 ав- нововведения, которые нас ожидают Пространство имен (namespace) –
густа 2008 года с гордостью объяви- в PHP 5.3. Вот краткий обзор наибо- это область определения перемен-
ла первый альфа-релиз новой вер- лее важных из них: ных, констант и т. п., ограничивающая
сии PHP 5.3, содержащей значитель- n пространства имен; их область видимости. Оно предназна-
ные изменения по сравнению с преды- n позднее статическое связывание; чено для локализации имен идентифи-
дущими релизами. Бинарные пакеты n перегрузка статических методов; каторов и предотвращения конфлик-
для операционной системы Windows n лямбда-функции и замыкания; тов между ними. Namespace устраняют
будут доступны начиная со 2-й аль- n новое расширение PHAR; конфликты имен. Разные namespace
фа-версии. Промежуточные снапшо- n поддержка SQLite3; могут использовать одно и то же имя
ты для всех платформ уже сейчас до- n циклическая сборка мусора; для разных целей. Имя внутри про-
//require_once 'My/Test/Space/testClass.php';
--- myspace_part2.php --- use My::Test::Space::TestClass;
<?php
namespace My::Test::Space; $Obj = new TestClass;
class TestClass
{
public static function getTestItem() Позднее статическое связывание
{
return TEST_ITEM;
(Late Static Binding)
} Начиная с версии 5.3.0 PHP реализует возможность, на-
} зываемую позднее статическое связывание, которая мо-
?> жет быть использована для управления статическими ме-
тодами при наследовании. Для начала приведу небольшой
--- myspace_part1.php ---
<?php пример кода, на основе которого и разъясню суть пробле-
namespace My::Test::Space; мы. Есть 2 класса:
require 'myspace_part2.php';
<?php
function var_dump()
{ class TestClass_A
$args = func_get_args(); {
return call_user_func_array('::var_dump', $args); public static function foo()
} {
printf("\n %s \n“, __CLASS__);
?> }
78
программирование
данной проблемы был введен класс static, с помощью кото- var_dump(__METHOD__, $name, $argv);
}
рого можно осуществить позднее статическое связывание. }
Тогда, переписав наш код следующим образом:
TestClass_A:: foo('arguments');
<?php ?>
class TestClass_A
{ Данный «магический» метод по сути эквивалентен ме-
public static function foo()
{ тоду _call(), с той лишь разницей, что он обязательно дол-
printf("\n %s \n", __CLASS__); жен быть объявлен как статический. Уверен, что примене-
}
ние данной функции найдется во многих областях и шабло-
public static function bar() нах проектирования. Здесь происходит вызов несуществу-
{
// self::foo(); ющего статического метода TestClass_A:: foo(), обращение
static::foo(); к которому мы перехватили с помощью магического метода
}
} TestClass_A:: __callStatic(). В этом методе мы можем сделать
нужные нам обработки и вызвать нужные нам функции.
class TestClass_B extends TestClass_A
{
public static function foo()
{
Лямбда-функции и замыкания
printf("\n %s \n", __CLASS__); Чем действительно порадовали нас разработчики PHP 5.3,
} так это поддержкой лямбда-функций, за что им особое боль-
}
шое спасибо! Лямбда-функция – это анонимная функция,
TestClass_B::bar(); создающаяся каждый раз при вызове в определенном кон-
?> тексте приложения. Данный тип функций создан в первую
очередь для реализации таких алгоритмов, как «замыка-
мы получим то, что хотели, а именно вызов метода ния» и создания функций высшего порядка.
TestClass_B::foo(). Благодаря этому нововведению мы полу- Функцией высшего порядка называется функция, при-
чили возможность написать абстрактный класс Singleton. нимающая другие функции в качестве параметров или воз-
вращающая функциональные значения. В PHP была уже
<?php возможность создавать динамически анонимные функции
abstract class Singleton с помощью функции create_function(). Но данная функция
{ возвращает имя созданной функции в виде строки. При-
protected function __construct() {}
protected function __clone() {} мер такой приведен ниже:
public function getInstance() <?php
{
if ( is_null(static::$Instance) ) $lambda = create_function(", 'print __FUNCTION__ ."\n";');
static::$Instance = new static;
return static::$Instance; $lambda();
}
} call_user_func($lambda);
?>
class TestSingleton_A extends Singleton
{
protected static $Instance = NULL; В примере мы создаем динамическую функцию без име-
public $field = 123;
} ни. Точнее, мы не задаем ей имя, но PHP присвоит ей имя
в стиле «lambdaN», где N – порядковый номер анонимной
class TestSingleton_B extends Singleton
{ функции. К такой функции мы всегда можем обращаться
protected static $Instance = NULL; только через переменную, которой мы присвоили резуль-
public $field = 456;
} тат выполнения create_function(). Данная функция будет за-
нимать ресурсы точно так же, как и обычная пользователь-
var_dump( TestSingleton_B::getInstance()->field );
var_dump( TestSingleton_A::getInstance()->field ); ская функция. Эта запись не является настоящей реали-
зацией лямбда-функции. В PHP 5.3 добавили более менее
?>
нормальную поддержку лямбда-выражений, которая вы-
глядит следующим образом:
Перегрузка статических методов
В PHP 5.3 появился «магический» метод __callStatic(), поз- <?php
воляющий перехватывать обращение к статическим ме- $lambda = function () ↵
тодам класса. { echo 'Test function: ' . __FUNCTION__ . "\n"; };
var_dump($lambda);
<?php
$lambda();
class TestClass_A
{ call_user_func($lambda);
public static function __callStatic($name, $argv)
{ ?>
?>
<?php
80
программирование
мыкание – это особый вид функции. Она определена в те- ной библиотеки libmysql, оптимизированной специаль-
ле другой функции и создаётся каждый раз во время её вы- но для PHP. MySQLnd использует менеджер памяти Zend
полнения. В записи это выглядит как функция, находяща- Engine, таким образом не требуется копирование данных
яся целиком в теле другой функции. При этом вложенная из библиотеки libmysql в PHP. Оно использует значение ди-
внутренняя функция содержит ссылки на локальные пере- рективы memory_limit, что позволяет контролировать выде-
менные внешней функции. Каждый раз при выполнении ляемую память. MySQLnd использует потоки PHP, что дела-
внешней функции происходит создание нового экземпля- ет более быстрыми постоянные соединения. Также данное
ра внутренней функции с новыми ссылками на перемен- расширение содержит серию оптимизаций для более быст-
ные внешней функции. Замыкание связывает код функ- рого получения результатов. Кроме того, MySQLnd позволя-
ции с её лексическим окружением (местом, в котором она ет собирать статистику, что может пригодиться в дальней-
определена в коде). Лексические переменные замыкания шем для оптимизации ваших запросов. MySQLnd использу-
отличаются от глобальных переменных тем, что они не за- ется как для работы mysql, так и для mysqli-библиотек.
нимают глобальное пространство имён. От переменных Вопрос о том, какая библиотека будет использоваться
в объектах они отличаются тем, что привязаны к функци- libmysql или mysqlnd, решается на стадии компиляции PHP.
ям, а не объектам. Многими любимый PDO на данный момент не поддержи-
вает работу через MySQLnd. Как заявил Дмитрий Стогов
<?php на седьмой международной конференции PHPCONF 2008,
$array = array(1, 2, 3, 4, 5, 6, 7, 8, 9); поддержку PDO реализовывать не будут, но не исключают,
что могут найтись энтузиасты, которые смогут осуществить
$array = array_map( function($element) ↵
{ return $element < 5 ? $element /10 : ↵ это и написать расширение. Может быть, этим человеком
$element *10; } , $array ); станете вы, уважаемый читатель.
var_dump($array);
?>
Новое расширение Phar
В PHP 5.3 появилось новое расширение, по принципу ана-
Согласитесь, что такая запись намного удобней, чем на- логичное концепции JAR-технологии Java. Phar-архив преж-
писание отдельной функции, особенно если учесть, что дан- де всего придуман для приложений-инсталляторов, а так-
ный участок кода должен выполниться всего один раз же для удобного распространения целого PHP-приложе-
на протяжении работы всей программы. Ради такого слу- ния или библиотеки в одном файле. В отличие от JAR-ар-
чая засорять программу реализацией отдельной функции хивов, Phar-архивы не нуждаются ни в специальной среде
нет смысла. К тому же после отработки данного кода ре- исполнения, ни во внешних средствах для запуска процес-
сурсы не будут засорены, так как никакой функции не бу- са или PHP. Phar-архив используется так же, как и обычные
дет висеть в памяти. PHP‑файлы. Например, чтобы вывести в браузер изобра-
жение из архива, достаточно написать:
Магический метод __invoke()
Данный метод позволяет работать с объектом как с функ- <?php
цией. Сразу приведу пример: header(‚Content-type: image/jpeg‘);
echo file_get_contents('phar:///path/to/my/test.phar/ ↵
resources/image.jpg');
<?php ?>
class TestClass_A
{ Как видите, для подключения используется специ-
function __invoke($i)
{ альный стрим-враппер 'phar:'. Давайте теперь попробуем
return $i * 16; на практике создать Phar-архив. Вообще надо сказать, что
}
} специальных архиваторов нет. Но это не проблема. Соз-
дать такой архив несложно самостоятельно, но есть одно но.
$Obj = new TestClass_A();
echo $Obj(8); По умолчанию работа с Phar-архивами разрешена только
на чтение. А чтобы создать архив, нужно разрешить запись.
?>
Для этого надо в php.ini добавить всего одну строчку:
Теперь в арсенале программистов ООП-щиков появил-
ся еще один новый инструмент для реализации новых ин- [phar]
phar.readonly=0
тересных алгоритмов. Появилась реальная возможность
создавать функции-объекты, а это расширяет объектно- Если этого не сделать, ваш скрипт будет все время ге-
ориентированные возможности языка. нерить исключения. Теперь напишем небольшой код:
Example:
<?php $var_1+$var_2
$DIR = __DIR__; HEREDOC;
include "phar://$DIR/test.phar/test.php"; // Example:
// prints 123+456
?>
?>
и
Новый синтаксис NOWDOC показан в следующем при-
<?php мере:
$DIR = __DIR__;
<?php
header('Content-type: image/jpeg');
echo file_get_contents("phar://$DIR/test.phar/img.jpg"); echo <<<'NOWDOC'
?> Example:
$var_1+$var_2
Как видите, ничего сложного. Мы создали исполняемый
NOWDOC;
php-архив. Данный архив изначально сжат по алгоритму tar.
Вы всегда можете сжать данные архивы с помощью ZIP. До- // Example:
// $var_1+$var_2
бавьте в код следующую запись:
echo <<<"NOWDOC"
<?php
Example:
$Phar = $Phar->convertToExecutable(Phar::TAR, Phar::GZ); $var_1+$var_2
?> NOWDOC;
Если создать в архиве файл с именем index.php, то он // Example:
будет запускаться автоматически. Достаточно, например, // printd 123+456
в консоли написать
?>
php test.phar
Суть нового синтаксиса в том, что теперь можно контро-
либо сделать подключение файла через include: лировать поведение многострочных вставок. Если раньше
они интерпретировались так же, как двойные кавычки, то те-
<?php перь можно переключить поведение, чтобы данный блок
$DIR = __DIR__; интерпретировался как одинарные. Делается это добавле-
нием одинарных кавычек к открывающему маркеру блока:
include "phar://$DIR/test.phar";
<<<'NOWDOC'. Без указания кавычек данный блок будет
?> вести себя так же, как и раньше. Для совместимости была
добавлена возможность указывать поведение синтаксиса
Более подробную информацию вы можете получить с помощью двойных кавычек, хотя это не обязательно.
по адресу: http://ru2.php.net/manual/ru/book.phar.php.
Оператор безусловного перехода GOTO
Синтаксические изменения Данный оператор реализован для поддержки программно-
В самом синтаксисе языка также есть некоторые измене- генерируемого кода. Но так уж повелось, что присутствие
ния. Все эти изменения можно отнести к термину «синтак- или отсутствие оператора GOTO в языке программирова-
82
программирование
ния всегда вызывает жаркие дебаты среди сторонников по тексту и смотреть, зачем была нужна эта переменная.
«правильного стиля» программирования. Всегда считалось Красивое быстрое решение для данного примера состо-
признаком «хорошего тона» неиспользование данного опе- ит в использовании горячо критикуемого GOTO, который
ратора. Я не являюсь сторонником одной из этих «коали- обвиняют в неструктурности и в «идеологической непра-
ций», хотя считаю оператор GOTO неприемлемым в серь- вильности». Наш пример с использованием данного опе-
езном программировании. Тем не менее хочу сказать, что ратора будет выглядеть следующим образом:
действительно есть места, где использование оператора
goto выглядит вполне логично. <?php
Начинающие программисты, пришедшие в PHP из дру-
гих языков, постоянно задаются одними и теми же вопроса- for ($i=0; $i<100; $i++)
{
ми. Например, такими: как выйти из многовложенного цик- // ...
ла? Средствами структурного программирования такой вы-
for ($n=0; $n<100; $n++)
ход можно достигнуть, используя оператор breack(n), но он {
не всегда подходит для поставленных целей. Чаще такие // ...
алгоритмы реализуются, добавляя флаги в циклы, кото- for ($x=0; $x<100; $x++)
рые проверяются при каждой итерации, что очень громоз- {
// ...
дко и непроизводительно. Процессоры не любят ветвле-
ний, и каждая лишняя проверка съедает очень много так- if ( $x == 8 && 4 == $n && ↵
$i == 2 ) goto L_exit;
тов, особенно на нерегулярных переходах, которые невоз-
можно предсказать. // ...
}
Пример такого цикла может быть следующим:
// ...
}
<?php
// ...
}
$exit = false;
L_exit:
for ($i=0; $i<100; $i++) echo "Exit from loop: $i, $n, $x";
{
// ...
?>
for ($n=0; $n<100; $n++)
{
// ... Как видите, данный код намного лучше предыдуще-
го. Оператор GOTO имеет полное право на существова-
for ($x=0; $x<100; $x++)
{ ние, потому что существуют ситуации, в которых он может
// ... значительно улучшить программный код. Но надо пом-
if ( $x == 8 && 4 == $n && $i == 2 ) нить, что таких случаев должно быть немного и програм-
{ ма должна проектироваться так, чтобы не возникало необ-
$exit = true;
break; ходимости в данном операторе. Хотя оператор goto и мо-
} жет облегчить задачу, при злоупотреблении им програм-
// ... ма превращается в спагетти, и ее становится совершен-
} но невозможно нормально отлаживать, так как непонят-
if ( $exit ) break; но, как мы попали в этот блок кода и откуда был совер-
шен переход сюда.
// ...
} Данный оператор предназначен в первую очередь
для реализации таких алгоритмов, как «конечные авто-
if ( $exit ) break;
маты». В PHP у него есть также ограничение, в отличие
// ... от других языков.
}
Переход с помощью GOTO запрещен внутрь цикла или
echo "Exit from loop: $i, $n, $x"; оператора switch.
?> <?php
$a = array();
Результат данного кода вроде бы очевиден. Обе пе- $a[0] = &$a;
unset ($a);
ременные будут содержать строку False. Далее мы пере-
ключаем наш флаг в 1 и смотрим снова результат кода. ?>
На этот раз переменная $result_1 будет равна 1, $result_2
будет равна True. Как видите, в качестве положительного Даже когда мы делали уничтожение переменной, значе-
результата сокращенный оператор возвращает результат ние счетчика ссылок не уменьшалось и не доходило до ну-
условия. Кстати, также не вижу особой полезности данно- ля. Это соответственно приводило к тому, что переменная
го оператора, так как сокращенный вариант условий мож- оставалась висеть в памяти до окончания работы скрип-
но было писать, используя логические операторы. Мы мо- та, занимая системные ресурсы. Сборщик мусора может
жем написать так: запускаться как автоматически, так и явно через вызов
функции gc_collect_cycles(). Данная функция возвращает
<?php количество уничтоженных циклических структур. Автома-
$a = 1; тический запуск сборщика мусора можно отключать функ-
$r2 = ‚True‘; цией gc_disable() и включать функцией gc_enable() соот-
$a || $r2 = ‚False‘; ветственно.
var_dump($r1, $r2); <?php
?> gc_disable();
$a = array();
Правда, эта запись уже подходит под определение не- $a[0] = &$a;
тривиального синтаксиса (о котором было подробно напи- unset($a);
сано в №10 за 2007 год). Тем не менее, сокращенная за- printf("%d \n", gc_collect_cycles());
пись тернарного оператора может быть востребована в не-
gc_enable();
которых случаях.
?>
Константа __DIR__
Частенько приходится определять константу с именем те- Также выросла производительность интерпретатора
кущей директории. Как правило, это делается следующим по сравнению с предыдущими версиями.
образом:
Расширение системы конфигурирования
<?php В новой версии был изменен механизм обработки файла
define('__DIR__', dirname(__FILE__)); настроек. Теперь есть возможность задавать разные уста-
новки для разных директорий.
84
программирование
Например, у нас на 1-м сервере располагаются сра- <?php
зу девелоп-хост для разработки программного обеспече- $Stack = new SplStack();
ния и продакшн-хост, где выкладывается конечная вер-
$Stack->push('a');
сия продукта для пользователей. На девелоп-версии мы $Stack->push('b');
включаем вывод всех сообщений об ошибках, а на про- $Stack->push('c');
дакшн версии, естественно, отключаем вывод сообще- printf("%s \n", $Stack->pop() );
ний о каких-либо ошибках. Обычно это делается добавле- printf("%s \n", $Stack->pop() );
printf("%s \n", $Stack->pop() );
нием установки директивы error_reporting в скриптах или
через вызов одноименной функции. К примеру, часто де- ?>
лают так: в php.ini директиву error_reporting выставляют
в ноль, а в девелоп-версии скриптов в самом начале пишут На выходе получим: c,b,a. Более сложные структуры
«error_reporting( E_ALL | E_STRICT )». Не так уж это и слож- данных, такие как SplPriorityQueue, позволяют формиро-
но, но ведь это простой пример, а на практике может быть вать структуры, отсортированные по приоритету.
намного больше различных настроек, и не все они могут
быть выставлены в пользовательских скриптах. Теперь по- <?php
явилась возможность указывать настройки для каждой ди- $PQueue = new SplPriorityQueue();
ректории в отдельности. Просто в php.ini пишем: $PQueue->setExtractFlags( SplPriorityQueue::EXTR_DATA );
$PQueue->insert('последний элеменет',1);
[PATH=/home/ develop_host/www] $PQueue->insert('первый элемент', 3);
error_repoting = E_ALL | E_STRICT $PQueue->insert('средний элемент', 2);
[PATH=/home/production_host/www] printf("Верхний элемент: %s \n", $PQueue->top() );
error_reporting = 0 printf("%s \n", $PQueue->extract() );
printf("%s \n", $PQueue->extract() );
Все. При обращении к скриптам в той или иной дирек- printf("%s \n", $PQueue->extract() );
тории PHP будет применять соответствующие настрой- ?>
ки. Также есть возможность задавать разные установки
для разных виртуальных хостов. Мы можем предыдущий На выходе получим:
пример записать как: Приоритетный элеменет: первый элемент
первый элемент
[PATH=develop.my-super-startup.ru] средний элемент
error_repoting = E_ALL | E_STRICT последний элемент
Андрей Луконькин
Файловое расширение *.MD по умолчанию не обрабатывается операционной системой,
но это досадное недоразумение можно исправить, добавив себе дополнительный функционал
для комфортной работы.
С
о временем на компьютере про- 1CV7.MD: «Конфигуратор», «Монитор», реестра, который при запуске будет
граммиста баз «1С:Предприя- «Предприятие» и «Предприятие моно- обрабатываться редактором реестра.
тие 7.7» становится слишком польно». К тому же сделаем так, чтобы После запуска этого файла двойным
много, и они далеко не все зарегис- команда «Конфигуратор» была коман- щелчком у вас должны появиться упо-
трированы в списке баз для запус- дой по умолчанию, т.е. использовалась мянутые команды в контекстном меню
ка (диалог «Запуск 1С:Предприятия»). при двойном щелчке по файлу. (см. рисунок).
Попробуем упростить себе работу, за- В «Блокноте» (notepad.exe) или Важно! Если у вас «1С:Предпри-
пуская «1С:Предприятие» в нужном ре- любом другом текстовом редакторе ятие» установлено в папке, отличной
жиме, щелкнув по файлу конфигура- можно набрать нижеприведенный код от «C:\Program Files\1Cv77\», или испол-
ции 1CV7.MD. (см. листинг) и сохранить его в фор- няемый файл называется не 1cv7s.exe,
Для этого нужно зарегистриро- мате TXT. Затем переименовать соз- исправьте код соответствующим об-
вать четыре команды контекстного ме- данный файл, изменив расширение разом, изменив путь к исполняемому
ню проводника Windows для файлов на REG. Таким образом, получим файл файлу и имя файла.
86
администрирование «1С»
«1С:Сценарное тестирование»
Андрей Луконькин
В сентябре вышла ознакомительная версия нового программного продукта, позволяющего
повысить работоспособность и отказоустойчивость конфигураций «1С:Предприятие 8».
Новый инструмент решения и в зависимости от количества времени, которое
Инструмент состоит из двух внешних обработок. Одна об- в организации готовы потратить на тестирование.
работка (ЗаписьТестов.epf) предназначена для записи тес- Для самых нетерпеливых приведу в качестве примера
та, вторая обработка (ПрогонТестов.epf) – для прогона тес- пару скриншотов работы обработок (см. рисунки).
та. Записанный тест можно выполнить либо в ручном, ли- Разработчики пока не решили, будет ли данное реше-
бо в автоматическом режиме. Знание программирования ние распространяться на платной или бесплатной основе,
не требуется, что позволит использовать сценарное тес- но в любом случае «1С:Сценарное тестирование» будет
тирование не только разработчикам, но также пользова- приобретаться и использоваться, т.к. написанная програм-
телям и консультантам. ма – это полдела, а написанная и проверенная программа –
Тест представляет собой набор действий, которые поль- это уже завершенный проект!
зователь должен выполнить в программе. Это могут быть
действия, например, по созданию новых элементов спра-
вочников, документов, заполнению данных на форме, нажа-
тию кнопок. При автоматическом прогоне такого теста про-
исходит имитация работы пользователя по вводу информа-
ции. Важно, что выполнение команд теста по интерактив-
ному созданию объектов и заполнению форм отрабатыва-
ются платформой «1С:Предприятие 8» так же, как если бы
эти данные вводил пользователь с клавиатуры.
В одном и том же тесте можно создавать шаги для тес-
тирования разных хозяйственных операций. Логика теста
описывается правилами отражения хозяйственных опера-
ций в программе, согласно пользовательской документации.
Таким образом, инструмент можно применять для сценарно-
го или функционального тестирования конфигураций.
Илья Александров
Их было двое. Одного звали Билл, другого – Дэвид. Они окончили университет в начале
тридцатых годов прошлого века и были инженерами. Эти парни хотели заниматься
технологиями. Теперь фамилии Хьюлетт (Hewlett) и Паккард (Packard) знает весь мир.
88
ретроспектива
нового излучения, тогда эти разработ- правлений в деятельности HP. Здесь
ки проводились для нужд военно-мор- нужно сказать, что, купив чей-то биз-
ского флота. HP стала признанным ли- нес, Билл и Дэвид не начинали наво-
дером в этой области. В 1947 году HP дить свои порядки. Приобретенная
выпустила каталог со своей продук- компания работала словно автономия,
цией, где присутствовало 39 наиме- просто доход приносила уже новым хо-
нований, и Дэвид представлял проек- зяевам. Принцип «не мешать» четко
ты на нью-йоркской выставке. Несмот- соблюдался на протяжении всей ис-
ря на то что военные заказы от аме- тории корпорации.
риканского правительства прекрати- Спустя год HP покупает завод
лись после войны, HP сумела остать- в Германии и начинает массовые пос-
ся на плаву. тавки оборудования на европейский
К началу пятидесятых у компаний рынок. К началу шестидесятых годо- Рисунок 1. Осциллятор 200A
годовой оборот в 2 миллиона долларов вой доход составляет 48 миллионов
и штат со 166 сотрудниками. долларов, в компании работают более лиал в Японии и новый завод в США.
двух тысяч человек. Годовой доход в 1969 году составил
Пятидесятые. 326 миллионов долларов, в компании
Выход на биржу Шестидесятые. работали 16 тысяч человек.
и европейский рынок Новые разработки
В 1951 году компания выпускает про- В шестидесятые годы – развитие ком- Семидесятые.
дукцию для радиостанций. Радиопе- пании, можно выделить три особые ве- Электронные часы
редатчики, измерители частоты, кото- хи. В 1964 году HP выпускает атомные и завоевание Востока
рые модернизировали всю радийную часы – HP5060A. Они способны пока- В 1972 году HP выпускает первый в ми-
отрасль, сделав звук и аудиооборудо- зывать точное время на протяжении ре карманный научный калькулятор.
вание более совершенным. трех тысячелетий с погрешностью мак- Любой инженер теперь может таскать
В 1956 году HP снова подтвержда- симум в 1 секунду. Там, где необходи- его в кармане рубашки. HP‑35 отправ-
ет свой статус лидера на рынке науч- мо всегда знать точное время до мил- ляет на пенсию громоздкие вычисли-
ных приборов. Новая партия осциллог- лисекунды, атомные часы становятся тельные приборы и логарифмическую
рафов – модели 130A/150A становят- стандартом. В центрах космонавтики, линейку. В этом же году на рынке по-
ся крайне популярными во многих ин- у диспетчеров авиалиний и прочих. является HP-3000 – первый компьютер,
ститутах. Осциллограф – это устройс- В 1966 году HP наконец-то выпус- ориентированный не только на работу
тво, предназначенное для визуально- кает свой первый компьютер. Огром- высококвалифицированных научных
го отображения графика электричес- ная махина HP 2116A изначально яв- работников, но и на нужды простых
кого сигнала. лялась контроллером, тестировавшим офисных служащих.
В 1957 году компания размеща- на работоспособность разные элект- Компания продолжает поощрять
ет свои акции на бирже, они прода- рические приборы, изготавливаемые своих сотрудников, вводит систему
ются по 16 долларов за штуку. Выход компанией. В нем впервые инженеры гибкого графика. Фактически каждый
на фондовый рынок – важный этап компании использовали интеграль- работник может сам выбрать, когда
в развитии любой компании, показы- ные схемы. Первую модель с 4 Кб па- ему приходить на работу, главное, со-
вающий ее состоятельность. Много из- мяти купил океанографический инсти- гласовать это с начальством и отра-
менений происходит и в самой HP. тут и установил на одном исследова- ботать за день 8 часов. Забота о слу-
У компании открывается огром- тельском судне. жащих остается приоритетом для HP.
ный полноценный офис в Стэнфордс- Наконец, в 1968 году компания вы- В 1977 году компания выпускает HP‑01
ком индустриальном парке, на терри- пускает настольный научный калькуля- (см. рис. 2). Наручные часы, имевшие
тории располагались даже волейболь- тор HP 9100A. Программируемый каль-
ные площадки для отдыха сотрудни- кулятор используется в научной среде,
ков. Дэвид и Билл продолжают рабо- он умел сохранять результаты вычис-
тать над корпоративной философией лений на магнитных карточках, а сами
и этикой, Дэвид потом назовет семь вычисления, проводимые на нем, рань-
главных ценностей компании: прибыль, ше были возможны только при исполь-
клиенты, области, представляющие зовании больших компьютеров.
научный интерес, экономический рост, В этом устройстве впервые бы-
сотрудники, менеджмент и народ. ли использованы новые дисплеи, ос-
В 1958 году состоялась первая нованные на LED-индикаторах, улуч-
большая сделка для HP. Хьюлетт и Пак- шенные аналоги которых потом станут
кард покупают компанию F.L. Moseley, стандартом при производстве монито-
выпускавшую плоттеры. С этого мо- ров и дисплеев мобильных устройств.
мента принтеры и оргтехника стано- H P начинает с отруд нич е с тво
вятся одним из профилирующих на- со странами Азии, открывает свой фи- Рисунок 2. Часы HP-01
90
bugtraq
92
книжная полка
94
подписка на 2009 год
Российская Федерация печати «Гасид» (370102, г. Баку, ул. Джавадхана, 21)
n
Подписной индекс: годовой – 20780, полугодовой – 81655 n
Казахстан – по каталогу «Российская Пресса» через
Каталог агентства «Роспечать» ОАО «Казпочта» и ЗАО «Евразия пресс»
n Подписной индекс: годовой – 88099, полугодовой – 87836 n
Беларусь – по каталогу изданий стран СНГ через РГО
Объединенный каталог «Пресса России» «Белпочта» (220050, г. Минск, пр-т Ф. Скорины, 10)
Адресный каталог «Подписка за рабочим столом» n
Узбекистан – по каталогу «Davriy nashrlar» российс-
Адресный каталог «Библиотечный каталог» кие издания через агентство по распространению пе-
n Альтернативные подписные агентства: чати «Davriy nashrlar» (7000029, г. Ташкент, пл. Муста-
Агентство «Интер-Почта» (495) 500-00-60, курьерская киллик, 5/3, офис 33)
доставка по Москве n Армения – по списку номенклатуры «АРЗИ» через
Агентство «Вся Пресса» (495) 787-34-47 ГЗАО «Армпечать» (375005, г. Ереван, пл. Сасунци Да-
Агентство «Курьер-Прессервис» вида, д. 2) и ЗАО «Контакт-Мамул» (375002, г. Ереван,
Агентство «ООО Урал-Пресс» (343) 375-62-74 ул. Сарьяна, 22)
ЛинуксЦентр www.linuxcenter.ru n Грузия – по списку номенклатуры «АРЗИ» через АО
n Подписка On-line «Сакпресса» ( 380019, г. Тбилиси, ул. Хошараульская, 29)
http://www.arzi.ru и АО «Мацне» (380060, г. Тбилиси, пр-т Гамсахурдия, 42)
http://www.gazety.ru n Молдавия – по каталогу через ГП «Пошта Молдовей»
http://www.presscafe.ru (МД-2012, г. Кишинев, бул. Штефан чел Маре, 134)
по списку через ГУП «Почта Приднестровья» (МD-3300,
СНГ г. Тирасполь, ул. Ленина, 17)
В странах СНГ подписка принимается в почтовых отделе- по прайс-листу через ООО Агентство «Editil Periodice»
ниях по национальным каталогам или по списку номенк- (МД-2012, г. Кишинев, бул. Штефан чел Маре, 134)
латуры «АРЗИ»: n Подписка для Украины:
n Азербайджан – по объединенному каталогу россий- Киевский главпочтамт
ских изданий через предприятие по распространению Подписное агентство «KSS», тел./факс (044)464-0220
Подписные
индексы:
20780 *
+ диск с архивом
статей 2008 года
81655 **
без диска
по каталогу агентства
«Роспечать»
88099 *
+ диск с архивом
статей 2008 года
87836
без диска
**
по каталогу агентства
«Пресса России»
*
Годовой
**
Полугодовой
***
Диск вкладывается
в февральский
номер журнала,
распространяется
только на территории
России
УЧРЕДИТЕЛИ
Частные лица
Вышел DVD-диск с архивом
РЕДАКЦИЯ
Генеральный директор
номеров журнала за 2007 год
Владимир Положевец
Главный редактор Что на диске? NeTAMS 3.4.1rc1;
Алексей Коршунов n Архив 12-ти номеров журнала «Системный ад- IPStat 0.9.7.2;
chief@samag.ru министратор» за 2007 год. Linux kernel 2.6.24.1;
Ответственный секретарь n Архив всех выпусков электронного приложе- BIND 9.4.2 (+ win32);
Наталья Хвостова
sekretar@samag.ru
ния «Open Source» за 2007 год. OpenSSL 0.9.8g;
Технический редактор n Программные продукты от партнеров журна- OpenSSH 4.7p1;
Владимир Лукин ла (триальные версии): Samba 3.0.28;
Kerio MailServer 6.5; Squid Web Proxy Cache 2.6.STABLE18;
Главный редактор Kaspersky® Internet Security 7.0; CUPS 1.3.6;
электронного приложения Антивирус Касперского ® 7.0; Clam AntiVirus 0.92.1 (+ Clamwin 0.92);
«Open Source» Система контроля доступа Zlock 2.0; Webmin 1.400;
Дмитрий Шурупов
Прокси-сервер UserGate 4.2; Bacula 2.2.8;
Внештатные редакторы Handy Backup 5.8; Amanda 2.5.2p1;
Алексей Барабанов Paragon Drive Backup 8.51 Enterprise Server n Пользовательское ПО:
Кирилл Сухов Edition; OpenOffice.org 2.3.1 (LinuxIntel, Win32Intel);
Сергей Супрунов Network Inventory 1.6.0; Mozilla Firefox 2.0.0.12 (Linux, win32);
Олег Щербаков FastReport Server 1.0.10 demo; Mozilla Thunderbird 2.0.0.12 (Linux, win32);
Василий Гусев ABBYY Lingvo 12; Mozilla Seamonkey (Linux, win32);
РЕКЛАМНАЯ СЛУЖБА WinRar 3.71; Mozilla Sunbird 0.7 (Linux, win32);
тел./факс: (495) 628-8253 Linux-дистрибутив Mandriva One 2008; Pidgin 2.4.0 (+ win32);
Евгения Тарабрина (доб. 119) Linbox Rescue Server 20070703. SIM IM 0.9.4.3 (+ win32);
reсlama@samag.ru n Серверы/сети/администрирование: X-Chat 2.8.4 (+ 2.8.5e win32);
FreeBSD 7.0-RELEASE; aMule 2.1.3 (+ win32);
Верстка и оформление Apache HTTP Server 2.2.8 (+ win32); GIMP 2.4.5 (+ 2.4.4 win32);
maker_up@samag.ru nginx 0.6.26, 0.5.35; MPlayer 1.0rc2 (+ win32);
Дизайн обложки lighttpd 1.4.18; VLC media player 0.8.6e (+ win32);
Дмитрий Репин ProFTPD 1.3.1; WINE 0.9.56;
PureFTPd 1.0.21; DOSBox 0.72 (+ win32);
По вопросам распространения vsftpd 2.0.6; DOSEMU 1.4.0;
обращайтесь по телефону: Sendmail 8.14.2; Midnight Commander 4.6.1;
Светлана Зобова Postfix 2.5.1, 2.6-20080221 (experimental); Vim 7.1 (+ gvim71);
(495) 628-8253 (доб. 121) Courier Mail Server 0.58.0; 7-Zip 457 (+ win32);
107045, г. Москва, Exim 4.69; GnuPG 2.0.8 (+ w32cli 1.4.8).
Ананьевский переулок, дом 4/2, стр. 1 SpamAssassin 3.2.4;
тел./факс: (495) 628-8253 DSPAM 3.8.0; Как получить диск в подарок?
Сайт журнала: www.samag.ru Policy Daemon 1.82; n Клиенты компании SecurIT, заказавшие Zserver
SquirrelMail 1.4.13; в любой комплектации или более 50 лицензий
ИЗДАТЕЛЬ RoundCube 0.1-rc2; Zlock, получат диск в подарок.
ООО «С 13» MySQL 5.0.51a (+ win32);
Отпечатано типографией
ООО «Периодика» PostgreSQL 8.3.0 (+ win32); Где можно приобрести диск?
Тираж 17000 экз. Firebird 2.0.3.12981 (+ win32); n В редакции ж урна ла «Сис темный а дми-
SQLite 3.5.6 (+ win32); нистратор» по адресу: г. Москва, Ананьев-
Журнал зарегистрирован в Министерстве РФ Perl 5.10.0; ский переулок 4/2, стр. 1, в офисе 13 (мет-
по делам печати, телерадиовещания и средств PHP: 5.2.5 (+ win32); ро «Сухаревская»).
массовых коммуникаций (свидетельство ПИ Python 2.5.2 (+ win32); n В online-магазине Linuxcenter.ru.
№ 77-12542 от 24 апреля 2002 г.).
Ruby 1.8.6-p111, 1.9.0-1; n В интернет-супермаркете Softkey.ru.
За содержание статьи ответственность несет
Nmap 4.53 (+ win32); n Для обитателей и посетителей Савеловско-
автор. Мнение редакции может не совпадать Ettercap 0.7.3.tar.gz (+ win32); го рынка, диск можно купить в точке торговли
с мнением автора. За содержание рекламных Ethereal 0.99.0 (+ win32); печатными изданиями у главного входа.
материалов ответственность несет рекламо- Snort 2.8.0.2;
датель. Все права на опубликованные мате- MRTG 2.16.1; Сколько стоит?
риалы защищены. NuFW 2.2.9; Цена в редакции – 150 рублей.
tcpdump 3.9.8;
96