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

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

ЛИ
С
ЛИ
ТЯ Е

Ж ПИ
ЗА ДНИ
НУ

РА КУ
ЛЫ ГО

ТИ РАС
К У ВО

РО
№1(74) январь 2009
НИ НО

СТ
БЫ
подписной индекс 20780
КА

www.samag.ru
Автоматическая установка

№1(74) январь 2009


драйверов

И
ЬГ
ЬД О
БО А
К

ИС НН
ЕН
РА СК
ТЕ
УС

ИЛ ДА
У
ТП

НА П
Л ОТ

НЧ ЖИ
ВО

Вы еще не используете
РА ЛЕ

КО НЕО
Л

АВ ОС
ХА
УЕ

Windows Vista?

ЗА
Оптимизируем PPD-файлы
Так видит журнал читатель, оформивший подписку:
Анализируем трафик с Nulog2

Hyperic HQ – система мониторинга


корпоративного уровня

Контролируем изменения
в конфигурационных файлах

nUbuntu – дистрибутив
для тестирования защищенности

Используем универсальные отчеты


и обработки в «1С:Предприятии 8»
ПОДПИШИТЕСЬ И ЧИТАЙТЕ!
JQuery: магия JavaScript
Роспечать – 20780, 81655
Пресса России – 88099, 87836 Winbinder PHP:
Интер-почта – тел. (495) 500-00-60 cоздаём GUI-интерфейс за 2 клика
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
Реклама
Реклама
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
в номере
3 ТЕНДЕНЦИИ 46 nUbuntu – дистрибутив для тестирования
защищенности
РЕПОРТАЖ Популярный дистрибутив Ubuntu Linux в первую очередь
рекомендуется начинающим. Но среди его многочис-
4 Платформа 2009. Определяя будущее ленных клонов имеется специальное решение nUbuntu,
4-5 декабря 2008 года в Москве прошла десятая еже- ориентированное на специалистов.
годная конференция Microsoft. Сергей Яремчук
Андрей Бирюков
49 Lustre FS. Настраиваем и используем
АДМИНИСТРИРОВАНИЕ кластерную систему в промышленных
масштабах. Часть II
8 Анализируем трафик с Nulog2 Рассмотрим, как повысить отказоустойчивость системы
Настройка веб-интерфейса NuLog2, позволяющего путем дублирования информации на серверах с данны-
администратору в удобном виде просматривать ин- ми. Для этого воспользуемся Linux HA и DRBD.
формацию о соединениях, проходящих через Netfilter Виталий Банковский
и NuFW.
Сергей Яремчук 52 Квартет: «САМО», «1C», wine и Etersoft
Проблемы запуска «1С» под Linux.
14 Hyperic HQ – система мониторинга Сергей Барановский
корпоративного уровня
Компьютерная инфраструктура – критически важная 61 Сдаем бухгалтерскую отчётность
среда для ведения бизнеса, требующая постоянно- в электронном виде
го контроля и обеспечения ее бесперебойной работы. Готова ли ФНС получать данные из ОС Linux?
Всегда быть в курсе происходящего и предотвратить Максим Лобов
какие-либо проблемы поможет внедрение системы мо-
ниторинга ресурсов сети. АДМИНИСТРИРОВАНИЕ «1С»
Дмитрий Петухов
64 Используем универсальные отчеты
22 Автоматическая установка драйверов и обработки в «1С:Предприятии 8»
Поговорим о малоизвестных способах пакетной уста- Рассмотрим функциональное назначение и примеры
новки драйверов. использования универсальных отчетов и обработок.
Иван Коробко Альберт Балаков

26 Вы еще не используете Windows Vista? ИЗ ЛИЧНОГО ОПЫТА


Основные возможности и нововведения операцион-
ной системы. 68 Лабораторная работа:
Андрей Бирюков исследование уязвимостей
с помощью Metasploit Framework
30 Оптимизируем PPD-файлы Один из способов убедить руководство перевести фир-
Все основные настройки Post Script драйверов хранятся му на более безопасные Open Source-аналоги.
в отдельных файлах. Рассмотрим их подробнее. Павел Троицкий
Иван Коробко
ВЕБ-ПРОГРАММИРОВАНИЕ
34 Перенос профиля пользователя
в Windows XP Professional Edition 74 JQuery: магия JavaScript
и Windows 2000 Professional Первое знакомство с библиотекой JQuery.
Хотите перевести старый домен на новое программное Александр Слесарев
обеспечение так, чтобы пользователи ничего не замети-
ли? Делимся опытом по самой трудоемкой части этого 82 WinBinder PHP. Создаём GUI-интерфейс
процесса – переносу профилей пользователей. за 2 клика
Рамиль Айзятуллен Сегодня уже никого не удивить инструментами для соз-
дания приложений с GUI-интерфейсом на скриптовых
37 Управляем объектами в Active Directory. языках. PHP не исключение. Но не все знают, что кроме
Часть 4 PHP-GTK существуют другие библиотеки, одна из ко-
Группа безопасности – один из основных объектов торых – WinBinder.
Active Directory, определяющего правила доступа к ре- Александр Майоров
сурсам домена. Умение управлять этим объектом да-
ет большие возможности в автоматизации управле- 90 Доступ к данным на основе хранимых
ния Active Directory. процедур в веб-приложениях
Иван Коробко Большинство приложений вынуждено работать с ба-
зами данных, общаясь с СУБД на языке SQL-запросов.
40 Контролируем изменения Иными словами, одни программы на языках высокого
в конфигурационных файлах уровня составляют другие программы на SQL. Это вы-
Системные администраторы хорошо знакомы с трудо- глядит привычным – поэтому кажется логичным и удоб-
емким процессом исправления конфигурационных фа- ным, но так ли это на самом деле?
лов. Расскажу о наиболее сложных проблемах, с ко- Антон Гришан
торыми приходится сталкиваться, и о том, как с ни-
ми бороться. 93 СИСАДМИН ТОЖЕ ЧЕЛОВЕК
Владимир Легеза
25, 33, 81 BUGTRAQ

№1, январь 2009 


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
колонка главного редактора

П
озвольте поздравить всех вас, уважаемые читатели, с окончани-
ем самых длинных в году праздников. Честно сказать, я не слиш-
ком люблю затяжные каникулы, потому как последствия для рабо-
ты они создают самые ужасные. Необходимое время для адаптации к ра-
боте и общее нежелание заставлять себя что-то делать после почти двух-
недельного отдыха практически парализуют работу компаний едва ли
не до конца января.
Однако праздники закончились, и мы с горем пополам приступили к вы-
полнению своих прямых обязанностей или... к поиску нового места рабо-
ты. В этом году сотрудники многих компаний были отправлены на прину-
дительный отдых до 15, а то и до 19 января. Выходя на работу 16-го или
20-го числа, некоторые сотрудники имели неприятную возможность не-
ожиданно оказаться безработными. Хочется верить, что читателей наше-
го журнала миновала эта незавидная участь.
Новый, 2009 год обещает быть интересным хотя бы потому, что ни-
кто толком не может понять, чего от него следует ожидать. Кто-то запа-
сается рисом, кто-то подумывает, а не уехать ли куда-нибудь и желатель-
но подальше, а кто-то... совершенно неожиданно для себя получает край-
не интересные предложения по работе. Причем зачастую эти счастлив-
чики (в момент получения предложений) не являются безработными. Во-
обще, насколько я могу судить, уверенные в себе специалисты и сейчас
запросто срываются с насиженных мест и ищут новую работу. И находят
ее, что самое интересное.
В этом году нам всем придется приложить немало усилий для того, что-
бы сохранить и приумножить то, к чему мы так привыкли. Однако я пред-
лагаю не унывать, пока не смотреть новостные каналы (дабы те своими
истериками не мешали создавать правильный позитивный настрой) и, ве-
ря в успех, смело двигаться вперед.

Алексей Коршунов


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
тенденции
Google развивает Chrome по всем чем занимался Кэй Тайтц (Kai Tietz). «Впрочем, для того
направлениям чтобы эти наработки попали в основную ветку, потребует-
В начале декабря Аарон Будман (Aaron Boodman), пред- ся сделать еще много вещей», – подчеркнул Ланкхорст. На-
ставляющий коллектив разработчиков веб-браузера с от- работки по проекту wine64 доступны в Git-дереве wine64.git
крытым кодом Google Chrome, опубликовал в своем бло- (http://repo.or.cz/w/wine/wine64.git).
ге ссылку на информацию о готовящейся системе расши-
рений. Тогда о расширениях впервые заговорили в новом Sun выпустила веб-сервер с открытым
для Chrome ключе: они все же нужны и вовсе не обязатель- кодом
но будут мешать «легковесности» браузера. Главное вы- Sun Microsystems представила результаты проекта откры-
двинутое требование к расширениям – высокий уровень их тия исходного кода своего веб-сервера Sun Java System
качества («как будто эти расширения создавали разработ- Web Server (SJSWS). В середине января было объявле-
чики самого браузера»). Кроме того, расширения будут об- но об официальном запуске нового продукта компании –
новляться незаметно для пользователя. Сроки реализации Open Web Server.
проекта расширений для Chrome неизвестны. Open Web Server – это ядро Sun Java System Web Server,
Вскоре в СМИ появилось новое сообщение о Chrome: исходный код которого доступен всем желающим под ли-
Google сняла с браузера статус «бета» – всего через три цензией BSD. Он лишен некоторых возможностей SJSWS
месяца после первого публичного релиза. Это событие оз- (например, WebDAV, поиска, административного графи-
наменовалось исчезновением в 15-м релизе Chrome соот- ческого и консольного интерфейсов), но несмотря на это,
ветствующей подписи («бета») при запуске программы. в Sun его называют «тем же самым высокомасштабируе-
В январе стали известны подробности о сроках выпус- мым HTTP-сервером, обеспечивающим функционирова-
ка долгожданных версий Chrome для GNU/Linux и Mac OS X. ние многих нагруженных веб-сайтов, требующих высоко-
Эти релизы запланированы на июнь наступившего года. го уровня надежности».
Пока готовы лишь базовые версии Chrome для Linux и Mac, Среди возможностей, поддерживаемых в Open Web
которые позволяют только «хорошо отображать большую Server, можно выделить HTTP 1.0/1.1, SSL, CGI/FastCGI,
часть веб-страниц». SHTML, ACL, LDAP/LDAPS, NSAPI, кэширование файлов
И в завершение череды событий про Chrome сто- (NSFC), локализации, мониторинг.
ит отметить интересные изменения в тестовой сборке Open Web Server стал частью так называемого веб-стека
Chrome (2.0.156.1). В ней реализована поддержка скриптов (Web Stack) проекта операционной системы OpenSolaris.
Greasemonkey (Greasemonkey – расширение к Mozilla Firefox,
позволяющее пользователям устанавливать скрипты, пре- Linux Foundation объявила конкурс
образующие HTML-страницы на лету), появились профили, на рекламный ролик
автоматическое дополнение в веб-формах, полное масшта- В середине января организация Linux Foundation (LF), за-
бирование страниц, импорт закладок из Google Bookmarks, нимающаяся продвижением операционной системы GNU/
автоматический скроллинг. Linux, объявила о начале приема рекламных видеороликов
на участие в конкурсе «I'm Linux».
Sun и WINE сделали важные шаги Конкурс на лучший 60-секундный рекламный видеоро-
навстречу 64-битным системам лик был анонсирован Linux Foundation во второй половине
За ноябрьским анонсом выпуска альфа-версии Adobe Flash декабря. Название конкурса, которое должно содержать-
Player 10 для 64-битных Linux-систем последовали не ме- ся в каждом видео, было выбрано не случайно: оно явля-
нее значимые декабрьские релизы. ется прямой пародией на недавние рекламные кампании
Так, компания Sun Microsystems, выпустив предва- Apple («I'm a Mac») и Microsoft («I'm a PC»). Победитель кон-
рительную версию грядущего обновления к Java (Java 6 курса получит возможность бесплатного участия в Japan
Update 12), представила плагин для веб-браузеров на ма- Linux Symposium, что пройдет в Токио (Япония) в октябре
шинах с 64-битной архитектурой. Java-плагин для веб-бра- 2009 года.
узеров пользователей систем с 64-битной архитектурой – Участник конкурса должен быть старше 18 лет, уложить-
это столь давняя проблема, что достаточно указать да- ся в 60 секунд и показать в ролике, почему он любит Linux.
ту соответствующей записи в системе баг-трекинга Sun: Юмор в роликах рекомендуется, но не является обязатель-
14 января 2003 года (баг #4802695). Из-за этого обладате- ным. Комиссия LF будет оценивать в роликах оригиналь-
лям 64-битных систем приходилось пользоваться 32-бит- ность, ясность посылки и то, «насколько он вдохновляет
ными сборками браузеров или идти на другие ухищрения. других на использование Linux».
По-видимому, уже в ближайшее время пользователи смо- Присланные на конкурс «I'm Linux» работы доступны
гут забыть о былых неудобствах. Пока 64-битный Java-пла- на video.linuxfoundation.org.
гин доступен (на https://jdk6.dev.java.net/6uNea.html) только
для Firefox на платформах GNU/Linux и Windows. Когда по- Подготовил Дмитрий Шурупов
по материалам www.nixp.ru
явится его сборка для Solaris, не сообщается.
Почти одновременно с этим Маартен Ланкхорст (Maarten
Lankhorst) из проекта WINE объявил об успешном запус-
ке первого приложения, созданного для 64-битной версии
ОС Windows. Для этого потребовалось переработать GCC,

№1, январь 2009 


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
репортаж

Платформа 2009. Определяя будущее

4-5 декабря 2008 года в Москве в здании Академии Наук РФ прошла десятая ежегодная
конференция Microsoft – «Платформа 2009. Определяя будущее». На ней было представлено
большое количество тематических докладов, но обо всем по порядку.

Н
ачну с того, что за несколько ме- Темы докладов n Бизнес-аналитика и отчеты.
сяцев до начала конференции На конференции было представлено n Управление IT-инфраструктурой.
на сайте и блогах, посвященных 60 технических докладов в несколь- n Портальные решения и групповая
предстоящей «Платформе», многими ких тематических секциях. Также про- работа.
пользователями высказывалось сом- водились круглые столы, посвящен- n Операционные cистемы.
нение в целесообразности проведения ные различным техническим пробле- n Архитектура систем и приложений.
мероприятия, в условиях глобально- мам, партнерская выставка, лабора- n Безопасность.
го экономического кризиса. Объясня- торные работы, как с инструктором, n Объединенные голосовые и почто-
лась такая точка зрения тем, что в ны- так и для самостоятельного выполне- вые коммуникации.
нешних условиях заказчики не будут ния, действовала зона «Спроси экс- n Доклады партнеров.
покупать новое программное обеспе- перта». Еще до начала конференции
чение, и соответственно, нет смысла было объявлено, что основным доклад- Операционные системы
проводить конференцию. И хотя кон- чиком будет Марк Руссинович, извест- Уместить в одной статье даже крат-
ференцию не отменили, но все же, ми- ный специалист по операционной сис- кое описание всех докладов довольно
ровые экономические проблемы вне- теме Windows. сложно, попробуем рассмотреть более
сли определенные коррективы в пла- Для тех, кто не смог лично присутс- подробно, что входило  каждую из этих
ны организаторов. Изначально мес- твовать на конференции, была развер- тем. Открывал конференцию, как и бы-
том проведения предполагалось вы- нута веб-трансляция, которая, правда, ло заявлено, Марк Руссинович.
брать Крокус Сити, но потом было вы- не всегда работала. Начнем с «Операционных систем».
брано более привычное место – здание Но вернемся к темам докладов. Здесь было семь выступлений. В до-
РАН. Также, изначально хотели при- Вот основные из них. кладе «Windows – как создается опе-
гласить до 5000 человек, однако ре- n Инструменты и технологии разра- рационная система» было рассказано,
ально на конференцию были пригла- ботки программного обеспечения. как создается Microsoft Windows, как
шены только 1500. n Базы данных. устроен процесс разработки и тестиро-


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
репортаж
вания, что происходит с Windows пос- обзор технологий «Geneva» был посвя- шийся мной доклад Марка Руссинови-
ле выпуска и как решаются проблемы щен набирающим популярность в пос- ча. Вообще, следует отметить, что те-
сопровождения и поддержки. При этом, леднее время Identity, то есть сред- матическое деление было весьма ус-
в качестве примера была представле- ствам управления учетными запися- ловным, и многие доклады попадали
на разработка новых возможностей ми в различных приложениях. В до- сразу в несколько тематик.
Windows 7 и реальных ошибок, исправ- кладе рассматривались продукты се-
ленных в разных версиях Windows. мейства Geneva для обеспечения уп- Управление
В  д р у г о м д о к л а д е «W i n d ow s равления учетными записями. IT‑инфраструктурой
Server 7 – новые технологии в Windows Другой док лад был посвящен Еще одной популярной темой кон-
Server 2008 R2» рассказывалось о но- Network Access Protection, средствам ференции было «Управление IT-ин-
вых возможностях готовящейся к вы- обеспечения контроля доступа уст- фраструктурой». В этой тематике
ходу операционной системы. ройств в корпоративную сеть. был представлен доклад «Microsoft
Еще один интересный док лад Д о к л а д «S ystem C enter Dat a Services Business Architecture – мето-
был посвящен платформе Microsoft Protection Manager 2007 – защити дан- дология формирования IT-стратегии»,
Windows Embedded. Данная платфор- ные как Герой» рассказывал об од- посвященный методологии Microsoft
ма предназначена для встраивания ном из ключевых продуктов семейс- Services Business Architecture (MSBA),
в различные устройства, от промыш- тва Microsoft System Center, обеспечи- используемой службой консалтинга
ленных контроллеров до сложных вающего непрерывную защиту дан- Microsoft в проектах, связанных с фор-
мультимедийных решений. ных посредством резервного копиро- мированием IT-стратегии.
Доклад «Построение инфраструк- вания, серверных и клиентских систем Еще один доклад, рассказываю-
туры систем высокой доступности» семейства Windows, файловых серве- щий о методах работы службы кон-
был посвящен созданию отказоустой- ров, приложений и данных Exchange, салтинга Microsoft – «Как Microsoft
чивых решений на основе механизмов SQL и SharePoint. Consulting Services делает крупные ин-
Failover Clustering и системы виртуали- «Безопасный обмен данными меж- фраструктурные проекты». Этот до-
зации Microsoft Hyper-V. ду организациями с использовани- клад раскрывал тему развертывания
Следующий доклад был посвящен ем Active Directory Rights Management Enterprise-класса инфраструктурных
достаточно актуальной теме – при- Services и Active Directory Federation решений силами Microsoft Consulting
чинам несовместимости приложений Services» – этот доклад рассказы- Services и партнеров.
с Windows Vista и их устранению. Ос- вал о новых средствах безопаснос- Следующий доклад был посвящен
новной упор автором доклада делался ти, представленных в Windows Server продуктам Small Business Server 2008
на понимании причин несовместимости 2008 и Vista: контролем прав и новых и Essential Business Server 2008, и рас-
и устранения и обхода этих проблем. функций в Active Directory. сказывал о преимуществах их ис-
Windows Embedded был также пос- Доклад «Стратегия Microsoft в об- пользования. В частности, их внедре-
вящен еще один доклад «Разработка ласти информационной безопаснос- ние позволит существенно снизить за-
устройств на базе Windows Embedded ти в России» был посвящен стратегии траты на развертывание и обслужи-
Standard». В этом докладе рассмат- Microsoft в этой области и ее особен- вание IT-инфраструктуры, и тем са-
ривался процесс разработки обра- ностям для российского рынка. Опи- мым сэкономить немало средств ва-
зов операционной системы Windows сываются общие тенденции развития шей компании.
Embedded Standard для различных ус- данных средств и использование но- «Как продать свой IT-отдел?» – этим
тройств, основные этапы разработ- вых технологий в продуктах Microsoft. вопросом озадачился автор следую-
ки и обзор инструментария разработ- Средствам борьбы с вирусами щего доклада. В докладе рассматри-
ки ОС. В конце доклада была проде- и спамом был посвящен доклад «Те- вался вопрос вывода IT-отдела в отде-
монстрирована сборка образа Windows ория и практика борьбы со спамом льную дочернюю компанию, оказываю-
Embedded Standard и загрузка в вирту- и вредоносным кодом с помощью тех- щую услуги аутсорсинга. Экономичес-
альной среде. нологий Microsoft». Как и следова- кий эффект от операции, повышение
И наконец, был доклад Марка Рус- ло ожидать, в докладе прежде всего качества поддержки, привлечение но-
синовича «Технологии безопасности рассматривались продукты семейс- вых заказчиков.
Windows». В этом докладе автор рас- тва Forefront, а также новые сред- Еще один доклад по схожей теме –
смотрел такие новые функции Windows ства защиты от спама в Microsoft «Как спланировать и построить инф-
Server 2008 как User Account Control, Exchange 2007. раструктуру объединенных коммуни-
Cod Integrity и PatchGuard, а также то, Доклад с интригующим названием каций». В докладе сооющалось о ме-
что изменилось в уже имевшихся «Что в филиале мне твоём?» был пос- тодиках планирования решения, вы-
функциях в Windows Server 2003, та- вящен новым средствам создания рас- боре партнерского ПО, дополняющего
ких как, подсистема обеспечения сес- пределенной доменной инфраструк- наше решение для объединенных ком-
сий пользователей. туры Active Directory и нововведениям муникаций и этапах внедрения полу-
в области безопасности, появившим- ченного комплекса. Аналогичный до-
Безопасность ся в Windows Server 2008. клад «Построение концепции разви-
По теме «Безопасность» было восемь Восьмым же докладом по темати- тия IT-системы предприятия: подход
докладов. Доклад «Claim-based identity: ке «Безопасность» был уже упоминав- Microsoft – оценка, планирование, вы-

№1, январь 2009 


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
репортаж
годы» рассматривал вопросы обосно- В выступлении «Доступ к данным посвящен Citrix NetScaler – контролле-
вания необходимости инвестирова- через Web с использованием ADO.NET ру доставки веб-приложений, позволя-
ния в проблемные области перед руко- Data Services» сообщалось о техноло- ющему осуществлять балансировку
водством компании, а также давались гии ADO.NET Data Services, которая нагрузки при доставке контента.
рекомендации для IT-специалистов по позволяет построить REST-сервис для Citrix Provisioning Server 5 – это
реализации этих планов. доступа к данным. новое средство потоковой доставки
Довольно интересное выступле- Еще один достаточно актуаль- операционной системы. При этом до-
ние было посвящено мониторингу ный доклад был посвящен написа- ставка ОС может осуществляться как
приложений с помощью System Center нию полноценных бизнес-приложений на физические, так и на виртуальные
Operations Manager и AVIcode Intercept на Windows Mobile. В нем рассказыва- машины. В презентации рассматри-
Studio. Здесь был рассмотрен вопрос лось обо всех аспектах решения дан- вались технологии, лежащие в осно-
использования средств System Center ной задачи с учетом технологических ве этого продукта, возможные области
для мониторинга нестандартных .NET- особенностей мобильных устройств. применения: например, для обновле-
приложений. ния клиентских операционных систем
Еще один доклад Марка Руссино- Базы данных и порталы на всём предприятии или построения
вича был посвящен поиску и устране- Тематика «Базы данных» как и предпо- отказоустойчивых датацентров.
нию неисправностей в Windows-сис- лагалось, целиком состояла из сооб- Citrix также представил доклад,
темах. В докладе на реальных приме- щений, посвященных SQL Server 2008. посвященный увеличению защи -
рах сбоев системы и приложений бы- Были темы, посвященные как обще- щенности корпоративных ресурсов,
ли продемонстрированы приемы рабо- му устройству данного программно- посредствам таких продуктов Citrix,
ты с Microsoft Debugging Tools и утили- го продукта, так и отдельным служ- как Citrix XenApp, Password Manager
тами Sysinternals, такими как Process бам, например SQL Server Analysis и Access Gateway, позволяющим орга-
Explorer, Process Monitor, и Accesschk. Services 2008. низовать безопасную защищенную до-
Доклады из темы «Портальные ре- ставку любого приложения или серви-
Средства разработки шения и групповая работа» были пос- са, оптимизировать парольную защи-
Продолжая свой рассказ о докладах вящены различным аспектам разра- ту приложений и создать систему гло-
конференции, мне хотелось бы рас- ботки и внедрения бизнес-порталов бального видео-аудита работы поль-
сказать о выступлениях, посвящен- для увеличения эффективности рабо- зователей с приложениями.
ных инструментам и технологиям раз- ты предприятия в целом. Помимо Citrix в этой тематике были
работки программного обеспечения. также представлены доклады о средс-
Здесь были доклады, посвященные Объединенные голосовые твах виртуализации от HP, решения
перспективам языка C#, новым воз- и почтовые коммуникации Sun на базе четырехядерных процес-
можностям платформы для создания Продолжая рассказ о темах конфе- соров AMD Opteron и решения по со-
графических интерфейсов для веб- ренции, хотелось бы рассмотреть на- зданию систем документооборота
приложений Silverlight 2, новой вер- правление «Объединенные голосо- на основе Microsoft Sharepoint.
сии системы разработки приложений вые и почтовые коммуникации». Здесь В завершении конференции бы-
Visual Studio 2010. был доклад «Новый виток эволюции ло сделано важное объявление, Стен
Док лад «Windows Presentation в объединенных коммуникациях. Office Биргер, возглавлявший российское
Foundation 3.5 SP1 – новые возможнос- Communication Server 2007 R2», посвя- представительство Microsoft, покида-
ти разработки интерактивных клиент- щенный новым возможностям Office ет свой пост, и на его место приходит
ских приложений» был посвящен сред- Communication Server 2007 и средствам Николай Прянишников, до этого руко-
ствам создания интерактивных прило- построения систем объединенных ком- водивший «Вымпелкомом». Таким об-
жений с учетом существенных улучше- муникаций в корпоративной сети. разом, со следующего года во главе
ний в .NET Framework 3.5 SP1. Также в этой теме были уже упо- компании человек, хорошо знакомый
Еще в одном док ладе расска- минавшиеся ранее доклады по сред- со спецификой российского бизнеса
зыва лос ь о будущей технологии ствам защиты от спама в Microsoft и его современными реалиями.
ASP.NET 4.0. Вообще, стоит отметить, Exchange и построению инфраструкту- В целом конференция произве-
что многие технические доклады, пос- ры объединенных коммуникаций. ла положительное впечатление. Было
вященные средствам разработки были много интересных докладов, посвя-
связаны с использованием веб-техно- Доклады партнеров щенных новым технологиям. Так что,
логий, как альтернативы клиентским В завершение своего отчета о конфе- полагаю, «Платформа 2009» задала
приложениям. ренции, я расскажу о докладах парт- вектор развития современных IT-тех-
Один из докладов так и назывался неров. Прежде всего следует отметить нологий на ближайшее время.
«Актуальна ли еще разработка клиент- доклады от Citrix. Этот производитель Cайт, посвященный конференции, –
ских приложений или настало время представил ряд сообщений, в которых http://platforma2009.ru.
писать только под Web?». Его авторы рассматривалось использование раз-
проводили анализ текущих техноло- личных средств виртуализации, от да- Текст: Андрей Бирюков
гических возможностей и ориентиров тацентра до десктопа. Фото: Евгения Тарабрина
для Windows и веб-приложений. Еще один интересный доклад был


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
иза х!
и х пр
о ваш
вай зо в те
забы ыш а
п р и
ны
Не ы г р к о в а
роз о п уб
ли
тоги то и уду т да.
м , ч А » б 9 г о
о м инае р и з ДВ а л я 200
На п
к и й п ф е вр з Т Р И»
А д м инс н а л а 25 и й при о ва л
« у р с к и р
с а й те ж « А д мин
а р е г и с тр
на р ыш а , к то з н а ла.
ы г е р
а м и роз в я тс я вс е р о в жу д ать.
тни к та н о о м е ж
Учас тически с д у щ их н о у м е ни
о м а п р е ды я т ольк
ав т ов и з би т с rIT –
к о д а д о e c u
шес т
ь
в а м по н а н ии S
п
э то т ра з з от ком
В
п е р пр и
ан с у И»
ы г р з Т Р
уд е т ра з и й п ри
Б
б у к . д м ин ск
ноу т р и з ов «А года.
ы ш ап а 2 0 09
р
г и р оз ыг ы 4 м ар т
Ито о д в ед е н
тп
буду

зяев!
и х хо
т сво
ы ж ду
Приз

Более подробную информацию о сроках и правилах проведения розыгрышей призов смотрите на сайте журнала – www.samag.ru
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование

Анализируем трафик
с Nulog2

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

Проект NuLog2 нию данных с ULOG, например, демон тернете встречаются и другие его на‑
В GNU/Linux все сетевые пакеты прохо‑ ulogd [1], написанный самим Гараль‑ звания – NuLog1 или ulogd-php). Раз‑
дят через Netfilter, в силу чего он и об‑ дом Велте, specter [2], построенный на работка последнего приостановле‑
ладает самой достоверной информа‑ базе ulogd 1.02, и ulog‑acctd [3]. Стоит на в июле 2007 года, но уже через ме‑
цией о количестве переданных и при‑ заметить, что основные разработки сяц начата работа над его второй вер‑
нятых данных. В 2000 году Гаральдом представленных проектов датированы сией – NuLog2, которая позициони‑
Велте (Harald Welte) был написан патч 2005 годом, правда, это не мешает их руется уже как анализатор журналов
к ядру – ULOG (Userspace Logging), полноценно использовать и до сих пор. Netfilter и NuFW.
позволяющий получать эту инфор‑ И только ulogd, о возможностях которо‑ В отличие от предшественника, на‑
мацию в пространстве пользователь‑ го будем говорить по ходу статьи, не‑ писанного на PHP, код NuLog2 полно‑
ских процессов (user space) в удобном давно начал опять активно развивать‑ стью переписан на Python с исполь‑
виде. Несмотря на то что «добраться» ся. Другие проекты нацелены на выда‑ зованием среды разработки Twisted.
до нужных данных теперь стало на по‑ чу информации, полученной при помо‑ Но, несмотря на все отличия, NuLog2
рядок проще, администраторам прихо‑ щи программ первой группы в удоб‑ использует ту же модель данных, по‑
дилось самостоятельно решать проб‑ ной форме – scanulog, ulog-monitor, этому очень просто можно перейти
лему их съема, обработки и выдачи Webfwlog и Nulog2. Возможностям пос‑ с NuLog на NuLog2 без потери инфор‑
в нужном виде. Как результат появи‑ леднего и посвящена статья. мации. Кроме среды разработки, изме‑
лось несколько проектов, решающих Проект NuLog2 [4] является даль‑ нена и лицензия с GPL v2 на GPL v3.
эти проблемы. Некоторые обеспечи‑ нейшим развитием PHP-интерфей‑ В настоящее время интерфейс
вали понятный интерфейс к получе‑ са к ulogd и NuFW [5]– NuLog (в Ин‑ обеспечивает просмотр информации


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование
о разрешенных, заблокированных
пакетах по IP-адресам и пользовате‑
лям (только NuFW), TCP- и UDP-пор‑
там, а также приложениям, задейство‑
ванным в процессе соединения (толь‑
ко NuFW).
Поддерживаются обе версии про‑
токола IPv4 и IPv6, возможен деталь‑
ный просмотр каждого пакета, вывод
истории запросов. Все данные сведе‑
ны в таблицы и графики, предлагаю‑
щие просмотр в удобном виде. Возмо‑
жен экспорт данных в CVS-файл.
Реализованы функции поиска, ин‑
терфейс, написанный с использова‑
нием технологии AJAX, полностью
настраиваемый. В настоящее время
NuLog2 не локализован, но все пара‑
метры понятны и без перевода, так как
соответсвуют устоявшимся терминам. Интерфейс NuLog2 сразу после установки
Предвидя вопросы, скажу, что, к боль‑
шому сожалению, такой востребо‑
ванной функции как учет трафика, в
NuLog2 нет.

Установка и настройка
ulogd
Ознакомиться с возможностями Nulog2
(а также NuFW и интерфейса для его
настройки Nuface) можно в дистри‑
бутиве NuFW.live [6], который выпол‑
нен в формате LiveCD, основанном на
KNOPPIX. Мы же рассмотрим установ‑
ку его на рабочую систему на приме‑
ре Ubuntu 8.04 LTS, хотя много из ска‑
занного применимо и для других дис‑
трибутивов.
Для регистрации событий необ‑
ходим модуль ядра ipt_ULOG.o, кото‑ В NuLog2 реализованы функции поиска по нескольким параметрам
рый появился в ядре начиная с вер‑
сии 2.4.18-pre8. Тому, кто использует более ранний релиз В репозитарии Ubuntu имеются нужные пакеты для уста‑
ядра, следует его обновить или установить патч ulog-patch новки ulogd. Но следует знать, что сегодня существует две
с netfilter patch‑o‑matic. Ядро, используемое в Ubuntu 8.04 ветки: стабильная 1.2x и находящаяся пока в стадии разра‑
по умолчанию: ботки ulogd-2.x. Последняя имеет несколько больше встро‑
енных модулей, кроме этого, в ней реализована система
$ uname -r фильтров (подробнее во врезке «Сборка ulogd2 в Ubuntu»).
2.6.24-16-generic Для работы NuLog2 достаточно и релиза 1.23 (апрель
2005 года), который и доступен в репозитарии Ubuntu.
В параметрах сборки ULOG активирован:
$ sudo apt-cache showpkg ulogd | grep -i versions
$ grep -i ulog /usr/src/linux/.config Versions: 1.23
CONFIG_BRIDGE_EBT_ULOG=m
CONFIG_IP_NF_TARGET_ULOG=m
Устанавливается стандартно:
Забегая чуть вперед, скажу, что после загрузки демона
ulogd в списке lsmod должен появиться нужный модуль: $ sudo aptitude install ulogd ulogd-mysql

$ lsmod | grep –i ulog По умолчанию ulogd сохраняет данные в файл тексто‑


ipt_ULOG 10116 2 вого формата, подключив плагины, можно добавить под‑
держку записи в базы данных MySQL, PostgreSQL, SQLLite3,

№1, январь 2009 


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование

Аутентификация пользователя <VirtualHost *>


ServerName nulog
в NuLog2
В настоящий момент NuLog2 не имеет ни‑ ProxyPreserveHost Off
ProxyPassReverse /nulog http://localhost:8080/nulog
каких средств аутентификации пользова‑
телей. Доступ к статистике можно ограни‑ <Location /nulog>
Allow from all
чить несколькими способами: параметром AuthType Basic
address в файле wrapper.conf, который бу‑ AuthName nulog
AuthUserFile /etc/apache2/users
дет указывать на внутренний интерфейс, AuthBasicProvider file
правилами iptables/NuFW, разрешающи‑ Require valid-user
ми доступ к нужному порту только с опре‑ RewriteEngine on
деленных адресов или пользователей. Раз‑ RewriteCond %{LA-U:REMOTE_USER} (.+)
RewriteRule /nulog(.*) http://localhost:8080/nulog$1 [P,E=RU:%1]
работчики предлагают для этих целей ис‑ RewriteRule /nulog(.*) http://localhost:8080/nulog$1 [P]
пользовать веб-сервер, который будет от‑ RequestHeader set Nulog_User %{RU}e
RequestHeader unset Authorization
сылать HTTP-заголовок Nulog_User, вклю‑ </Location>
чающий имя пользователя. </VirtualHost>
Для веб-сервера Apache записываем apache2.conf следующие дирек тивы Далее создаем учетные записи при по‑
в конфигурационный файл /etc/apache2/ (см. листинг). мощи htpasswd.

файл формата PCAP/Tcpdump или syslog. Для работы Все настройки UFW находятся в каталоге /etc/ufw, син‑
NuLog2 в выбранном варианте необходима поддержка таксис команд несколько напоминает iptables, но чуть про‑
MySQL, модули для работы с которой как раз и находятся ще и понятнее. По умолчанию UFW отключен, и перед за‑
во втором пакете. пуском демона необходимо в файле /etc/ufw/ufw.conf раз‑
Конфигурационный файл по умолчанию находится в /etc/ решить его запуск, заменив строку:
ulogd.conf, если он раположен в другом месте, на него мож‑
но указать при помощи параметра -c. В отличие от ulogd2, # set to yes to start on boot
ENABLED=no
в котором на порядок больше настроек, файл ulogd.conf го‑
раздо проще, значения основной части понятны: на

[global] ENABLED=yes
# Файл журнала и уровень журналирования
logfile="/var/log/ulog/ulogd.log"
# debug(1), info(3), notice(5), error(7) or fatal(8) Правила регистрации находятся в файле /etc/ufw/
# Вначале лучше поставить 1, а затем после полного
# прогона переключить на 5 after.rules и по умолчанию выглядят так:
loglevel=1
# Плагины вывода $ cat /etc/ufw/after.rules
# Текстовый формат ...
plugin="/usr/lib/ulogd/ulogd_LOGEMU.so" # catchall for logging
# Для вывода в MySQL, пока отключаем -A ufw-after-input -m limit --limit 3/min ↵
#plugin="/usr/lib/ulogd/ulogd_MYSQL.so" --limit-burst 10 -j LOG ↵
# Параметры вывода для разных плагинов --log-prefix "[UFW BLOCK INPUT]: "
# Текстовый -A ufw-after-forward -m limit --limit 3/min ↵
[LOGEMU] --limit-burst 10 -j LOG ↵
file="/var/log/ulog/syslogemu.log" --log-prefix "[UFW BLOCK FORWARD]: "
# Подключение к MySQL
[MYSQL]
table="ulog" Чтобы переключить их на ULOG, достаточно заменить
pass="pass"
user="user" LOG на ULOG (параметры с limit можно убрать):
db="ulogd"
host="localhost" -A ufw-after-input -m limit --limit 3/min ↵
--limit-burst 10 -j ULOG ↵
Далее нужно в правилах iptables указать, чтобы он ис‑ --ulog-prefix "[UFW BLOCK INPUT]: "
пользовал ULOG вместо LOG. В общем случае идея очень -A ufw-after-forward -m limit --limit 3/min ↵
--limit-burst 10 -j ULOG ↵
проста, нужно в правилах заменить строки вида: --ulog-prefix "[UFW BLOCK FORWARD]: "

iptables -A FORWARD $FILTER -j LOG Теперь включаем регистрацию:

на $ sudo ufw logging on


Logging enabled
iptables -A FORWARD $FILTER -j ULOG
И проверяем:
Но в Ubuntu начиная с версии 8.04 для управления пра‑
вилами Netfilter используется – UFW (Uncomplicated firewall). $ sudo iptables -L -n | grep ULOG
Поэтому весь процесс здесь выглядит несколько иначе, чем Logging enabled
в других дистрибутивах. ULOG all -- 0.0.0.0/0 0.0.0.0/0

10
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование
limit: avg 3/min burst 10 ULOG copy_range 0 nlgroup 1 prefix ми доступны по адресу http://software.inl.fr/releases/Nulog2.
`[UFW BLOCK FORWARD]: ' queue_threshold 1 Скачиваем и распаковываем обычным образом. Созда‑
ULOG all -- 0.0.0.0/0 0.0.0.0/0
limit: avg 3/min burst 10 ULOG copy_range 0 nlgroup 1 prefix ем базу данных и учетную запись.
`[UFW BLOCK INPUT]: ' queue_threshold 1
$ mysql -uroot -prootpassword
> CREATE DATABASE ulogd;
Перезапускаем демон ulogd: > GRANT ALL PRIVILEGES ON ulogd.* TO 'user'@'localhost' ↵
IDENTIFIED BY 'pass';
$ sudo /etc/init.d/ulogd restart
В подкаталоге scripts архива находятся файлы для соз‑
Параллельно проверяем записи в файле журнала: дания таблиц. Для IPv4-сети выбираем файл ipv4.sql:

$ tail -f /var/log/ulog/syslogemu.log $ mysql -uuser -ppass ulogd < ./scripts/ipv4.sql


Dec 23 21:56:06 router FORWARD IN=eth0 OUT=eth1
MAC=00:e0:4d:07:c2:03:00:1d:60:9a:b8:8e:08:00 SRC=192.168.1.195 Для улучшения производительности можно использо‑
DST=192.168.0.1 LEN=48 TOS=00 PREC=0x00 TTL=127 ID=26261 DF
PROTO=TCP SPT=1135 DPT=8080 SEQ=508149838 ACK=0 WINDOW=65535 вать триггеры, которые будут задействованы при вставке
SYN URGP=0 данных в некоторые таблицы (usersstats, offenders, tcp_ports,
udp_ports):
Если все нормально, можно снимать комментарии
со строк, отвечающих за работу с MySQL. В пакете ulogd- $ mysql -uroot -ppass ulogd < ./scripts/triggers.py
mysql имеется файл /usr/share/doc/ulogd-mysql/mysql.table,
предназначенный для создания таблиц в MySQL. Но раз‑ В ранних версиях MySQL (младше 5.0.32) перед запус‑
работчики NuLog предлагают свой файл, который и необ‑ ком скрипта следует удалить строку:
ходимо использовать. Работа с NuFW ранних версий опи‑
сана в [5], поэтому останавливаться на этом вопросе не бу‑ DROP TRIGGER IF EXISTS update_cache;
ду. Тем более что NuFW для NuLog2 идет как опциональный
компонент. Теперь все готово к установке NuLog2. иначе получим ошибку. Перезапускаем ulogd, чтобы он на‑
чал собирать данные в базу:
Установка NuLog2
Для установки и работы NuLog2 потребуется ряд пакетов. $ sudo /etc/init.d/ulogd restart
В Ubuntu установить их можно командой:
Чтобы установить Nulog2, достаточно выполнить скрипт
$ sudo apt-get install python2.4 python-twisted ↵ setup.py, находящийся в дистрибутиве:
python-nevow python-matplotlib gettext ↵
python-soappy python-mysqldb python-cairo ↵
python-ipy python-numpy python-docutils $ sudo ./setup.py install

Разработчики в документации приводят вместо И затем для сборки документации:


apt‑get программу aptitude, но в первом случае будет ска‑
чано всего 45 Мб архивов вместо 154 Мб при использова‑ $ make
нии aptitude. Актуальной версией на момент написания этих
строк являлась 2.1.3, датированная декабрем 2008 года, ко‑ Теперь можно приступать к настройкам. Конфигураци‑
торую и будем устанавливать. Архивы с исходными текста‑ онные файлы Nulog2 находятся в каталоге /etc/nulog, внут‑
ри имеется несколько файлов, три из
которых основные: default.wrapper.conf,
default.core.conf' и default.nulog.conf.
Чтобы их активировать, нужно убрать
префикс default из имени – wrapper.conf,
core.conf' и nulog.conf.
NuLog2 для визуализации и вывода
данных использует собственный веб-
сервер, настройки которого указыва‑
ются в wrapper.conf.

[server]
port=8080
vardir = /var/lib/nucentral/
address = 0.0.0.0

# список модулей
[modules]
nulog-core=yes
nulog-web=yes
Интерфейс NuLog2 легко видоизменить auth=yes

№1, январь 2009 11


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование

Сборка ulogd2 в Ubuntu Для сборки, кроме самого архива с ис‑ На момент написания этих строк бы‑
Тем же, кто решил установить самую пос‑ ходными кодами, потребуются самые пос‑ ла актуальной версия ulogd-2.0.0beta2,
леднюю версию ulogd, приведу краткую ледние версии библиотек – libnfnetlink, при использовании которой могут появ‑
инструкцию по компиляции. Возможности libnetfilter_log (захват пакетов) и libnetfilter_ ляться разного рода ошибки. Поэтому
во второй версии несколько шире. Так, уже conntrack (захват потока conntrack), кото‑ лучше использовать более «свежую» svn/
реализовано три типа плагинов: источник, рые можно скачать по ссылкам на страни‑ git‑версию. В этом случае для сборки, кро‑
фильтр и вывод. Плагины комбинируются це http://www.netfilter.org/projects. Некото‑ ме, собственно, build-essential и subversion
в стек (stack), который, собственно, и ука‑ рые из этих библиотек есть в репозитарии, в Ubuntu, потребуется установить еще ряд
зывает, что нужно делать демону. То есть но их версия существенно отстает от тре‑ пакетов:
теперь, чтобы захватить и вывести данные буемой. В случае возникновения проблем $ sudo apt-get install autoconf ↵
в файл, необходимо явно задавать: конфигурационный скрипт самостоятель‑ automake1.9 libtool
но укажет, чего ему не хватает. Далее как обычно.
stack=log1:NFLOG,op1: LOGEMU
checking for LIBNETFILTER_CONNTRACK... no $ svn co https://svn.netfilter.org/ ↵
Иначе получим ошибку вроде: configure: error: Cannot find libnetfilter_ netfilter/branches/ulog/ulogd2
conntrack >= 0.0.95 $ cd ulogd2
~/ulogd2$ ./autogen.sh; ./configure; ↵
Mon Dec 29 21:53:14 2008 <8> ulogd.c:1102 make; sudo make install
not even a single working plugin stack Компиляция библиотек стандартна:
$ ./configure Так как по умолчанию установка про‑
Означающую, что ulogd попрост у $ make изводится в /usr/local, следует указать путь
$ sudo make install
не знает, что ему делать. к /usr/local/lib/ulogd в файле /etc/ld.so.conf,
В стек может входить только по одно‑ Для удобства можно собрать deb-па‑ чтобы динамические библиотеки были
му плагину источника и вывода. Количест‑ кет, воспользовавшись инструкцией The видны.
во фильтров неограничено. Конфигурация Ubuntu Packaging Guide (https://help.ubuntu. Кроме этого, необходимо вручную пе‑
может содержать несколько стеков, поэто‑ com/6.10/ubuntu/packagingguide/C). ренести конфигурационные файлы и соз‑
му отбор нужной информации можно на‑ Если в процессе конфигурирования дать ссылки для запуска:
строить действительно тонко. ulogd будут получены сообщения вроде: $ sudo cp -v ulogd.conf ↵
Кроме этого, в ulogd2 используется не‑ /usr/local/etc/ulogd.conf
configure: WARNING: mysql.h not found $ sudo cp -v ulogd.logrotate ↵
сколько измененная схема SQL, в которой checking for mysql_close in -lmysqlclient... no /etc/logrotate.d/ulogd
данные разделены на несколько таблиц
configure: WARNING: libmysqlclient.so not found $ sudo cp -v ulogd.init ↵
/etc/init.d/ulogd
(вместо одной в ulogd), что дает возмож‑ Это означает, что нет заголовочных $ sudo ln –s /etc/init.d/ulogd ↵
ность легко добавить дополнительную ин‑ файлов для активации поддержки MySQL. /etc/rcS.d/S99ulogd
формацию, создав новую таблицу. В отли‑ Так как для работы NuLog2 такой модуль После настроек советую в первый раз
чие от ulogd1 вторая версия построена та‑ необходим, доустанавливаем пакет, в ко‑ запустить демон в консоли, чтобы просмот‑
ким образом, что изменение схемы SQL ни‑ тором находятся нужные файлы. реть возможные ошибки.
как не повлияет на его работу. Кроме ULOG, $ sudo aptitude install ↵ $ sudo /usr/local/sbin/ulogd
поддерживается и NFLOG. libmysqlclient15-dev

Далее для создания рабочего окружения запускаем Файл nulog.conf содержит настройки, актуальные для
скрипт install_defconf.sh. веб‑интерфейса (их скорее всего трогать не придется).

$ ./script/install_defconf.sh # URL для доступа к основной странице


url=/nulog/

Скрипт задаст несколько вопросов по размещению # Заголовок веб-страницы


maintitle=Log ULOG
рабочего каталога и конфигурационных файлов NuLog # Использование Nuface2 ACLs
и NuFW. В большинстве случаев можно использовать на‑ # nuface_acl=https://localhost/nuface/%%s.php?acl=%%s
стройки, предлагаемые по умолчанию. [Sessions]
Параметры подключения к MySQL описываются в фай‑ # разрешение на анонимное подключение
anonymous=yes
ле core.conf: [Misc]
# формат даты
datetime=%%y-%%m-%%d %%H:%%M:%%S
# Database configuration # Интеграция с панелью дистрибутива Edenwall
[DB] # (http://www.edenwall.com), можно просмотреть в NuFW.Live
host=localhost edenwall_integration=0
db=ulog
user=user
password=pass Разработчики приготовили стартовый скрипт для бо‑
лее удобного запуска NuLog2. Копируем его в нужное мес‑
# Тип БД mysql/pgsql
dbtype=mysql то и создаем необходимые ссылки для автоматической за‑
грузки.
# Тип sql scheme ulog/triggers
type=triggers
ip=4 $ sudo cp –v ./debian/init.d /etc/init.d/nulog
table=ulog $ sudo ln –s /etc/init.d/nulog /etc/rcS.d/nulog

12
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование
И запускаем:

$ sudo /etc/init.d/nulog restart

Или чтобы получить больше отла‑


дочной информации:

$ sudo twistd -noy /usr/sbin/nulog.tac

Набираем в веб-браузере http://


localhost:8080/nulog / и попа даем
на главную страницу.
Чтобы разобраться с возможнос‑
тями Nulog2, потребуется от силы
5 минут. Все достаточно просто и по‑
нятно.

Итог Использование NuFW расширяет возможности NuLog2


Мы получили систему, которая позво‑
ляет отслеживать сетевые события. Конечно, чтобы пол‑ 2. Сайт проекта specter – http://joker.linuxstuff.pl/specter.
ностью оценить возможности NuLog2, потребуется уста‑ 3. Сайт проекта ulog-acctd – http://alioth.debian.org/projects/
новить и настроить NuFW, что позволит не только разре‑ pkg‑ulog-acctd.
шать выход в Интернет по учетным записям, а не IP-адре‑ 4. Сайт проекта NuLog2 – http://software.inl.fr/trac/wiki/EdenWall/
сам, но и привязать события к конкретному пользователю NuLog.
или приложению. 5. Яремчук С. Шлюз аутентификации пользователей NuFW.
//Системный администратор, №3, 2006 г. – С. 46-50.
1. Сайты проекта ulogd – http://www.gnumonks.org/projects, http:// 6. LiveCD, демонстрирующий возможности NuFW – http://
www.netfilter.org/projects/ulogd. live.nufw.org.

№1, январь 2009 13


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование

Hyperic HQ – система мониторинга


корпоративного уровня

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

В
недрение на предприятии систе- системе мониторинга корпоративного Linux, Solaris 10 или старше, Mac OS X
мы мониторинга ресурсов сети уровня Hyperic HQ. (Intel x86), Windows 2003 Server, по-
является верным шагом на пу- средством инсталлируемых на серве-
ти управления развивающейся ин- О системе Hyperic HQ ры агентов.
фраструктурой. За счет постоянно- Hyperic HQ – это всеобъемлющий набор Hyperic HQ доступна в двух вари-
го контроля всех важных узлов и эле- инструментов, который позволяет: антах для загрузки: Enterprise и Open
ментов повышается надежность и от- n отслеживать производительность Source. На настоящий момент послед-
казоустойчивость всей системы в це- системы; ней стабильной версией является 3.2.
лом. При возникновении критических n собирать и хранить данные об аппа- Отличие версии Enterprise от Open
ситуаций, система оповестит ключе- ратных средствах сети, средствах Source заключается в отсутствии у пос-
вой персонал о возникших неполад- виртуализации и приложениях; ледней некоторой функциональности,
ках, либо и вовсе поможет предотвра- n создавать оповещения об интере- в частности технической поддержки,
тить проблему. Одной из основных сующих нас событиях – используя возможности создания своих шабло-
проблем при внедрении такой систе- единый центр управления, доступ- нов оповещения, авторизации LDAP
мы, становится выбор из всего мно- ный через веб-интерфейс. и Kerberos, но, несмотря на это, она
гообразия предлагаемых продуктов. вполне пригодна для использования
В этом обзоре мы подробно остано- Комплекс достаточно прост в ус- на малых предприятиях со средней
вимся на одном из таких вариантов – тановке и может быть развернут на сложности инфраструктурой.

14
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование
Также стоит упомянуть о существовании совместного
открытого проекта компаний Red Hat и Hyperic, под назва-
нием RHQ, нацеленного на управление корпоративной ин-
формационно-технической инфраструктурой. RHQ разра-
батывается как единый набор инструментов, которые бу-
дут включены в будущие издания продуктов Red Hat, та-
ких как JBoss Operations Network и Red Hat Network, а так-
же в сам Hyperic HQ.
Архитектура системы базируется на следующих четы-
рех основных абстракциях:
n Platform (платформа) – машина, операционная систе-
ма или любая комбинация сетей и устройств хранения
данных. Платформы являются самым нижним уровнем
в архитектуре управления и могут включать в себя та-
кие элементы, как процессоры, сетевые интерфейсы,
жесткие диски, а также файловые системы.
n Server (сервер) – это любое серверное программное Рисунок 1. Модель Application
обеспечение, которое установлено на платформу.
Hyperic HQ способно управлять различными типами сер- n 500 Мб свободного дискового пространства;
веров, такими как веб-серверы с базами данных, сер- n под держиваемые операционные системы Linux,
веры обмена и многое другое. Windows XP или 2003 Server, Solaris 8 или выше, HP‑UX,
n Service (служба) – это один из компонентов серверов, AIX, FreeBSD.
который выполняет конкретную задачу. Примером такой
службы может являться виртуальный хост в настройках Общими требованиями для сервера и агента является
Apache. наличие JRE или JDK 1.4 или 1.5. И сервер, и агент уже со-
n Application – это понятие представляет собой идею держат в комплекте JRE, которое рекомендовано для ис-
того, что одна общая задача выполняется на различ- пользования. Однако иногда бывает предпочтительнее ис-
ных платформах и обеспечивается разными сервера- пользовать JRE (или JDK), которые могут быть уже уста-
ми. Пользовательский интерфейс предлагает способ новлены в системе.
управления инфраструктурой с прикладной точки зре-
ния в противовес аппаратной. Смысл в том, чтобы объ- Установка Hyperic HQ
единить службы, выполняющие одну глобальную зада- Установка и тестирование системы производилось мной
чу в единые группы. Для большей наглядности и пони- на Windows Vista Ultimate SP1 и CentOS 5.1. Хотя Windows
мания этой абстракции предлагаю взглянуть на рис. 1. Vista и не заявлена в документации как поддерживаемая
платформа, Hyperic HQ была проинсталлирована, и без ка-
Системные требования ких- либо проблем выполняла свои функции.
Необходимое аппаратное обеспечение для нормальной ра- Процесс установки системы на Windows достаточно
боты серверной части: прост. После скачивания архива распаковываем его в ко-
n Процессор Pentium 4 или эквивалент, 1 ГГц или выше рень системного диска и запускаем файл setup.bat из кор-
(рекомендуется два процессора Pentium Xeon 2.4 ГГц ня установочной директории. Откроется консоль со следу-
или эквивалент); ющим содержимым:
n 1 Гб или выше (рекомендуется 4 Гб или более);
n 1-5 Гб свободного дискового пространства; C:\<Installation Directory>\setup.bat
Initializing Hyperic HQ Installation...
n Поддерживаемые операционные системы Linux, Choose which software to install:
Windows XP или 2003 Server, Solaris 8 или выше, 1: Hyperic HQ Server
2: Hyperic HQ Shell
HP‑UX. 3: Hyperic HQ Agent
You may enter multiple choices, separated by commas.
Hyperic HQ Server по умолчанию настроен на работу
со своей собственной базой данных, однако есть возмож- Здесь предлагается выбрать компоненты для уста-
ность хранения информации и в других базах данных. Под- новки, причем можно выбрать сразу несколько компонен-
держиваются следующие БД: тов через запятую. Выбираем установку сервера и агента,
n PostgreSQL 8 или выше; то есть вводим «1, 3».
n Oracle 9i или 10g; Далее предлагается выбрать путь для установки сер-
n MySQL 5.0.45 или выше. вера, по умолчанию это C:\Program Files, мы не будем муд-
рить и просто нажмем клавишу <Enter>. Если на вашей
Необходимое аппаратное обеспечение для нормаль- системе не обнаружен SMTP-сервер, который будет ис-
ной работы агента: пользоваться системой для отправки уведомлений, то бу-
n Celeron 500 МГц или выше, или эквивалент; дет запрошен его адрес или доменное имя. Следующим
n 256 Мб ОЗУ; шагом установщик запросит путь для установки аген-

№1, январь 2009 15


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование

Рисунок 2. Обобщенная информация о ресурсах

та, по умолчанию это опять все тот же C:\Program Files. Затем спрашивается, хотим ли мы, чтобы соединение
На этом вопросы заканчиваются, и начинается установ- между сервером и агентом было безопасное, – по умолча-
ка сервера, агента и встроенной базы данных. Если ус- нию это нет. Включить эту опцию имеет смысл в том слу-
тановка остановится на Starting built-in database... то на- чае, если сервер и агент для соединения используют Ин-
жмите <Enter> для продолжения. По завершении уста- тернет. В нашем же случае оставляем все как есть и жмем
новки инсталляционный скрип сообщит вам об удачной <Enter>.
установке.
Should Agent communications to HQ always be secure [default=no]:
Следующим шагом инсталляции будет установка сер-
вера, в качестве службы Windows. Для этого проследуйте Далее, предлагается ввести номер порта для связи
в директорию C:\Program Files\server-x.x.x\bin, где x.x.x но- с сервером – по умолчанию это порт 7080. Жмем <Enter>
мер версии, и запустите оттуда файл hq-server.exe с клю- и переходим к следующему пункту.
чом -i. После чего стартует сервис из оснастки «Управление
What is the HQ server port [default=7080]:
компьютером → Службы». Заметьте, что вместе со служ-
бой сервера была также установлена служба Hyperic HQ Следующими двумя пунктами будут запрошены логин
Database, которая стартует автоматом сразу после запус- и пароль для доступа к серверу – по умолчанию это hqadmin/
ка сервера. hqadmin, если вы не изменяли ни то, ни другое, то жмем
Далее переходим к агенту. Запуск производится из ди- <Enter> и идем далее.
ректории C:\Program Files\agent-x.x.x\bin, где x.x.x номер вер-
сии. После старта hq-agent.exe в консоль выводится: - Testing insecure connection ... Success
What is your HQ login [default=hqadmin]:
What is your HQ password:
Starting agent
- Unable to load agent token file. Generating a new one ... Done
- Invoking agent Теперь определяем IP-адрес и порт, которые сервер бу-
Agent successfully started дет использовать для связи с агентом, здесь также все ос-
[ Running agent setup ]
тавляем по умолчанию.
What is the HQ server IP address:
What IP should HQ use to contact the agent [default=127.0.0.1]:
What port should HQ use to contact the agent [default=2144]:
Здесь предлагается ввести IP-адрес сервера, так как
серверная часть находится на той же машине, что и агент, Если инсталляция прошла успешно, вы должны уви-
то мы пишем 127.0.0.1. деть следующее:

16
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование

Рисунок 3. Наши сервисы

Рисунок 4. Индикаторы метрик

- Received temporary auth token from agent же как и сервер с ключом -i, и стартуем сервис. Установ-
- Registering agent with HQ ка агента и сервера под Linux производится путем запус-
- HQ gave us the following agent token
1104817706987-8534327776788402831-4021000845020676153 ка установочного скрипта setup.sh и никаких затруднений
- Informing agent of new HQ server вызывать не должна. После установки запускаем сервер
- Validating
- Successfully setup agent
/home/hyperic/bin/hq-server.sh start и агент /home/hyperic/bin/
hq-agent.sh start. Все вопросы, выводимые в консоль, пол-
Вся установка агента завершена успешно. Для того что- ностью идентичны тем, что выводятся при запуске серве-
бы агент выполнялся в качестве службы, запускаем его, так ра и агента в Windows.

№1, январь 2009 17


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование

Рисунок 5. Данные метрик

Рисунок 6. Опись данных о ресурсе. Вкладка Inventory

Работа с программой в адресной строке вашего любимо- на вся основная информация о рабо-
После того как сервер и клиент уста- го браузера your _ip:7080 и попадаем те системы, избранные ресурсы, не-
новлены и сконфигурированы, мож- на страницу авторизации, по умолча- давние оповещения и тому подобные
но переходить к проверке работос- нию логин/пароль для доступа к серве- вещи, позволяющие видеть картину
пособности и настройке програм- ру hqadmin/ hqadmin, после регистра- происходящего в целом. На данный
мы. Для контроля и анализа получен- ции на сервере в целях безопасности момент нас интересует раздел Auto-
ных сервером данных, а также опове- рекомендуется сразу же сменить па- Discovery – это автообнаружение сер-
щения об интересующих нас событи- роль – это можно сделать в разделе висов. Если при инсталляции вы вы-
ях, программа имеет весьма удобный Administration веб-интерфейса. брали установку агента, и он у вас за-
веб-интерфейс. Если вы не меняли но- При успешной регистрации вы пущен и нормально функционирует,
мер порта при установке, то он досту- попадете на стартовую страницу то вы увидите, что компьютер, на ко-
пен на порту 7080, поэтому набираем Dashboard (см. рис. 2), здесь собра- тором установлен агент, в нашем слу-

18
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование

Рисунок 7. Страница создания оповещений

чае, это тот же компьютер, на кото- ществляется одноименными кнопка- таблицы с отображением минимально-
ром установлен сервер, то он появил- ми, расположенными в верхнем пра- го, среднего, пикового значений, так-
ся в списке вместе с перечнем ресур- вом углу списка. же показатели доступности и интервал
сов для мониторинга. Ставим галочки Теперь, если мы в разделе Platforms обновления данных.
напротив тех сервисов, которые же- нажмем на нашу, пока что единствен- Теперь, чтобы описание систе-
лаем контролировать, и жмем Add to ную платформу, то попадем в раздел мы не сводилось к сухому описанию
Inventory – все наши ресурсы добав- текущего состояния ресурсов. Так мож- вкладок, давайте здесь мы перейдем
лены в опись сервисов. но сделать, нажав на любой из име- к практике, и для наибольшей понят-
Теперь посмотрим, что у нас полу- ющихся ресурсов, будь то платфор- ности и наглядности создадим сервис.
чилось. Переходим через главное ме- ма, сервер или сервис. Но мы начнем Итак, перейдем на вкладку Inventory
ню на вкладку «Resource → Browser» с платформы, так как она является (см. рис. 6), здесь в разделе Services
(см. рис. 3). Здесь мы видим уже зна- самым нижним уровнем абстракции отображаются сервисы, относящи-
комые нам из описанной выше архи- в архитектуре системы. Итак, здесь еся непосредственно к нашей плат-
тектуры системы разделы. В разде- сверху мы видим краткую информа- форме. Жмем кнопу NEW и попада-
ле Platforms отображается наша плат- цию о конфигурации нашей платфор- ем на страницу создания нового сер-
форма, пока она у нас одна. В разде- мы: операционная система, парамет- виса. Тут пишем имя создаваемого
ле Servers – наши серверы, среди кото- ры сети, количество оперативной па- сервиса, при желании его описание,
рых виден и наш агент, согласно архи- мяти, тип процессора. Ниже несколь- и ниже выбираем тип. Для примера
тектуре системы агент, также являет- ко вкладок, в нашем случае их четы- давайте создадим сервис, контроли-
ся сервером. В разделе Services нахо- ре, в зависимости от того, что откры- рующий состояние службы Windows
дятся наши сервисы, которые в данный то, их может быть разное количество. «Диспетчер печати», выберем Windows
момент мониторятся системой. Также Первая вкладка Monitor (см. рис. 4), Service и нажмем OK. Далее, в разде-
имеются разделы Compatible Groups/ в левой колонке Resources – список ле Configuration Properties жмем кноп-
Clusters, Mixed Groups и Applications, сервисов и серверов, находящихся ку Edit и в поле service_name вписы-
которые мы можем создать при не- на данной платформе. Середина стра- ваем реальное имя службы, в нашем
обходимости через Tools Menu, рас- ницы разделена на две вкладки, пер- случае это Spooler, жмем OK. Все, сер-
положенные в верхнем левом углу. вая Indicators, здесь расположены ин- вис создан, теперь, перейдя на вклад-
Просмотр списков ресурсов может дикатор доступности, ниже отобра- ку Monitor, мы можем отслеживать со-
осуществляться двумя способами: жаются графики метрик, обычно это стояние нашей службы.
по умолчанию – это List View, т.е. прос- загрузка процессора, использование Имея данные о доступности служ-
той список, либо Chart View – каждый оперативной памяти, это опять же за- бы и используемых ей ресурсов, мы
пункт отображается с миниатюрами висит от того, что открыто, и еще ни- можем на основании этого строить
графиков и цветовым представлени- же индикатор отслеживания событий. систему оповещения. Например, мы
ем доступности сервиса. Переключе- Во вкладке Metric Data (см. рис. 5) мы хотим получить оповещение, если на-
ние между режимами просмотра осу- видим все то же самое, только в виде ша служба Spooler стала недоступ-

№1, январь 2009 19


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование

Рисунок 8. Просмотр информации о системе

на. Для создания оповещения пере- чае это служба Windows, и мы можем смотреть какие-либо события или опо-
ходим во вкладку Alert и жмем NEW произвести над ней действия Start, вещения, отфильтровав их в разрезе
(см. рис. 7), задаем имя и описа- Stop и Restart прямо через веб-интер- каких-либо критериев.
ние в соответствующих полях. Ниже фейс. Также можем посмотреть ис- В последнем разделе Administration
в Condition Set задаем наше условие. торию выполняемых действий в под- предоставляется возможность управ-
Выбираем метрику Availability и усло- вкладке History. ления пользователями системы, схе-
вие «is !=(Not Equal to) 100%», то есть Следующая вкладка Views, но, пе- мами эскалации, а также настройка-
доступность службы не равна 100%, рейдя на нее, вам сообщат, что для дан- ми самой системы и платинами.
и жмем OK. После нажатия кнопки ного ресурса элементы просмотра от-
OK мы попадаем на страницу нашего сутствуют. В этой вкладке доступны Заключение
оповещения, здесь внизу мы можем для просмотра данные в реальном ре- Данная система, конечно, в первую
задать схему эскалации оповещения, жиме времени, поступающие с плат- очередь предназначена для круп-
что бывает удобно для некоторых со- формы, поэтому при помощи меню Map, ных компаний, таких как дата-цент-
бытий, схемы эскалации можно созда- расположенного в верхнем левом уг- ры и хост провайдеры, система мо-
вать в разделе Administration главного лу экрана, переходим к нашей Win32 жет применяться в гетерогенных сетях,
меню, а также кому будут отправлять platform. Там появилась кнопка Live осуществляет сбор данных по SNMP,
оповещения. Оповещения можно от- Exec (см. рис. 8), нажав на нее, мы пе- поддерживает мониторинг виртуаль-
правлять пользователям, которые име- реходим к экрану просмотра. Слева ных машин, таких как VMware или Xen,
ются в системе, – вкладка Notify HQ есть выпадающее меню, в котором до- имеется возможность кластеризации.
Users, а также на произвольно задан- ступна для выбора информация о цент- Для небольших компаний она менее
ные почтовые ящики – вкладка Notify ральном процессоре и его использова- пригодна, ввиду того, что для своей ра-
Other Recipients. Ну вот теперь, если нии, информация о файловой системе, боты требует достаточно больших вы-
остановить службу «Диспетчер печа- информация о статистике и конфигура- числительных мощностей, и как след-
ти» , вы получите оповещение об этом ции сети, а также процессы, запущен- ствие выделение под себя отдельного
на свой почтовый ящик. ные в системе, и информация о зало- сервера, что не всем по карману, в лю-
Понятие о том, как создавать опо- гинившихся пользователях. бом случае выбор за вами.
вещения, мы получили, теперь пере- Следующий раздел интерфейса Удачи!
ходим к следующей вкладке. Вкладка Analyze содержит в себе два инстру-
Control имеется не везде, но в нашем мента, предназначенные для просмот- 1. Сайт проек та Hyperic HQ – http://
случае она есть, здесь можно произ- ра и анализа оповещений Alert Center www.hyperic.com.
водить какие-либо действия над кон- и событий Event Center. Они могут быть 2. Сайт проекта RHQ-Project – http://
тролируемым объектом, в нашем слу- полезны, если вам необходимо про- www.rhq-project.org.

20
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
Реклама

Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование

Автоматическая установка драйверов

Иван Коробко
Решить задачу пакетной установки драйверов можно разными способами. Среди них
наиболее распространенный – интеграция в дистрибутив операционной системы, однако
он не единственный. Поговорим о малоизвестных способах пакетной установки драйверов.

В
крупных организациях парк ком- Для решения этой проблемы необ- гающихся в каталоге %SystemRoot%/
пьютеров, как правило, унифи- ходимо инсталлировать часто исполь- System32.
цирован. Однако он постоянно зуемые драйверы на всех компьютерах Интерпретатор SETUPAPI находит-
обновляется. Самый распространен- на этапе разворачивания программно- ся в библиотечном файле setupapi.dll,
ный из них – интеграция пакета драй- го обеспечения. интерпретатор ADVANCEDINF – в биб-
веров в дистрибутив операционной Для обеспечения автоматической лиотечном файле advpack.dll. Ос-
системы. Существует еще несколько пакетной установки драйверов можно новным интерпретатором является
альтернативных способов, которым использовать либо командный файл, SETUPAPI. Для получения доступа
стоит уделить внимание: установка па- либо Driver Package Installer (DPInst). к интерпретаторам используется за-
кета драйверов с помощью командно- Рассмотрим подробнее два способа. пускаемый файл RUNDLL32.EXE. Фор-
го файла и с помощью Driver Package мат запуска любой библиотеки сле-
Installer. Командный файл дующий:
Довольно часто возникает ситуа- Алгоритм установки драйверов уст-
ция, когда необходимо предустановить ройств описан в INF-файле. В нем на- rundll32.exe DLL,Function Рarameters
пакет драйверов. В целях безопас- ходится информация о том, какие биб-
ности большинство сотрудников в се- лиотеки и куда необходимо скопиро- где:
ти не обладают административными вать, какие изменения сделать в ре- n DLL – имя файла библиотеки.
правами и не могут устанавливать уст- естре и т. д. В данном случае setupapi.dll или
ройства. По этой причине они не могут В Windows используется два ин- advpack.dll.
подключить без помощи администра- терпретатора INF-файлов: SETUPAPI n Function – функция, вызываемая
тора различные внешние устройства и ADVANCEDINF, которые представ- из библиотеки, или, как ее еще на-
с интерфейсом USB, Fire Ware и т. д. ляют собой два DLL-файла, распола- зывают, точка входа. Обратите вни-

22
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование
мание: название файла и вызываемой функции разде- INF-файла, служащую его точкой входа. Для этого адми-
лены запятой без пробелов. нистратор должен разбираться в синтаксисе.
n Parameters – параметры, передаваемые функции.
Driver Package Installer
Интерпретатор SETUPAPI Driver Package Installer (DPInst) – компонент, разработанный
Интерпретатор SETUPAPI позволяет: компанией Microsoft, входящий в состав пакета Microsoft
n управлять реестром: создание и удаление ключей, па- Windows Driver Install Frameworks (DIF). В настоящее время
раметров и их значений; используется DIF v 2.1. DPInst обладает возможностями:
n распаковывать CAB-файлы; n Установка Plug and Play (PnP) драйверов. По умолчанию
n управлять файлами и папками, их атрибутами; устанавливаются все подписанные PnP-драйверы, на-
n устанавливать и удалять драйверы устройств. ходящиеся в каталоге с файлом dpinst.exe. Для отклю-
чения проверки используется ключ /LM.
Для запуска процесса установки драйверов использует- n Пакетная установка драйверов с помощью файла
ся функция InstallHinfSection, для удаления – соответствен- dpinst.xml. Описание структуры XML-файла см. далее.
но unInstallHinfSection. В листинге 1 приведен пример уста- n Поддержка «тихого» режима установки. Для включения
новки драйверов, описанных в файле HP_1200.INF. режима используется ключ /S или /Q.
n Поддержка многоязычного интерфейса установщика
Листинг 1. Установка драйверов с помощью интерпретатора драйверов.
SETUPAPI
n Ведение журнала установки.
rundll32.exe setupapi,InstallHinfSection HP_1200_PPD 132 ↵ n Деинсталляция драйверов.
C:\HP_1200.INF

Функция InstallHinfSection имеет три параметра. Пер- Из перечисленных возможностей видно, что с помощью
вый из них – имя выполняемой секции INF-файла, второй – DPInst можно реализовать автоматическую установку груп-
флаг обработки файла. В таблице приведены возможные пы драйверов в «тихом» режиме. По умолчанию DPInst ус-
значения флага. Третий параметр – непосредственно имя танавливает в системе все драйверы, INF-файлы которых
INF-файла. находятся в одном каталоге с этой утилитой, однако устра-
ивать помойку из драйверов по меньшей мере некорректно.
Интерпретатор ADVANCEDINF Для решения этой проблемы используется DPInst.XML, на-
По своей сути интерпретатор ADVANCEDINF является над- ходящийся в одном каталоге с DPInst.EXE. Он представля-
стройкой над SETUPAPI, позволяющей выполнять допол- ет собой обычный текстовый файл в формате XML. Единс-
нительно следующие функции: твенное его отличие от других файлов – наличие стандар-
n однократное выполнение доустановки после входа тизированных тегов.
в систему при инсталляции и деинсталляции (Active
Setup); Установка пакета драйверов
n предварительная запись изменяемых ключей реестра Существует два способа пакетной установки: с помощью
в бинарный файл (функция отката); тега <group> и <search>. Принципиальная разница между
n запуск исполняемых файлов с параметрами в скрытом этими способами заключается в том, что с помощью тега
и нормальном режимах; <group> реализована установка драйверов, местоположе-
n вывод диалоговых окон. ние которых точно указано. Используя тег <search>, можно
установить все драйверы в указанной и ее дочерних пап-
Стандартные функции ADVANCEDINF передает на ис- ках. Рассмотрим подробнее оба способа.
полнение интерпретатору SETUPAPI.
В листинге 2 приведен аналогичный пример установ- Пакетная установка драйверов с помощью
ки PostScript драйвера принтера HP 1200. Несмотря на то тега <group>
что в функции использованы те же три параметра, их по- Для обеспечения установки пакета драйверов в файле
рядок изменился. Первый параметр – имя INF-файла, вто- DPInst.XML используется тег <group>, в котором может быть
рой – название секции, третий – флаг обработки файла три типа дочерних тегов:
(см. таблицу). n <package path = «…»/> – таких тегов может быть неогра-
ниченное количество. Значение параметра path – относи-
Листинг 2. Установка драйверов с помощью интерпретатора тельный или абсолютный путь к INF-файлу драйвера.
SETUPAPI

rundll32.exe advpack,LaunchINFSection ↵ Возможные флаговые значения обработки файлов


C:\HP_1200.INF HP_1200_PPD 132 Значение Описание
0 или 128 Не перезагружать компьютер

Вывод 1 или 129 Перезагрузка компьютера без запроса


Бесспорным преимуществом является интегрированность 2 или 130 Спросить у пользователя: перезагрузить компьютер или нет
обоих интерпретаторов, используемых в командных фай- 3 или 131 В случае необходимости перезагружать компьютер без запроса
лах, в операционную систему, однако при этом необходи- 4 или 132 В случае необходимости спросить у пользователя: перезагружать
мо точно указывать местонахождение драйвера и секцию компьютер или нет

№1, январь 2009 23


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование
n <installAllOrNone/> – в случае ошиб-
ки установки одного из драйве-
ров осуществляется деинсталля-
ция всех драйверов данного паке-
та. Этот тег по действию аналоги-
чен ключу /A утилиты DPInst.exe.
n <suppressAddRemovePrograms/> –
при наличии этого параметра масте-
ром установки не будет создаваться
соответствующая запись для каж-
дого драйвера в папке «Установка
и удаление программ», находящей-
ся в «Панели управления» (см. рису-
нок). Этот тэг по действию аналоги-
чен ключу /SA утилиты DPInst.exe.

Для автоматической установки па-


кета драйверов, состоящего из трех
драйверов, находящихся в папках
C:\hp1200\1200.inf, C:\hp3380\3380.inf, Регистрация драйвера в «Установка и удаление программ»
C:\hp4100\4100.inf, рекомендуется ис-
пользовать XML-файл, приведенный в листинге 3. язычного интерфейса. Для описания интерфейса служит
тэг <language>. С помощью параметра code задается ко-
Листинг 3. XML-файл, для автоматической установки довая страница, например, 0х0409 соответствует английс-
<?xml version="1.0" ?> кому языку, а 0х0419 – русскому (листинг 5).
<dpinst>
<group> Листинг 5. Шаблон файла DPInst.XML
<package path="c:\hp1200\1200.inf " />
<package path="c:\hp3380\3380.inf " /> <dpinst>
<package path="c:\hp4100\4100.inf " /> <language code="0х0419">
<group/> ...
</dpinst> </language>
<group>
...
Для обеспечения автоматической установки рекоменду- <group/>
ется для запуска утилиты DPInst.exe использовать два клю- </dpinst>
ча, включающих тихий режим установки (/S) и позволяющих
устанавливать неподписанные драйверы (/LM): В тэге <language> могут быть приведены различные эле-
менты, которые логически можно разделить на две группы.
DPInst .exe / S /LM К первой группе отнесем те из них, которые управляют интер-
фейсом основного диалогового окна инсталлятора, ко вто-
рой – управляющие интерфейсом лицензионного соглаше-
Пакетная установка драйверов с помощью ния. Поскольку перед системным администратором обычно
тега <search> стоит задача реализовать «тихую» установку, то ограничим-
Для пакетной установки драйверов на практике использует- ся упоминанием о поддержке многоязычного интерфейса.
ся более быстрый способ, реализованный с помощью тега Полное описание всех тегов находится в MSDN.
<search>. Его преимущество, которое в определенной ситу-
ации является серьезным недостатком, – инсталляция всех Вывод
найденных драйверов в указанном месте (листинг 4). Driver Package Installer имеет неоспоримые преимущества
перед установкой драйверов с помощью командного фай-
Листинг 4. Установка найденных драйверов в подпапках ла благодаря реализованной возможности автоматическо-
<search> го поиска драйверов в указанном месте. При этом за один
<subDirectory>*</subDirectory> заход можно установить в систему неограниченное коли-
</search>
чество драйверов.

Установка пакета драйверов с использованием Заключение


интерфейса В заключение, хочется сказать несколько слов в защиту
Утилиты DPInst.exe поддерживает многоязычный интер- командных файлов. Достаточно часто встречаются ситуа-
фейс. Текст всех диалоговых окон, лицензионное согла- ции, когда все способы перепробованы, но по тем или иным
шение и другая информация могут быть переведены раз- причинам достичь желаемого результата не удалось, тогда
работчиком драйверов или администратором. Рассмот- приходят на выручку такие способы, как установка драйве-
рим этот вопрос подробнее на примере создания русско- ров с помощью командного файла.

24
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
bugtraq

Спуфинг атака в ISC BIND Переполнение буфера в SAP GUI TabOne


Программа: BIND 9.0 все версии; BIND 9.1 все версии; ActiveX-компоненте
BIND 9.2 все версии; BIND 9.3.0, 9.3.1, 9.3.2, 9.3.3, 9.3.4, Программа: SAP GUI 6.40 Patch 29, возможно, другие вер-
9.3.5, 9.3.6; BIND 9.4.0, 9.4.1, 9.4.2, 9.4.3; BIND 9.5.0, 9.5.1; сии; SAP GUI 7.10, возможно, другие версии.
BIND 9.6.0. Опасность: Высокая.
Опасность: Низкая. Описание: Уязвимость существует из-за ошибки проверки
Описание: Уязвимость существует из-за того, что неко- границ данных в TabOne ActiveX-компоненте (sizerone.ocx)
торые функции ISC BIND некорректно проверяют дан- при копировании заголовков вкладок. Удаленный пользо-
ные, возвращаемые OpenSSL-функциями EVP_VerifyFinal() ватель может с помощью метода AddTab() добавить боль-
и DSA _do_verify(), при проверке подлинности DSA- шое количество вкладок, вызвать переполнение динами-
и NSEC3DSA-ключей. Удаленный пользователь может под- ческой памяти и выполнить произвольный код на целевой
менить ответы от зон, использующих DSA- или NSEC3DSA- системе.
ключи. Для успешной эксплуатации уязвимости зона долж- URL производителя: www.sap.com.
на использовать DSA- или NSEC3DSA-алгоритмы. Решение: Установите последнюю версию 7.10 PL с сайта
URL производителя: www.isc.org/software/bind. производителя, которая отключает уязвимый ActiveX-ком-
Решение: Установите последнюю версию 9.3.6-P1, 9.4.3‑P1, понент.
9.5.1-P1 или 9.6.0-P1 с сайта производителя. В качестве вре-
менного решения производитель рекомендует запретить Целочисленное переполнение
использование DSA- и NSEC3DSA-алгоритмов. в BitDefender Antivirus Scanner for Unices
Программа: BitDefender Antivirus Scanner for Unices 7.60825
Множественные уязвимости в Trillian и более ранние версии.
Программа: Trillian версии до 3.1.12.0. Опасность: Высокая.
Опасность: Высокая. Описание: Целочисленное переполнение существует
Описание: 1. Уязвимость существует из-за ошибки при ге- при обработке некоторых PE-файлов, собранных с помо-
нерации XML-тегов для изображений. Удаленный пользова- щью NeoLite или ASProtect. Удаленный пользователь мо-
тель может с помощью специально сформированного име- жет с помощью специально сформированного PE-файла
ни графического изображения вызвать переполнение стека выполнить произвольный код на целевой системе.
и выполнить произвольный код на целевой системе. URL производителя: www.bitdefender.com/PRODUCT-80-en-
2. Уязвимость существует из-за ошибки при обработ- BitDefender-Antivirus-Scanner-for-Unices.html.
ке XML-кода. Удаленный пользователь может вызвать пов- Решение: Установите исправление с сайта производителя.
реждение памяти и выполнить произвольный код на целе-
вой системе. Отказ в обслуживании в Sun Solaris
3. Уязвимость существует из-за ошибки проверки гра- Программа: Sun Solaris 10.
ниц данных при обработке XML-тегов. Удаленный пользо- Опасность: Средняя.
ватель может вызвать переполнение динамической памяти Описание: Уязвимость существует из-за неизвестной
и выполнить произвольный код на целевой системе. ошибки в IPv4-перенаправлении. Удаленный пользователь
URL производителя: www.ceruleanstudios.com. может вызвать панику ядра системы. Для успешной экс-
Решение: Установите последнюю версию 3.1.12.0 с сайта плуатации уязвимости на системе должен использоваться
производителя. IPv4, должен присутствовать маршрут через адрес 127.0.0.1
без флага blackhole и должно быть установлено исправле-
Уязвимость при обработке ответов ние 120011-14 (SPARC) или 120012-14 (x86).
в Symantec Mail Security for SMTP URL производителя: www.sun.com.
Программа: Symantec Mail Security for SMTP 5.0.1 с исправ- Решение: Установите исправление с сайта производителя.
лением 189, возможно, другие версии.
Опасность: Низкая. Отказ в обслуживании в ClamAV
Описание: Уязвимость существует из-за ошибки при об- Программа: ClamAV версии до 0.94.2.
работке неудачной доставки писем. Удаленный пользова- Опасность: Средняя.
тель может вызвать доставку email-сообщения на специаль- Описание: Уязвимость существует из-за ошибки беско-
но сформированный сервер, вернуть приложению специ- нечной рекурсии в функции cli_check_jpeg_exploit() в фай-
ально сформированный ответ. Удачная эксплуатация уяз- ле libclamav/special.c. Удаленный пользователь может с по-
вимости позволит злоумышленнику постоянно завершать мощью специально сформированного JPEG-изображения
работу службы Filter Hub, что не позволит дальнейшую об- вызвать переполнение стека и аварийно завершить рабо-
работку писем. ту приложения.
URL производителя: www.symantec.com/enterprise/products/ URL производителя: www.clamav.net.
overview.jsp?pcid=1008&pvid=845_1. Решение: Установите последнюю версию 0.94.2 с сайта
Решение: Установите исправление 200 для версии 5.0.1 производителя.
с сайта производителя.
Составил Александр Антипов

№1, январь 2009 25


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование

Вы еще не используете
Windows Vista?

Андрей Бирюков
Основные возможности и нововведения операционной системы.

П
рошло у же почти два года бор компонентов, прежде всего муль- заголовков, Flip3D, и анимированных
со времени выхода операци- тимедийных. эффектов при сворачивании/разво-
онной системы Windows Vista. Как видно из таблицы, каждая рачивании окон.
За это время продукт от Microsoft уже из редакций имеет свою целевую Второй уровень – Aero Glass – об-
успел наделать много шума на интер- аудиторию, позволяя не тратить день- ладает всеми ранее перечисленны-
нет-форумах и в различных печатных ги на тот функционал, который вам ми эффектами. Aero Glass – примене-
изданиях. Одни пользователи отча- не требуется. Говоря о возможнос- ние прозрачных (с размывкой заднего
янно ругают эту операционную сис- тях, следует отметить появление но- плана) заголовков и панелей в окнах
тему, другие восхищаются. Попробу- вых средств, которые также упомина- в стиле оформления «Windows Aero».
ем разобраться в том, что же такое лись в таблице. Windows Flip – новый вид меню <alt> +
Windows Vista. Прежде всего это Aero – новый ин- <tab>, в котором показываются эскизы
Вашему вниманию предлагает- терфейс, который содержит различ- открытых окон и их значки. Windows
ся цикл статей, посвященных различ- ные средства визуализации. Напри- Flip 3D – замена <win> + <tab>, теперь
ным возможностям Vista. В этой ста- мер, прозрачные заголовки и грани- все окна выстраиваются в ряд в 3D.
тье я расскажу об основных новшес- цы, плавное сворачивание и развора- При помощи стрелок клавиатуры или
твах данной операционной системы чивание окон, Flip3D – все это новые колесика мышки можно прокручивать
и опишу ее установку и базовую на- графические компоненты, появивши- окна. Клавиша <Enter> или клик мыш-
стройку. еся в Vista. кой активируют окно стоящее по сере-
Прежде всего поговорим о сущес- Архитектура Aero содержит не- дине ряда.
твующих редакциях Windows Vista. сколько уровней. Возможность исполь- Вообще, говоря про Aero, следует
Их довольно много, поэтому новичку зования каждого из них зависит от ха- заметить, что далеко не все оборудо-
может оказаться непросто в них ра- рактеристик оборудования. Чем мощ- вание поддерживает данный интер-
зобраться (см. таблицу). Пусть вас нее конфигурация компьютера, тем бо- фейс, о том, как проверить это и поп-
не пугает присутствие новых назва- лее высокий уровень Aero поддержи- робовать включить, мы поговорим да-
ний в таблице, о том, что они означа- вается системой. Основных уровня лее в этой статье. На момент написа-
ют, мы поговорим позднее. всего два – Windows Basic и Aero (ра- ния статьи поддерживалось 203 уст-
Кроме приведенных в таблице, нее так же известные, как Aero Express ройства.
по требованиям ЕС в Европе вы мо- и Aero Glass). Наилучших результатов можно до-
жете встретить редакции Home Basic и Первый уровень содержит эффек- стигнуть с графическими процессора-
Business, которые содержат другой на- ты уровня Glass, кроме прозрачности ми следующих конфигураций:

26
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование
n 64 Мб графической памяти для под- Редакции Windows Vista
держки монитора с разрешени- Редакция Аппаратные ограничения Предназначение
ем мене е 1 310 720 пикс елов Vista Starter Поддерживается только один 32‑битный Данная редакция позиционируется
(1280х1024); процессор, нет поддержки Aero, разработчиками как рабочая платформа
нет шифрования, не поддерживаются для различных веб-киосков и платежных
n 128 М б г р аф ич е с ко й п а м я т и входящие соединения, нельзя включать терминалов. Не думаю, что в России получит
для поддержки монитора с разре- в домен, возможны не более трех широкое распространение
одновременных исходящих подключений,
шением от 1 310 720 до 2 304 000 нельзя использовать Media Center
пикселов (1600х1200); Vista Home Basic Поддерживаются как входящие, так и Предназначена для домашних компьютеров,
n 25 6 Мб г р аф ич е с ко й п а м я т и исходящие соединения, 32‑битная на которых не требуются мощные функции
для поддержки монитора с разре- архитектура, нельзя включать в домен по воспроизведению мультимедиа

шением более 2 304 000 пикселов Vista Home Premium Аналогично редакции Home Basic, Эта редакция, по мнению разработчиков,
но поддерживает 64-битную архитектуру должна стать оптимальной рабочей средой
(2560х1600). и Media Center для домашних компьютеров
Vista Business Схожа с редакцией Home Premium, Операционная система для рабочих станций,
Еще одна новая функция – это Media но нет Media Center, шифрования и есть не требующих мощных вычислительных
возможность включения в домен нагрузок
Center. Фактически это средство для
полноценного просмотра не только Vista Enterprise Нет только Media Center. Поддерживается Для продвинутых рабочих станций
64‑битная архитектура
видео, но и телевидения (при наличии
Vista Ultimate Поддерживаются все возможные функции Для высокопроизводительных рабочих
ТВ‑тюнера). Здесь сразу возникает Windows Vista станций, требующих постоянной работы
вопрос, с какими устройствами рабо- с большими потоками медиаданных
тает Vista Media Center. На сайте компа-
нии Microsoft есть раздел сертифици- Обратите внимание на то, что для ра- весьма полезно в тех случаях, когда
рованных под Media Center устройств – боты Vista Upgrade Advisor вам необ- приходится выполнять сразу несколь-
видеорекордеров и ТВ-тюнеров [1]. ходимо установить Microsoft Core XML ко инсталляций.
Так же в таблице упоминалась Services 6.0 и .NET Framework 2.0. Дан- Перед началом установки хочу об-
64‑битная архитектура. Скажу не- ные компоненты также можно найти ратить внимание еще на один неболь-
сколько слов о совместимости. 32‑бит- на сайте Microsoft. шой момент, а именно, дистрибутив
ную редакцию можно использовать Vista распространяется на DVD-дис-
на 64‑битной архитектуре, однако об- Непосредственно ках, поэтому не забудьте убедиться,
ратное невозможно. Использовать установка что во всех рабочих станциях, на ко-
64‑битную редакцию на 32‑битной Итак, определившись с редакцией торые вы собираетесь устанавливать
архитектуре вам не удастся. Вообще и убедившись в аппаратной совмес- новую ОС, есть DVD-приводы.
при планировании установки вы може- тимости, приступим к установке но- После загрузки с установочно-
те воспользоваться статьями и инстру- вой операционной системы. Рассмот- го диска на первом шаге у вас спро-
ментами на странице [2]. рим установку системы на «чистый» сят язык, формат даты и язык вво-
Для проверки компьютера на сов- раздел. Надо отдать должное разра- да с клавиатуры. Затем вам необхо-
местимость с Vista вы можете восполь- ботчикам, они упростили и автомати- димо указать Product Key, состоящий
зоваться специальным инструментом – зировали процесс развертывания. Ин- из 25 символов.
Windows Vista Upgrade Advisor, позво- сталлятор сначала задает все необ- После этого вам будет предложено
ляющим проверить машину на совмес- ходимые вопросы, а затем самосто- активировать систему. Я бы рекомен-
тимость. Данная утилита предназначе- ятельно копирует системные файлы довал отказаться от активации в про-
на для работы с 32‑битными архитекту- и настройки и перезагружает рабочую цессе установки по нескольким причи-
рами. Получить ее можно по адресу [3]. станцию. Согласитесь, это новшество нам. Прежде всего система активации

Начало установки Vista Ключ продукта

№1, январь 2009 27


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование

Выбор режима установки Выбор раздела для установки

Процесс установки Выбор имени пользователя

позволит вам переустановить систе- Далее нужно указать раздел, на ко- На следующем шаге вам нужно
му только один раз, если вам придет- торый производится установка. Ес- указать дату и время, а также часовой
ся переустанавливать ОС более одно- ли вы используете RAID-контроллеры пояс. И выбрать текущее расположе-
го раза, то нужно будет связываться со или жесткие диски со специфическими ние (Location). Microsoft рекомендует
службой поддержки Microsoft, что мо- драйверами, то на этом шаге вы може- использовать Public Location.
жет занять немало времени. К тому же те загрузить данные драйвера. На этом установка системы завер-
в случае если после установки какое- После этого программа установки шена. Теперь посмотрим на нововве-
либо устройство будет работать не- начнет копирование системных фай- дения, появившиеся в Windows Vista.
корректно, вполне возможно, что вам лов. После этого вам нужно будет ука- Сразу отмечу, что в этой статье речь
придется менять аппаратную конфи- зать имя пользователя и пароль, а за- пойдет только о новшествах в GUI.
гурацию (например, материнскую пла- тем имя компьютера. На следующем Для начала попробуйте включить ин-
ту), а такие изменения также требуют шаге вам будет предложено устано- терфейс Aero. Прежде всего ваша ви-
повторной активации системы. Так что вить обновления. Стоит ли это делать деокарта должна соответствовать тем
в течение месяца вы можете работать в процессе установки или нет, думаю, требованиям, которые я приводил ра-
без активации, проверяя работоспо- каждый системный администратор нее в этой статье.
собность операционной системы. должен решить самостоятельно, ос- Для запуска выполните следующие
На следующем шаге вам необходи- новываясь на собственном опыте ус- несложные действия: «Пуск → Панель
мо выбрать редакцию. Здесь вы можете тановки Vista. К тому же если вы выбе- управления → Персонализация → Цвет
выбрать любую редакцию, однако в слу- рете Ask Me Later, то вы сможете поз- и внешний вид окон (включить про-
чае если ваш ключ активации не пред- днее использовать в качестве источ- зрачность) → Открыть свойства клас-
назначен для данной редакции, продол- ника обновлений локальный сервер сического внешнего вида для выбо-
жить установку вам не удастся. При не- WSUS (Windows Server Update Services), ра других возможностей → Парамет-
обходимости вы можете вернуться на- если он у вас развернут, что позволит ры оформления → Цветовая схема →
зад, чтобы ввести другой ключ. сэкономить на интернет-трафике. Windows Aero → Применить». Однако,

28
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование
как выясняется, даже если ваша видеокарта соответствует ти и целостности данных. Появились такие функции, как
требованиям, то интерфейс Aero не всегда работает. При- Parent Control (родительский контроль), User Account Control
веду несколько рекомендаций, которые могут пригодить- (UAC, управление учетными данными пользователей), улуч-
ся при решении проблем с Aero. шенный Windows Firewall, поддержка NAP (Network Access
Protection, защита сетевого доступа) и другие функции.
Решение проблем с запуском Aero Обо всем этом в других статьях, а следующая будет пос-
Для начала убедитесь, что для цвета установлена разряд- вящена средствам обеспечения безопасности в Windows
ность 32 бита, частота обновления экрана монитора выше Vista.
10 герц, тема установлена в Windows Vista, для цветовой схе-
мы выбрана Windows Aero и включена прозрачность рамки 1. http://www.microsoft.com/windows/compatibility/Browse.aspx?typ
окна. Для того чтобы установить 32-битную цветопереда- e=Hardware&category=TV%20Devices&subcategory=TV%20Tun
чу откройте окно настройки параметров экрана. В списке ers – список совместимых с Vista ТВ-тюнеров.
«Цвета» выберите «Высшее (32 бита)» и нажмите ОК. (Ес- 2. http://technet.microsoft.com/ru-ru/windows/aa904820.aspx – ста-
ли не удается выбрать 32 бит, убедитесь, что установлено тьи по планированию и развертыванию Windows Vista.
максимально возможное разрешение, а затем попытайтесь 3. http://www.microsoft.com/windows/windows-vista/get/upgrade-
снова.) Установить частоту обновления экрана можно в ок- advisor.aspx – инструмент Windows Vista Upgrade Advisor.
не настройки параметров экрана.
Во вкладке «Дополнительные параметры» перейдите Реклама
на вкладку «Наблюдать», а затем выберите частоту обнов-
ления выше 10 герц. Для смены частоты обновления необ-
ходимо некоторое время. Если требуется сохранить изме-
нения, нажмите «Применить». Если изменения не будут со-
хранены в течение пятнадцати секунд, частота обновления
вернется к своему прежнему значению.
Для того чтобы сменить тему рабочего стола, необхо-
димо щелкнуть по ссылке и открыть «Параметры темы» и
в списке «Тема» выбрать Windows Vista.
Для установки цветовой схемы в Windows Aero в списке
«Цветовая схема» выберите Windows Aero и нажмите ОК.
Чтобы включить прозрачность рамки окна, сначала
необходимо установить цветовую схему в Windows Aero.
Для этого в «Панели управления» щелкните «Оформление
и личная настройка», «Персонализация», а затем выбери-
те «Цвет и внешний вид окна». Установите флажок «Вклю-
чить прозрачность». Эти стандартные действия должны по-
мочь при работе с Aero.
В случае если они не помогают, есть еще не совсем
стандартные средства. Для запуска Aero можно также
внести некоторые правки в параметры реестра. В редак-
торе реестра необходимо изменить значение следующих
параметров:
n HKCU\Software\Microsoft\Windows\DWM\Composition из-
меняем на 1 (32-bit DWORD),
n H K C U \ S o f t w a r e \ M i c r o s o f t \ W i n d o w s \ D W M \
CompositionPolicy изменяем на 2 (32-bit DWORD).

После этого нужно перезагрузить машину и в команд-


ной строке выполнить:

net stop uxsms


net start uxsms

И снова перезагрузить рабочую станцию. Данный способ


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

Заключение
Что же еще нового мы можем увидеть в Windows Vista? Це-
лый ряд новшеств связан с обеспечением безопаснос-

№1, январь 2009 29


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование

Оптимизируем PPD-файлы

Иван Коробко
Все основные настройки Post Script-драйверов хранятся в отдельных файлах.
Рассмотрим их подробнее.

П
еред запуском документа на печать необходимо вы- чанию и сократить предлагаемый список форматов бума-
брать принтер и определить ряд обязательных па- ги до разумного (см. рисунок). Аналогичная ситуация воз-
раметров. По умолчанию им уже присвоены значе- никает с качеством печати: зачем на обычном принтере пе-
ния. Однако не все они отвечают требованиям конечного чатать с качеством 1200 точек на дюйм, когда вполне до-
пользователя. Например, на принтере формата А4 в боль- статочно 300 dpi или 600 dpi.
шинстве случаев по умолчанию установлен формат бумаги Все вышеуказанные параметры хранятся в текстовом
letter, хотя необходим А4. В одном случае из ста может воз- файле с расширением PPD, который поставляется произ-
никнуть необходимость распечатать на конверте. Возника- водителем принтера в комплекте драйверов.
ет закономерный вопрос: как изменить значение по умол-
Структура PostScript‑драйвера
Любой PostScript или PS-драйвер состоит из нескольких
библиотек, входящих в комплект операционной системы.
Несмотря на это они включаются в дистрибутив драйвера
принтера для удобства его установки. В таблице 1 приведен
список библиотек стандартного PS-драйвера Windows 2K.
После установки все файлы драйвера копируются в папку
C:\Windows\System32\spool\drivers\w32x86.
В листинге 1 приведен стандартный INF-файл, обеспе-
чивающий установку PS-драйвера для принтера. На прак-
тике производитель создает для драйвера графическую
оболочку, которая видоизменяет его до неузнаваемости.
Основной недостаток GUI-оболочки заключается в сниже-
нии работоспособности драйвера. Иногда ошибки програм-
мистов, создавшие графическую оболочку, могут привес-
ти к невозможности распечатать документ. Любую GUI-обо-
Список размеров бумаги в настройках драйвера принтера лочку драйвера можно убрать (см. [1]).

30
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование
Листинг 1. Шаблон INF-файла стандартного PS-драйвера це 2. В листинге 2 приведен текст стандартного заголов-
[Version] ка PPD-файла:
Signature="$Windows CHICAGO$"
ClassGUID={4D36E979-E325-11CE-BFC1-08002BE10318} Листинг 2. Типичный заголовок PPD-файла
Class=Printer
Provider="temp" *PPD-Adobe: "4.3"
[Manufacturer] *% ======================================================
%Company%=firm *% Printer Description File
*% Copyright 1992-2001 Hewlett-Packard Company
[firm] *%=======================================================
"Product Name" = **********, unique_identifier *% PPD for HP LaserJet 1200 Series
*%=======================================================
[**********]
CopyFiles=@*****.PPD,PSCRIPT_NT ; PPD-файл. *% === PPD File Version Information ====
DataSection=PSCRIPT_DATA *FileVersion: "1.004"
DataFile=*****.PPD *FormatVersion: "4.3"
Include=NTPRINT.INF ; инсталляция NTPRINT.INF. *LanguageEncoding: ISOLatin1
Needs=PSCRIPT.OEM ; инсталляция PSCRIPT. *LanguageVersion: English
*PCFileName: "HP1200_7.PPD"
[DestinationDirs]
DefaultDestDir=66000 *% === Product Version Information ====
[SourceDisksNames] *ModelName: "HP LaserJet 1200 Series"
1 = "HP",,,"" *ShortNickName: "HP LaserJet 1200 Series PS"
[SourceDisksFiles] *NickName: "HP LaserJet 1200 Series PS"
HP1200.ppd = 1,,,,,,,11,3 *Product: "(HP LaserJet 1200 Series)"
[Strings] *Manufacturer: "HP"
Company = "Firm Name" *PSVersion: "(2014.108) 1"

Что такое PPD-файл? Необходимо отметить, что все вышеперечисленные па-


PostScript Printer Description или PPD-файл представляет раметры обязательны. Более того, порядок их взаимного
собой текстовый файл в кодировке ASCII. С его помощью расположения также имеет значение.
обеспечивается программная под-
держка принтером различных разме- Таблица 1. Библиотеки стандартного PS-драйвера
ров бумаги, двухсторонняя печать, раз- Файл Название библиотеки Описание
бор по копиям в случае необходимос- PS5UI.DLL PostScript User Interface Интерфейс драйвера
ти, цветность, значения по умолчанию PSCRIPT5.DLL PostScript Printer Driver PS-драйвер принтера
и другие характеристики. PSCRIPT.NTF Fonts Бинарный файл, содержащий в себе стандартные шрифты,
Все настройки описаны в этом фай- поддерживаемые устройством
ле с помощью языка PostScript, разра- PSCRIPT.HLP Help Файл справки PS-драйвера
ботанного компанией ADOBE. Полное *.INF Information Файл-инсталлятор драйвера
описание этого языка можно загрузить *.PPD PostScript Printer Description Описание возможностей принтера: лотки, форматы бумаги,
из источника [2], а описание PPD-фай- цветность и т. д.
лов находится в [3].
Таблица 2. Обязательные команды PPD-файла
Структура PPD-файла Название команды Значение Комментарий
Прежде чем приступить к чтению PPD- *PPD-Adobe 4.3 Версия PPD. Сейчас используется версия 4.3, вышедшая
09 февраля 1996 года
файла, необходимо сказать несколько
слов о синтаксисе: любой файл состо- *FileVersion 1.004 Версия файла

ит из строк, каждая из которых начи- *FormatVersion 4.3 Версия PPD. Значение совпадает со значением параметра
*PPD-Adobe
нается с символа звездочки «*». Стро-
*LanguageEncoding ISOLatin1, Cyrillic Кодировка, используемая в драйвере. Для английского
ка может состоять из нескольких под- языка ISOLatin1, для русского – Cyrillic
строк. В этом случае строка не начи- *LanguageVersion English, Russian Язык, используемый в настройках драйвера
нается с символа «*», комментарий на-
*Manufacturer HP Производитель оборудования
чинается с «*%».
*ModelName HP LaserJet 1200 Series Модель принтера. Назначается производителем
В общем виде строка строится
*NickName HP LaserJet 1200 Series PS Локальное имя принтера, задаваемое при установке
по следующему шаблону: устройства мастером. В нем также обычно указывается
версия драйвера. Длина не ограничена
*command:value *ShortNickName HP LaserJet 1200 Series PS Локальное имя принтера, задаваемое при установке
устройства мастером. В отличие от *NickName длина
ограничена 31-м символом
где command – зарезервированная ко-
*Product (HP LaserJet 1200 Series) Уникальное Название продукта. По этом полю система
манда (см. [2]), value – его значение. определяет установлен ли драйвер в системе и предлагает
один из вариантов действия: заменить, пропустить

Заголовок PPD-файла *PSVersion (2014.108) 1 Версия драйвера


В любом файле присутствует несколь- *PCFileName HP1200_7.PPD Название PPD-файла (этого файла). Значение *PCFileName
состоит из 8 символов имени и 3- расширения (PPD).
ко обязательных команд, список и опи- Первые 2 символа имени – производитель, а оставшиеся 6 –
сание которых приведены в табли- уникальный идентификатор модели

№1, январь 2009 31


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование
Решение типовых задач Листинг 4. Описание поддерживаемых форматов бумаги
Для удобства восприятия рассмотрим примеры решения *?PageSize: "
задач, которые могут встретиться вам на практике. При- save
currentpagedevice /PageSize get aload pop
веду некоторые из них: 2 copy gt {exch} if
n Управление форматами бумаги. (Unknown)
2 dict
n Назначение размера бумаги по умолчанию. dup [595 842] (A4) put
dup [284 419] (Postcard) put
{ exch aload pop 4 index sub abs 5 le exch
Управление форматом бумаги 5 index sub abs 5 le and
За формат бумаги отвечает параметр PageSize. Список, за- {exch pop exit} {pop} ifelse
} bind forall
даваемый в блоке его описания, отображается конечному = flush pop pop
пользователю (см. рисунок). Рассмотрим подробнее фраг- restore
"
мент файла (см. листинг 3). Описание блока начинается *End
со строки *?PageSize:, а заканчивается – *End. Сам блок
при этом заключен в кавычки. Перед описанием списка Рекомендуется удалить лишние описатели форматов
необходимо зарезервировать пункты с помощью команды бумаги в секциях PageSize и PageRegion, каждый из кото-
dict. В листинге 2 присутствует команда «17 dict». Это обоз- рых имеет формат, описанный в листинге 5.
начает, что пользователь сможет выбрать один из 17 пред-
ложенных форматов бумаги. Допустим, необходимо обес- Листинг 5. Описатели формата бумаги
печить выбор одного из 2 форматов бумаги: A4 и Postcard *PageRegion string1/string2: "
(стандартный конверт). В этом случае требуется указать <</PageSize [х y] /ImagingBBox null>> setpagedevice"
*End
количество пунктов в выпадающем меню, равное двум:
«2 dict». Каждый из пунктов меню описывается командой где string1 – сокращенное название формата бумаги,
Dup и Put. Описание одного пункта списка выглядит сле- а string2 – полная форма. В большинстве случаев значения
дующим образом: обеих строк равны. x и y – размер бумаги в дюймах.

Dup [x y] string Put Назначение размера бумаги по умолчанию


Размер бумаги по умолчанию назначается с помощью па-
где х и y – размеры в pt (point, пункт), string – текст, отобра- раметров *DefaultPageSize, *DefaultPageRegion, значения
жаемый в меню. которых должны совпадать. Значение по умолчанию зада-
Например, размер для бумаги формата A4 – 210х297 мм. ется в одноименных блоках.
В файле указывается величина бумаги в миллиметрах, ум- Рассмотрим изменение размера по умолчанию на при-
ноженная на коэффициент, равный 2,83 (1 mm = 2,8346 pt). мере параметра *DefaultPageSize. Отмечу, что назначе-
После округления получим 595х842 pt (см. листинг 3). Та- ние размера бумаги по умолчанию идет перед описанием
ким образом, для описания 2 вышеупомянутых форматов форматов бумаги. Как и в описании формата бумаги, в ее
бумаги после удаления описаний лишних форматов лис- размере задается только сокращенное название (см. лис-
тинг 3 будет видоизменен (см. листинг 4). тинг 6).

Листинг 3. Описание поддерживаемых форматов бумаги Листинг 6. Назначение формата бумаги по умолчанию

*?PageSize: " *OpenUI *PageSize: PickOne


save *OrderDependency: 30 AnySetup *PageSize
currentpagedevice /PageSize get aload pop *DefaultPageSize: Letter
2 copy gt {exch} if *PageSize Letter/Letter: "
(Unknown) <</PageSize [612 792] /ImagingBBox null>> setpagedevice"
17 dict *End
dup [612 792] (Letter) put ……
dup [522 756] (Executive) put
dup [612 1008] (Legal) put
dup [595 842] (A4) put
dup [420 595] (A5) put
dup [297 420] (A6) put
Заключение
dup [499 709] (ISOB5) put Достаточно подробно изучив вопрос коррекции списков
dup [516 729] (B5) put и значений по умолчанию на примере форматов бума-
dup [612 936] (w612h936) put
dup [284 419] (Postcard) put ги, читатель сможет с помощью этой статьи и документа-
dup [419.5 567](DoublePostcard) put ции (в случае необходимости) оптимизировать драйвер
dup [297 684] (Env10) put
dup [279 540] (EnvMonarch) put для своих целей.
dup [312 624] (EnvDL) put
dup [459 649] (EnvC5) put
dup [499 709] (EnvISOB5) put 1. Коробко И. Сетевое сканирования с помощью МФУ от HP.
dup [558 774] (w558h774) put //Системный администратор, №12, декабрь 2008 г. – С. 44-48.
{ exch aload pop 4 index sub abs 5 le exch
5 index sub abs 5 le and 2. PostScript ® language reference, third edition – ht tp://
{exch pop exit} {pop} ifelse www.adobe.com/products/postscript/pdfs/PLRM.pdf.
} bind forall
= flush pop pop 3. PostScript Printer Description File Format Specification – http://
restore www.adobe.com/devnet/postscript/pdfs/5003.PPD_Spec_v4.3.pdf.
"
*End

32
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
bugtraq

Уязвимость в Trend Micro HouseCall Переполнение буфера


ActiveX-компоненте в Microsoft SQL Server
Программа: Trend Micro HouseCall ActiveX Control вер- Программа: Microsoft SQL Server 2000 8.00.2050; Microsoft
сии до 6.6.0.1285; Trend Micro HouseCall Server версии SQL Server 2000 Desktop Engine (MSDE 2000); Microsoft
до 6.6.0.1285. SQL Server 2005; Microsoft SQL Server 2005 Express
Опасность: Высокая. Edition 9.2.3042.00.
Описание: Уязвимость существует из-за использова- Опасность: Низкая.
ния освобожденной памяти в HouseCall ActiveX-компонен- Описание: Уязвимость существует из-за ошибки проверки
те (Housecall_ActiveX.dll). Удаленный пользователь может границ данных в реализации процедуры sp_replwritetovarbin().
с помощью веб-сайта, содержащего специально сформи- Удаленный пользователь может передать уязвимой проце-
рованную функцию notifyOnLoadNative(), вызвать разыме- дуре специально сформированные аргументы, вызвать пе-
нование ранее освобожденной памяти и выполнить произ- реполнение динамической памяти и повысить свои приви-
вольный код на целевой системе. легии на системе.
URL производителя: www.trendmicro.com. URL производителя: www.microsoft.com.
Решение: Установите последнюю версию с сайта произ- Решение: В настоящее время способов устранения уязви-
водителя. мости не существует.

Спуфинг атака в OpenSSL Раскрытие данных в Samba


Программа: OpenSSL версии до 0.9.8j. Программа: Samba версии 3.0.29 по 3.2.4.
Опасность: Средняя. Опасность: Низкая.
Описание: Уязвимость существует из-за того, что неко- Описание: Уязвимость существует из-за ошибки провер-
торые OpenSSL-функции некорректно проверяют дан- ки границ данных при обработке запросов trans, trans2
ные, возвращаемые функцией EVP_VerifyFinal(), при про- и nttrans. Удаленный пользователь может с помощью спе-
верке подписей для DSA- и ECDSA-ключей. Злоумышлен- циально сформированных запросов получить доступ к па-
ник может обойти проверку подписи, например, при от- мяти smbd.
правке специально сформированной подписи сертифика- URL производителя: www.samba.org.
та клиенту. Для успешной эксплуатации уязвимости сер- Решение: Установите последнюю версию 3.2.5 или 3.0.33
вер должен использовать сертификат, содержащий DSA- с сайта производителя.
или ECDSA-ключ.
URL производителя: www.openssl.org. Множественные уязвимости в IBM AIX
Решение: Установите последнюю версию 0.9.8j с сайта Программа: IBM AIX версии 6.1.0, 6.1.1, 6.1.2.
производителя. Опасность: Низкая.
Описание: 1. Уязвимость существует из-за ошибки провер-
Повышение привилегий ки границ данных в /usr/sbin/ndp в setuid-приложении. Ло-
в ESET Smart Security кальный пользователь может вызвать переполнение бу-
Программа: ESET Smart Security версии до 3.0.684. фера и выполнить произвольный код на целевой системе.
Опасность: Низкая. Для успешной эксплуатации уязвимости демон netcd дол-
Описание: Уязвимость существует из-за недостаточной жен быть запущен.
обработки параметров пользовательского пространства 2. Уязвимость существует из-за ошибки проверки
в IOCTL-обработчике драйвера epfw.sys. Локальный поль- границ данных в привилегированной команде /usr/sbin/
зователь может с помощью специально сформированного autoconf6. Локальный пользователь может вызвать пере-
IOCTL-запроса выполнить произвольный код на целевой полнение буфера и выполнить произвольный код на сис-
системе в пространстве ядра. теме. Для успешной эксплуатации уязвимости должен ис-
URL производителя: w w w.eset.com/smar tsecurit y/ пользоваться RBAC, и атакующий должен авторизоваться
index.php. в aix.network.config.tcpip.
Решение: Установите последнюю версию 3.0.684 с сайта 3. Уязвимость существует из-за ошибки в привилегиро-
производителя. ванной команде /usr/bin/enq. Локальный пользователь мо-
жет удалить произвольные файлы, если /etc/qconfig опре-
Повышение привилегий в FreeBSD деляет очередь печати.
Программа: FreeBSD 6.3, 6.4, 7.0. 4. Уязвимость существует из-за ошибки в привилегиро-
Опасность: Низкая. ванной команде /usr/bin/crontab. Атакующий, авторизовав-
Описание: Уязвимость существует из-за некорректной шийся в aix.system.config.cron, может повысить свои при-
инициализации некоторых указателей функций netgraph- вилегии на системе.
и bluetooth-сокетов в реализации ядра. Локальный поль- URL производителя: www-03.ibm.com/systems/p/os/aix/v61/
зователь может выполнить произвольный код на целевой index.html.
системе в пространстве ядра. Решение: Установите исправление с сайта производителя.
URL производителя: www.freebsd.org.
Решение: Установите исправление с сайта производителя. Составил Александр Антипов

№1, январь 2009 33


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование

Перенос профиля пользователя


в Windows XP Professional Edition
и Windows 2000 Professional

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

В
озникла задача перевести учет- ся в том, что вы знаете к ней пароль, ром прописан DNS Windows 2003, вто-
ные данные всех пользовате- иначе, когда вы выведете компьютер рым остался DNS сервера на FreeBSD.
лей из домена Samba в домен из домена, придется этот пароль сбра- Также в DHCP прописан сервер WINS,
Windows. Самое сложное и утомитель- сывать [1]. установленный на Samba 3.
ное во всем этом – перенос профилей Коротко опишу состояние локаль- На сервере DNS Windows 2003
пользователей. ной сети. Мы имеем два настроенных включена пересылка запросов DNS,
Итак приступим. У нас есть два домена, один на платформе FreeBSD которые не могут быть обработаны са-
домена, старый OLD (домен Samba 3) с установленным пакетом Samba 3 (по- мим сервером (например, адресован-
и новый new.local (домен Windows 2003). читать об установке и настройке мож- ные в Интернет).
На рабочих станциях установлены опе- но на в моем блоге [2]), и другой до- В качестве сервера, куда пересы-
рационные системы Windows 2000 мен AD на MS Windows 2003. На сер- лаются запросы, указан IP-адрес сер-
Professional и Windows XP Professional вере Samba включена служба WINS вера DNS на платформе FreeBSD.
Edition. для сопоставления netbios-имён ком- Согласно принятой политике бе-
Внимание! Рекомендую преж- пьютеров с IP-адресами узлов. зопасности пользователи сами на-
де всего проверить на всех рабочих На отдельном сервере на платфор- значали себе пароли, и потому в но-
станциях наличие учетной записи ло- ме FreeBSD запущены службы DNS вом Windows 2003 домене были со-
кального администратора и убедить- и DHCP. В DHCP первым DNS-серве- зданы такие же учетные записи поль-

34
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование
зователей, но с одинаковым паролем.
В свойствах учетной записи всех поль-
зователей на вкладке «Учетная за-
пись» установлена галка «Требовать
смену пароля при следующем входе
в систему».
В обоих доменах имеется сценарий
входа, подключающий сетевые диски
с Samba-сервера.
У нас есть два домена, и они пре-
красно существуют в одной сети. Ду-
маю, что если подобным образом пе-
реходить из одного Windows-доме-
на в другой, проблем также не воз-
никнет.
А теперь к делу: перенос профи-
лей пользователей из одного доме-
на в другой.
Регистрируемся в старом домене
с учетной записью администратора
домена и выводим компьютер из до-
мена (у обычных пользователей не- Рисунок 1. Установка прав пользователя к папке профиля в Windows XP
достаточно для этого прав). В ходе
этой операции будут запрошены имя
пользователя и пароль, можно ниче-
го не вводить.
После успешного вывода в рабо-
чую группу (например, OLD) потре-
буется перегрузить компьютер поль-
зователя.
После перезагрузки компьютера
регистрируемся с учетной записью ло-
кального администратора и находим
профиль пользователя данного ком-
пьютера (который требуется перенес-
ти), в нашей локальной сети использо-
вались локальные профили пользова-
телей. К примеру, это может быть пап-
ка C:\Documents and Settings\ivanov. Пе-
реименовываем эту папку, к примеру
в ivanov123.
Далее вводим машину в новый до-
мен new.local, здесь понадобится па-
роль администратора этого домена,
и перезагружаем компьютер. Регист- Рисунок 2. Установка прав пользователя на ветку реестра в Windows XP
рируемся на рабочей станции с домен-
ной учетной записью ivanov. Открываем свойства папки ivanov, ем в меню «Файл → Загрузить куст»,
После этого опять перезагружа- переходим на вкладку безопасность выбираем файл C:\Documents and
ем компьютер, это необходимо, что- и даем полный доступ к этой папке Settings\ivanov\NTUSER.DAT. Так как
бы выгрузилась ветка реестра поль- пользователю ivanov из нового доме- этот файл скрытый, то нужно предва-
зователя ivanov. Если этого не сделать, на (см. рис. 1). рительно в проводнике Windows вы-
не получится полностью удалить папку Далее запускаем программу regedit брать папку C:\Documents and Settings\
C:\Documents and Settings\ivanov. для операционной системы Windows XP ivanov и в меню «Сервис → Свойства
Регистрируемся в новый домен (нажимаем «Пуск → Выполнить», в по- папки → Вид» включить «Показывать
с учетной записью пользователя ад- ле «Открыть» набираем команду скрытые файлы и папки».
министратор нового домена. Удаля- «regedit», нажимаем Ok) и програм- На предложение указать имя раз-
ем папку C:\Documents and Settings\ му regedt32 для Windows 2000. Запус- дела пишем, например, 123. После это-
ivanov, а папку ivanov123 переимено- тится редактор реестра, затем выби- го выбираем данный раздел и даем
вываем в ivanov. раем раздел HKEY_USERS. Нажима- полный доступ к нему пользователю

№1, январь 2009 35


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование
n Lotus Notes 6.5 работает (установ-
лен в конфигурации для всех поль-
зователей), если у пользователя
нет прав локального администра-
тора, необходимо дать ему полный
доступ на папку C:\Documents and
Settings\All Users\Application Data\
Lotus (но это уже отдельная исто-
рия).

Кстати, давать пользователям пра-


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

Резюме
При достаточной сноровке, современ-
ном компьютере и не очень большой
папке C:\Documents and Settings\ivanov
перенос профиля занимает в среднем
15-20 минут, а значит, за один рабочий
день силами только одного системного
Рисунок 3. Установка прав пользователя на ветку реестра в Windows 2000 администратора офис небольшой ком-
пании в 20 рабочих мест может быть
ivanov из нового домена. Далее выби- Внимание! Что было утеряно: переведен из домена в домен. Обсу-
раем в меню «Файл → Выгрузить куст» n головная боль всех администрато- дить статью можно на форуме – http://
(см. рис. 2). Для Windows 2000 в меню ров – пароль Skype (в Windows XP, www.samag.ru/forum.
есть специальный пункт «Разреше- в Windows 2000 он сохранился);
ния», вот и все отличие (см. рис. 3). n адрес прокси-сервера в Internet 1. Сброс локальных паролей Windows –
Завершаем сеанс администрато- Explorer (Mozilla Firefox лишена h t t p : / / h o m e . e u n e t . n o /~ p n o r d a h l /
ра и регистрируемся в домен с учет- этой проблемы), сохраненные ло- ntpasswd.
ной записью пользователя ivanov. Ви- гин и пароль для доступа к прокси- 2. Настройка Samba – http://argo-uln.
дим старый рабочий стол пользовате- серверу; blogspot.com/2006/08/samba-3-pdc-ldap-
ля со всеми его ярлыками, файлами, n пароль на почтовый ящик в Outlook freebsd-61.html.
программами. Express; 3 PDC LDAP FreeBSD 6.1.

36
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование

Управляем объектами в Active Directory


Часть 4

Иван Коробко
Группа безопасности – один из основных объектов Active Directory, определяющего правила
доступа к ресурсам домена. Умение управлять этим объектом дает большие возможности
в автоматизации управления Active Directory.

Г
руппа безопасности, так же как Тип группы (group type) определяет, Directory Users and Computers выбором
и учетная запись пользователя, – является ли группа – группой рассыл- пункта «New → Group» из контекстно-
очень важный объект, значение ки или же группой безопасности. го меню папки, в которой необходимо
которого нельзя недооценивать, не- Существует два типа групп: Security создать учетную запись. Таким обра-
смотря на его простоту по сравнению (безопасности) и Distribution (распро- зом, определяется местоположение
с последним. С помощью групп безо- странения). объекта, которому в Active Directory со-
пасности определяют уровень досту- Вторая важная характеристика – ответствует значение атрибута объек-
па к сетевым или локальным ресур- область действия группы (Group scope). та distinguishedName.
сам; используя членство пользовате- Областью действия определяют, ка- Работа мастера состоит из одно-
лей в группах, создают интеллектуаль- ким образом может быть использова- го шага (см. рис. 1). Во время соз-
ные сценарии регистрации пользова- на группа: как локальная, как глобаль- дания группы безопасности необ-
телей в сети. ная или как универсальная. При нали- ходимо назначить имя и тип груп-
В этой статье, являющейся четвер- чии в лесу двух и более доменов об- пы, определить область действия
той частью цикла статей о внутреннем ласть действия группы играет значе- и имя группы для совместимости (Pre-
устройстве Active Directory, рассмот- ние, однако при наличии в нем одно- Windows 2000) с доменом Windows NT
рим анатомию группы Active Directory го домена – область действия не име- (см. таблицу 1).
и принципы программного управления ет значения. Рассмотрим параметры, задава-
этим объектом. емые мастером во время создания
Создание группы учетной записи. Первым из них явля-
Основные понятия Существует минимум два способа ется название группы (атрибут Group).
Прежде чем перейти к описанию объ- создания группы безопасности: с по- В каталоге Active Directory ему соответ-
ектной модели группы безопасности, мощью мастера и сценария. Рассмот- ствует атрибут cn. Значение атрибута
рассматривать вопрос членства учет- рим сначала работу мастера, уделив name – отображаемое имя, назнача-
ных записей пользователей в груп- особое внимание изменениям, кото- ется автоматически, идентично значе-
пе, необходимо определить понятие рые происходят в это время в каталоге нию cn. Однако впоследствии оно мо-
«группа безопасности». Active Directory. Основные параметры, жет быть изменено в свойствах груп-
Группа безопасности (security задаваемые при создании группы ад- пы безопасности.
group) – объект, в котором могут со- министратором – ее имя и тип. Измене- Одновременно с этим значени-
держаться дочерние объекты: учет- ние остальных параметров возможно ем назначается имя группы, исполь-
ные записи групп и пользователей. только после создания объекта с помо- зуемое для совместимости с домена-
Она используется для определения щью соответствующего мастера. ми Windows NT – значение параметра
разрешений доступа к файлам и дру- Group name (Pre‑Windows 2000). В ка-
гим ресурсам. Любая группа безопас- Создание группы с помощью талоге Active Directory ему соответству-
ности характеризуется двумя парамет- мастера ет атрибут sAMAccountName.
рами: ее типом и областью действия Запуск мастера создания группы осу- Значения атрибута cn и sAMAccount-
(см. таблицу 1). ществляется из MMC-консоли Active Name можно изменить, только пере-

№1, январь 2009 37


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование
именовав объект. Изменяя имя объ- Таблица 1. Параметры группы
екта с помощью мастера, админист- Параметр мастера Атрибут объекта Тип данных Описание
ратор изменяет только его отобража- в Active Directory

емое имя. Group name cn, name String Название группы в домене
С помощью двух оставшихся бло- Group name sAMAccountname String Название группы, используемое
ков определяют тип и область действия (Pre-Windows 2000) для совместимости с доменом Windows NT

группы. По умолчанию мастер предла- Group scope groupType Radio Button Суммарным значением параметра описывается
область действия и тип создаваемой группы
гает создать глобальную группу безо- безопасности
пасности (groupType = -2147483646).
Каждому из выбранных значений
соответствует цифровой эквива-
лент (см. таблицу 2). В каталог Active
Directory записывается суммарное зна-
чение в числовое поле groupType.

Создание группы с помощью


сценария
Для создания учетной записи груп-
пы программным способом (VBScript),
как и при работе мастера, необходи-
мо жестко задать несколько парамет-
ров. В листинге 1 приведен сценарий,
позволяющий создать учетную запись
группы. Исходные данные для его соз- Рисунок 1. Создание группы с помощью мастера
дания приведены в таблице 3.
Удаление группы с помощью мастера
Листинг 1. Создание учетной записи группы Для запуска мастера удаления учетной записи какого-либо
set RootDSE = GetObject("LDAP://RootDSE") объекта, в том числе и группы, необходимо установить кур-
Domain = rootDSE.Get("defaultNamingContext") сор на удаляемый объект (в данном случае – группа). Таким
Set objUsers = GetObject("LDAP://OU=WorkGroup," & Domain)
Set objNewUser = objUsers.Create("group", "cn=Test") образом, определяют один из важнейших параметров – путь
objNewUser.Put "sAMAccountName", "Test" к объекту (поле distinguishedName). Вызвав контекстное ме-
objNewUser.Put "groupType", "-2147483646"
objNewUser.SetInfo ню объекта с помощью правой кнопки мыши, удаляют объ-
ект, выбрав пункт меню delete (см. рис. 2).
Обратите внимание! Если в листинге не указать тип
и область действия группы с помощью параметра groupType, Таблица 2. Расшифровка значений параметра groupType
то система автоматически создаст этот параметр, присво- Тип группы Значение Тип группы Значение
ив этому параметру значение -2147483646, что эквивален- Global Security Group -2147483648 Global Distribution Group 2
тно глобальной группе безопасности. Local Security Group -2147483644 Local Distribution Group 4
Рассмотрим работу листинга. В первых двух строках BuiltIn Group -2147483643 Universal Distribution Group 8
сценария осуществляется определение RDN-имени (relative
Universal Security Group -2147483640 – –
distinguished name, относительное составное имя) текуще-
го домена с помощью виртуального объекта RootDSE. За-
тем в контейнере WorkSpace, находящемся в корне схемы
Active Directory, создается группа безопасности с помощью
функции Create(), имеющей два параметра. Первый пара-
метр – тип объекта (последний элемент массива objectType),
второй – имя объекта в формате «cn = …».
Замечание. RDN является одним из обязательных атри-
бутов объекта, значение которого характеризует его поло-
жение в иерархической структуре домена. Максимальная
длина RDN-имени составляет 255 символов, однако схема
Active Directory накладывает свои ограничения на его со-
ставные части. Например длина атрибута cn ограничива-
ется 64 символами. Подробно о RDN см. [1].

Удаление группы
Аналогично описанию процесса создания группы рассмот-
рим удаление группы с двух ракурсов: работы мастера
Рисунок 2. Удаление учетной записи группы с помощью
и сценария, их взаимосвязи. мастера

38
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование
Удаление объекта с помощью Таблица 3. Параметры сценария для создания учетной записи пользователя
сценария Параметр Описание Способ назначения
В сценарии удаления объекта необхо- сn = Test Отображаемое имя Явный
димо указать тип удаляемого объекта sAMAccountName = Test Имя в сети для совместимости с доменами Windows NT Явный
и путь к этому объекту в каталоге Active
groupType = -2147483646 Область действия и тип группы Явный
Directory. Оба параметра в сумме со-
distinguishedName = CN=Test, Путь к создаваемой учетной записи группы Неявный
ставляют значение distinguishedName. OU=WorkSpace,DC=Island,DC=ru
Например, если требуется удалить
группу Test, то необходимо определить значение парамет- Алгоритм работы сценария в обоих случаях следующий.
ра distinguishedName. Затем – имя объекта (значение cn) На первом этапе с помощью функции GetObject() получа-
и папку, в которой он находится. ют доступ к группе. Затем, вызывая функцию, аргумент ко-
торой составное имя группы или учетной записи, осущест-
Листинг 2. Удаление учетной записи группы вляют требуемое действие, причем вызывать setInfo() для
set RootDSE = GetObject("LDAP://RootDSE") записи данных в каталог Active Directory не нужно.
Domain = rootDSE.Get("defaultNamingContext") Для добавления учетной записи используется функция
Set objUsers = GetObject("LDAP://OU=WorkGroup," & Domain)
objUsers.delete "group", "cn=Test" Add (см. листинг 4а), а для удаления – Remove (см. лис-
Set objUsers = nothing тинг 4б).

Листинг 4а. Добавление объектов в группу


Членство в группах path = …
В группах безопасности можно производить операции: objPath=…
Set objGroup = GetObject("LDAP:// " & path)
n получать список объектов; objGroup.Add("LDAP:// " & objPath)
n добавлять объекты;
n удалять объекты. Листинг 4б. Удаление объектов из группы

path = …
Каждый из этих способов можно реализовать как про- objPath=…
граммно, так и с помощью мастера ММС-консоли, от- Set objGroup = GetObject("LDAP:// " & path)
objGroup.Remove("LDAP:// " & objPath)
крыв вкладку Members учетной записи в свойствах груп-
пы (см. рис. 3).
Заключение
Получение списка членов группы Практическая ценность использования групп безопасности
Членами группы безопасности могут быть группы или заключается в том, что на основе членства в группе поль-
пользователи. Список членов группы хранится в масси- зователю можно предоставлять определенный админист-
ве Member, который хранится в виде составного LDAP-пу- ратором набор сервисов, причем независимо от рабочей
ти (см. листинг 3а). станции, на которой работает пользователь. Широкое при-
В графической оболочке отображается преобразован- менение эта идея нашла в сценариях регистрации пользо-
ное каноническое имя, которому соответствует значение по- вателей в сети.
ля cn. Такое преобразование приведено в листинге 3б. Надеюсь, эта статья поможет автоматизировать неко-
торые процессы в вашей сети.
Листинг 3а. Получение списка членов группы
(стандартный вариант)
1. Object Naming – http://www.microsoft.com/technet/prodtechnol/
path = … windows2000serv/reskit/distrib/dsbb_act_kjpw.mspx?mfr=true.
Set objGroup = GetObject("LDAP:// " & path)
temp = ""
For Each obj In objGroup.member
temp = temp + obj + vbNewLine
Next
MsgBox temp

Листинг 3б. Получение списка членов группы


(улучшенный вариант)

path = …
Set objGroup = GetObject("LDAP:// " & path)
For Each obj In objGroup.member
temp = temp + GetObject("LDAP:// " & ↵
obj.cn) + vbNewLine
Next
MsgBox temp

Добавление и удаление объекта в группе


Поскольку механизм добавления и удаления членов в груп-
пу одинаков, то рассмотрим их вместе. Рисунок 3. Вкладка Members свойств группы безопасности

№1, январь 2009 39


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование

Контролируем изменения
в конфигурационных файлах

Владимир Легеза

Многие системные администраторы хорошо знакомы с трудоемким процессом «ручного


исправления» конфигурационных файлов. Да, вполне можно себе представить ситуацию,
когда несколько администраторов ежедневно исправляют сотни конфигурационных файлов
на десятках серверов. Расскажу о наиболее сложных проблемах, с которыми приходится
сталкиваться, и о том, как с ними бороться.

40
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование

О
дна из классических проблем, Теория ми группами разработчиков. Наибо-
с которой я часто встречался На все вопросы «кем, когда, что и как» лее заметными реализациями с от-
на практике, является самой нам дает ответ любая система контро- крытым кодом стали GIT (создавав-
распространенной и звучит так: ля версий. С ее помощью можно видеть шаяся в первую очередь для ведения
n «Только что работало, а сейчас все вносимые изменения, а также ис- процесса разработки ядра OS Linux)
не хочет» – возникает, как прави- торию о том, кем и когда они были сде- и Mercurial, появившиеся практически
ло, когда во время редактирования ланы. И многое другое. в одно время.
случайно было задето что-то лиш- Система контроля конфигурацион-
нее. Например, удалены несколько ных файлов состоит из двух частей. С точки зрения инструмента для ра-
строк. Если эта оплошность не вне- n Репозитарий. Внутри репозита- боты с конфигурационными файлами
сла нарушения в синтаксис файла, рия хранится вся история измене- основное отличие между всеми этими
то устранить ее можно будет толь- ний со всей сопутствующей инфор- системами в большей степени заклю-
ко после того, как станет извест- мацией. чается в удобстве и простоте исполь-
но «что» и «где» перестало рабо- n Файлы. Назовем их «последней зования. К примеру, установка конт-
тать. В другом примере, приложе- версией, извлеченной из репози- роля над файлом в системе RCS мо-
ние не обладает встроенным конт- тария». Это те самые файлы, ко- жет быть достигнута всего одной ко-
ролем синтаксиса файла конфигу- торые непосредственно исполь- мандой. В Mercurial – минимум двумя.
рации, и отыскать несколько симво- зуются приложениями (такими как А в SVN это может превратиться в на-
лов, по той или иной причине ока- Apache, Bind и т. д.). Содержимое стоящую эпопею – если нужный файл
завшихся в неположенном мес- каждого из них идентично послед- имеет десяток вышестоящих в иерар-
те, – задача не из легких. Особен- ней версии, находящейся в репо- хии каталогов, каждый из которых при-
но если в файле несколько тысяч зитарии. дется последовательно инициализиро-
строк. вать в системе.
n «Я его случайно удалил!» – другая Основной принцип сводится к тому, Функции, позволяющие осущест-
проблема, чуть менее распростра- что после каждого изменения конфи- влять хранение конфигурационных
ненная, но не менее неприятная. гурационного файла его новый вари- файлов в отдаленных (remote) репо-
Вам повезло, и у вас есть бэкап! ант сохраняется в репозитарии. зитариях, практически непримени-
Но радоваться рано – еще пред- На сегодняшний день системы мы. Создание локального репозита-
стоит вспомнить и воссоздать мо- контроля версий сменили третье по- рия более целесообразно, посколь-
дификации, которые в бэкап не по- коление: ку в этом случае его функционирова-
пали. n Локальные – системы способны ние не зависит от работоспособности
n «Мои изменения куда-то делись! контролировать отдельные фай- сторонних систем и обеспечивает до-
Но я ведь проверял, что они со- лы, каждый из которых обладает ступность данных в случае потери свя-
хранились!» – достаточно редкое, собственным файлом репозита- зи с «внешним миром».
но весьма грустное явление. Такое рия. Представителем этого клас- Единственный случай, при кото-
зачастую происходит, когда один са является RCS (Revision Control ром перемещение репозитариев на-
и тот же файл одновременно ре- System). Это первая в истории сис- ходит свое применение, – это синх-
дактируется несколькими людьми тема контроля версий с открытым ронизация конфигурационных фай-
с разных терминалов. кодом, созданная еще в середине лов нескольких серверов в системах
n «А правил ли кто-нибудь...» – ког- 80-х годов. Несмотря на свой воз- с распределением нагрузки. Несмот-
да никто ничего не трогал, но все раст, она по-прежнему «широко ис- ря на то что этот способ синхрониза-
упало. Файлы правятся не только пользуется в узких кругах». ции гарантирует идентичность изме-
администраторами, как мы знаем, n Централизованные – отличитель- нений на каждом из серверов, приме-
но и менеджерами пакетов, раз- ной особенностью является спо- няется он крайне редко. Связано это
личными утилитами и так далее. собность хранить несколько фай- с тем, что чаще всего конфигурация
К счастью, проблемы такого клас- лов и каталогов в одном репози- синхронизируется теми же средства-
са встречаются не так уж часто. тарии, который может находиться ми, что и основной контент.
n «Откатите, пожалуйста, назад удаленно. Это завоевавшие сер-
изменения, которые вы дела- дца миллионов CVS (Concurrent Репозитарии
ли на прошлой неделе» – кто-то Versions System) и позднее пришед- Каждый из репозитариев, созданных
действительно помнит, как было шая ей на смену SVN (Subversion). в соответствующей системе контро-
до этого? И снова бэкап, ленты, n Децентрализованные системы – ля версий, имеет особенности в меха-
сравнение файлов, и т. д. принципиально новый подход в ре- низме инициализации и внутреннем
шении задач версионности. В пос- устройстве.
Все эти трудности связаны с тем, леднее время они все чаще начи- Репозитарий RCS создается от-
что мы хотим знать: кем, когда, что и нают использоваться в проектах дельно для каждого нового файла
как изменилось или изменяется в на- с очень внушительным количест- и представляет собой файл с одно-
стоящий момент, а также помнить ис- вом файлов и большими, зачас- именным названием и дополнитель-
торию изменений. тую территориально разделенны- ным суффиксом (*,v), находящийся

№1, январь 2009 41


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование
Рассматривая SVN, первое не- Второй нюанс. Децентрализован-
удобство, с которым сталкиваешь- ные системы ориентированы на ра-
ся, – необходимость хранить репози- боту со всем репозитарием, а не от-
тарий отдельно от извлеченной теку- дельным файлом. Так что одно изме-
щей версии файлов. Далее. Каждый нение может затрагивать несколько
извлеченный из репозитария каталог файлов. Это очень удобно. Нюанс за-
(отдельный файл не может быть до- ключается в том, что в ревизию попа-
бавлен без каталога, в котором нахо- дают не только измененные файлы,
дится!) содержит папку с метаданны- а весь «конфигурационный состав».
ми репозитария (.snv). И этими мета- Абсолютно все контролируемые сис-
данными ваша система наводняет- темой файлы! Это значит, что при из-
ся гораздо сильнее, чем каталогами влечении определенной ревизии цели-
RCS (см. рис. 2). ком (checkout) – абсолютно все файлы
Самыми элегантными репозита- вернутся к состоянию, соответствую-
риями, как оказалось, обладают де- щему выбранной ревизии. Такой ню-
централизованные системы. Всего анс требует хорошего понимания меха-
Рисунок 1. Репозитарий RCS один-единственный каталог в корне низмов работы репозитария, но не яв-
репозитария, который содержит в се- ляется препятствием к использованию
бе «все» (.hg – у Mercurial). Достаточ- децентрализованных систем. Далее
но инициализировать корневой ката- я на примере покажу, как извлечь от-
лог сервера («/») и добавлять столько дельный файл.
файлов, сколько потребуется. Никако- Третий немаловажный нюанс – от-
го дополнительного мусора в системе сутствие возможности контролировать
нет – все в одном месте, в репозита- права доступа к файлам. Это касает-
рии (см. рис. 3). ся как традиционных прав доступа, так
и Access Control Lists (ACL – расшире-
Нюансы ние для файловой системы, позволя-
Как вы думаете, нужно ли проверять ющее более гибко управлять правами
состояние файла до того, как вы на- доступа). Подвержены этому все упо-
чинаете с ним работать? Ответ утвер- мянутые ранее системы.
дительный. Если описать кратко, единственное,
Система RCS требует, чтобы перед что сохраняется в метаданных о пра-
работой файл был извлечен из репози- вах доступа, – это является ли файл
тария, а после окончания помещен об- запускаемым или нет. В остальном
ратно. Если попытаться достать файл все извлекаемые файлы создаются
из репозитария дважды, будет вы- точно так же, как если бы они созда-
ведено предупреждение. Но никаких вались текстовым редактором. Кро-
предупреждений мы не увидим, ес- ме того, RCS изменяет право на за-
ли начнем извлекать файл, изменен- пись в зависимости от состояния бло-
ный до извлечения! Так происходит, кировки. Запись разрешается, только
например, в ситуациях, когда измене- если файл заблокирован.
ния нужно сделать очень срочно и те- Нюанс с правами очень важен,
рять драгоценное время на лишние ко- если затрагиваются такие файлы,
Рисунок 2. Репозитарий Subversion манды нельзя. как /etc/shadow. Эту ситуацию адми-
Нюанс заключается в том, что ес- нистраторы вынуждены решать собс-
в том же месте, где и оригинальный ли сразу не довести начатое до кон- твенными силами. Кто-то прибегает
файл конфигурации. Ситуацию мож- ца (сохранить в репозитарий или, как к созданию файлов, в которые запи-
но немного улучшить, создав каталог минимум, не заблокировать), то с ве- сывают все права, и добавляют в ре-
RCS. В этом случае все репозитарии роятностью 90% эти изменения будут позитарий.
будут создаваться внутри этого ката- уничтожены руками ваших коллег. Ос- Некоторые идут дальше и пишут
лога. Однако такой каталог должен тавшиеся 10% приходятся на бдитель- скрипты для автоматизации процес-
располагаться непосредственно рядом ных администраторов, которые пер- са. Так на свет появилась утилита
с оригинальным файлом. Вследствие вым делом проверяют статус (так как etckeeper (http://joey.kitenet.net/code/
этого, на каждом из серверов со вре- RCS не выводит информацию о на- etckeeper) – созданная любителями
менем образуется достаточно большое личии изменений, это можно сделать, дистрибутива Debian для реализации
количество таких каталогов, рассредо- сравнив текущий файл с последней контроля над правами и автоматичес-
точенных по всей файловой системе. его версией в репозитарии). Все бо- кого перемещения изменений в репо-
Пример получившейся структуры ка- лее поздние системы лишены таких зитарий (операция commit) после об-
талогов показан на рис. 1. сложностей. новления пакетов в операционной сис-

42
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование
теме. К радости некоторых админист- терфейсом и хорошей документацией.
раторов, etckeeper способен работать Это серьезно облегчает переход на но-
c Git, Mercurial и Bazar. вые «рельсы» тем, кто ранее работал
В моей практике проблеме с пра- с CVS или SVN.
вами уделяется не много внимания, Финальным аккордом стал проект
поскольку я стараюсь контролиро- TortoiseHG (http://tortoisehg.sourceforge.
вать версионность исключительно net) – клиент для MS Windows, интег-
тех файлов, которые действительно рирующийся с Internet Explorer (мно-
в этом нуждаются (файлы типа shadow гие почему-то к нему быстро привы-
или group к ним не относятся). Вы мо- кают).
жете возразить, но мой аргумент – хо- Единственной преградой на пу-
рошая система бэкапа, а информация ти интеграции Mercurial для нужд ад-
о том, как файл shadow выглядел па- министраторов оставался механизм
ру лет назад, не представляет ника- блокировок, а точнее его отсутствие.
кого интереса. Ее удалось обойти «малой кровью» –
Последним нюансом будет отсутс- написав небольшой скрипт, который Рисунок 3. Репозитарий Mercurial
твие функционала блокировок у де- я назвал hglock (сообразно названи-
централизованных систем. Механизм ям оригинальным командам систе- Во-первых, система контроля вер-
не вписывается в концепцию децентра- мы). Актуальную версию можно ска- сий должна применяться только к фай-
лизации. К сожалению, даже etckeeper чать по ссылке http://primtech.ru/files/ лам, которые являются уникальными
эту проблему не решает. hglock. Возможно, стоит организовать для данной системы и имеют верси-
такой функционал в виде дополнитель- онную ценность.
Кому отдать предпочтение ного модуля. Но пока это не было сде- Как я уже упоминал ранее, нет не-
Вместе со мной в компании работают лано. Позже был добавлен механизм обходимости хранить файлы с пароля-
порядка пяти сотен программистов. автоматической разблокировки при ми, группами или сетевыми настройка-
Разработка ведется на множестве язы- сохранении изменений в репозитарии. ми. Также нет смысла сохранять фай-
ков (от PHP и JAVA до С) и для самых И после этих изменений нам больше лы, которые для большинства серве-
разнообразных платформ (от Windows ничто не препятствовало. ров идентичны. Например, настройки
до Solaris и Z/OS). При выборе системы Нельзя однозначно сказать, какую почтовой маршрутизации или прави-
контроля версий в качестве корпора- из систем использовать лучше. Глав- ла авторизации пользователей (PAM,
тивного стандарта нам хотелось най- ное, чтобы решалась основная зада- LDAP, SSH... ). Сюда же я отношу все
ти систему с открытым кодом, которая ча – «контроль за изменениями» и «ни- файлы, которые всегда прибывают
могла бы стать единой для всех. чего не терялось». А в остальном – это в том состоянии, в каком были уста-
Учитывая то количество проблем дело привычки или конкретной ситуа- новлены вместе с системой. В итоге
и нюансов, которые в моей практике ции. Могу лишь добавить, что чем про- остается только очень небольшое чис-
удалось разрешать только при помощи ще с системой работать, тем меньше ло файлов, с которыми действительно
децентрализации (например, с ее по- шансов наделать ошибок. постоянно приходится работать. Сре-
мощью удалось избежать остановки Для администраторов, которые ди них named.conf, nginx.conf, crontab
процесса разработки в региональных раньше не сталкивались с система- (в компании, где я работаю, рядовым
представительствах при длительном ми контроля версий, а также для не- пользователям запрещено самосто-
отсутствии связи с центральным офи- больших организаций, я рекомендую ятельно создавать записи в cron, это
сом), вопрос о выборе типа репозита- сначала попробовать RCS. Он самый делается администраторами по заявке
риев даже не рассматривался. простой как в плане понимания, так и строго определенной формы), на поч-
В свете «единой для всех» систе- в плане применения. товых серверах – конфигурация почто-
ма должна быть кроссплатформен- вых систем, на брандмауэрах (firewall) –
ной. И в этом плане в лидеры вышел Интеграция непосредственно настройки фильтра-
Mercurial благодаря наличию клиен- Для того чтобы описываемый метод ции и т. д.
тов под множество ОС. работы стал не обузой, а эффектив- Во-вторых, необходимо, чтобы все
Далее Mercurial выделился привыч- ным инструментом, достаточно при- администраторы в вашей команде так-
ным для пользователей Subversion ин- держиваться нескольких правил: же следовали выбранной методологии.

№1, январь 2009 43


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование
Другими словами, необходим регламент, описывающий # who am i
правила работы с конфигурационными файлами. john pts/2 Nov 20 18:00 (172.30.0.215)
Для примера успешной интеграции на основе описан-
ных правил могу сказать, что в одной очень крупной ком- Теперь можно создать репозитарий. Так как в на-
пании с помощью RCS команда из шести администрато- шем примере конфигурационные файлы выходят дале-
ров управляет конфигурацией приблизительно трехсот ко за рамки /etc, логично будет инициализировать корне-
UNIX-серверов. вой каталог:

Практика # hg init /
Практика показывает, что нагляднее всего – несколько про-
стых примеров. По умолчанию созданный репозитарий доступен
Предполагается, что все задействованные в приме- для чтения абсолютно всем. В тех случаях, когда планиру-
ре конфигурационные файлы разрешено корректировать ется поместить в репозитарий файлы, содержащие закры-
только пользователям, обладающим соответствующими тую информацию (например, ключи ssh), рекомендую при-
привилегиями. Все приведенные ниже команды выполня- менить самый старый и проверенный способ: установить
ются с привилегиями суперпользователя (root). ограничения доступа на уровне файловой системы.
Обращаю ваше внимание на то, откуда берутся имена Закроем весь репозитарий от посторонних глаз:
пользователей, сохраняемые в репозитарии. При повыше-
нии привилегий пользователя изменяется только «эффек- # chmod 700 /.gh
# ls -ld /.hg
тивный» (effective id) идентификатор, а «реальный» (real id)
остается неизменным. Скрипт hglock использует имен- john pts/2 Nov 20 18:00 (172.30.0.215)
но «реальный» идентификатор, то есть имя пользователя
(login), использовавшееся при входе в систему. Mercurial же Если возникает необходимость скрыть только опре-
извлекает имя пользователя из переменных окружения, деленный файл, права нужно изменять не у репозитария,
а также позволяет определять его самостоятельно в фай- а у соответствующего файла в каталоге /.hg/store/data . На-
ле ~/.hgrc. Это означает, что не следует использовать ме- пример, файлу /etc/inet/hosts будет соответствовать файл
тоды повышения привилегий, изменяющие оригинальное /.hg/store/data/etc/inet/hosts.i.
окружение (например «su – »). В ином случае авторство бу- Установим скрипт работы с блокировками и внесем со-
дет приписано пользователю root. ответствующие настройки в репозитарий:
Итак, демонстрация работы администратора будет по-
казана на сервере под управлением ОС Solaris. # cp hglock /usr/bin/
# cat >>/.hg/hgrc<<EOF
Прежде всего убедимся в том, что Mercurial установлен
и функционирует. > [hooks]
> port-commit = hglock -C
> post-add = hglock -A
$ hg --version > EOF
Mercurial Distributed SCM (version 0.9.5)
. . . Если мы попробуем вывести статус репозитария, то воп-
реки нашим ожиданиям процесс займет несколько минут,
Несколько предварительных персональных настроек а в результате нашему вниманию будет продемонстриро-
пользователя: ван список абсолютно всех файлов сервера.
Следующая команда решает эту проблему. Она застав-
$ id ляет игнорировать все файлы, о которых нет записей в ре-
uid=100(john) gid=1(other) позитарии.

$ echo >~/.hgrc<<EOF # echo `^` >/.hgignore


> [ui]
> editor = vim
> fallbackencoding = UTF-8 Теперь пришло время добавить несколько файлов. Об-
> username = John Doe <john@example.com>
EOF ращаю внимание на то, что в Solaris файл /etc/hosts явля-
ется символической ссылкой на /etc/inet/hosts.
Повышаем уровень привилегий:
# hg add /etc/inet/hosts
# hg add /usr/local/apache2/conf/httpd.conf
$ su # hg add /var/spool/cron/crontabs/root
Password:
Посмотрим, как теперь выглядит вывод статуса:
# id
uid=0(root) gid=0(root)
# hg status

A etc/inet/hosts
Убедимся, что реальный идентификатор при этом ос- A usr/local/apache2/conf/httpd.conf
A var/spool/cron/crontabs/root
тался неизменным:

44
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование
Сейчас – в момент добавления файлов – мы можем убе- В принципе имя файла можно опустить. Но так как hglock
диться, что автоматически установилась блокировка: не проверяет, кем заблокирован файл, то есть опасность
убрать еще и чужую блокировку.
# cat /.hg/locksfile Давайте рассмотрим еще несколько часто используе-
etc/inet/hosts:john:15:47 2008.11.20 мых команд.
usr/local/apache2/conf/httpd.conf:john:15:47 2008.11.20 Кем вносились последние изменения:
var/spool/cron/crontabs/root:john:15:47 2008.11.20
# cd /etc/inet
# hg log hosts
Хорошо. Помещаем файлы в репозитарий:
changeset: 1:3d8a608232b9
# hg commit -m "Init" tag: tip
user: John Doe <john@example.com>
date: Thu Nov 20 00:46:46 2008 +0300
Посмотрим на блокировку теперь: summary: first change

# cat /.hg/locksfile changeset: 0:9fe2667c2ab3


user: John Doe <john@example.com>
date: Thu Nov 20 00:44:37 2008 +0300
Отлично. summary: Init.
При помощи следующей нехитрой команды в любой мо-
мент можно узнать о том, какие из файлов уже находятся Мы видим первую строчку комментария «first change»
в репозитарии: и номер последней ревизии (changeset) 1.
Давайте посмотрим, что в этой ревизии было нами из-
# hg locate менено.
etc/inet/hosts
usr/local/apache2/conf/httpd.conf # hg diff -r 0 -r 1
var/spool/cron/crontabs/root diff -r 9fe2667c2ab3 -r 3d8a608232b9 hosts
--- a/hosts Thu Nov 20 00:44:37 2008 +0300
Все пути к файлам указываются от корня репозитария. +++ b/hosts Thu Nov 20 00:46:46 2008 +0300
@@ -2,4 +2,4 @@
Если сомневаетесь, в каком из репозитариев находитесь,
# that require network functionality will fail.
поможет команда: 127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
# hg root -10.32.0.69 oldalias
+10.32.0.69 newalias
Все самое сложное позади. Репозитарий настроен,
файлы добавлены. Теперь покажу пару несложных команд Как вы видите, была изменена запись с «10.32.0.69
(по сути, их действительно только две), которые впишутся oldalias» на «10.32.0.69 newalias».
в вашу повседневную администраторскую жизнь. И еще. Скажу о том, как восстановить файл, если его
Первая команда. Перед тем как изменять /etc/hosts, за- случайно удалили. Потому как путь к его восстановлению
блокируем его: не совсем очевиден. Этой же командой можно извлечь толь-
ко один из файлов указанной ревизии.
# hglock /etc/inet/hosts
# rm hosts
# hg log hosts
Если же вас кто-то опередил, вы получите сообщение:
changeset: 1:3d8a608232b9
# hglock /etc/inet/hosts tag: tip
user: John Doe <john@example.com>
File already locked by “other_user” at 19:00 2008.11.20. date: Thu Nov 20 00:46:46 2008 +0300
summary: first change

Изменим hosts: changeset: 0:9fe2667c2ab3


user: John Doe <john@example.com>
# cd /etc/inet date: Thu Nov 20 00:44:37 2008 +0300
# sed –e "s/oldalias/newalias/" hosts > /tmp/1 summary: Init.
# mv /tmp/1 hosts
# hg cat -r 1 hosts > hosts
# cat hosts
Наличие изменений теперь отразится в hg status:
# Do not remove the following line, or various programs
# hg status # that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
M etc/inet/hosts ::1 localhost6.localdomain6 localhost6
10.32.0.69 newalias

Вторая команда – это нечто иное, как commit.


Теперь наш файл снова на месте. У нас снова все пре-
# hg commit –m "first change" /etc/inet/hosts красно работает. Надеюсь, что теперь и у вас тоже.

№1, январь 2009 45


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование

дистрибутив для тестирования


защищенности

Сергей Яремчук
Популярный дистрибутив Ubuntu Linux традиционно ассоциируется с простотой
в использовании и поэтому в первую очередь рекомендуется начинающим. Но среди
его многочисленных клонов имеется специальное решение nUbuntu [1], ориентированное
на специалистов.

Выбор решения ла оценка защищенности сетей и ком- стью требовала обновления. Это бы-
Пик популярности специальных дист- пьютеров. ло неудобно как разработчикам, так и
рибутивов, ориентированных на спе- Как результат, за относительно ко- пользователям.
циалистов в области безопасности, роткий срок появился целый ряд ре- Это ли было причиной, но через
пришелся приблизительно на 2003 год. шений – Whoppix (чуть позже WHAX), некоторое время интерес к специаль-
Как раз в этот период появились пер- KNOPPIX-NSM, PHLAK, Auditor Security ным дистрибутивам стал постепен-
вые LiveCD-дистрибутивы, самым яр- Linux, Hakin9 Live и другие. Положи- но угасать.
ким представителем которых стал тельной стороной таких сборок было В результате некоторые проекты
KNOPPIX. Простота сборки своего ре- то, что специалист получал в свои руки практически перестали выпускать об-
шения, работа прямо с привода ком- готовый инструмент, содержащий весь новления (Hakin9 Live) или совсем ис-
пакт-дисков без предварительной ус- необходимый софт, который быстро чезли, другие проекты объединились.
тановки на жесткий диск и автомати- приводился в «боевое» положение. Например, команды Auditor Security
ческая настройка под любое оборудо- Минусы, конечно, тоже были. Учи- Linux и WHAX на основе своих разра-
вание были оценены как обычными тывая количество программ в дист- боток создали довольно неплохой дис-
пользователями, так и группами и ор- рибутиве, уже через некоторое вре- трибутив BackTrack [2]. Появились и но-
ганизациями, в задачу которых входи- мя сама сборка практически полно- вые решения вроде Samurai [3], раз-

46
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование
работка которого сегодня идет весь-
ма активно.
Но как только Linux «научился» нор-
мально загружаться и работать с USB-
флеш-устройств и появился целый
подкласс небольших сетевых компью-
теров – нетбуков, интерес у специалис-
тов к дистрибутивам, предназначен-
ным для проверки безопасности, сно-
ва начал расти.
Поиск «своего» решения нужно на-
чинать с сайта securitydistro.com. На-
значение большинства представлен-
ных там дистрибутивов совпадает,
но основа, начинка и, главное, их воз-
можности существенно отличаются.
В итоге без подбора нужного решения
здесь не обойтись.
Например, задачей BackTrack явля-
ется обеспечение пользователя инст-
рументами, позволяющими провес-
ти тестирование на проникновение Рабочий стол nUbuntu
(penetration test), и он, кроме много-
численных сетевых сканеров, анали- тами для тестирования сетей и систем. ванный вручную сетевой интерфейс
заторов протоколов, сниферов и дру- На распространенный вопрос «Зачем в дистрибутиве BackTrack 3 может за-
гого сопутствующего софта, под завяз- еще один дистрибутив?» разработчи- просто «исчезнуть» вне зависимос-
ку набит эксплойтами от SecurityFocus, ки отвечают, что им интересен в пер- ти от виртуальной машины: VirtualBox
PacketStorm, Metaspl0it Framework 2/3 вую очередь сам процесс его создания, или VMware.
и другими. Его основой является а использовать результат их работы Запуск LiveCD происходит быстро
SLAX. или нет – это выбор каждого. из-за того, что графическая подсис-
Прак тически ана логичное на- Первая стабильная версия бы- тема по умолчанию не загружается.
значение – у Samurai, построенного ла анонсирована сразу же после вы- В процессе обнаруживаются и автома-
на Debian. Только ориентирован он хода Ubuntu 6.06, с тех пор дистри- тически настраиваются все устройст-
на web pen-testing environment, то есть бутив по мере появления новых вер- ва, включая проводные и беспровод-
тестирование веб-приложений. сий Ubuntu несколько раз обновлялся. ные сетевые карты.
Дистрибутив grml [5], также постро- В настоящее время актуальной явля- По окончании в консоли выда-
енный на Debian, предназначен для ре- ется Alpha-версия 8.10. ется краткий список рекомендаций
шения более широкого круга задач – В качестве графической среды по дальнейшим действиям. В отличие
от восстановления системы и редак- в nUbuntu вместо KDE или GNOME ис- от большинства решений, все дейст-
тирования системных файлов до ана- пользован легкий Fluxbox, плюс убра- вия в nUbuntu производятся от име-
лиза структуры сети. ны все «лишние» приложения вроде ни непривилегированного пользова-
Не остались в стороне достиже- OpenOffice.org, почтовые клиенты, иг- теля nubuntu.
ния Ubuntu на десктопах. В итоге пред- ры и так далее. Это позволило умень- Для выполнения задач, требующих
ложено, как минимум, два решения шить размер дистрибутива до 430 Мб. прав администратора, используется
на его основе – Protech ONE и nUbuntu Также стоит отметить, что в отли- sudo, что является стандартом в Ubuntu.
(Network Ubuntu). Проект Protech ONE чие от остальных подобных решений Хотя при выборе некоторых меню для
после нескольких тестовых релизов интерфейс nUbuntu локализован, хо- запуска утилит (Nmap, например) сразу
представил (в сентябре 2007 года) тя и частично. Выбор языка системы открывается рутовская консоль.
лишь единственную версию, и о его производится стандартно для LiveCD Чтобы загрузить Fluxbox, достаточ-
дальнейшем развитии информации Ubuntu – в загрузочном меню. Конечно, но набрать «startx».
в настоящее время нет. отсутствие интерфейса на родном язы- Кроме инструментов безопаснос-
ке не должно останавливать пользова- ти, дистрибутив содержит некоторые
Дистрибутив nUbuntu теля, на которого рассчитаны специ- стандартные приложения:
Проект nUbuntu появился в конце де- альные дистрибутивы, но такая функ- n текстовые редакторы – VIM, Gvim
кабря 2005 года. Основной его зада- циональность лишней не будет. и GNU/Nano;
чей было создание LiveCD-версии на- Тестирование показало, что nUbuntu n сетевые приложения – XChat, irssi,
биравшего тогда популярность дистри- хорошо себя чувствует на самом раз- gFTP;
бутива Ubuntu (в то время он не имел ном оборудовании и на виртуальных n клиенты удаленного рабочего
LiveCD-варианта), оснащенного утили- машинах. Например, сконфигуриро- стола – RDesktop и VNC Viewer;

№1, январь 2009 47


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование
n файловый менеджер – Thunar.

Веб-браузер Mozilla Firefox 3.0.3 со-


держит несколько специфических рас-
ширений, позволяющих проверить от-
крытую страницу на наличие уязви-
мостей или отредактировать заголов-
ки HTTP или Cookies: Access Me, SQL
Inject Me, XSS Me, HackBar, Tamper
Data, User Agent Switcher и другие. По-
чему-то не включены в состав попу-
лярный файловый менеджер Midnight
Commander и консольные веб-браузе-
ры links/lynx.
nUbuntu – дистрибутив для подго-
товленного пользователя. Каких-либо
дополнительных утилит для настрой-
ки сервисов или оборудования не пре-
дусмотрено, большая часть настроек,
если таковые понадобятся, осущест-
вляется правкой конфигурационных
файлов. Веб-интерфейс к FastTrack в nUbuntu
До версии 8.10 программа уста-
новки дистрибутива на жесткий диск ubiquity не входила А еще инструментарий для взлома и подбора паролей,
в комплект поставки, теперь ее дополнительно устанав- Honeypot-система Nepenthes, утилиты для поиска уязви-
ливать не нужно. Ее работа не отличается от аналогичной мостей в базах данных и так далее.
в Ubuntu. Для установки необходимых приложений можно Работа с эксплойтами в nUbuntu, как мне кажется, ор-
использовать apt-get. При вызове меню Install то USB по- ганизована удобнее по сравнению с BackTrack. В подменю
является ошибка: Exploits находим ссылку на Metasploit Framework 3.1, кото-
рые можно запускать из командной строки, при помощи веб-
Could not open /cdrom/.disk/info интерфейса или обновлять одним нажатием клавиши. Хо-
Please run this application on a Ubuntu live system|
or mount a Ubuntu live ISO to /cdrom тя в BackTrack, к слову, есть и GUI к Metasploit, а количест-
во самих эксплойтов больше.
После чего программа прекращает дальнейшую рабо- Поиск и обновление эксплойтов лучше производить
ту. Судя по сообщениям на форуме проекта, эта ошибка через пункт Exploit Tree. Запустить скрипт FastTrack, кото-
уже известна разработчикам и будет исправлена в даль- рый позволяет произвести автоматическое тестирование
нейших релизах. Поэтому будем надеяться, что установка системы на наличие уязвимостей (написан хакером ReL1K
на флешку не будет вызывать проблем, это только доба- из SecureState), из меню Fluxbox не удается. Скрипту необ-
вит плюсов nUbuntu. ходимо задать режим работы, а настройки меню этого не
Основной арсенал средств проверки безопасности соб- предусматривают. Поэтому необходимо самостоятельно
ран в отдельном меню – Security Tools, в котором насчиты- перейти в консоли в каталог ~/tools/exploits/fasttrack и за-
вается 13 подпунктов. Большая часть находящихся здесь тем вызвать скрипт fast-track.py, указав один из режимов.
утилит находится в подкаталоге ~/Tools (его размер 150 Мб), По мере необходимости будет запрошена загрузка из Ин-
только утилиты, доступные в официальном репозитарии тернета дополнительных модулей.
Ubuntu (Nmap, Amap, Wireshark), вызываются из /usr/bin.
Список основных утилит приведен в документе «List Заключение
of Tools included in nUbuntu 8.10», доступном на WiKi про- Естественно, nUbuntu – дистрибутив, не рассчитанный
екта. Здесь есть все что необходимо для проверки сетей на широкий круг пользователей, и в отличие от своего пра-
и систем: родителя требует некоторого уровня подготовки для его на-
n сканеры – Nmap, Amap, Nessus, Nikto, w3af, wapiti; стройки и использования большинства утилит. Специалис-
n снифферы – Ettercap, Wireshark, DSniff, SSHow, MailSnarf, ты, занимающиеся безопасностью, по достоинству оценят
URLSnarf; его возможности.
n спуфферы – ARPSpoof, DNSSpoof;
n анализ Bluetooth и Wi-Fi – Bluetooth Audit, Blue Snarfer, 1. Сайт проекта nUbuntu – http://www.nubuntu.org.
ObexFTP, Kismet, Wicrawl, coWPAtty; 2. Сайт проекта BackTrack – http://www.remote-exploit.org/
n проверки сервисов на предмет переполнения бу- backtrack.html.
фера (fuzzers) – BED (Bruteforce Exploit Detector), CIRT 3. Сайт проекта Samurai – http://samurai.inguardians.com.
Fuzzer, ZZUF; 4. Сайт Secur[IT]y Distro – http://securitydistro.com.
n Cisco – Asleap, Cisco Explorer, Cisco Auditing Tools. 5. Сайт проекта grml – http://grml.org.

48
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование

Lustre FS. Настраиваем и используем


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

В
первой части статьи (см. №11 за 2008 г.) я описал Вышеуказанные шаги нужно произвести на каждом
процедуру установки и настройки кластерной фай- из серверов из пары Master/Slave. Обычно я устанавливаю
ловой системы Lustre. На данный момент текущая критические программы из исходных кодов вместо уже соб-
версия ФС Lustre не поддерживает технологий избыточ- ранных пакетов, потому что производители последних часто
ности информации (RAID, replication), поэтому при отклю- очень опаздывают с выпуском обновленных версий.
чении какого-либо сервера с данными они будут недоступ-
ны клиентам. Настройка DRBD
В этой статье я расскажу, как можно повысить отказо- На этом этапе необходимо настроить репликацию данных
устойчивость системы путем дублирования информации на между серверами oss1-a и oss1-b. Для этого в файл /etc/
серверах с данными. Для этого мы воспользуемся двумя drbd.conf вносим следующие конфигурационные строки:
известными проектами High-Availability Linux Project (Linux
HA) и Distributed Replicated Block Device (DRBD). # Название нашего ресурса (диска)
resource r0 {
# Синхронный протокол репликации
Топология системы protocol C;
# Временные настройки
Предполагается, что данные каждого сервера будут репли- startup { wfc-timeout 0; degr-wfc-timeout 120; }
цированы на запасной сервер средствами DRBD. Для про- # Отключать ресурс в случае сбоя диска
disk { on-io-error detach; }
зрачного переключения между серверами будет использо- # Ограничение скорости передачи данных между серверами
ваться пакет Linux HA. # Slave и Master
syncer { rate 10M; }
# Описание подсистемы на oss1-a
Установка и настройка DRBD on oss1-a1.domain.com {
# Путь к устройству хранилища DRBD
В этом разделе я опишу процесс создания программно-ап- device /dev/drbd1;
паратного комплекса из двух серверов с использованием # Путь к физическому диску, где будут храниться
# метаданные и сами данные сервиса DRBD
программы DRBD. Как результат, первый сервер будет на- disk /dev/hda7;
ходится в режиме Master, второй же будет содержать реп- # IP-адрес первого сервера
address 10.40.10.10:7791;
лицированные данные с первого сервера. # Указание, где будут храниться метаданные сервиса DRBD.
# В данном случае я использовал внутренний объем
# раздела, где хранятся данные.
Установка программы DRBD meta-disk internal;
В своей работе я использую CentOS, поэтому описание про- }
}
цедуры установки и настройки будет ориентировано на этот
дистрибутив. Получаем последнюю версию программы По аналогии создаем описание устройства DRBD
DRBD (на момент написания была доступна версия 8.2.7 с в этом же файле для второго сервера oss1-b:
сайта производителя http://www.drbd.org, раскрываем ар-
хив и устанавливаем программу: on oss1-b.domain.com
{
device /dev/drbd1;
tar -xzvf drbd-8.2.7.tgz disk /dev/sda7;
make KDIR=/usr/src/linux address 10.40.10.11:7791;
make tools meta-disk /internal;
make install }
make install-tools

где переменная KDIR указывает на каталог с исходными Копируем этот файл на сервер oss1-b.domain.com в ка-
текстами используемого ядра Linux. талог /etc.

№1, январь 2009 49


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование
Описание ресурсов Установка и настройка Linux HA
Компонент Описание Перед установкой Linux HA необходимо проверить на-
oss1-a.domain.com Имя master-сервера личие пакетов разработчика: библиотека Perl LibNet,
10.40.10.12/25/eth0 Отказоустойчивый IP-адрес, маска для него
libgcrypt, gnutls, libgpg-error. Описание процесса установ-
и на каком интерфейсе он должен включаться ки этих пакетов выходит за рамки данной статьи, и я ре-
drbddisk::r0 Drbddisk – скрипт, который расположен комендую обратиться к сопроводительной документа-
в /usr/local/etc/ha.d/resource.d/ ции этих пакетов за подробными инструкциями. Так-
r0 – имя ресурса (из настроек DRBD)
же необходимо убедиться, что в ядре включены следую-
Filesystem::/dev/drbd1::/mnt/ost1::lustre Описание файловой системы. Соответственно:
/dev/drbd1 – наше drbd-хранилище щие опции: CONFIG_CONNECTOR (раздел Device Drivers)
/mnt/ost1 – точка монтирования и CONFIG_CRYPTO_HMAC (раздел Cryptographic options).
lustre – тип файловой системы

Установка Linux HA
Запуск сервиса DRBD и инициализация хранилищ Домашняя страница проекта находится по адресу http://
Перед инициализацией хранилищ DRBD необходимо за- linux-ha.org. Загружаем архив последней версии програм-
пустить сервис drbd на обоих серверах: мы Linux HA, раскрываем, проводим конфигурацию, ком-
пилируем и устанавливаем:
/etc/init.d/drbd start
tar -xvf STABLE-2.1.4.tar
cd Heartbeat-STABLE-2-1-STABLE-2.1.4
На каждом сервере необходимо выполнить следующие ./ConfigureMe configure
шаги. Создание блока метаданных: make
make install

drbdadm create-md r0 При этом все настройки будут установлены в каталог


/usr/local/etc/ha.d. Добавляем учетную запись пользователя
Подключение раздела для данных к ресурсу: hacluster и группу haclient согласно документации:

drbdadm attach r0 adduser hacluster


groupadd haclient

Подключение сервисной части DRBD к ресурсу: Небольшое отступление. Когда master-сервер перехо-
дит в состояние сбоя, то Linux HA должен смонтировать реп-
drbdadm connect r0 лицированный раздел /dev/drbd1 на Slave-сервере в режим
Master. Для этого существует скрипт drbd, который входит
Затем запускаем синхронизацию с сервера oss1-a: в поставку программы Linux HA. Его нужно скопировать
из каталога scripts в каталог ресурсов Linux HA:
drbdadm -- --overwrite-data-of-peer primary r0
cp /usr/src/drbd-8.2.7/scripts/drbddisk ↵
/usr/local/etc/ha.d/resource.d/
По умолчанию синхронизация может занять несколько
дней, если данные не поступают в хранилище. У меня это
заняло несколько дней, поэтому для ускорения я применил Настройка Linux HA
следующую команду на сервере oss1-a: Система настроек Linux HA состоит из трех файлов:
n ha.cf – общие настройки;
drbdadm adjust r0 n haresources – настройка ресурсов;
n authkeys – файл аутентификации.
Далее проверяем содержимое /proc/drbd, в котором дол-
жен быть виден прогресс синхронизации. По завершении Общие настройки
репликация сервера oss1-a на oss1-b должна быть в состо- Находятся в файле /usr/local/etc/ha.d/ha.cf. Минимальный
янии Primary/Secondary: набор состоит из следующих строк:

cat /proc/drbd # Порт, на котором будут приниматься сообщения от других


# серверов
version: 8.2.7 (api:88/proto:86-88) udpport 694
GIT-hash: xxxx build by root@oss1-a1 # Способ оповещения других серверов. В данном случае —
1: cs:Connected st:Primary/Secondary ds:UpToDate/UpToDate C r--- # broadcast через интерфейс etho
ns:140 nr:0 dw:668 dr:1186 al:5 bm:15 lo:0 pe:0 ua:0 ap:0 oos:0 bcast eth0
# Не использовать формат XML для настройки ресурсов.
# Использовать текстовый формат настроек
Форматируем раздел /dev/drbd1 под файловую систе- crm no
му Lustre: # Список серверов
node oss1-a.domain.com
node oss1-b.domain.com
mkfs.lustre --reformat --ost --fsname=webstorage ↵ # Временные настройки
--mgsnode= mds.domain.com@tcp0 /dev/drbd1 keepalive 1
deadtime 3
В случае возникновения проблем необходимо проверить hopfudge 1
# Включение режима failover
системные журналы сообщений на предмет ошибок. auto_failback on

50
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование
# Включить использование системного syslog для лог-файлов
use_logd on

Настройка ресурсов
Файл /usr/local/etc/ha.d/haresources содержит список ресур-
сов, которые должны активизироваться на slave-сервере
в случае отключения master-сервера. Описание каждого
ресурса для типичного случая содержит компоненты:
n имя master-сервера;
n отказоустойчивый адрес-IP; Топология системы
n описание общей файловой системы;
n список сервисов, которые должны быть запущены на ак- mount | grep drbd
тивном сервере (не используются на серверах OSS, так /dev/drbd1 on /mnt/ost1 type lustre (rw)
как сервисы обычно запускаются на клиентах ФС Lustre).
Соответственно на сервере MDS в лог-файлах можно
В нашем случае строка ресурсов выглядит так: увидеть следующую строку:
Connection restored to service webstor-webstorage using nid xx.xx.xx.xx@tcp.
oss1-a.domain.com 10.40.10.12/25/eth0 drbddisk::r0 ↵
Filesystem::/dev/drbd1::/mnt/ost1::lustre
где 10.40.10.12 – наш отказоустойчивый адрес IP (смотри-
те таблицу).
Настройка файла аутентификации authkeys
Этот файл authkeys расположен в /usr/local/etc/had.d/ и со- Тестирование Failover
держит описание методов, которые используются для аутен- Выключаем сервер oss1-a, ждем несколько минут и прове-
тификации сервера Slave на сервере Master и наоборот. ряем сервер oss1-b. Если все правильно настроено, то мо-
Формат записей следующий: жем обнаружить, что наш «плавающий» IP появился на этом
сервере. Также сервис DRBD находится в состоянии Master,
auth 1 и что файловая система Lustre смонтирована:
1 sha1 your_password_here

где: mount | grep drbd


n 1 – номер ключа, ассоциированный с этой строкой; /dev/drbd1 on /mnt/ost1 type lustre (rw)
n sha1 – метод шифрования;
n your_password_here – сам пароль в открытом виде. Проверяем лог-файл на сервере MDS и обнаруживаем
следующую строку:
Поддерживаются следующие алгоритмы шифрования:
Lustre: : Connection restored to service
n sha1 – SHA1-шифрование (используется ключ); webstorage-OST0001 using nid 10.40.10.12@tcp.
n md5 – проверка данных по MD5 (используется ключ);
n crc – простая проверка целостности через подсчет кон- Что означает, что сервер MDS удачно смог восстановить
трольной суммы. соединения с сервером OSS.
Примечание. В Linux HA есть механизм под названи-
Пример такого файла: ем STONITH, который может быть использован для прину-
дительного выключения сбойного сервера. Этот механизм
auth 1 обычно используется в системах с совместным доступом
1 md5 my_god_password_nobody_will_know
к общему ресурсу, например Serial Attached Network (SAN).
Также нужно сделать, чтобы файл с паролями был досту- Но в данном случае каждый сервер имеет собственное хра-
пен для чтения только системному пользователю root: нилище, поэтому механизм не используется.

chmod 600 /etc/ha.d/authkeys Финальные шаги


Если все нормально было настроено и все работает
Запуск и тестирование подсистемы как ожидалось, необходимо включить загрузку программ
Linux HA DRBD и Linux HA в процедуру запуска сервера. Для этого
После того как все настроено, можно перейти к запуску на обоих серверах выполняем следующие команды:
и тестированию всей системы. Последовательно запуска-
ем Linux HA на сервере oss1-a и oss1-b: chkconfig drbd on
chkconfig heartbeat on

/etc/init.d/heartbeat start Теперь все.

По истечении нескольких секунд на сервере можно бу- 1. http://wiki.lustre.org.


дет увидеть, что сервис Linux HA смонтировал раздел /dev/ 2. http://gazette.linux.ru.net/rus/articles/clusters.html.
drbd1 на точку монтирования /mnt/ost1: 3. http://xgu.ru/wiki/DRBD.

№1, январь 2009 51


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование

Квартет:
«САМО», «1C», wine и Etersoft

Сергей Барановский

Если проблемы миграции «САМО-Тур» под Linux постепенно исчезают, то с запуском


«1С:Предприятие 7.7» пришлось изрядно повозиться. Запуск программы – это половина
проблемы, гораздо важнее организация гибко настраиваемого экспорта данных. В этом
вопросе разработчики не шли и не идут навстречу пользователям, желающим применять
Open Source ПО в связке с программами «1С». Нюансов настолько много, что даже
специализированные решения от Etersoft не могут закрыть все пробелы.

52
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование

Н
а рынке туроператоров наша фирма уже больше го-
да держит «флаг первенства» в переходе на ОС Linux.
Несмотря на то что приятно быть первыми, другие
компании не решаются на столь отважный шаг. Инфор-
мация о переходе в других компаниях нашей отрасли мне
не известна. Если частичный переход на Open Office осу-
ществили десятки туристических фирм, в том числе и на-
ши партнёры, то малая популярность использования ОС
Linux состоит в том, что не все компании могут организо-
вать её грамотную поддержку. Однако когда число компью-
теров исчисляется сотнями, даже первичная оценка стои-
мости покупки различных лицензий и обновления желе-
за отрезвляет.
В процессе перевода «рабочих мест» сотрудников
под ОС Linux выяснилось, что для сотрудников нужны
не только офис, браузер и почта, но и другие нестандарт-
ные приложения, такие как бухгалтерские программы, банк-
клиенты, on-line-системы бронирования, системы учёта кад-
ров и пр. Если вначале нам казалось, что камнем преткно-
вения являлась программа «САМО-Тур» и компания «САМО- Рисунок 1. Выбор пакетов для установки с помощью winetricks
Софт» недружелюбно к нам относилась, то сейчас, в срав-
нении с «1С», можно сказать, что мы ошибались. Запустить wine-cms i386 1.1.9-2.fc8 updates-newkey 42 k
wine-core i386 1.1.9-2.fc8 updates-newkey 11 M
«САМО-Тур» под Linux удалось [1, 2], а имеющиеся ошибки wine-desktop i386 1.1.9-2.fc8 updates-newkey 26 k
wine-esd i386 1.1.9-2.fc8 updates-newkey 37 k
неспешно исправляются разработчиками, когда мы о них wine-jack i386 1.1.9-2.fc8 updates-newkey 39 k
сообщаем. С «1С» возникло больше вопросов, чем отве- wine-ldap i386 1.1.9-2.fc8 updates-newkey 91 k
wine-nas i386 1.1.9-2.fc8 updates-newkey 25 k
тов. Несколько лет мы не можем добиться помощи, а отве- wine-tools i386 1.1.9-2.fc8 updates-newkey 626 k
wine-twain i386 1.1.9-2.fc8 updates-newkey 48 k
ты их технической поддержки похожи на шутку: «Извините,
у нас нет туалетной бумаги, зато есть наждачная». Transaction Summary
================================================================================
В своей работе для бухгалтерского учёта мы исполь- Install 11 Package(s)

зуем версию «1С:Предприятие 7.7» (далее по тексту «1С»).


К переходу на версию 8 мы не готовы, так как за десятиле- Программа «1С:Предприятие» успешно ставится без ка-
тие в версию 7.7 было внесено столько исправлений раз- ких-либо проблем, но запускаться и работать не хочет.
личными программистами, что «голая» восьмёрка нам ни- При запуске в консоли получаем следующие сообщения:
как не подойдёт, а дорабатывать её накладно. Предпола-
гаю, что на рынке ситуация аналогична: фирмы, работаю- $ pwd
щие с программой более 8-10 лет, полностью адаптирова- /home/labirint/.wine/drive_c/Program Files/1Cv77/BIN
ли её под свои нужны и не видят смысла в лишних затра-
$ wine ./1cv7s.exe
тах на обновление. Поэтому наш опыт запуска «1С:Пред-
приятие 7.7» может пригодиться читателям. err:module:import_dll Library MFC42.DLL (which is needed by
L"C:\\Program Files\\1Cv77\\BIN\\Type32.dll") not found
err:module:import_dll Library Type32.dll (which is needed by
«1С:Предприятие 7.7» под Linux L"C:\\Program Files\\1Cv77\\BIN\\Frame.dll") not found
err:module:import_dll Library MFC42.DLL (which is needed by
На форумах много информации о запуске «1С» под Linux, L"C:\\Program Files\\1Cv77\\BIN\\Frame.dll") not found
но мало информации о работе сетевой версии. Поэтому что- err:module:import_dll Library Frame.dll (which is needed by
то будет неизбежным повторением ранее придуманных ре- L"C:\\Program Files\\1Cv77\\BIN\\1cv7s.exe") not found
...
шений, а что-то окажется новым. Установка будет произво- err:module:import_dll Library MFC42.DLL (which is needed by
диться в ОС Linux Fedora 8. Попутно будут небольшие заме- L"C:\\Program Files\\1Cv77\\BIN\\1cv7s.exe") not found
err:module:LdrInitializeThunk Main exe initialization for
чания о работе «САМО-Тур», так как изначальной целью ус- L"C:\\Program Files\\1Cv77\\BIN\\1cv7s.exe" failed, status c0000135
тановки была работа двух этих приложений под ОС Linux.
Первым делом ставим wine, на сегодня последняя вер- Из сообщений видно, что программе явно не хватает
сия доступная через yum 1.1.9. MFC42. Удобнее всего установить библиотеки и другие па-
кеты, воспользовавшись утилитой winetricks [3]. Для этого
# yum install wine скачиваем программу и запускаем:

В результате ставится 11 пакетов: $ wget http://kegel.com/wine/winetricks


$ sh ./winetricks
================================================================================
Package Арх. Версия Repository Size Замечание: вполне возможно, вам понадобится уста-
================================================================================
Installing: новить cabextract, например, через команду:
wine i386 1.1.9-2.fc8 updates-newkey 23 k
Installing for dependencies:
wine-capi i386 1.1.9-2.fc8 updates-newkey 27 k yum install cabextrac t

№1, январь 2009 53


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование
from rc file value "((GString*) 0x9c594a0)" of type `GString'
Setting Windows version to win98
Executing wine regedit /home/labirint/.wine/drive_c/winetrickstmp/
set-winver.reg
Executing wine /home/labirint/.winetrickscache/DCOM98.EXE
fixme:setupapi:SETUPX_CreateStandardLDDs LDID_SRCPATH: what exactly
do we have to do here ?
fixme:setupapi:GenInstall16 unsupported flag: GENINSTALL_DO_REGSRCPATH
fixme:setupapi:vcpUICallbackProc16 (0x5a60, 0705, 0000, 00000000,
003452ac) – semi-stub
...
fixme:setupapi:GenInstall16 unsupported flag: GENINSTALL_DO_CFGAUTO
fixme:rpc:DllRegisterServer (): stub
Using native,builtin override for following DLLs: ole32 oleaut32
rpcrt4
Рисунок 2. Окно запуска «1С» в режиме конфигуратора Executing wine regedit /home/labirint/.wine/drive_c/winetrickstmp/
override-dll.reg
Using builtin override for following DLLs when running services.exe:
ole32 oleaut32 rpcrt4
...
Clearing Windows version back to default
Executing wine regedit /home/labirint/.wine/drive_c/winetrickstmp/
unset-winver.reg
Install of dcom98 done
fixme:setupapi:SetupDefaultQueueCallbackW notification 262144 params
32f9ac,0
err:setupapi:SetupDefaultQueueCallbackW copy error 0 L"C:\\windows\\
temp\\IXP001.TMP\\comcat.dll" -> L"C:\\windows\\system32\\comcat.dll"
Executing cabextract /home/labirint/.winetrickscache/vcredist.exe
Extracting cabinet: /home/labirint/.winetrickscache/vcredist.exe
extracting VCRedist.inf
extracting PreSetup.exe
extracting 50comupd.exe
extracting asycfilt.dll
Рисунок 3. Выбираем расширение Resource Browser extracting atla.dll
extracting comcat.dll
extracting mfc42.dll
extracting mfc42u.dll
extracting msvcirt.dll
extracting msvcp60.dll
extracting msvcrt.dll
extracting oleaut32.dll
extracting olepro32.dll
extracting stdole2.tlb
extracting atlu.dll
extracting ADVPACK.DLL
extracting W95INF32.DLL
extracting W95INF16.DLL

All done, no errors.


Install of vcrun6 done
winetricks done.

Рисунок 4. Удаляем ресурс 1049\ZLIB_DATA\1189 с помощью


Resource Browser Из директории ~/.wine/drive_c/Program Files/1Cv77/BIN
запускаем ещё раз «1С».
Если не указать параметры, то в консоли появляют-
ся различные сообщения, а далее выскакивает графи- $ wine ./1cv7s.exe
ческое окошко, где следует выбрать пакеты для установ-
ки (см. рис. 1). Программа запускается, мы нажимаем кнопку «Доба-
Выбираем dcom98 и vcrun6 и нажимаем кнопку «ОК». вить», выбираем директорию, где находится база, и запус-
Далее выскочит окно с запросом на установку библиотек каем её в режиме конфигуратора (см. рис. 2).
DCOM98, отвечаем «Да». Начинается запуск, и система зависает на заставке.
Замечание: несмотря на то что для установки DCOM98 Опытным путём удалось установить, что зависание про-
не требуется подтверждение прочтения лицензии, озна- исходит потому, что окно входа в систему (для ввода логи-
комиться с ней можно тут: http://www.microsoft.com/com/ на и пароля) находится под заставкой, поэтому наша сле-
dcom/dcom98/eula.asp, откуда следует, что у вас должна дующая задача либо поменять их местами, либо отклю-
быть лиценция на Windows98. При желании можно обой- чить заставку.
тись и без использования DCOM98, например с помощью Поиск по форумам привёл к различным решениям [4, 5] –
Wine@Etersoft, подробнее читайте далее. от указания ключа no_splash_show, до внесения правки
В процессе установки в консоли проскакивают различ- в exe-файл. Предложенные патчи и подходы не подошли,
ные сообщения: зато было найдено другое работающее решение, а имен-
но, с помощью внесения исправления в одну из библиотек.
$ sh ./winetricks Для этих целей можно использовать, например, утилиту
Gtk-Message: (for origin information, set GTK_DEBUG): failed to Resource Hacker [15] или файловый менеджер Far [6] c рас-
retrieve property `GtkTreeView::odd-row-color' of type `GdkColor' ширением Resource Browser [7].

54
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование
Для этого создаём директорию, например resource_
browser в директории %System Drive%\Program Files\Far\
Plugins и помещаем туда файлы из архива frb100b5.zip [7].
Перезапускаем Far, ставим курсор на файл 1crcrus.dll
и жмём <F11>, выбираем расширение Resource Browser
(см. рис. 3) и заходим внутрь файла.
Далее можно удалить ресурс 1049\ZLIB_DATA\1189
(см. рис. 4). Это и есть стартовая заставка «1C», сжатая
Рисунок 5. Убираем галочку «Окна → Панель окон → Показать»
архиватором ZIP.
Замечание: приобретённый и используемый нами дис-
трибутив «1С:Предприятие 7.7. Бухгалтерский учёт. Типовая
конфигурация» лицензионным соглашением, где бы запре-
щалось или разрешалось модифицировать библиотеки для
собственных целей, на момент приобретения не комплекто-
вался. На сайте www.1c.ru найти информацию не удалось.
По телефону в ответ на вопрос о лицензионном соглаше-
нии подтвердили отсутствие лицензионного соглашения
для данного продукта. Выгоды из предлагаемого решения
мы не получаем, авторские права фирмы «1С» мы не нару-
шаем. Так как журнал может быть прочитан за пределами
РФ, ответственность за соблюдение местных законов ле-
жит на читателях. Вариантом другого решения может быть
использование Wine@Etersoft. Рисунок 6. «Администрирование → Параметры базы данных
SQL...»
После удаления заставки повторяем запуск в режиме
конфигуратора. Заставка не появляется, а через некото-
рое время мы видим окно входа в систему.
После ввода правильных аутентификационных данных
мы попадаем в программу «1С» в режиме конфигуратора,
где необходимо убрать галочку «Окна → Панель окон →
Показать» (см. рис. 5), так как нижняя панель некорректно
Рисунок 7. Вводим адрес SQL-сервер, имя базы данных,
работает под wine и приводит к закрытию всего приложе- имя пользователя и пароль
ния при обычном запуске.
Если у вас не используется SQL-сервер или сетевое ...
хранение данных, то на этом настройка системы закон- //192.168.0.1/base_1c on /base_1c type cifs (rw,mand)

чена. Можно перегрузиться в пользовательском режиме


и работать. Читателям придётся поверить на слово, но на практике
было установлено, что штатный CIFS-модуль ядра не ра-
Продолжение настройки для работы ботает корректно c блокировками, поэтому для успешно-
с SQL-сервером го запуска «1С» в многопользовательском режиме модуль
Если у вас более сложная конфигурация и использует- следует заменить на аналогичный бесплатный – etercifs
ся SQL-сервер, то его необходимо прописать в «1С». Для от фирмы Etersoft [9].
этого заходим в «Администрирование → Параметры базы Скачиваем и устанавливаем исходные коды послед-
данных SQL...» (см. рис. 6), появляется окно, где вводим ней версии:
адрес SQL-сервера, имя базы данных, имя пользователя
и пароль (см. рис. 7). $ wget http://updates.etersoft.ru/pub/Etersoft/ ↵
WINE@Etersoft/1.0.9/CIFS/Fedora/8/ ↵
После этого выходим из конфигуратора и настраиваем etercifs-4.0.0-eter2fedora.noarch.rpm
сетевую папку для базы. В нашем случае это CIFS-ресурс
# rpm -ihv etercifs-4.0.0-eter2fedora.noarch.rpm
на компьютере 192.168.0.1.
Прописываем в файле /etc/fstab: Подготовка... ######################################## [100%]
1:etercifs ############################## [100%]
Etersoft CIFS module... [PASSED]
//192.168.0.1/base_1c /base_1c cifs ↵
auto,rw,username=1c,password=xxx,uid=500,gid=500 0 0
После установки необходимо скомпилировать модуль
500 – это UID пользователя, от которого будет осущест- (подразумевается, что компилятор gcc, необходимые биб-
вляться запуск «1С». Узнать его можно либо с помощью ко- лиотеки и исходные коды с заголовками ядра у вас уста-
манды id, или посмотрев файл /etc/passwd. новлены):
Запустив команду mount, убеждаемся, что ресурс при-
монтирован: # /etc/rc.d/init.d/etercifs build
Building for 2.6.26.6-49.fc8 Linux kernel
#mount | grep 1c (headers in /lib/modules/2.6.26.6-49.fc8/build)

№1, январь 2009 55


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование
/usr/bin/gcc Для удобства в директории ~/.wine/dosdevices создаём
make: Entering directory `/usr/src/kernels/2.6.26.6-49.fc8-i686'
...
мягкую ссылку, чтобы, например, диск d: под wine был на-
make: Leaving directory `/usr/src/kernels/2.6.26.6-49.fc8-i686' шей сетевой директорией:
make: Entering directory `/usr/src/kernels/2.6.26.6-49.fc8-i686'
CC [M] /tmp/Etercifs.VTDm4513/kernel-source-etercifs-2.6.26-1.53/
cifsfs.o $ ln -s /base_1c d:

Building for 2.6.26.6-49.fc8 Linux kernel


(headers in /lib/modules/2.6.26.6-49.fc8/build) После настраиваем подключения к SQL-серверу,
/usr/bin/gcc
make: Entering directory `/usr/src/kernels/2.6.26.6-49.fc8-i686'
для этого ставим freetds (подробнее см. [1, 2]). В файле /etc/
make: Leaving directory `/usr/src/kernels/2.6.26.6-49.fc8-i686' freetds.conf прописываем базу:
make: Entering directory `/usr/src/kernels/2.6.26.6-49.fc8-i686'
CC [M] /tmp/Etercifs.VTDm4513/kernel-source-etercifs-2.6.26-1.53/
cifsfs.o [Server1c]
CC [M] /tmp/Etercifs.VTDm4513/kernel-source-etercifs-2.6.26-1.53/ host = 192.168.0.1
cifssmb.o port = 1433
... tds version = 8.0
CC [M] /tmp/Etercifs.VTDm4513/kernel-source-etercifs-2.6.26-1.53/ client charset = WINDOWS-1251
cifs_spnego.o
CC [M] /tmp/Etercifs.VTDm4513/kernel-source-etercifs-2.6.26-1.53/ Далее настраиваем unixODBC.
dns_resolve.o
CC [M] /tmp/Etercifs.VTDm4513/kernel-source-etercifs-2.6.26-1.53/
Файл tds.driver.template:
cifs_dfs_ref.o
LD [M] /tmp/Etercifs.VTDm4513/kernel-source-etercifs-2.6.26-1.53/ [FreeTDS]
etercifs.o Description=FreeTDS for MSSQL
Building modules, stage 2. Driver=/usr/lib/libtdsodbc.so.0
MODPOST 1 modules
CC /tmp/Etercifs.VTDm4513/kernel-source-etercifs-2.6.26-1.53/
etercifs.mod.o Файл tds.datasource.template:
LD [M] /tmp/Etercifs.VTDm4513/kernel-source-etercifs-2.6.26-1.53/
etercifs.ko
make: Leaving directory `/usr/src/kernels/2.6.26.6-49.fc8-i686' [serv]
Copying built module to /lib/modules/2.6.26.6-49.fc8/kernel/fs/cifs Driver = FreeTDS
Description = 1C_base
Trace = No
Servername = Server1c
Замечание: VTDm4513 – случайные символы. Могут Database = base_1c
быть другими, например AMCk6167 или что-то ещё.
Далее надо отмонтировать сетевую файловую систе- После чего мы выполняем с правами администратора
му для «1С», выгрузить старый модуль cifs, чтобы он не ме- установку драйвера:
шал работе etercifs. Если не отмонтировать – будет сооб-
щение об ошибке. Смотрим, какой модуль загружен, и вы- # odbcinst -i -d -f tds.driver.template
полняем действия.
В результате получим:
# lsmod |grep cifs
odbcinst: Driver installed. Usage count increased to 1.
cifs 211381 1 Target directory is /etc

# rmmod cifs Далее с правами пользователя(!) устанавливаем базу,


ERROR: Module cifs is in use которая будет работать через драйвер, установленный ад-
министратором (root) для всех:
# umount /base_1c
# rmmod cifs $ odbcinst -i -s -f tds.datasource.template
# /etc/rc.d/init.d/etercifs start

Loading CIFS kernel module... [ DONE ]


Эта команда выполняется «молча».
Замечание: настройка для «САМО-Тур» проходила ана-
# lsmod |grep cifs
логично, если вы уже ставили драйвер, то повторно уста-
etercifs 227060 0 навливать его не надо. Подключения к базе можно прове-
рить с помощью isql, до запуска «1С». Подробнее смотри-
Как видим, нужный модуль загрузился, поэтому можем те в [1, 2].
примонтировать нашу файловую систему либо все CIFS- В результате в ~/.odbc.ini должна оказаться информация
файловые системы, указанные в /etc/fstab: о подключении к SQL-серверу для работы с «1С». Имя сер-
вера мы прописали заведомо как «serv».
# mount -t cifs -a Для того чтобы не было ошибок при разрешении име-
ни в IP-адрес во время выполнения программы, на сайте
Чтобы нужный модуль использовался после перезагруз- Etersoft и других местах рекомендуют не использовать име-
ки системы, его надо прописать с помощью создания мяг- на для адреса сервера, а прописывать IP-адрес. Мы же пос-
ких ссылок утилитой chkconfig в директориях соответству- тупим иначе, пропишем соответствие имени и IP в файле
ющих уровней запуска: /etc/hosts, дописав туда строчку:

# chkconfig etercifs on 192.168.0.1 serv

56
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование
Проверить правильность можно командой:

$ ping -c3 serv

В случае успеха команда ping правильно переведёт имя


в IP-адрес и будет посылать ICMP-пакеты по соответству-
ющему IP-адресу.
После всех этих действий можем запустить «1С» из ди-
ректории ~/.wine/drive_c/Program Files/1Cv77/BIN, выпол-
нив команду:

$ wine ./1cv7s.exe

Далее прописываем базу на диске d: и нажимаем «OK».


Программа начинает грузиться, но после «слетает» с ошиб-
кой: Рисунок 8. Непонятные символы во время установки MDAC 2.8
Call from 0x603f2a90 to unimplemented function odbc32.dll.SQLDriverConnectA,
aborting fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub
wine: Unimplemented function odbc32.dll.SQLDriverConnectA called at address ...
0x603f2a90 (thread 002d), starting debugger... fixme:advpack:set_ldids Need to support changing paths - default
Unhandled exception: unimplemented function odbc32.dll.SQLDriverConnectA
will be used
called in 32-bit code (0x603f2b12).
Register dump: fixme:setupapi:extract_cabinet_file awful hack: extracting cabinet
CS:0073 SS:007b DS:007b ES:007b FS:0033 GS:003b "C:\\windows\\temp\\IXP001.TMP\\msvcrt.CAB"
EIP:603f2b12 ESP:0032f3f0 EBP:0032f454 EFLAGS:00200202( - 00 - - I1) fixme:advpack:set_ldids Need to support changing paths - default
EAX:603dc8e5 EBX:60470820 ECX:00000000 EDX:023fd920 will be used
ESI:023fd920 EDI:7caec710 fixme:setupapi:extract_cabinet_file awful hack: extracting cabinet
"C:\\windows\\temp\\IXP001.TMP\\mtxfiles.CAB"
Посмотрев внимательно сообщение, делаем предполо- ...
жение, что надо установить odbc32. Для чего ещё раз за- "C:\\windows\\temp\\IXP001.TMP\\SQLOLDB.CAB"
fixme:advpack:set_ldids Need to support changing paths - default
пускаем winetricks и ставим MDAC 2.8: will be used
fixme:setupapi:extract_cabinet_file awful hack: extracting cabinet
$ sh ./winetricks "C:\\windows\\temp\\IXP001.TMP\\JETFILES.CAB"
Clearing Windows version back to default
Gtk-Message: (for origin information, set GTK_DEBUG): failed to Executing wine regedit /home/labirint/.wine/drive_c/winetrickstmp/
retrieve property `GtkTreeView::odd-row-color' of type `GdkColor' unset-winver.reg
from rc file value "((GString*) 0x98eb4a0)" of type `GString' Install of mdac28 done
Using native,builtin override for following DLLs: odbc32 odbccp32 winetricks done.
Executing wine regedit /home/labirint/.wine/drive_c/winetrickstmp/
override-dll.reg
Setting Windows version to win98 Во время установки вместо русских и английских букв
Executing wine regedit /home/labirint/.wine/drive_c/winetrickstmp/ в окне с лицензионным соглашением будут непонятные
set-winver.reg
Executing wine /home/labirint/.winetrickscache/mdac28/MDAC_TYP.EXE
символы (см. рис. 8). Если согласны, то ставим галочку
err:richedit:ReadStyleSheet ReadStyleSheet: skipping optional (I accept...) и продолжаем установку.
destination Замечание: внутри скачанного файла MDAC_TYP.EXE
...
имеется файл mdaceula.rtf с полным текстом лицензии, внут-
ри которого указано, что «Разрешается
установка и использование неограни-
ченного количества копий продукта ис-
ключительно для внутреннего пользо-
вания в помещениях вашего предприя-
тия». Чтобы знать, с чем вы соглашае-
тесь, прочитайте файл!
После установки MDAC 2.8 запус-
каем «1С» ещё раз...и... Ура, «1С» за-
пустилось! (См. рис. 9.)
Проверяем, работает ли «САМО-
Тур». К сожалению, после установки
MDAC 2.8 – нет, так как нельзя выбрать
базу. Поле «Источник ODBC» пустое
(см. рис. 10).
Проверяем и прописываем за-
ново настройки. В настройках BDE
нужно выставить значение парамет-
ра SHAREDMEMLOCATION, равное
Рисунок 9. «1С:Предприятие» работает под Linux Fedora 8 9000 [14] (см. рис. 11).

№1, январь 2009 57


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование
Далее с помощью C:\Windows\System32\odbcad32.exe
прописываем заново базу для «САМО-Тур». Будет сообще-
ние, что такая база уже есть, игнорируем сообщение и вно-
сим все настройки поверх (см. рис. 12).
В конце настройки тест источника баз данных должен
Рисунок 10. После установки MDAC 2.8 невозможно запустить быть успешно пройден (см. рис. 13).
«САМО-Тур» - поле «Источник ODBC» пустое Теперь, когда «САМО-Тур» работает, пробуем запус-
тить «1С» в многопользовательском режиме. Оказывается,
что порядок подключения к базе имеет значение.
Если первым к базе подключился пользователь из‑под
ОС Linux, то его подключение (и возможное последующее
отключение) никак не влияют на работу пользователей
под ОС Windows.
Если же первым было подключение пользователя, за-
пустившего программу из‑под ОС Windows, то зайти в ба-
зу «1С» вторым и более пользователем на компьютере
с ОС Linux нельзя. Система выдаёт сообщение об ошиб-
ке (см. рис. 14).
В процессе запуска «1С» под ОС Linux были испробова-
ны разные способы и настройки системы, о своих попыт-
ках хотелось бы поведать читателям. Например, были по-
пытки работать через модуль cifs, тогда выдавались другие
Рисунок 11. Устанавливаем в настройках BDE Аdministrator
значение параметра SHAREDMEMLOCATION, равное 9000 ошибки, но они были решены переходом на модуль etercifs.
Читатель проскочил эту тупиковую ветвь выше.
Как решить проблему запуска «1С» вторым пользова-
телем в многопользовательском режиме под wine 1.1.9 мне
пока не ясно, но, видна положительная тенденция в улуч-
шении работы wine.
Например, сейчас не выдается ошибка, и в систему ус-
пешно входит и работает хотя бы один пользователь из‑под
ОС Linux (а после могут работать и другие пользователи
из‑под Windows), в то время как с предыдущими версиями
wine вообще не удавалось запустить «1С», даже в режиме
конфигуратора. Выдавалась ошибка (см. рис. 15).
Что интересно, эта ошибка привела нас на форум «Этер-
софта» [10], где присутствовали интересные ответы, от че-
го она может возникнуть.
Там советовали проверить, установлена ли коммерчес-
кая часть WINE@Etersoft. Это можно было выполнить ко-
мандой winediag (если такой команды нет, значит, коммер-
Рисунок 12. Сообщение о том, что база уже существует ческая часть отсутствует).

WINE@Etersoft SQL
Таким образом, через месяц мучений стало ясно, что пе-
рейти на WINE@Etersoft SQL судьба. Мы удалили бесплат-
ный wine и установили новый:

# yum remove wine wine-core


...
Removed: wine.i386 0:1.1.9-2.fc8 wine-core.i386 0:1.1.9-2.fc8
Dependency Removed: wine-capi.i386 0:1.1.9-2.fc8 wine-cms.i386
0:1.1.9-2.fc8 wine-desktop.i386 0:1.1.9-2.fc8 wine-esd.i386
0:1.1.9-2.fc8 wine-jack.i386 0:1.1.9-2.fc8 wine-ldap.i386
0:1.1.9-2.fc8 wine-nas.i386 0:1.1.9-2.fc8 wine-tools.i386
0:1.1.9-2.fc8 wine-twain.i386 0:1.1.9-2.fc8
Complete!

# rpm -ihv wine-1.0.9-eter37fedora.i586.rpm ↵


wine-etersoft-sql-1.0.9-eter15fedora.i586.rpm
libwine-1.0.9-eter37fedora.i586.rpm
Подготовка... ######################################## [100%]
Рисунок 13. Тест базы данных успешно пройден 1:libwine ############################## [ 33%]

58
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование
groupadd: группа wine существует Из хорошего – половина экспортов происходит неза-
groupadd: группа wineadmin существует висимо от наличия пакета MS Office сразу в файлы, ко-
2:wine ############################## [ 67%]
WINE: Registering binary handler for Windows program: [ DONE ] торые после можно либо копировать по сети, либо от-
3:wine-etersoft-sql ############# ################ [100%] крывать в любой подходящей программе. Подобным об-
Running etersafed... [ DONE ]
разом, через внешний файл работает экспорт и импорт
в банк-клиент.
Замечание: в промежутке между удалением старой Что же касательно «САМО-Тура», то тут «САМО-Софт»
версии wine и установкой новой директория ~/.wine была потрудились, написали и продают модуль, работающий на-
вручную удалена. прямую с их БД, правда, работает он только в одну сторо-
Как ни странно, но если в ранних версиях WINE@ ну, в другую обмен информацией происходит также через
Etersoft SQL были проблемы, то после нашего регулярно- внешний xml-файл.
го общения по почте с «Этерсофтом» версия 1.0.9 научи- Некоторые экспорты из «1С» всё же не работают на ком-
лась запускать и «САМО-Тур». пьютерах без офиса, так как используется СОМ-метод об-
Программы «1С» и «САМО-Тур» были установлены за- ращения к приложениям. Например, если зайти в меню
ново. Настройка «1С» не отличается от указанных выше. «Журналы → Путёвки» и щёлкнуть на любую путёвку, да-
Настройка «САМО-Тура» производилась как если бы эта лее, в окошке шаблон выбрать .dot- или .doc-файл шаблона,
программа ставилась под ОС Windows, то есть ни freetds, а после в печати выбрать пункт «Печать Word» (см. рис. 16),
ни unixODBC, ни BDE ставить не пришлось. Была про- то возникает ошибка (см. рис. 17).
писана база через настройки odbcad32.exe и параметр Радует одно – этим экспортом в нашей фирме поль-
SHAREDMEMLOCATION (см. рис. 11) как в шаге после ус- зуется только одна сотрудница. Переводу всех остальных
тановки MDAC 2.8. под Linux ничего не мешает.
После обе программы успешно заработали. «1С» в том Но даже и эту ошибку можно попробовать исправить
числе стала заходить на сервер, даже если там уже рабо- в будущем. Для этого надо воспользоваться проектом
тают другие пользователи. unioffice [12]. Эта программа позволяет транслировать за-
Удивительно, но «1С» и «САМО-Тур» работают, в пер- просы (точнее, COM-объекты), направленные к MS Office
вом случае даже не надо возиться с отключением застав- в запросы к OpenOffice.
ки, окно ввода имени пользователя и пароля отображает- Маленькая проблема в том, что сейчас (версия 0.4)
ся правильно. Поставил и работай. Не зря «Этерсофт» спе- транслируются только запросы, направленные к электрон-
циализируется на запуске Windows-приложений под Linux, ным таблицам Exсel. Поддержка некоторых, наиболее час-
наверняка «не одну собаку съели». то используемых СОМ-интерфейсов приложения Word пла-
Несмотря на то, что WINE@Etersoft SQL – коммерчес- нируется в ближайшем будущем. Может, к выходу статьи
кий продукт, от процесса его тестирования и общения уже будет реализована. По крайней мере мы уже успели
с сотрудниками фирмы только положительные впечатле- направить свои пожелания в Etersoft, который этим и зани-
ния. Может, когда-нибудь они откроют секрет, что надо мается в свободное от других проектов время.
сделать с обычным wine, чтобы работала SQL-версия «1С». Чтобы понять, что вызвало ошибку (вам это может тоже
Не очень они любят говорить про бесплатный wine, видимо, понадобиться) и знать, какие методы используются, чтобы
есть чем гордиться в их закрытой версии, хотя как вари- послать их разработчикам, в первую очередь надо запус-
ант можно и не ждать, ведь есть и некоммерческая сборка тить «1С» в режиме конфигуратора, а далее, находясь в нём,
wine [11]. Работа «1С» под ней нами ещё не тестировалась нажать клавишу <F11>, после чего запустится ещё одна ко-
из-за отсутствия времени, но в случае успеха можно будет пия программы «1С», уже рабочая, где следует повторить
сравнить исходные коды и получить ответ уже сейчас, ес- все действия, приводящие к ошибке. Далее надо щёлкнуть
ли «1С» заработает. на красные буковки «err» слева от ошибки, в конфигурато-
Вообще это приятно, когда коммерческая фирма берёт- ре откроется новое окно, где вы попадёте на участок кода,
ся развивать некоммерческие проекты, подобно тому вызвавший ошибку:
как существуют Red Hat и Fedora, а то, что это российская
фирма и есть форум на русском языке, вдвойне приятно. Процедура ПоКнопкеВорд()
Знак = "0";
Если СокрЛП(ИмяФайла)<>"" Тогда
Ошибка экспорта в Word
Состояние("Выполняется подключение к шаблону ↵
MS Word...");
Но несмотря на оптимизм последнего удачного запуска Word=СоздатьОбъект("Word.Application");
программы «1С» под ОС Linux, есть и недостатки в её ра- Word.Documents.Add(ИмяФайла);
Word.Selection.GoTo(-1,,, "ДатаСозданияПутёвки");
боте. Они не связаны вообще с операционной системой, Word.Selection.Delete(2,1);
а скрываются в программе, «1С:Предприятие. Версия 7.7» .....
Word.Selection.GoTo(-1,,, "Сумма2");
писалась во времена господства на рынке пиратских вер- Word.Selection.Delete(2,1);
сий ОС Windows и MS Office, поэтому
она с ними только и работает. Фирма
«1С» никак не нацелена на адаптиро-
вание своего продукта к OpenOffice
или альтернативным почтовым кли-
ентам. Рисунок 14. Ошибка «1С:Предприятие» Рисунок 15. Ошибка конфигуратора

№1, январь 2009 59


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование
Word.Selection.TypeText(Строка(Формат ↵ Эту проблему можно также попытаться обойти, сделав
(ТурОбслуживание1_ВвалютеКОплате,"Ч15.2,")) + ↵
" "); //Word.Selection.TypeText ↵ решение для клиентов кроссплатформенным, а именно:
(Строка(ТурОбслуживание1_ВвалютеКОплате) + " "); вместо V7Mail и MAPI использовать компонент ROM‑mail,
Word.Visible=1;
Иначе работающий с протоколом SMTP напрямую.
Предупреждение("Укажите имя файла Word !"); Для этого придётся немного переписать код в базе «1С»,
КонецЕсли;
КонецПроцедуры а далее, если надо отслеживать отправленные счета, сле-
дует поднять SMTP-прокси, на котором помещать копию
Просмотрев код, можно легко понять, какие СОМ-ин- отправленных писем в папку Sent, доступ к которой можно
терфейсы были использованы, они идут после последова- организовать на том же сервере по протоколу IMAP, напри-
тельности «Word». мер, с помощью IMAP-сервера Dovecot, при этом пользо-
ватели смогут использовать привычный им клиент Mozilla
Пример решения с почтой Thunderbird, который не удалось заставить работать пер-
Существует и другая задача, а именно отправка бухгалтерс- вым способом через MAPI.
ких подтверждений или счетов по почте. Счета удобнее все- Сообщения есть, а как «оно» работает многие даже
го выставлять из «1С» нажатием пары кнопок. В этом воп- не задумываются. Решение может быть как на базе любо-
росе фирма «1С» также не удосужилась пойти навстречу го MTA вроде Sendmail, так и в виде небольшой программы
клиентам. Для отправки почты существует внешний компо- на С, использующей файл для сохранения писем и два со-
нент V7Mail (v7plus.dll), но работать с нужными программами кета – один на прослушивание подключений от «1С», а дру-
он не хочет. Как не пошли в фирме «1С» нам навстречу два гой для подключения к провайдерскому SMTP-сервису. Ско-
и три года назад, так и не хотят делать это сейчас. Гораздо рее, это тема следующей статьи.
проще ответить, что: «Работоспособность V7Mail c почто-
вым клиентом Mozilla Thunderbird не проверялась, поэтому Заключение
подобных рекомендаций дать не можем. Несмотря на то, что удалось успешно решить часть проб-
Компонент V7Mail разработан для работы с почтовыми лем по запуску «1С» под Linux, постоянно появляются но-
клиентами Outlook и Outlook Express. Кроме этих клиентов, вые и новые проблемы, не позволяющие нам полностью
он может работать с любым MAPI-совместимым почтовым расслабиться.
клиентом, который корректно поддерживает специфика-
цию Simple MAPI». 1. Барановский С. Как запустить «САМО-Тур» для Windows
Хотя все другие программы успешно используют, заре- под Linux. //Системный администратор, №5, май 2008 г. –
гистрированный по умолчанию клиент Mozilla Thunderbird С. 42‑49.
и используемый MAPI их устраивает. 2. Барановский С. Лебедь, рак да щука: «САМО-Софт», wine,
Etersoft. //Системный администратор, №9, сентябрь 2008 г. –
С. 44-49.
3. Утилита winetricks – http://wiki.winehq.org/winetricks.
4. Как отключить заставку в «1С» – http://www.itland.ru/forum/
index.php?showtopic=5223.
5. Как отключить заставку в «1С» – http://forum.windowsfaq.ru/
archive/index.php/t-67859.html.
6. Файловый менеджер Far – http://farmanager.com.
7. Resource Browser (позволяет смотреть и редактировать ресур-
сы EXE- и DLL-файлов) – http://plugring.farmanager.com/downld/
files/frb100b5.zip.
8. Убрать галочку «Окна → Панель окон → Показать» – http://
forum.ubuntu.ru/index.php?topic=34421.15.
Рисунок 16. Выбираем «Печать Word» 9. Компания «Этерсофт» – http://www.etersoft.ru.
10. Наиболее часто встречающиеся вопросы при использовании
WINE@Etersoft – http://www.etersoft.ru/content/view/102/83.
11. Проект по развитию альтернативного свободного репозитория
eterwine – http://freesource.info/wiki/WINE, http://winehq.org.ru.
12. UniOffice@Etersoft, транслятор COM-объектов MS Office –
http://wiki.etersoft.ru/UniOffice.
13. Способы отправки почты из «1C» – http://love1c.kiev.ua/prog/
mail.htm.
14. Те с т и р о в а н и е «СА МО -Ту р» – ht t p: // b u g s.ete r sof t .r u /
show_bug.cgi?id=1946.
15. Resource Hacker, утилита для просмотра, изменения, добав-
ления, удаления и извлечения ресурсов из 32-разрядных ис-
полняемых файлов – http://www.angusj.com/resourcehacker.
Рисунок 17. Ошибка при экспорте в Word

60
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование

Сдаём бухгалтерскую отчётность


в электронном виде

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

С
удя по тексту письма, в ИФНС получить аккаунт, а после через веб- терфейс потерпит фиаско. Никто не хо-
России №17 по г. Москве реши- форму сдавать отчётность, то это бы- чет оказаться крайним в ситуации, ког-
ли сделать благое дело и пе- ло бы воспринято всеми на ура и пере- да на столичных рынках в подполье по-
ревести фирмы на сдачу отчётнос- ход был бы гладким и быстрым. явятся DVD-диски с налоговой отчёт-
ти в электронном виде. По задумке, Но так сделано не было – то ли нет ностью различных фирм.
это должно сулить меньше очередей, хороших специалистов по веб-техно- Поэтому были выбраны фирмы,
оптимизацию процесса сдачи и про- логиям в ФНС, то ли думают по друго- которые получили разрешения и бы-
верки, в целом подход прогрессивный, му. Что же было предложено? ли сертифицированы для передачи
учитывая, что столица наиболее ком- Понимая, что передавать госу- конфиденциальных данных по сети
пьютеризирована и практически вез- дарственные секреты между отчиты- как с использованием VPN-решений,
де есть доступ в Интернет. Однако гло- вающейся фирмой и налоговой инс- так и без. То есть, фактически, обра-
бальные планы по строительству свет- пекцией надо в зашифрованном виде, зовалось несколько фирм, работникам
лого будущего были испорчены конеч- а стандартный протокол https не под- которых надо также выплачивать зар-
ным решением. держивает алгоритм шифрования плату, которые законно занимаются
ГОСТ‑28147‑89, то есть отечествен- сбором налоговых сведений от фирм
Гладко было на бумаге.... ную стойкую криптографию, сертифи- по защищённым каналам, подписыва-
Если бы фирмам предложили зайти цировать такое решение никто не бу- нием сданных отчётов или удостовере-
на сайт (например mosnalog.ru) и за- дет, а значит, быстрый и удобный ме- нием легитимности цифровой подписи
полнить там регистрационную анкету, ханизм сдачи отчётности через веб-ин- фирмы и передачей их в ФНС. Бесплат-

№1, январь 2009 61


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование
ны, они обещали найти человека, ко-
Веб-решения мотрена разработчиками, фирма Этерсофт торый перепишет программу под Linux
и сертифицированная на сегодня предлагает поддержку по запус- за деньги, с другой стороны, когда мы
криптография под ОС Linux ку в ОС Linux более шести различных банк- решили узнать точно, сколько это будет
успешно работают клиентов: Балтийского банка, Восточно-ев- стоить, «обещанный» человек не был
Что интересно, решения через кроссплат- ропейской финансовой корпорации (ВЕ- найден. Желая узнать больше о новой
форменные веб-технологии уже имеют- ФК), Петро-Аэро-Банка, ИнкасБанка, Тав- технологии сдачи налоговой отчётнос-
ся и широко используются в банковской рического банка, Межбанковского процес- ти, мы выяснили, что фирма «Тензор»
сфере. Например, бывший Инвестсбер- сингового центра Faktura.ru, ВТБ24 (шиф- предлагает решение на базе комплекса
банк несколько лет предлагал своим кли- рование через Inter-Pro v4), ИБанка (Юни- «Крипто-Про 3.0». На форуме «Крипто-
ентам (юридическим лицам) услугу дос- аструм Банк), РосЕвроБанка (шифрование Про» мы нашли тему, где обсуждалась
тупа к собственному счёту через веб-ин- через Inter-Pro v4) [15]. Фирма Амикон, ра- возможность работы этого комплекса
терфейс. Они использовали клиентские ботающая со Сбербанк-клиентом, с нояб- под ОС Linux [6]. Что интересно, в этой
Java-апплеты совместно с сертифици- ря 2008 года ведёт работы по портирова- ветке форума, одна из сотрудниц отде-
рованными ФСБ РФ многоплатформен- нию своего продукта ФПСУ-IP/Клиент под ла технического сопровождения ком-
ными криптобиблиотеками Агава-С [14]. ОС Linux, о чём у нас имеется официаль- пании «Крипто-Про» (судя по подписи
Там, где кроссплатформенность не предус- ный ответ. под сообщением) предложила потести-
ровать продукт под Linux. То есть задел
но никто работать не будет, поэтому ера. Учитывая, что отчётность сдаёт- для того, чтобы обеспечить транспорт
фирмы за свои услуги требуют день- ся пару часов – округлим вверх до по- данных на канальном уровне из опе-
ги. В столице, по традиции, побольше, ловины дня, выйдет 7 рабочих дней. рационной системы Linux в защищён-
в регионах поменьше. То есть получится 7000 рублей, если ном виде, есть.
отчётность будет ходить сдавать бух- А вот дальше, увы, потестировать
Подробности задуманного галтер или 3500 рублей, если послать работу GUI и транспортной програм-
Так как по закону нас обязать кому- курьера. В обоих случаях мы получа- мы под ОС Linux с сертифицирующи-
то что-то платить никто не может, мы ем экономию! ми центрами рекомендованных фирм
решили выяснить более подробно, В ситуации мирового финансово- вряд ли получится. Нет заинтересован-
что же нам предлагают и есть ли в этом го кризиса руководство требует эко- ности с их стороны.
для нас выгода. номить каждую копейку, поэтому наш Вовсю в стране идёт переход
Для упрощения сдачи отчётности выбор очевиден, обойтись своими си- на ОС Linux, пилотные проекты успеш-
и получения помощи в переходе на но- лами. Экономия небольшая, предполо- но отработали в школах [7, 8], появля-
вые технологии нам предлагали вы- жим, что фирмы снизят цены, но тут мы ются новые российские дистрибути-
брать одну из четырёх фирм, которая столкнулись с другой проблемой. вы ОС Linux и успешно сертифициру-
будет нас обслуживать: Наша бухгалтерия успешно рабо- ются ФСТЭК [11], но увы, эти проекты
n «Контур-Экстерн» [1]; тает под операционной системой Linux, оказываются оторванными от обслу-
n «Тензор» [2]; это хорошо сказывается на стабиль- живающей общество инфраструкту-
n «Гарант-Телеком» [3]; ности работы, позволяет экономить ры. На 10 февраля 2009 года заплани-
n «Такском» [4]. на лицензировании. На вопрос, задан- рован семинар «Свободное програм-
ный исполнителю присланного нам до- мное обеспечение в государственном
В целом, вроде и выбор есть, кумента: «А какое решение, вы, госпо- и некоммерческом секторе» при под-
как может показаться, но увы... да налоговики, предлагаете для опе- держке Российского агентства разви-
рационной системы Linux?» мы не ус- тия информационного общества [8, 9],
Оценка затрат лышали ответ и были перенаправлены но там нет предполагаемых тем докла-
Подходящий нам тариф обслужива- всё в те же четыре фирмы, со словами, дов о сдаче налоговой отчётности.
ния стоит порядка 9000 рублей в год. что в технических деталях они не раз- Возможно, лет через пять новое по-
За это мы сможем отказаться от услуг бираются. Увы, в перечисленных выше коление школьников и студентов ис-
нашего курьера, которому надо 14 раз фирмах ответить про то, как это будет правит положение, но как быть сейчас,
в году перейти дорогу (налоговая прак- работать под операционной системой в эпоху кризиса?
тически соседнее здание с нами), пос- Linux, не смогли. Где-то сразу ответили:
тоять в очереди (обычно около часа) «работать не будет», где-то посовето- Сайт mosnalog.ru
и сдать отчётность. Давайте оценим вали использовать эмуляторы или всё Желая получить больше информации,
трудозатраты нашего сотрудника. Ес- же найти средства и купить «Windows- мы обратились к сайту налоговой ин-
ли предположить, что мы среднему со- машину». Это означает, что в денеж- спекции. На присланном нам бланке
труднику платим зарплату 20000 руб- ной оценке вопроса прибавится ещё в шапке документа были указаны ад-
лей в месяц (курьеры обычно получа- стоимость лицензирования рабоче- реса: mosnalog.ru и www.mosnalog.ru.
ют меньше, тысяч 10), то это будет в пе- го места, а также мы не учли затраты Что интересно, первый не отвеча-
ресчёте на 20 рабочих дней 1000 руб- по трафику. ет, так как их администраторы прос-
лей в день для квалифицированно- Наиболее интересный разговор то не прописали это имя на DNS-сер-
го сотрудника и 500 рублей для курь- был в СКБ «Контур». С одной сторо- вере. Может, поленились, а может, за-

62
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование
1. Сд ач а н а л о го во й от ч ёт н о с т и ч е -
Что мешает использованию используются однопроводные решения рез фирму «Контур-Экстерн» – http://
криптографических средств в виде «таблеток» Touch Memory (iButton), kontur-agent.ru, http://real-soft.ru/cgi-bin/
под ОС Linux? то под ОС Linux в ядре реализована под- h.pl?kontur.
Если смотреть глобально на возможные держка протокола 1-Wire. Если это клю- 2. Сдача налоговой отчётности через
проблемы при работе с криптографически- чи на USB, то имеется PC/SC. Про диске- фирму «Тензор» – http://ereport.sbis.ru/
ми средствами в ОС Linux, то всё упирается ты вообще излишне говорить. То есть ре- podkl/podkluchenie.
в хранение ключевой информации. Обыч- ально проблем нет, было бы желание раз- 3. Сд ача на логовой от чётно с ти че -
но это какое-то внешнее устройство. Если работчиков. рез фирму «Гарант-Телеком» – http://
telecom.garant-corp.ru.
были. Второй, в независимости от гео- галтерской отчетности в электронном 4. Сдача налоговой отчётности через фир-
графической, принадлежности обра- виде. Версия 4.00»[13]. му «Такском» – http://www.taxcom.ru.
щающегося переадресовывает нас 5. В п о м о щ ь н а л о го п л ател ьщ и к у –
на www.r77.nalog.ru. Возможно, была Вывод http://www.robotech.ru/articles/detail.
задумка обращающихся перенаправ- Прочитав эти документы вместе с кол- php?id=48.
лять к доменам своих регионов, но эк- легами, мы поняли, что работа по стан- 6. http://www.cryptopro.ru/cryptopro/forum2/
сперименты с использованием разных дартизации сдачи налоговой отчётнос- default.aspx?g=posts&t=87.
анонимизирующих прокси-серверов ти ведётся, но принимаемые докумен- 7. Пакет свободного программного обес-
дали один и тот же результат. ты и решения по ним далеки от конеч- печения для образовательных учреж-
Попав на сайт, первым делом мы ных потребителей. Требования к фор- дений России – http://freecode.pspo.
ввели слово Linux в поиске, а в ответ мату передачи данных должны быть perm.ru/glossary/index.html, http://linux.
получили ошибку (см. рисунок). открыты и доступны, но, к сожале- armd.ru/ru/news/project_news/index.
Это ошибка никак не связана с опе- нию, в нашей фирме нет «Кулибиных» php?id110=101459.
рационной системой Linux, просто за- способных перевести их в работаю- 8. В сентябре 2008 году «Армада» объ-
были мелочь – права доступа на скрип- щую программу под Linux, как и лиш- явила о завершении пилотного проекта
те поиска исправить, что накладывает них средств для покупки готовых про- по созданию и поставке свободного про-
общий отпечаток на всю ФНС, «за де- грамм под ОС Windows. граммного обеспечения на базе Linux
ржаву обидно», хотя и бальзам на душу, По закону нас не могут обязать в школы... – http://www.cnews.ru/news/
что сервер работает под управлением покупать что-то у сторонней фирмы. line/index.shtml?2008/11/06/326563.
FreeBSD. Что интересно, за те два ме- Все предлагаемые решения должны 9. Семинар «Свободное программное
сяца, что я писал статью, ошибка так быть бесплатны и удобны в использо- о бе с п еч е н и е в го суд ар с т ве н н о м
и не исчезла. Поискав на сайте «вруч- вании. Поэтому дальше мы так и бу- и некоммерческом секторе» – http://
ную», мы нашли страницу «Система дем сдавать отчётность по старинке, linux.armd.ru/ru/news/gosspo/index.
представления налоговой и бухгалтер- пока не появятся новые эффективные php?id110=101480.
ской отчетности в электронном виде по и удобные решения данной проблемы. 10. Российское Агентство развития ин-
телекоммуникационным каналам свя- Буду очень рад, если на форуме формационного общества – http://
зи» [12] и узнали, что существует «Фор- журнала http://samag.ru/forum возник- www.rario.ru.
мат представления налоговой и бух- нет обсуждение данного вопроса. 11. Д и с т р и бу т и в A LT L i n u x D e s k to p
Professional получил сертификат
ФСТЭК – http://cnews.ru/news/top/index.
shtml?2008/08/01/310364.
12. Система представления налоговой
и бухгалтерской отчетности в элект-
ронном виде по телекоммуникацион-
ным каналам связи – http://www.r77.
nalog.ru/index.php?topic=sb77.
13. Ф о р м а т п р е д с т а в л е н и я н а л о г о -
в о й и бу х г а л те р с ко й от ч е т н о с т и
в электронном виде. Версия 4.00 –
ht tp: // w w w.nalo g.ru /do c ument.
php?id=25597&topic=nal_otch_400.
14. Сертифицированные ФСБ РФ мно-
гоплатформенные криптобиблиоте-
ки – http://www.bifit.com/ru/technologies/
cryptography/index.html.
15. Сп и с о к бан к- к л и е н то в, раб отаю -
щих под Linux – http://www.etersoft.ru/
news/82.
Ошибка поиска на сайте ФНС

№1, январь 2009 63


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование «1С»

Используем универсальные отчеты


и обработки в «1С:Предприятие 8»

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

Э
ти универсальные инструменты можно найти на дис- n Непосредственное удаление документов и элементов
ках информационно-технологического сопровожде- справочников из базы данных (минуя пометку удаления);
ния, поставляемых фирмой «1С» в разделе «Работа- n Провести или отменить проведение документов.
ем с программами → Методическая поддержка 1С:Пред-
приятия 8 → Универсальные отчеты и обработки». Часть Рассмотрим функционирование обработки на примере
из них встроена в типовые конфигурации. справочника «Контрагенты». Выберем в шапке объект поис-
Рассмотрим некоторые из существующих в настоя-
щее время универсальных отчетов и обработок, обсудим
их функциональное назначение, рассмотрим примеры ис-
пользования.

Универсальные подбор и обработка


объектов
Обработка предназначена для массовой обработки спра-
вочников и документов. Встроенные возможности позво-
ляют выполнить:
n Установку реквизитов справочников и документов;
n Перенумерацию справочников и документов;
n Пометку на удаление элементов справочников и доку- Рисунок 1. Обработка «Универсальные подбор и обработка
ментов; объектов»

64
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование «1С»
ка – «Контрагенты» (см. рис. 1). На за- мер колонки с данными в поле «№ ко-
кладке «Отбор по значениям реквизи- лонки».
тов» зададим условия отбора, исполь- На рис. 3 у реквизита «ИНН» уста-
зуя в качестве фильтра как любые рек- новлен флажок в колонке «Поле поис-
визиты самого справочника, так и поля ка». Тем самым мы указываем обра-
реквизитов и нажимаем кнопку «Най- ботке предварительно выполнить по-
ти объекты». иск контрагента с таким ИНН и, если
На закладке «Найденные объек- нашли, перезаполнить существующий Рисунок 2. Обработка «Загрузка данных
из табличного документа», закладка
ты» будут представлены отобранные элемент новыми данными. «Табличный документ»
объекты, для которых можно как вы- В колонке «Режим загрузки» мы мо-
брать перечисленные выше предопре- жем выбрать один из трех режимов: «Ус- шем примере (см. рис. 3) основной
деленные действия, так и выполнить танавливать», «Искать», «Вычислять». менеджер контрагента должен выби-
произвольный алгоритм на встроен- Режим «Устанавливать». В этом ре- раться из справочника «Пользовате-
ном языке. Текст программы вносит- жиме в реквизит заносится фиксиро- ли». При этом мы видим, что данные
ся непосредственно в обработке и мо- ванное значение из колонки «Значе- для поиска извлекаются из четвертой
жет быть сохранен для дальнейшего ние по умолчанию». В нашем примере, колонки исходной таблицы и в обра-
использования. представленном на рис. 3, в поле «Ком- ботке указано, что искать в справоч-
На рис. 1 представлена наша об- ментарий» всех контрагентов будет за- нике «Пользователи» следует по по-
работка «Пример», осуществляющая писана строка «Загрузка из файла». лю «Наименование».
копирование ИНН контрагента в поле Режим «Вычислять». Этот режим Важно заметить, что в типовых ре-
«Комментарий». После нажатия кноп- обеспечивает широкие возможности шениях фирмы «1С» на платформе
ки «Выполнить» она будет последова- по настройке обработки под конкрет- «1С:Предприятие 8» выделены специ-
тельно выполнена для каждого отоб- ные нужды: в поле «Выражение» мож- альные документы для ввода началь-
ранного элемента справочника. Обра- но записать произвольный алгоритм ных остатков. Обработка «Загрузка
тите внимание, что в тексте програм- на встроенном языке, «вернув» резуль- данных из табличного документа» мо-
мы обращение к текущему обрабаты- тат расчетов через переменную «Ре- жет использоваться не только для за-
ваемому элементу осуществляется че- зультат». Простой пример использо- грузки справочников, но и для запол-
рез переменную «Объект». вания режима представлен на рис. 3: нения таких документов на основе
в поле «Полное наименование» зано- внешних источников. Это делает ее
Загрузка данных сится наименование из исходной таб- высокоэффективным инструментом
из табличного документа лицы, перед которым добавляется при переносе данных, способным сэ-
Обработка позволяет загрузить дан- строка «Контрагент:». кономить IT-специалистам массу уси-
ные в справочники, регистры сведений, Режим «Искать». Если режим ус- лий и времени.
табличные части документов и спра- тановлен для реквизита примитивно-
вочников из dbf-, csv- и xls-файлов. го типа (строка, число и т. п.), то в со- Универсальный обмен
Рассмотрим функционирование ответствующее поле объекта пере- данными в формате XML
обработки на следующем примере: носятся данные из исходной таблицы Обработка предназначена для загруз-
из старой учетной системы данные (с приведением типов). Для реквизи- ки из файла и выгрузки в файл дан-
о контрагентах выгрузили в таблицу та ссылочного типа запускается поиск ных из любой конфигурации, реали-
MS Excel. Требуется загрузить эти дан- элемента, используя данные исход- зованной на платформе «1С:Пред-
ные в «1С:Управление торговлей 8». ной таблицы в качестве ключа. В на- приятие 8».
Запустим обработку, выберем ре-
жим «Загрузка в справочник», вид
справочника – «Контрагенты». С помо-
щью кнопки «Открыть файл...» импор-
тируем данные из таблицы MS Excel
на закладку «Табличный документ»
(см. рис. 2). Далее по тексту данные
этой закладки будем называть исход-
ной таблицей.
На закладке «Настройка» сделаем
поле «№ колонки» доступным – вклю-
чим режим ручной нумерации колонок
(«Нумерация колонок → Ручная нуме-
рация колонок»).
Для каждого реквизита справоч-
ника укажем, из какой колонки исход-
ной таблицы следует загружать дан-
ные. Для этого введем порядковый но- Рисунок 3. Обработка «Загрузка данных из табличного документа», закладка «Настройка»

№1, январь 2009 65


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование «1С»
менить и те данные, которые зависят Консоль отчетов
от замененных значений. Перед за- Обработка предназначена для на-
меной значений рекомендуется сде- стройки и вывода произвольных от-
лать архивную копию информацион- четов без использования конфигура-
ной базы. тора «1C».
Для настройки отчета следует от-
Удаление помеченных редактировать схему компоновки дан-
объектов ных, после этого отчет может быть
Рисунок 4. Обработка «Поиск данных» Встроенные средства платформы выведен как в табличный документ,
«1С:Предприятие 8» позволяют не- так и в диаграмму.
Выгрузка данных осуществляет- посредственно удалить из базы дан- Для анализа полученных данных
ся на основе правил обмена. Пред- ных помеченные на удаление объек- становится доступно все разнообразие
положим, мы хотим выгрузить дан- ты только в монопольном режиме. Дан- средств системы компоновки данных:
ные из конфигурации, назовем ее Ис- ная обработка позволяет это сделать настройка произвольных группировок
точник, в конфигурацию – Приемник. в раздельном режиме работы, но при строк и колонок, состава выводимых
Структура информационных баз может этом есть риск нарушения логической данных, условий отбора и т. п.
не совпадать, поэтому следует иметь целостности данных. Чтобы избежать
правила обмена, описывающие то, этого, всем активным пользователям Консоль запросов
как данные конфигурации – Источни- следует воздержаться от записи объ- Обработка предназначена для со-
ка преобразовываются в формат дан- ектов, имеющих помеченные на уда- ставления и исполнения запросов
ных конфигурации – Приемника. Пра- ление ссылочные реквизиты. «1С:Предприятия» без использования
вила обмена представляют собой XML- конфигуратора.
файл и могут быть настроены в специ- Выгрузка данных Результат выполнения запроса
альной конфигурации «Конвертация в реляционные структуры можно проанализировать в виде про-
данных, редакция 2». Обработка предназначена для вы- стого списка, дерева или сводной таб-
грузки данных информационной базы лицы.
Поиск и замена значений «1С:Предприятия 8» во внешние ре-
Обработка предназначена для поиска ляционные структуры данных. Имеет Консоль кластера
и замены ссылочных значений в ин- два режима работы: «Выгружать все» серверов
формационной базе «1С:Предприя- и «Только изменения». Второй вариант Позволяет выполнять функции адми-
тия 8». Часто возникает ситуация, ког- функционирования использует меха- нистрирования кластеров серверов
да в каком-либо справочнике ошибоч- низм планов обмена и позволяет пе- «1С:Предприятия 8.1». В обработку
но введено две записи вместо одной. риодически синхронизировать инфор- встроены средства анализа динами-
Например, в справочник «Контраген- мационную базу с внешним источни- ки нагрузки в виде графиков.
ты» введено два элемента: «ООО Мир» ком, передавая только новые и изме-
и «Мир, ООО», причем оба уже исполь- ненные объекты. Свертка информационной
зуются в документах. Для выгрузки данных необходимо базы
Воспользовавшись обработкой «По- настроить вариант выгрузки, содер- Обработка предназначена для фор-
иск и замена значений», мы можем най- жащий перечень выгружаемых объек- мирования начальных остатков и дан-
ти все вхождения элемента «ООО Мир» тов метаданных. При настройке имеет- ных регистров сведений на дату сверт-
в документах и иных объектах конфи- ся возможность указать выгружаемые ки, а также удаления неиспользуемых
гурации и заменить их на другой эле- реквизиты объектов. документов и движений по регистрам
мент – «Мир, ООО». После этого пер- Поддерживаемые типы СУБД – сведений, накоплений и бухгалтерии
вый элемент может быть удален. приемников: до даты свертки.
Здесь следует сделать важное за- n Microsoft SQL Server; Обработка формирует началь-
мечание. В типовых конфигурациях n Oracle; ные данные с помощью документов
фирмы «1С», например, в документах, n IBM DB2; «Корректировка записей регистров»
влияющих на взаиморасчеты, указы- n PostgreSQL; и «Операция (бухгалтерский и нало-
вается не только контрагент, но и до- n MySQL. говый учет)», поэтому является огра-
говор контрагента. Если мы выпол- ниченно универсальной и на текущий
ним приведенный пример в типовой Консоль анализа момент предназначена исключитель-
конфигурации, то контрагент в доку- журнала регистрации но для использования со следующими
ментах будет один, а договор – прина- В «1С:Предприятии 8» имеется воз- типовыми конфигурациями:
длежать другому контрагенту, что не- можность ведения журнала регистра- n Бухгалтерия предприятия, редак-
приемлемо. ции событий. Это позволяет выяснить, ция 1.6;
Поэтому важно понимать, что обра- какие действия и когда предпринимал n Управление торговлей, редакция
ботка работает универсально, не учи- тот или иной пользователь, какие со- 10.3;
тывая логическую взаимосвязь объ- бытия происходили в системе. Подроб- n Управление производственным
ектов. При необходимости следует из- нее см. в журнале № 9 за 2007 г. предприятием, редакция 1.2.

66
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
администрирование «1С»
Настройка технологического журнала
Обработка предназначена для редактирования конфигура-
ционного файла технологического журнала. Она позволя-
ет настроить перечень событий и свойств, которые долж- Рисунок 5. Справочник «Контрагенты» до запуска обработки
ны отражаться в технологическом журнале, и условия их «Изменение конфиденциальной информации»
записи в него.

Консоль заданий
Обработка предназначена для визуального контроля со-
стояния и управления работой регламентных и фоновых
заданий.

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

Универсальный журнал документов


Данная обработка позволяет работать с перечнем докумен-
тов различных видов в едином журнале. Причем пользова-
тель самостоятельно настраивает набор видов документов,
Рисунок 8. Справочник «Контрагенты» после запуска обработки
состав граф журнала, отборы и порядок сортировки. «Изменение конфиденциальной информации»
Из формы универсального журнала можно выполнить
большинство сервисных функций, доступных из стандарт- В нашем примере (см. рис. 6) поле «ИНН» всех элемен-
ных динамических списков и журналов, задаваемых на эта- тов справочника «Контрагенты» будет замещаться случай-
пе конфигурирования: создание, изменение, копирование, ным набором символов, а порядок изменения поля «На-
проведение документов, просмотр движений документа по именование» определяется настройками, представленны-
регистрам и др. ми на рис. 7.
На рис. 8 приведена форма списка справочника «Кон-
Изменение конфиденциальной трагенты» после запуска обработки.
информации
Обработка предназначена для выборочного изменения или Конвертация внешних обработок
очистки информации в информационной базе. Может быть Технологическая платформа «1С:Предприятие 8» активно
полезна при необходимости передачи информационной ба- развивается. Данная обработка предназначена для реше-
зы на сторону, когда часть информации является конфи- ния задачи массовой конвертации файлов внешних обра-
денциальной и должна быть скрыта. боток (обновления формата) при переходе на более стар-
Рассмотрим функционирование обработки на про- шие релизы платформы.
стом примере. Предположим, в информационной базе Обработка позволяет:
«1С:Управление торговлей 8» требуется скрыть информа- n Выгрузить обработки из справочника «Внешние обра-
цию о поставщиках и покупателях – изменить поля «Наиме- ботки» типовых конфигураций, выполнить их массовую
нование», «Полное наименование» и «ИНН» справочника автоматическую конвертацию и загрузку.
«Контрагенты» (см. рис. 5). n Выполнить автоматическую конвертацию файла или ка-
Для этого запустим обработку и выполним настройку талога с обработками.
изменения реквизитов так, как показано на рис. 6. После
нажатия кнопки «Выполнить» отмеченные реквизиты бу- Заключение
дут изменены для каждого элемента справочника «Кон- В заключение отмечу, что функциональная мощь новой тех-
трагенты». нологической платформы фирмы «1С» позволила создать
Если в колонке «Тип настроек» для реквизита выбрано множество инструментов, облегчающих задачи админист-
«Индивидуальные», то метод изменения реквизита берет- рирования и использования систем на ее основе.
ся из колонки «Значение настроек». Если же в колонке «Тип При подготовке статьи использовались материалы,
настроек» указано «Общие», то метод изменения реквизи- публикуемые фирмой «1С» для пользователей программ
та определяется настройками закладки «Общие настрой- на платформе «1С:Предприятие 8».
ки изменения данных».

№1, январь 2009 67


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
из личного опыта

Исследование уязвимостей
с помощью Metasploit Framework

Павел Троицкий
Учиться никогда не поздно, а учить других – приятное занятие... Из этой статьи вы сможете
узнать о том, как просто и наглядно можно продемонстрировать работу большинства
уязвимостей с помощью Metasploit Framework.

68
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
из личного опыта

В
сё что ни случается в жизни –
к лучшему... В одно субботнее
утро мне пришлось отважно по-
работать. Согласитесь, не самое при-
ятное занятие, особенно в свой выход-
ной день. Но на ситуацию можно пос-
мотреть и с другой стороны.
Через несколько часов утренней
работы, когда я освободился и пре-
бывал в состоянии сна на ходу, меня
уже не тянуло домой. Я плыл по ко-
ридору, где стояла убаюкивающая ти-
шина по сравнению с шумными буд-
нями. Не помню как, наверное, сра-
ботало любопытство, услышав изда-
лека характерные непрекращающи-
еся звуки быстрого нажатия клавиш
на клавиатуре, я на автопилоте изме-
нил курс и пришвартовался в сосед-
нем отделе.
Люблю наблюдать за увлечённо ра-
ботающими людьми. Оказалось, мой
тёзка и коллега сидит за двумя свои-
ми мониторами и что-то решает. Я мяг-
ко приземлился в одно из пустующих
кресел, включил чайник и стал ждать.
Пашок вернулся к жизни и за-
метил меня лишь только когда чай-
ник закипел и громко щёлкнул сво-
им термовыключателем на всю ком-
нату. Видимо, сработало то, что чай- Рисунок 1. Раздел Framework и ссылка для скачивания
ник он не ставил.
Увидев меня, он быстро заварил
себе кофе, сел обратно на своё место
и явно обрадовался тому, что сможет
излить мне свою душу во время чае-
пития и найти понимание. Так и ока-
залось. Он решал одну интересную
задачу, которую ему поставил шеф,
с микроконтроллерами, при этом ду-
мая и о другом задании, на которое
времени не хватало.
Второе задание было более инте-
ресным, чем первое, я постараюсь опи-
сать его вам, а далее предложить при-
думанное нами решение.

Закрытый код –
враг народа?
Не секрет, что технический отдел
с его руководством косо посматрива-
ют на тех, кто использует программы
с закрытым кодом, к тому же содержа-
щие много уязвимостей. Когда руко- Рисунок 2. Запуск программы Metasploit Framework
водство компании понимает проблему,
это хорошо. Техническому отделу дает- Но бывают и другие случаи, когда Например, не вс е оценивают
ся зелёный свет, и вся организация пе- руководство, опираясь на мнение дру- преимущества новых версий Linux,
реходит на более правильные и безо- зей и знакомых, делает вид, что разби- OpenOf fice или браузера Mozilla
пасные для фирмы решения. рается, а на самом деле это не так. Firefox (по сравнению с их закрытыми

№1, январь 2009 69


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
из личного опыта
n если сделать проверку на исполь-
зуемый браузер и отключить обра-
щения IE в сеть на прокси-сервере,
то это будет не самое лучшее реше-
ние, а администратора можно бу-
дет классифицировать как «мань-
яка»;
n если удалить всем пользовате-
лям IE, то это будет администратор-
«идиот», и проблема также не ре-
шится;
n если пытаться пакостить пользо-
вателям, запускающим IE, это бу-
дет администратор-«фашист» – ус-
пеха он тоже не добьётся, так как
будет все силы тратить на борьбу
со следствием.

Наиболее правильно – это пой-


ти на хитрость и бороться с причиной.
Рисунок 3. Логотип программы Metasploit Framework, показываемый во время запуска Представьте, если все пользователи
осознанно откажутся от какого-то ре-
шения, то какой будет смысл в мире
бизнеса производителю продвигать
это решение?
Наиболее удачно для нашей задум-
ки подходит тип администратора «тех-
нический бандит».
Мы изучим различные нюансы
работы браузеров и существующие
в них уязвимости, поставим специ-
альные программы, демонстрирую-
щие скрытые возможности, возника-
ющие из-за ошибок, и тем самым за-
ставим руководство принять правиль-
ное решение.

Рисунок 4. GUI программы Metasploit Framework Проверь систему


на уязвимость
и не всегда стабильно работающими Задача, кажется, ясна, если у вас Очевиден факт, что в любой большой
аналогами: Windows, MSOffice или IE). есть многолетний опыт, наверняка вы программе есть ошибки. Это прак-
Люди инертны, привыкли к чему-то смогли в ней увидеть что-то пересека- тически все понимают, и начальство
и менять ничего не хотят. Рыба гниёт ющееся из своей жизни или похожее. в том числе. Поэтому для проверки се-
с головы – бывают случаи, когда ру- Давайте рассмотрим случай решения, тей и отдельных хостов давно придума-
ководство не допускает технический когда хитрость идёт на пользу обще- ли различные сканеры. Но не все по-
отдел к своим компьютерам (особен- му делу. Если у вас есть более инте- нимают специфику их работы.
но ноутбукам), являясь не только ис- ресные решения – пишите на форум Если Nessus, Shadow Security
точником нарушений безопасности, журнала, обсудим! Scanner, nmap, XSpider и другие в ка-
но и первой целью для происков кон- кой-то мере удобны и успели себя хо-
курентов. Решение рошо зарекомендовать, то опираться
Цель задания состояла в том, что- Как действовать? Так как Глобальной на их результаты следует с понимани-
бы вернуть авторитет техническому сетью пользуются практически все, ем происходящего.
отделу, прочитать ознакомительную а она представляет немалую угрозу Например, как быть со случаем,
лекцию для персонала и провести любому подразделению, то поставим когда исполнение какого-либо кода
в жизнь решения по установке и пере- цель – отучить пользователей исполь- (содержащего уязвимость) происходит
ходу на более безопасные Open Source зовать IE. со стороны пользователя, а не иници-
аналоги, мотивируя это не своим же- Если обратиться к классике, то су- ируется внешним сканером? Не сек-
ланием, а приказом руководства, сто- ществует не так много различных под- рет, что многие, просканировав свой
ящего над техническим отделом. ходов к решению проблем [1, стр. 88]: компьютер (или сервер) и не обнару-

70
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
из личного опыта
жив открытых портов и уязвимых сер- лало программу более привлекатель-
висов, ошибочно думают, что их сис- ной для менее опытных пользователей
темы в полном порядке. (особенно наличие версии программы
Мы попытаемся доказать эту ошиб- под Windows). Хорошо это или плохо,
ку на примере браузера IE с помощью сказать сложно. Мы выберем версию
программы Metasploit Framework. под Linux и GUI-интерфейс.
В качестве операционной системы
План действий. взята недавно вышедшая Fedora 10.
Немного теории Конечно, она не без проблем. Ско-
Получая различные рассылки по воп- рее всего, через полгода – год мелкие
росам безопасности или посещая сай- проблемы будут решены, и она ста-
ты по подобной тематике, периодичес- нет рабочей платформой для многих
ки встречаешь информацию о раз- администраторов, а пока она очень
личных уязвимостях. Такая-то уяз- подходит для наших эксперимен-
вимость позволяет передать клиен- тов. Если взять более ранние версии
ту и выполнить на его стороне какой- (Fedora 8, 9), то принципиальных раз-
либо код, такая-то просто завершает личий в установке быть не должно.
приложение. Для работы графического интер-
В теории получается следующее: фейса необходима установка языка
вы заходите на сайт XXX, а у вас вмес- Ruby и библиотек:
то этого открывается окно терминала, n ruby-1.8.6.287-2.fc10.i386.rpm;
где запускается команда «format с:». n ruby-libs-1.8.6.287-2.fc10.i386.rpm;
Пример утрирован, но, если вам n ruby-gtk2-0.18.0-2.fc10.i386.rpm;
в это сложно поверить, к концу статьи n ruby-libglade2-0.18.0-2.fc10.i386.
вы сможете провести аналогичный эк- rpm;
сперимент у себя. n ruby-atk-0.18.0-2.fc10.i386.rpm;
n ruby-cairo-1.8.0-1.fc10.i386.rpm;
The Metasploit Project n ruby-gdkpixbuf2-0.18.0-2.fc10.i386. Рисунок 5. Версии ПО уязвимой машины:
Это проект [2], созданный фирмой rpm; а) версия ОС; б) версия браузера
Metasploit LLC, содержащий полез- n ruby-glib2-0.18.0-2.fc10.i386.rpm;
ную информацию для людей, зани- n ruby-gnome2- 0.18.0 -2.fc10.i386. Сделать это можно либо вручную
мающихся пополнением баз данных rpm; через команды:
для СОА (систем обнаружения атак), n ruby-gnomecanvas2-0.18.0-2.fc10.
а также исследованием уязвимостей i386.rpm; rpm -ihv *.rpm
и того, как они работают. n ruby-libart2-0.18.0-2.fc10.i386.rpm;
Цель ресурса – собрать различную n ruby-pango-0.18.0-2.fc10.i386.rpm. либо через:
информацию об известных эксплоитах
и уязвимостях вместе с реализующи-
ми их кодами, чтобы эта информация
была доступна администраторам бе-
зопасности и разработчикам.
На сайте содержится несколько
разделов, содержащих полезную ин-
формацию.
Нам понадобится раздел Framework
(см. рис. 1), посвящённый платформе,
на которой можно реализовать наш
план.
Ищем Download внизу и скачиваем
framework-3.2.tar.gz.

Установка
Metasploit Framework
Ранее программа была доступна толь-
ко через CLI (интерфейс командной
строки), в связи с чем была известна
только в узких кругах.
Недавно появилась поддержка GUI
(графического интерфейса), что сде- Рисунок 6. Настройка эксплоита под уязвимость MS06-067

№1, январь 2009 71


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
из личного опыта
yum install ... Права администратора (root) нужны для того, чтобы про-
грамма могла открывать сокеты на прослушивание на лю-
тогда достаточно указать лишь первые четыре пакета, все бом порту (например, на 80-м, протокол TCP).
остальные будут определены как зависимые и установят-
ся сами. Запуск программы
Следующим этапом надо распаковать скачанный архив Загрузка длится около минуты (см. рис. 2), и на это время
framework‑3.2.tar.gz в какую-либо директорию, зайти в неё появятся логотип программы (см. рис. 3) и графическая
и с правами администратора запустить файл msfgui. среда (см. рис. 4). Программа готова к работе.
Теперь, выбирая уязвимости (в базе Metasploit Framework
их немало), мы можем попытаться реализовать сервер, ко-
торый сформирует код, который будет передан клиенту,
для выполнения на его стороне. А далее выполним провер-
ку клиента на уязвимость. В качестве уязвимой машины
была выбрана первая находившаяся под рукой, а именно
с Windows 2003 и IE 6.0 (cм. рис. 5). Кстати, некоторые ад-
министраторы, не утруждая себя, часто ищут что-то в Сети
по интересующим их вопросам прямо из консоли сервера,
при этом ставить альтернативные браузеры они не собира-
ются, мотивируя это тем, что подобные выходы в Интернет
«на коленке из серверной» у них редки. Замечу, чтобы ском-
прометировать сервер, достаточно одного случая!
Рисунок 7. Выбираем windows/exec А далее ситуация проста: главная задача – заманить
жертву или всезнающего шефа на наш компьютер. В Ин-
тернете подобное решается социальным способом, то есть
обходным путём. Например, с помощью размещения раз-
личных баннеров либо переадресацией с помощью popup-
окошек с уже заражённых сайтов. Такое часто встречается
на сомнительных сайтах (бесплатное скачивание коммер-
ческих программ, порносайты и пр.), предлагающих клик-
нуть на какой-нибудь баннер.
В локальной сети, будучи её администраторами, мы мо-
жем завернуть обращение на шлюзе куда нам надо, а пос-
ле показать шефу, что любой вполне безобидный сайт мо-
жет творить чудеса с его компьютером (запускать другие
приложения, копировать его документы и пр.), при условии
что у него даже может быть запущен антивирус.
Конечно, всё это многообразие действий зависит от ва-
шей фантазии, а цель статьи лишь показать направление и
что такое возможно. Поэтому мы ограничимся лишь одной
уязвимостью в качестве примера и запустим какую-нибудь
безобидную программу на компьютере жертвы, например
Рисунок 8. Настройка порта и ввод команды для запуска
на удалённой машине «Калькулятор». Не секрет, что для написания статьи, что-
бы никого не обманывать, в течение получаса пришлось
перебирать уязвимости, чтобы найти работающую в дан-
ной конфигурации.
В качестве уязвимости была выбрана описанная
в Microsoft Security Bulletin MS06-067 [3] – выбираем эту уяз-
вимость в базе программы (см. рис. 6).
Далее жмём forward и в следующем окне выбираем
действие windows/exec, (см. рис. 7), также жмём forward
и попадаем в настройки.
Прописываем порт 8081 и команду для запуска на ма-
шине с уязвимым бараузером «c:\windows\system32\calc.exe»
(см. рис. 8).
Замечание: если вы хотите прописать 80-й порт, а у вас
работает httpd-сервер, то не забудьте его остановить, на-
пример, командой:

# service httpd stop


Рисунок 9. Окно подтверждения настроек задания

72
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
из личного опыта
или: –dport 8081 -j ACCEPT
# iptables -I OUTPUT-o eth0 -p tcp –dport 1024:65535 ↵
–sport 8081 -j ACCEPT
# /etc/rc.d/init.d/httpd stop
Логи:
иначе непонятно, какая из двух программ должна прослу- 12:28:08 - Initialized the Metasploit Framework GUI.
шивать порт на входящие соединения. С этой целью в при- 12:45:38 - ms06_067_keyframe [*] Launching exploit windows/browser/ms06_067_keyframe...
12:45:39 - ms06_067_keyframe [*] Using URL: http://0.0.0.0:8081/
мере взят порт 8081, который заведомо будет свободен. 12:45:39 - ms06_067_keyframe [*] Local IP: http://127.0.0.1:8081/
12:45:39 - ms06_067_keyframe [*] Server started.
После подтверждаем настройки (см. рис. 9) и в спис- 12:46:04 - ms06_067_keyframe [*] Sending Internet Explorer Daxctle.OCX KeyFrame Method
Heap Buffer Overflow Vulnerability to 192.168.0.3:1603...
ке висящих заданий (jobs) у нас появляется новая зада- 12:46:28 - [*] Stopping exploit: windows/browser/ms06_067_keyframe
12:46:28 - ms06_067_keyframe [*] Server stopped.
ча (см. рис. 10).
Далее мы можем посмотреть в логи – вкладка Output Окно машины жертвы (см. рис. 11).
и попытаться обратиться с машины жертвы на наш сервер.
Предварительно следует не забыть прописать разрешаю- Заключение
щие правила для пакетного фильтра, например: Конечно, данный пример тривиален, и для того чтобы пора-
зить окружающих или вашего шефа, лучше его модифици-
# iptables -I INPUT -i eth0 -p tcp –sport 1024:65535 ↵ ровать, учитывая специфику. Мы так устроены, что какое-
либо действие (изменения) привле-
кают нас больше, поэтому для людей,
не очень понимающих, как осущест-
вляется переполнение буфера, лучше
вместо калькулятора запустить архи-
ватор с ключами, чтобы в окошке бы-
ла анимация, например «бежало» чис-
ло процентов сжатых файлов из папки
«Мои документы\конфиденциально».
Тогда и сказать, что этот сайт нацелен
на сбор информации с компьютера ва-
шего шефа, будет проще и ваши аргу-
менты будут весомее. Раз сайт запус-
тил архиватор, а не какой-нибудь каль-
кулятор, то проблема намного серьёз-
нее. Хотя надеюсь, что большинство
читателей, читая эти строчки, улыб-
нутся лишний раз.
Также эту статью и пример можно
Рисунок 10. Запущена новая задача использовать в образовательных це-
лях. Чем не пособие для преподава-
телей на курсах по безопасности или
в вузах по проведению демонстраций
или лабораторных работ? Выполнять
такую лабораторную работу студентам
будет куда интереснее, чем обсчиты-
вать не всегда понятные результаты.
Если вы задумались, а не по-
ра ли вам обновить/сменить систе-
му или бразуер, то значит, вы на вер-
ном пути!

1. Робачевский А. М. Операционная сис-


тема UNIX. – СПб.: БХВ‑Петербург,
2002, ISBN 5-8206-0030-4.
2 Сайт проекта The Metasploit Project,
содержащего информацию и экспло-
иты по различным уязвимостям, –
http://metasploit.com.
3. Уязвимость Microsoft Security Bulletin
MS06-067 – http://www.microsoft.com/
technet /security/Bulletin/MS06 - 067.
Рисунок 11. Окно уязвимой машины, на которой при обращении к серверу попутно
запустилась сторонняя программа – калькулятор mspx.

№1, январь 2009


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email: 73
bobahsmtp.ru
веб-программирование

JQuery: магия JavaScript

Александр Слесарев
Эпоха WEB 2.0 диктует разработчикам новые правила. Что же скрывается
за функциональностью современных веб-приложений? Какие инструменты должен
использовать разработчик для решения нестандартных задач при разработке клиентских
приложений эпохи WEB 2.0? Ответ на эти вопросы есть – использование фреймворка,
рассчитанного на решение этих задач. И такой фреймворк, который содержит богатейший
набор методов для разработки современных веб-приложений, существует – JQuery.

В
последние годы возникла тен- ционных источниках мелькает термин объединяемые звучным термином
денция повышения требований WEB 2.0, определяющий приложения WEB 2.0. Естественно, что для увели-
к функциональности веб-прило- новой формации. Да, именно прило- чения функциональности приходится
жений, причем не столько к серверной жения, потому что большинство сов- использовать клиентские языки про-
части, а именно к клиентской. Появи- ременных веб-ресурсов трудно на- граммирования, так как базовые тех-
лись элементы управления, которые до звать сайтами, об этом можно много нологии веб-разработки HTML и CSS
этого были доступны только приклад- дискутировать, но факт остается фак- являются статичными. Самым распро-
ным программам: табы, деревья, слай- том – многие из современных «сайтов» страненным в данный момент языком
деры, прогрессбары и многое другое. по‑другому назвать нельзя. программирования на клиентской час-
Появилось очень много сайтов, кото- На фоне всего этого веб-разработ- ти является JavaScript. Появилось мно-
рые по функциональности вполне мо- чикам приходится прибегать к различ- жество JS-библиотек, позволяющих
гут соперничать с прикладными про- ным нестандартным приемам, искать реализовать красивые графические
граммами. Еще более усилило эту тен- новые пути решения задач. Приходит- эффекты, анимацию, общение с серве-
денцию появление технологии AJAX. ся брать на вооружение все, что поз- ром без перезагрузки страницы, в об-
Очень часто в различных информа- воляет создавать новые приложения, щем, инструментарий для облегчения

74
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
веб-программирование
жизни веб-разработчикам. Многие из них отличает либо (лицензии на свободное ПО). Его разработал польский про-
большая сложность, либо ограниченность функциональ- граммист Михал Войцеховски (Michal Wojciechowski) [4].
ности. Наибольшую популярность у разработчиков завое- Для этого потребуется скачать сам плагин [5], разархиви-
вали лишь несколько библиотек, одной из которых являет- ровать и подключить его к нашей странице в контейнер
ся фреймворк JQuery. <head>, как было описано выше. Далее создаем в нашей
Не знаю, можно ли говорить о том, что JQuery самая странице код:
лучшая библиотека, так как конкурирующие продукты (на-
пример, Prototype, Mootools и ExtJS) тоже имеют ряд удоб- <html>
<head>
ных моментов, но к явным плюсам JQuery можно отнести <meta http-equiv="Content-Type" content="text/html; ↵
следующие: charset=windows-1251" />
<title>Jquery</title>
n небольшой объем (15 Кб в сжатом виде); <script src="js/jquery-1.2.6.js"></script>
n совместимость с основными браузерами. <script src="js/jquery.imgareaselect-0.6.1.js"></script>
<script language="JavaScript" type="text/javascript">
var $x1, $y1, $x2, $y2, $w, $h;
И еще одно несомненное преимущество – это то,
function selectChange(img, selection)
что библиотека может претендовать на то, чтобы стать стан- {
дартом в веб-разработке. Ведь не спроста такой софтвер- $x1.text(selection.x1);
$y1.text(selection.y1);
ный монстр как Microsoft собирается включить ее в состав $x2.text(selection.x2);
своего набора инструментов Visual Studio. $y2.text(selection.y2);
$w.text(selection.width);
Следует обратить внимание на еще один немаловажный $h.text(selection.height);
момент. Дело в том, что одним из ключевых понятий про- }
граммирования является пространство имен (namespacing). $(document).ready(function(){
JavaScript предоставляет разработчику одно глобальное $x1 = $('#x1');
$y1 = $('#y1');
пространство имен – объект window. Зачастую при напи- $x2 = $('#x2');
сании кода программисту приходится его «замусоривать», $y2 = $('#y2');
$w = $('#w');
добавляя без надобности глобальные переменные. JQuery $h = $('#h');
решает эту проблему, добавляя в это пространство лишь });
один объект – функцию jQuery. Все остальное является ли- $(window).load(function(){
бо свойствами, либо методами этого объекта. $('img#flower').imgAreaSelect({ selectionOpacity: 0, ↵
onSelectChange: selectChange });
});
Первое знакомство </script>
</head>
Библиотека JQuery была впервые опубликована на ком- <body>
пьютерной конференции «BarCamp» в Нью-Йорке Джоном <div style="float: left;">
<img id="flower" src="flower.jpg" />
Ресигом (John Resig) в 2006 году. Спустя некоторое время </div>
она уже завоевала популярность у веб-разработчиков. Дан- <div style="float: left; margin-left: 10px;">
<p style="background: #eee; border: solid 1px #ddd; ↵
ный фреймворк базируется на взаимодействии JavaScript margin: 0; padding: 10px;">
и DOM HTML-документа. К основным возможностям мож- <b>Координаты выделения:</b><br />
но отнести следующие: <b>X<sub>1</sub>:</b> <span id="x1"></span><br />
n переход по дереву DOM, включая поддержку XPath <b>Y<sub>1</sub>:</b> <span id="y1"></span><br />
<b>X<sub>2</sub>:</b> <span id="x2"></span><br />
как плагина;
n обработка событий; <b>Y<sub>2</sub>:</b> <span id="y2"></span><br />
<br />
n визуальные эффекты; <b>Размеры выделения:</b><br />
n AJAX-дополнения. <b>Width:</b> <span id="w"></span><br />
<b>Height:</b> <span id="h"></span>
</p>
В качестве базиса в нее заложен выбор CSS-селекто- </div>
</div>
ров, в том числе в стиле XPath, и не менее изящное реше- </body>
ние, последовательный вызов методов в виде цепочек. </html>
Для начала нам понадобятся дистрибутив фреймворка,
который можно скачать на официальном сайте разработ-
чика [1], и тестовая веб-страница. Для подключения биб-
лиотеки к нашей веб-странице нужно всего лишь добавить
ссылку на сценарий в контейнере <head>:

<head>
<script type="text/javascript" ↵
src="путь к файлу/jquery.js"></script>
</head>

Для первого знакомства давайте рассмотрим один ин-


тересный пример. В качестве этого можно привести плагин
imgAreaSelect, распространяемый по лицензиям MIT и GPL Рисунок 1. Пример работы плагина imgAreaSelect

№1, январь 2009 75


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
веб-программирование
В качестве тестового изображения подойдет любой, го, как будет готова объектная модель документа, но рань-
не слишком больших размеров рисунок. Результат рабо- ше, чем произойдет событие window.onload.
ты плагина можно посмотреть на рис. 1.
На этом простом примере вы можете убедиться, с ка- Выбираем элементы
кой легкостью и простотой фреймворк позволяет созда- В JQuery реализован очень интересный механизм поис-
вать необычные эффекты. ка элементов, использующий CSS и XPath. То есть для на-
Ну а теперь можно заняться изучением инструмента- хождения требуемого элемента DOM вы можете восполь-
рия, который JQuery в огромном количестве предоставля- зоваться как механизмом селекторов CSS, так и запроса-
ет разработчику для манипуляции элементами документа ми по документу в стиле XPath.
и их свойствами. Давайте же кратко рассмотрим некоторые XPath (XML Path Language) является языком для об-
из них, а также ряд особенностей работы с ними. ращения к частям XML-документа. HTML, или, вернее,
XHTML, является подмножеством XML, и совершенно ло-
Магическая функция $ гично, что не существует причин, по которым с помощью
Как говорилось выше, фреймворк JQuery вводит в гло- XPath нельзя было бы обращаться к частям HTML-докумен-
бальное пространство имен функцию jQuery. Но кроме это- та. Вернее, их не существует для jQuery, так как эта биб-
го используется также функция $, которая является алиа- лиотека поддерживает довольно большое подмножество
сом вышеназванной функции и гораздо чаще использует- XPath и легко объединяет его с некоторыми селекторами
ся при написании кода. CSS для создания невероятно гибкого механизма поиска
элементов на странице. Чтобы было более понятно, приве-
//Код: ду несколько примеров.
jQuery('div.panel');
Все элементы с атрибутом class="block":
//Эквивалентен коду:
$('div.panel'); $('.block');
Посмотрите на эти примеры. Они полностью эквива-
лентны, но второй пример кода, несомненно, выглядит бо- Элемент p с атрибутом с id="plain":
лее изящно. Но как же быть, если вы используете в про-
екте еще одну библиотеку, например, Prototype, в которой $('p#plain');
также используется функция $? Чтобы не возникало кон-
фликтов, в JQuery на этот счет предусмотрены следую- Все видимые ссылки внутри элмента div с атрибутом
щие решения: id="content":

jQuery.noConflict(); $('div#content a:visible');

После вызова этой функции все обращения к $ будут Все четные строки в таблице с атрибутом class="orders":
адресованы библиотеке Prototype. Другой способ – созда-
ние анонимной функции: $('table.orders tr:odd');

(function($) { Все поля ввода с атрибутом name="email":


// Внутри этого блока $ относится к jQuery
})(jQuery);
$('input[@name=email]');
Внутри этого блока можно использовать функцию $,
не опасаясь коллизий при использовании другой одноимен- Все внешние ссылки (то есть те, которые начинают-
ной глобальной функции. ся с http://);

Готовим плацдарм $('a[@href^="http://"]');


Большинство библиотек JavaScript часто используют со-
бытие window.onload. Оно вызывается после того, как до- Все элементы p, в которых есть хотя бы одна ссылка:
кумент полностью загрузился в окне браузера. Это зна-
чит, что вызываемый в обработчике этого события код $('p[a]');
не сработает, пока не загрузятся все изображения, флеш-
баннеры, видеоролики и другой мультимедийный контент Все элементы span, являющиеся прямыми потомка-
страницы. ми элемента p, расположенные в блоке div с атрибутом
JQuery предлагает очень изящное решение этой про- id="container":
блемы, а именно функцию ready().
$('div#container p/span');
$(document).ready(function() {
//Ваш код
}); Как мы видим, в сочетании эти два метода дают веб-
разработчику очень гибкий инструмент для выбора эле-
Внутри этого блока код будет выполнен сразу после то- ментов.

76
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
веб-программирование
Изменяем элементы Как было сказано выше, объект, возвращаемый функ-
Объекты, которые возвращает функция jQuery, имеют не- цией $, обладает свойствами массива, поэтому к любому
которые интересные особенности. элементу можно обратиться по индексу:
С одной стороны, это набор элементов DOM, который об-
ладает свойствами массива, имеет свойство lenght, к каж- $('p')[0].className = "myclass";
дому элементу можно получить доступ по индексу.
С другой стороны, это объект JQuery, который имеет В том случае, если вам необходимо пройтись по всем
большой набор методов, с помощью которых можно изме- элементам коллекции и выполнить над ними какие-то дейст-
нять данные элементы. вия, можно использовать метод each():
Нет смысла описывать все доступные методы, это мож-
но посмотреть в технической документации [3], приведу $('p').each(
function(){
лишь несколько примеров. //Действия над элементом
Выставляет ширину блока div с атрибутом id="block" }
);
в 300 пикселей:
В качестве параметра each() принимает функцию, ко-
$('div#block').width(300); торая работает в контексте найденного элемента, поэтому
в ней можно использовать переменную this, указывающую
Изменяет цвет элементов p с атрибутом class="title": на текущий элемент.

$('p.title').css('color', '#ff0000'); Магические цепочки (собираем


все вместе)
Применяет 2 CSS-правила для каждого нечетного пунк- Одной из важных особенностей JQuery является возмож-
та списка: ность объединять для преобразований в цепочки несколь-
ко вызовов селекторов. Это было показано в одном из вы-
$('li:odd').css({color: 'white', backgroundColor: 'black'}); шеприведенных примеров. Давайте же рассмотрим эти воз-
можности более подробно на примере связанной анимации.
Добавляет стилевой класс external для всех внешних В нашей тестовой страничке создадим код:
ссылок (то есть тех, которые начинаются с http://), затем до-
бавляет для них атрибут target="_blank": <html>
<head>
<meta http-equiv="Content-Type" content="text/html; ↵
$('a[@href^="http://"]').addClass('external'). ↵ charset=windows-1251" />
attr('target', '_blank');\ <title>Jquery</title>
<style type="text/css">
Для каждого тега span на странице выводит сообщение #run{
border: solid 1px #000000;
alert() с его текстовым содержанием (включая HTML-теги): background-color: #8080ff;
width: 100px;
height: 100px;
$('span').each(function(el){alert($(this).text())}); position: absolute;
top: 40px;
left: 20px;
Заменяет весь текст в ссылках на странице текстом }
«Нажми здесь!»: </style>
<script src="js/jquery-1.2.6.js"></script>
<script language="JavaScript" type="text/javascript">
$('a').html('Нажми здесь!'); $(document).ready(function(){
$('a').click(function(){
$('div#run').
Следует отметить, что методы JQuery обладают сим- slideUp('slow').
slideDown('slow').
метрией, то есть их можно использовать не только для из- animate({opacity: 'hide', left: '+=400'}, ↵
менения атрибутов элементов, но и для получения значе- 500).
animate({opacity: 'show', left: '-=400'}, ↵
ний этих атрибутов. 1000);
Возвращает ширину первого элемента div на странице: });

var width = $('div').width();

Возвращает значение атрибута src


у первого элемента img на странице:

var src = $('img').attr('src');

Возвращает значение цвета перво-


го элемента h1 на странице:

var color = $('h1').css('color'); Рисунок 2. Пример реализации функций

№1, январь 2009 77


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
веб-программирование
} ставляется поэлементно, то есть эффекты, примененные
);
</script> к разным элементам одновременно, будут выполняться од-
</head> новременно.
<body>
<a href="#">Run!</a> Давайте вернемся к нашей тестовой странице и созда-
<div id="run"></div> дим в ней следующий код:
</body>
</html>
<html>
<head>
И подробнее рассмотрим, что же происходит на этой <meta http-equiv="Content-Type" content="text/html; ↵
странице (см. рис. 2). charset=windows-1251" />
<title>jQuery</title>
Как видно из примера, к элементу div с атрибутом id="run" <style type="text/css">
применяется сразу несколько методов, выстроенных в це- .block{
height: 100px;
почку, которые будут выполняться один за другим: width: 100px;
n slideUp – медленно скрыть элемент вверх; border: solid 1px #000000;
background-color: #8080ff;
n slideDown – медленно отобразить элемент сверху; margin: 5px;
n animate – применить к элементу анимацию. }
#button{
border: solid 1px #808080;
Несомненно, что с помощью этого можно достичь высо- background-color: #dfdfdf;
height: 30px;
кой гибкости в разработке. Приблизительный результат ра- width: 100px;
боты этого сценария выглядит, как показано на рис. 3. margin: 5px;
text-align: center;
cursor: pointer;
Магические превращения
}
font-family: Arial;
В предыдущем примере мы затронули еще один интерес- </style>
ный метод JQuery, а именно метод animate(). Давайте рас- <script src="js/jquery-1.2.6.js" ↵
type="text/javascript"></script>
смотрим его более подробно. Он является одной из клю- <script type="text/javascript">
чевых функций библиотеки, на которой базируются дру- $(document).ready(function(){
$('#button').click(function(){
гие эффекты: $('#block1').
animate({opacity: 'hide'}, 500).
animate(params, speed, easing, callback); animate({opacity: 'show'}, 1000);
$('#block2').
animate({opacity: 'hide'}, 500).
animate({opacity: 'show'}, 1000);
Параметрами этой функции являются: });
n params – обязательный параметр, свойства анимации });
</script>
в виде пар {ключ: значение}; </head>
n speed – обязательный параметр, скорость анимации <body>
<div id="button">Go</div>
в миллисекундах; <div class="block" id="block1"></div>
n easing – необязательный параметр, замедление ани- <div class="block" id="block2"></div> </body>
</html>
мации (easein – замедление к концу, easeout – ускоре-
ние); В приведенном примере к разным элементам '#block1'
n callback – необязательный параметр, функция, которая и '#block2' одновременно применены одинаковые мето-
будет вызвана после завершения анимации. ды animate(), которые будут выполняться также одновре-
менно.
Функция animate является основой большинства, ес- Манипуляция свойствами элементов на странице поз-
ли не всех, эффектов JQuery. Необходимо также отметить, воляет разработчикам получать такие визуальные эффек-
что эффекты применяются к элементам не сразу, а по оче- ты, которые раньше были возможны только при использо-
реди. Например, если мы написали такой код: вании технологии Flash. Это и плавное появление, и сокры-
тие объектов, плавное изменение различных свойств (цве-
for(var i = 0; i < 10; i++){ та, размеров), движение объектов, реализация всевозмож-
$('mydiv').animate({opacity: 'hide'}, 300);
$('mydiv').animate({opacity: 'show'}, 300); ных элементов интерфейса: деревьев, drag-drop объектов
} и сортируемых списков.
В базовой поставке jQuery предлагает лишь ограни-
мы получим плавное изменение прозрачности элемен- ченный набор таких эффектов. Остальные можно реали-
та независимо от скорости выполнения цикла. Также сле- зовать при помощи модулей расширения, о которых пой-
дует обратить внимание на то, что очередь эффектов со- дет речь дальше.

Помоги себе сам


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

78
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
веб-программирование
плагин, реализующий свои методы, эффекты и даже се- jQuery.fn.myplugin = function(options)
{
лекторы. Достаточно следовать некоторым простым пра- // Начальные параметры
вилам. Чтобы было более понятно, давайте рассмотрим var settings = {default: "Мой плагин!", value: ""};
это на простом примере. // Замена параметров
Для начала придумаем назание нового плагина, на- settings = jQuery.extend(settings, options);
пример, myplugin. Далее создадим JavaScript файл // Вывод новых значений
jquery.myplugin.js. Для добавления в плагин нового мето- if(settings.value == "")
alert("Значение по умолчанию: " + ↵
да, который будет доступен сразу из функции $, достаточ- settings.default);
но добавить его в объект fn. else
alert("Полученное значение: " + settings.value);
Запишем код в созданный файл: return this;
};
jQuery.fn.myplugin = function()
{
alert("Мой плагин!"); Заменив в нашей тестовой странице строку, чтобы вы-
return this; звать плагин с новыми параметрами:
};

Теперь вернемся к нашей тестовой странице и созда- $("#mydiv").myplugin({value: "Новое значение"});


дим в ней код:
мы видим, что код нашего расширения также выполняется
<html> с учетом нововведений.
<head>
<meta http-equiv="Content-Type" content="text/html; ↵
charset=windows-1251" />
<title>jQuery</title>
И снова AJAX
<script src="js/jquery-1.2.6.js" ↵ Эпоха WEB 2.0 обязывает разработчика использовать
type="text/javascript"></script> при создании интерактивных веб-интерфейсов подход, за-
<script src="js/jquery.myplugin.js" ↵
type="text/javascript"></script> ключающийся в фоновом обмене данными с сервером. Ра-
<script type="text/javascript"> зумеется, речь идет об AJAX – технологии, которая в JQuery
$(document).ready(
function() поддерживается в полной мере. По мнению некоторых раз-
{ работчиков, данная библиотека имеет самый удобный API
$("#mydiv").myplugin();
} для работы с AJAX.
); Для тестирования работы AJAX нам потребуется на-
</script>
</head> строенный веб-сервер с любым интерпретатором сервер-
<body> ного языка программирования, в нашем случае это будет
<div id="mydiv"></div>
</body> PHP. Базовыми функциями для работы с AJAX в JQuery яв-
</html> ляются функции post() и get():

Плагин работает! Следует обратить внимание на то, $.post(url[, params[, callback]])


$.get(url[, params[, callback]])
что в конце функции мы написали return this. Это необходи-
мо для того, чтобы можно было создавать цепочки из ме- В данных функциях:
тодов. Но это еще не все. Скорее всего, нам понадобится n url – адрес страницы, на которую будет отправлен за-
вызов метода с передачей в него параметров, например, прос;
в таком виде: n params – параметры, передаваемые в запросе в виде
пар {ключ: значение};
$("#mydiv"). myplugin( n callback – функция, которая будет вызвана в случае ус-
{
key: "action", пешного завершения вызова.
value: "test"
}
); Эти функции очень похожи друг на друга, отличаются
лишь методом отправляемого запроса: POST или GET со-
Для этого можно использовать метод extend: ответственно. Например, POST-запрос к странице test.php
с параметрами action и id и вызов функции onGetAjax в слу-
$.extend(target, property1, ..., propertyN) чае успеха:

В данном методе: $.post(


'/test.php',
n target – начальный объект; {
n property1 – propertyN – объекты, свойства которых до- action: 'news',
id: 5
полняют или изменяют начальный объект. },
onGetAjaxs
);
Таким образом, мы можем хранить в плагине значения function onGetAjax(data)
по умолчанию и заменять их параметрами, полученными {
// Получение данных, отправленных сервером
от пользователя. Теперь код нашего плагина может иметь alert(data);
такой вид: }

№1, январь 2009 79


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
веб-программирование
Асинхронный запрос к странице ничем не отличает- n params – параметры в виде {ключ: значение};
ся от обычного ее вызова, например, через окно браузе- n callback – вызываемая функция.
ра, то есть переданные данные будут доступны в ней точ-
но так же, как если бы они были переданы обычным GET- Чтобы было понятнее, воспользуемся опять прос-
или POST-запросом. тым примером. Код нашего тестового файла на сервере
Обратите также внимание на то, что иногда необходи- test.php:
мо знать, каким образом была отправлена страница – за-
просом в браузер или через AJAX. Для этого при запро- <?php
if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest')
се через AJAX устанавливается HTTP заголовок HTTP_X_ {
REQUESTED_WITH со значением XmlHTTPRequest. echo '{param: '.$_REQUEST['param'].', response: ↵
"Ответ сервера"}';
На сервере при помощи PHP это можно узнать следу- }
ющим образом: ?>

<?php В тестовую страницу вставьте код:


if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest')
{
// выполнение кода $(document).ready(function(){
} $.getJSON('test.php', {param: 10}, onGetAjax);
?> function onGetAjax(data)
{
alert(data.param + ' ' + data.response);
Еще один метод для работы с AJAX, который необходи- }
мо упомянуть, – это метод load(): });

load(url); После прохождения запроса ответ с сервера обраба-


тывается функцией eval() и полученный объект передает-
Здесь: ся в функцию onGetAjax().
n url – адрес запрашиваемой страницы на сервере. Следует также обратить внимание на еще один метод,
который предоставляет JQuery, это метод getScript(). С его
Он передает в какой-либо элемент результат работы помощью можно загрузить и выполнить любой JavaScript
серверного сценария. Рассмотрим это на небольшом при- сценарий. Например, если у нас есть сценарий jstest.js:
мере.
Допустим, у нас на сервере есть файл test.php: $('a').css('color', '#ff0000');

<?php то после выполнения кода:


echo 'Текст сформированный сервером';
?>
$.getScript('jstest.js');
А в нашей тестовой странице следующий код:
все гиперссылки страницы будут окрашены в красный
$('div#mydiv').load('test.php'); цвет.

В результате работы этого сценария в блок div с id="mydiv" Эпилог


будет записан текст, сформированный скриптом, содержа- Разумеется, в рамках данной статьи невозможно охватить
щимся в файле test.php, а именно фраза «Текст, сформи- весь инструментарий, которым располагает библиотека
рованный сервером». JQuery. Вы в любой момент можете воспользоваться тех-
Помимо вышеперечисленных методов работы с AJAX нической документацией на официальном сайте фрейм-
у разработчиков пользуется популярностью JSON. Это фор- ворка [3], а также онлайн-документацией [6], но в любом
мат записи данных в виде пар {ключ1: значение1, ключ2: зна- случае это не будет пустой тратой времени. Познакомив-
чение2}, который можно легко преобразовать в JavaScript шись с JQuery ближе, вы, несомненно, поймете, насколь-
объект. Вот пример записи данных в виде JSON: ко это удобный и гибкий фреймворк, покрывающий огром-
ный диапазон функций, предоставляя при этом удобный API
{ для расширения собственной функциональности, работы
"firstName": "Иван",
"lastName": "Иванов", с AJAX, визуальными эффектами и многим другим.
"address": "streetAddress": "Московское ш., 101, кв.101",
"phoneNumbers": "812 123-1234"
} 1. http://jquery.com – официальный сайт разработчиков JQuery.
2. http://docs.jquery.com/License – лицензионное соглашение.
Для работы с ним в JQuery есть метод getJSON(): 3. http://docs.jquery.com – техническая документация.
4. http://odyniec.net – Михал Войцеховски.
getJSON(url, params, callback) 5. http://odyniec.net/projects/imgareaselect/imgareaselect-0.6.1.zip –
плагин imgAreaSelect
Здесь: 6. http://www.visualjquery.com – онлайн-справочник библиотеки
n url – адрес серверной страницы; JQuery.

80
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
bugtraq

Множественные уязвимости ных обновлений. Удаленный пользователь может с помо-


в Sun Java JDK и JRE щью атаки «человек посредине» или DNS-спуфинг атаки
Программа: Java Web Start 1.x; Java Web Start 5.x; Java Web скомпрометировать целевую систему.
Start 6.x; Sun Java JDK 1.5.x; Sun Java JDK 1.6.x; Sun Java JRE 13. Уязвимость существует из-за ошибки проверки гра-
1.3.x; Sun Java JRE 1.4.x; Sun Java JRE 1.5.x/5.x; Sun Java JRE ниц данных при обработке Main-Class-строк в JAR-файле.
1.6.x/6.x; Sun Java SDK 1.3.x; Sun Java SDK 1.4.x. Удаленный пользователь может с помощью специально
Опасность: Высокая. сформированного JAR-файла вызвать переполнение сте-
Описание: 1. Уязвимость существует из-за того, что Java ка и выполнить произвольный код на целевой системе.
Runtime Environment (JRE) создает временные файлы 14. Уязвимость существует из-за ошибки при десериа-
с предсказуемыми именами. Злоумышленник может запи- лизации объектов календаря. Недоверенный Java-апплет
сать произвольные JAR-файлы и произвести запрещенные может прочитать, записать и выполнить произвольные фай-
действия на уязвимой системе. лы на системе.
2. Уязвимость существует из-за ошибки в библиотеке 15. Целочисленное переполнение обнаружено в JRE.
Java AWT при обработке моделей изображений. Удален- Удаленный пользователь может с помощью специально
ный пользователь может с помощью специально сфор- сформированного Pack200-сжатого JAR-файла вызвать
мированной растровой модели изображения, используе- переполнение динамической памяти и выполнить произ-
мой в операции ConvolveOp, вызвать переполнение дина- вольный код на целевой системе.
мической памяти и выполнить произвольный код на целе- 16. Уязвимость существует из-за того, что декодер
вой системе. UTF‑8 принимает кодировки длиной более чем форма
3. Уязвимость существует из-за ошибки при обработке shortest. Злоумышленник может с помощью специально
заголовков GIF-изображений в Java Web Start. Удаленный сформированного URI заставить приложение принять не-
пользователь может с помощью специально сформирован- корректные последовательности и получить доступ к важ-
ного GIF-изображения вызвать повреждение памяти. ным данным.
4. Целочисленное переполнение обнаружено при обра- 17. Уязвимость существует из-за ошибки в JRE, которая
ботке TrueType-шрифтов. Удаленный пользователь может позволяет злоумышленнику просмотреть содержимое до-
вызвать переполнение динамической памяти и скомпроме- машней директории пользователя.
тировать целевую систему. 18. Уязвимость существует из-за ошибки при обработ-
5. Уязвимость существует из-за ошибки в JRE, которая ке публичных RSA-ключей. Удаленный пользователь может
позволяет злоумышленнику создать сетевые соединения с помощью специально сформированного RSA-ключа пот-
к произвольным хостам. ребить большое количество системных ресурсов.
6. Уязвимость существует из-за ошибки при запуске 19. Уязвимость существует из-за ошибки в механиз-
Java Web Start-приложений. Злонамеренное недоверен- ме аутентификации JRE Kerberos. Удаленный пользова-
ное приложение может получить доступ на чтение, запись тель может потребить большое количество системных ре-
и выполнение приложений с привилегиями пользователя, сурсов.
запустившего приложение. 20. Уязвимость существует из-за различных ошибок
7. Уязвимость существует из-за ошибки, которая поз- в JAX-WS- и JAXB JRE-пакетах. Недоверенный Java-ап-
воляет недоверенному Java Web Start-приложению полу- плет может прочитать, записать и выполнить произволь-
чить имея текущего пользователя и данные о расположе- ные файлы на системе.
нии Java Web Start-кэша на системе. 21. Уязвимость существует из-за ошибки при обработке
8. Уязвимость существует из-за ошибки в Java Web Start, ZIP-файлов. Злоумышленник может с помощью специаль-
которая позволяет злоумышленнику с помощью специаль- но сформированного ZIP-архива получить доступ к произ-
но сформированного JNLP-файла изменить системные на- вольным участкам памяти на системе.
стройки (например, java.home, java.ext.dirs и user.home). 22. Уязвимость существует из-за ошибки, которая поз-
9. Уязвимость существует из-за ошибки в Java Web Start воляет злонамеренному коду, загруженному из локальной
и Java-плагине, которая позволяет злоумышленнику внед- файловой системы, получить сетевой доступ к локально-
риться в HTTP-сессию пользователя. му хосту.
10. Уязвимость существует из-за ошибки в функциона- 23. Уязвимость существует из-за ошибки проверки
ле загрузки классов JRE-апплетов. Удаленный пользова- границ данных при обработке TrueType-шрифтов. Удален-
тель может просмотреть содержимое произвольных фай- ный пользователь может с помощью специально сформи-
лов на системе и создать сетевые подключения к произ- рованного TrueType-шрифта вызвать переполнение дина-
вольным хостам. мической памяти и выполнить произвольный код на целе-
11. Уязвимость существует из-за ошибки в Java Web Start вой системе.
BasicService, которая позволяет открыть произвольные ло- URL производителя: java.sun.com.
кальные файлы в браузере пользователя. Решение: Установите исправление с сайта производителя.
12. Уязвимость существует из-за того, что механизм
Java Update не проверяет цифровые подписи загружен- Составил Александр Антипов

№1, январь 2009 81


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
web-программирование

WinBinder PHP.
Создаём GUI-интерфейс за 2 клика

Александр Майоров

Сегодня уже никого не удивить инструментами для создания приложений с GUI-интерфейсом


на скриптовых языках. PHP не исключение, и об этом были статьи, в частности, про PHP‑GTK.
Но не все знают, что кроме PHP-GTK существуют другие библиотеки, одна из которых –
WinBinder.

82
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
web-программирование
Что это?
WinBinder – это библиотека для создания приложений с гра-
фическим интерфейсом на языке программирования PHP.
Наверное, не стоит говорить о том, какое большое распро-
странение получил этот язык в настоящее время. PHP яв-
ляется очень популярным языком сценариев, который ис-
пользуется главным образом для веб-разработок, но так-
же набирает популярность как язык скриптов общего на-
значения. Надёжно укрепив свои позиции на серверах, те-
перь переходит в другие секторы, и десктопы не исключе-
ние. Об этом свидетельствует появление таких библиотек,
как PHP-GTK, PHP-Qt и собственно WinBinder, о котором
мы собрались поговорить.

Препарируем WinBinder
Давайте теперь детально рассмотрим, что из себя пред-
Рисунок 1. Схема взаимодействия компонентов в приложении
ставляет фреймворк WinBinder. Это расширение для PHP на WinBinder
с открытым исходным кодом. Оно позволяет PHP‑програм-
мистам быстро и легко разрабатывать Windows-приложе- единый интерфейс для управления всеми объектами. Эта
ния. Среди основных особенностей WinBinder можно упо- функция, кстати, применима ко всем без исключения ком-
мянуть непосредственное взаимодействие с программным понентам Windows, начиная от простых лэйблов и полей
интерфейсом операционной системы Microsoft Windows, не- ввода и заканчивая такими сложными компонентами, как
большой размер конечных файлов приложений (при компи- компоненты для форматированного вывода текста, пунк-
ляции скриптов с помощью утилиты bamcompile), обширную тов меню и прочего, устраняя тем самым необходимость
базу всевозможных PHP-функций, возможность как объек- использовать функции для каждого класса (к примеру, это
тноориентированного, так и процедурного программирова- были бы функции wbSelect, wbCheck и т. д.).
ния, а также удобство использования. Собственно второй слой, который мы уже упомина-
WinBinder состоит из DLL-библиотеки, которая факти- ли выше, – это слой PHP, который эффективно связывает
чески является PHP-расширением небольшого набора вспо- Windows API с Zend Engine, создавая новый набор пользова-
могательных скриптов и файлов. На рис. 1 представлена тельских функций PHP. Многие из этих функций имеют пре-
схема работы приложения, написанного с использованием фикс wb_, например, wb_set_value(), которую вам придется
данного расширения. часто использовать для установки значения объектам.
Связь между компонентами в WinBinder реализована Результатом двухслойной архитектуры WinBinder явля-
через механизм обратных вызовов. Windows-сообщения, ется набор простых и удобных в использовании функций,
генерируемые контроллерами и таймерами, транслиру- упрощающих работу с Windows API-интерфейсом. Напри-
ются в одиночные callback-события, которые можно легко мер, чтобы присвоить иконку для окна приложения, нужно
перехватить в PHP-программе. Каждое сообщение имеет вызвать функцию wb_set_image(). Её прототип выглядит
свой целочисленный идентификатор, по которому его мож- следующим образом:
но идентифицировать.
Библиотека WinBinder фактически состоит из двух сло- bool wb_set_image (int wbobject, mixed source, ↵
int transparentcolor, int index, int param)
ев, взаимодействующих между собой. Первый слой – это
нижний уровень, называемый API‑слоем. Данный слой на- Достаточно передать идентификатор объекта и ресурс.
прямую связан с Windows API и предоставляет единый ин- В качестве ресурса может быть как графический файл, так и
терфейс для более высокоуровневого слоя – слоя PHP. Хо- DLL-библиотека или исполняемый файл, содержащие в се-
тя функции на нижнем уровне представляют из себя оберт- бе графические ресурсы (для этого указывается индекс ре-
ки для Windows API вызовов, большинство из них являются сурса внутри бинарного файла – index). Та же функция ис-
больше чем просто обертки вокруг API. Они инкапсулируют пользуется и для растровых изображений, применяемых
работу Windows-функций и упрощают доступ к ним. к любому объекту, хоть списки, хоть проводник с деревом.
Например, Windows использует различные сообщения Таким образом, программист освобождается от всех тонкос-
для установки числовых значений для таких компонент, как тей работы с Windows API, с его множеством функций и со-
progress-bar, scroll-bar и т. д. И хотя существует явное сходс- общений, которые скрыты от глаз PHP-программиста.
тво между этими элементами управления при генерации со- Еще одним преимуществом такой архитек т уры
общений, их аргументы различны. Примеры генерации со- WinBinder является то, что можно создавать переплеты
общений (см. таблицу).
Примеры генерации сообщений
Одна из целей WinBinder как раз заключает-
Scroll bars SendMessage(hCtrl, SBM_SETPOS, (WPARAM)dwValue, TRUE);
ся в том, чтобы изолировать программиста от
всех этих сложностей, предоставляя функционал Track bars SendMessage(hCtrl, TBM_SETPOS, TRUE, (LPARAM)(LONG)dwValue);

библиотеки. API-слой выполняет всю работу че- Progress bars SendMessage(hCtrl, PBM_SETPOS, (WPARAM)dwValue, 0);
рез единую функцию wbSetValue(), которая имеет Up/down controls SendMessage(hCtrl, UDM_SETPOS, 0, (LPARAM)MAKELONG((short)dwValue, 0));

№1, январь 2009 83


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
web-программирование

Рисунок 2. Рабочий стол студии

с другими скриптовыми языками программирования, заме- Теперь заходим на http://exvision.net. Качаем оттуда сту-
нив слой PHP на какой-то другой. В этом случае WinBinder дию. Установка делается в 2 клика, так что нет смысла её
будет действовать как основа, каркас, связывающий раз- расписывать. Запускаем студию и получаем главное ок-
нородные компоненты воедино. но – рабочий стол. Жмете в меню «Project → New», задае-
Возможна даже замена Windows API-слоя, что позво- те имя проекта, пусть у нас будет это Samag. После созда-
лит делать приложения для других операционных систем, ния проекта будет сгенерирован главный файл MAIN. Сле-
отличных от Windows, но это только в теории. На практи- ва вы увидите его. Надо заметить сразу, что это не обоз-
ке вопросом на данный момент никто не занимается и это реватель файлов, а проводник ресурсов. Все, что отобра-
не входит в рамки развития проекта. Хотя никто не меша- жается в этом списке, будет скомпилировано в исполняе-
ет вам подумать над этим, может быть, кто-то и заинтере- мый файл. Имена ресурсов автоматически генерируются
суется. Все в ваших руках. на основе реальных имен файлов. Из имени исключает-
ся все лишнее (точки, пробелы, прочее), и оно приводится
И опять, и снова да здравствует мир во к верхнему регистру.
всём мире! Итак. С чего начнем? Банальный «Привет, мир!» нам сто-
Ну что же, мы разобрали, что такое WinBinder, давайте пе- ит написать, чтобы быстро показать идеологию проектиро-
рейдем теперь к практической части. Библиотеку и нужные вания на WinBinder. Сделаем простое окно с текстом и кноп-
компоненты можно скачать с официального сайта http:// кой Show message (см. рис. 2).
winbinder.org. Этого достаточно, чтобы писать приложения, Как и в PHP-GTK, чтобы создать форму, нужно описать
но есть одно «но». Как и в случае с PHP-GTK, на компьюте- ее, инициализировать библиотеку и прочее. Но WinBinder
ре должен быть интепретатор PHP. И что же? Меняем ши- тем и хорош, что он позволяет создать форму за два клика.
ло на мыло? Не совсем. Да, WinBinder не кроссплатфор- Открываем редактор форм (WinBinder Form Editor). Созда-
менный, в отличие от того же PHP-GTK, но он более легок ем форму, какую захотим. Давайте кинем на форму кнопку.
в освоении и программировании. В WinBinder есть графи- Назовите её как-нибудь. Теперь выберите из пункта меню
ческий редактор форм, который позволяет экспортировать File: Export PHP Code. Сохраните форму в файл, к приме-
их сразу в нативный PHP-код. ру, mainform.php. Далее можно пойти несколькими путями.
Но WinBinder мало чем отличался бы от аналогов, ес- Самый простой, но не самый правильный – это скопировать
ли бы не одна разработка от eXvision. Называется она содержимое файла mainform.php в нашу открытую рабочую
miniPHP Studio. Эта студия представляет собой прос- область (файл MAIN). У вас должно получиться:
той, но тем не менее удобный редактор PHP-кода, редак-
тор ресурсов и компилятор кода в исполняемый файл. <?php
В качестве компилятора в ней используется bamcompile /********************************************************
(http://www.bambalam.se/bamcompile). Это очень удобный
WINBINDER - form editor PHP file (generated automatically)
и наиболее распространенный компилятор PHP в исполняе-
мые exe-файлы. Скомпилированные бинарники сжимаются ********************************************************/
утилитой UPX (Ultimate Packer for eXecutables – упаковщик // Control identifiers
исполняемых файлов, поддерживающий несколько различ- if(!defined('IDC_PUSHBUTTON1002')) ↵
define('IDC_PUSHBUTTON1002', 1002);
ных платформ и форматов файлов). На выходе получается
компактная программка с графическим интерфейсом, на- // Create window
$winmain = wb_create_window(null, AppWindow, ↵
писанная на PHP. Она готова к распространению, а глав- 'www.samag.ru', WBC_CENTER, WBC_CENTER, 317, 179, ↵
ное, на компьютере пользователя не нужно что-то допол- 0x00000000, 0);
нительно устанавливать. Все необходимое уже будет вклю- // Insert controls
чено в бинарный файл и готово к использованию. Также wb_create_control($winmain, PushButton, 'Show message', ↵
105, 65, 90, 25, IDC_PUSHBUTTON1002, 0x00000000, ↵
miniPHP Studio позволяет включать в исполняемый файл 0, 0);
любой ресурс, будь то графический файл или текстовый,
// End controls
а также включать DLL-библиотеки и расширения PHP. ?>

84
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
web-программирование
Этого, правда, недостаточно для запуска. Теперь нам {
switch($id)
надо инициализировать саму библиотеку, вызвав функцию {
wb_init() в самом начале файла. Далее нам надо написать case IDC_PUSHBUTTON1002:
wb_message_box($Sender, ↵
и зарегистрировать функцию-обработчик для сообщений "Hello world!", ↵
Windows. Выглядеть она может так: "My first test programm");
break;
// Main Window's processor case IDCLOSE:
function main_events_handler($Sender, $id) wb_destroy_window($Sender);
{ break;
switch($id) }
{ }
case IDC_PUSHBUTTON1002:
wb_message_box($Sender, ↵ ?>
"Hello world!", ↵
"My first test programm");
break; Проведем краткий разбор приложения. Вначале мы ини-
case IDCLOSE: циализировали библиотеку, вызвав wb_init(). Затем объяви-
wb_destroy_window($Sender); ли константу IDC_PUSHBUTTON1002, присвоив ей значе-
break;
} ние 1002. Это целочисленный идентификатор нашей кноп-
} ки. В WinBinder ко всем ресурсам и компонентам доступ
происходит через целочисленные идентификаторы, будь
Теперь регистрируем функцию через следующий вызов: то окно, контроллер или сообщение. После мы создали
окно с заголовком www.samag.ru. Далее идет регистрация
wb_set_handler($winmain, "main_events_handler"); нашего обработчика сообщений wb_set_handler($winmain,
"main_events_handler"). В качестве аргументов передается
И вызываем функцию wb_main_loop(), она создает глав- идентификатор окна и название функции обратного вы-
ный цикл программы. Собственно все. Теперь запускаем зова. Функция принимает идентификатор объекта-роди-
программу кнопкой Preview project. Есть, правда, маленькое теля и целочисленный идентификатор сообщения. Внут-
«но». Программа miniPHP Studio написана без разделения ри функции мы обрабатываем эти сообщения по номерам
на потоки, поэтому при предварительной компиляции бу- в конструкции switch. Вы видите нашу объявленную кон-
дет казаться, что студия повисла. На самом деле это не так. станту IDC_PUSHBUTTON1002 и неизвестную IDCLOSE.
Кстати при компиляции всегда выскакивает окно с сообще- Вторая константа – это стандартная константа библиоте-
нием, что студия не может быть активна до окончания про- ки. Подробнее оних можно прочесть в справке, которая
цесса компиляции. Делается это не очень быстро, но тер- идет в комплекте со студией. Ну и, наконец, происходит
пимо. Процесс сборки может достигать минуты, так что запуск бесконечного цикла функцией wb_main_loop(). Все.
не спешите убивать процесс. Итак, делайте предваритель- Теперь вы можете скомпилировать вашу программу и рас-
ную сборку приложения и смотрите, что у вас получилось. пространять ее на любом компьютере с операционной сис-
Если возникнут ошибки, то студия вам сообщит о них. темой Windows.
Полный исходный код нашего тестового приложения После сборки на выходе получите исполняемый файл
выглядит так (см. рис. 3): размером примерно полтора мегабайта, готовый к работе
и включающий в себя все необходимые библиотеки и ре-
<?php сурсы.
wb_init();

/********************************************************
Тестер регулярных выражений
Давайте теперь напишем более полезную программу и не-
WINBINDER - form editor PHP file (generated automatically) много больше разберемся с WinBinder. Напишем утилиту,
********************************************************/ с помощью которой можно будет быстро протестировать ре-
гулярное выражение на пригодность. Итак, приступим.
// Control identifiers
if(!defined('IDC_PUSHBUTTON1002')) ↵ Для начала накидаем простейший класс-отладчик, ибо
define('IDC_PUSHBUTTON1002', 1002); без отладки немыслима разработка. Вся отладочная ин-
// Create window
$winmain = wb_create_window(null, AppWindow, ↵
'www.samag.ru', WBC_CENTER, WBC_CENTER, 317, 179, ↵
0x00000000, 0);
wb_set_handler($winmain, "main_events_handler");

// Insert controls
wb_create_control($winmain, PushButton, 'Show message', ↵
105, 65, 90, 25, IDC_PUSHBUTTON1002, 0x00000000, ↵
0, 0);

// End controls

wb_main_loop();

// Main Window's processor


function main_events_handler($Sender, $id) Рисунок 3. Пример работы нашего приложения

№1, январь 2009 85


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
web-программирование

Рисунок 4. Форма будущей программы

формация будет кидаться в текстовый лог-файл, так как те правой кнопкой мыши и выбираете пункт Import a PHP
это лучший способ отладки. Код нашего отладчика будет Script. Выбираете файл debug.php и подключаете.
следующим:
Ресурсы WinBinder
<?php Прежде чем продолжить, я должен рассказать вам про ре-
class Debug сурсы WinBinder и как с ними работать. Любой ресурс, им-
{ портированный в проект, будет храниться внутри бинарного
public static $dumpFile = 'dump.log';
файла. PHP-скрипты также являются текстовыми ресурса-
public static function var_dump() ми. Чтобы обратиться к внутреннему ресурсу надо исполь-
{
$args = func_get_args(); зовать схему res://. Общий прототип именования выглядит
ob_start(); следующим образом:
call_user_func_array('var_dump', $args);
error_log(ob_get_clean(), 3, self::$dumpFile);
} "res:///RESOURCETYPE/RESOURCENAME"

public static function var_export()


{ Это описание внутреннего адреса включенного фай-
$args = func_get_args();
error_log(var_export($args,true), 3, ↵ ла. Тогда, чтобы подключить наш файл debug.php, кото-
self::$dumpFile); рый стал ресурсом по имени DEBUG, нужно написать сле-
}
} дующую строчку:
?>
include "res:///PHP/DEBUG";
Это, по сути, обертка для двух функций var_dump()
и var_export(), а класс выступает в роли пространства имен. Таким образом, мы подключили внутренний файл.
Сохраняем этот код в файл debug.php и подключаем к на- Мы могли этот файл оставить внешним, и тогда его подклю-
шему проекту. Для этого в проводнике ресурсов щелкае- чать приходилось бы через указание пути к этому файлу.

86
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
web-программирование
Этого достаточно для нашего приложения. Более подробно дельный класс и хранился в отдельном файле. Это особен-
обо всех видах ресурсов написано в справке к библиотеке. но удобно, если у вас очень большая программа. Вы сами
решите, как вам удобнее и лучше.
Создаем каркас Вернемся к нашим недописанным обработчикам сооб-
Кинем на форму два текстовых поля, две кнопки и компо- щений. Код этих методов выглядит следующим образом.
нент для рендеринга HTML кода. Наша форма должна вы- Для кнопки preg_match:
глядеть примерно так (см. рис. 4).
Теперь давайте напишем каркас нашего будущего при- public static function signal_pushButton1($Window)
{
ложения. Лучше всего его оформить один раз в виде клас- preg_match
са и впоследствии использовать во всех ваших приложе- (
wb_get_text(self::$components ↵
ниях с WinBinder. Каркас будет выглядеть так: [IDC_RTFEDITBOX1002]),
wb_get_text(self::$components ↵
<?php [IDC_RTFEDITBOX1001]),
$arrayResults
class WBMain );
{
public static $signalsBind = array(); self::setResult($arrayResults);
public static $components = array(); }

public static function main()


{ и аналогичная функция для кнопки preg_match_all:
wb_init();
include "res:///PHP/MAINFORMFORM"; public static function signal_pushButton2($Window)
{
self::$signalsBind = preg_match_all
array (
( wb_get_text(self::$components ↵
IDCLOSE => 'close'
, IDC_PUSHBUTTON1004 => 'pushButton1' [IDC_RTFEDITBOX1002]),
, IDC_PUSHBUTTON1005 => 'pushButton2' wb_get_text(self::$components ↵
); [IDC_RTFEDITBOX1001]),
$arrayResults
wb_set_handler($winmain, ↵ );
'WBMain::callSignalHandler'); self::setResult($arrayResults);
wb_main_loop(); }
}

public static function ↵


callSignalHandler($Window, $signal) В обеих функциях вы видите вызов функции setResult().
{ Это функция, обрабатывающая результат и выводящая его
if (isset(self::$signalsBind[$signal]) && ↵
is_callable($foo = 'WBMain::signal_' . ↵ в красивом форматированном виде. Сделано это для со-
self::$signalsBind[$signal])) кращения размера программы, так как функционал выво-
call_user_func($foo, $Window);
} да полностью идентичен для обеих кнопок. Код функции
представлен ниже:
public static function signal_pushButton1($Window)
{
wb_message_box($Window, __METHOD__, ''); public static function setResult(array $arrayResults)
} {
$result =
public static function signal_pushButton2($Window) '<html><head><title>PCRETester</title> ↵
{ </head><body>'
wb_message_box($Window, __METHOD__, ''); . highlight_string
} (
"<?php\n\n"
public static function signal_close($Window) . var_export($arrayResults,true)
{ ,true
wb_destroy_window($Window); )
} . '</body></html>'
;
}
static $file;
WBMain::main(); if (!$file) $file = getcwd() . '/render.tmp';

?> $fp = fopen($file,'w+');


fwrite($fp, $result);
fclose($fp);
Здесь мы оформили код приложения в виде класса,
с набором статических свойств. Выделили общий контрол- wb_set_location(self::$components ↵
[IDC_HTMLCONTROL1003], $file);
лер сообщений callSignalHandler(), который, в зависимости }
от сообщения, вызывает нужную функцию обратного вы-
зова, что удобнее и правильней, чем один большой switch Вот таким вот нехитрым образом мы выводим дамп
на всю программу. Это почти весь текст программы, за ис- массива в формате HTML с результатами. Данные сохра-
ключением того, что в ней нужно описать логику для кно- няются во временный файл, который потом загружается
пок, это методы signal_pushButton1 и signal_pushButton2 со- в компонент HTMLControl, где происходит рендеринг. Та-
ответственно. Можно оформить код программы таким об- ким вот образом за 5 минут была написана полезная утили-
разом, чтобы каждый обработчик представлял собой от- та (см. рис. 5). Веб-разработчику нет необходимости пере-

№1, январь 2009 87


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
web-программирование

Рисунок 5. Наша программа в действии

учиваться и изучать что-то сложное. WinBinder очень легок ния/записи памяти по произвольным адресам с помощью
в освоении, а на сайте есть очень подробная документация функций wb_peek() и wb_poke(). Например, таким образом
и хорошие примеры. Эта документация встроена и в саму был найден способ взаимодействия с буфером обмена.
студию, так что нет необходимости ходить на сайт. Кстати, вот вам пример работы напрямую с памятью. На-
пример, изменение содержимого строки в памяти:
Еще пару слов в пользу WinBinder
WinBinder настолько прост, что много о нём рассказывать <?php
не вижу смысла. Данной статьи достаточно для того, чтобы $string = "Test string";
сесть и начать писать всякие утилитки для себя уже после $addr = wb_get_address($string);
$peek = wb_peek($addr);
тридцати минут знакомства. Можно написать легко и быст- Debug::var_dump( $peek );
ро редактор для базы данных SQLIte. Можно написать прос-
wb_poke($addr, "Replace");
той графический редактор, используя GD. К примеру, про- $peek = wb_peek($addr);
грамму для визуального изменения размера изображений Debug::var_dump($peek, $string);
и их брендирования. И даже ICQ-клиент, благо есть библи- ?>
отека, написанная на PHP, для работы с этим протоколом.
Можно написать клиент для работы с почтой. Можно напи- В результате в лог-файл будет записано следующее:
сать FTP-клиент. Да можно много чего еще написать. Бы-
ла бы фантазия, прямые руки и свободное время, а инстру- string(11) "Test string"
string(11) "Replacering"
мент у нас уже есть. string(11) "Replacering"
Конечно WinBinder не заменит вам С#/C++ или Java,
но его возможностей достаточно для создания более-ме- Мы получили адрес строковой переменной с помо-
нее сложных приложений. Более того, сообщество програм- щью wb_get_adress(), затем получили её содержимое че-
мистов постоянно расширяет возможности WinBinder. Чего рез wb_peek() и изменили, перезаписав начало строки че-
только стоит поддержка WinAPI, а также возможность чте- рез wb_poke().

88
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
web-программирование
Еще один плюс в корзину WinBinder – это то, что он под-
держивает ресурсы из WinASM Studio (бесплатная среда
разработки программного обеспечения для ОС Windows
и DOS, изначально предназначенная для написания про-
грамм на языке Ассемблер) (см. рис. 6).
WinBinder умеет даже «на лету» работать с файлами ре-
сурсов. К примеру, у вас есть файл с ресурсом окна. Вы мо-
жете его подключить прямо в программе, распарсить функ-
цией parse_rc(), которая вернет нативный PHP-код и выпол-
нить его. Пример приведен ниже:

<?php

$fp = fopen('myform.rc', 'rb');


$resource = fread($fp, file_size('myform.rc'));
fclose($fp);

$native_php_resource = parse_rc($resource, '$mainwin', ↵


null, 'PopupWindow');
eval($native_php_resource);

?> Рисунок 6. Ресурсы, созданные в WinASM Studio, можно


подключать к Winbinder
На сегодня поддерживаются только ресурсы, создан-
ные WinASM Studio. Подробнее о данной функции вы мо- фреймворк и хотите ли вы с ним ознакомиться поближе.
жете прочесть на этой странице http://winbinder.org/manual/ Безусловно, он вам может пригодиться, если вы PHP-про-
functions/auxiliary/parse_rc.html. граммист и, возможно, читая эту статью, уже придумали,
В WinBinder реализованы даже функции для рабо- какую программу, написанную для себя, вы давно хотели
ты с базой данных. Все они начинаются с префикса переписать с помощью PHP-GTK, но не хватало времени
db_. Подробности их использования можно узнать тут: http:// изучить все возможности и особенности. Разработка с при-
winbinder.org/manual/reference/functions_database.html. менением GTK никогда не славилась легкостью, тут никто
Теперь давайте разберем пример работы с реестром, так спорить не будет. Причем я говорю не только о PHP‑GTK.
как в операционных системах Windows это неотъемлемая Так почему бы не попробовать новый инструмент? Особен-
часть. А серьезному приложению работа с реестром прос- но если у вас стоит задача написать приложение именно
то необходима. Например, мы хотим узнать, какие обои ус- под операционную систему Windows.
тановлены в данный момент на рабочем столе:
Итого
<?php Возможности WinBinder достаточно велики. Он умеет ра-
$wallpaper = wb_get_registry_key('HKCU', ↵ ботать с реестром Windows. Умеет работать с медиа-ре-
'Control Panel\\Desktop', 'Wallpaper'); сурсами и проигрывать *.wav-файлы. Достаточно взгля-
?> нуть в справочную информацию, и вы поймете, что он уме-
ет много чего. Тем не менее его функционал хоть и велик,
но очень прост в изучении. Один тот факт, что WinBinder
Нет ничего проще взаимодействует напрямую с Windows API, говорит о том,
В Winbinder встроены функции для проигрывания звуков что он обладает достаточной мощью для разработки при-
(wb_play_sound()), для поиска файлов (wb_find_file()). Так же ложений под операционную систему Windows. Более того,
легко можно работать с COM-компонентами Windows, уве- он очень хорошо документирован (на мой взгляд, лучше,
личивая функционал своих программ. Например, можно на- чем PHP-GTK). На официальном сайте вы найдете массу
писать свой Skype-клиент, используя SkypeAPI. Достаточно примеров, а также много информации можно почерпнуть
пары строк кода, и у вас уже почти готовое приложение: с форума сообщества.
Если вы уже знакомы с PHP, то через пару часов вы смо-
<?php жете увидеть свою программу на PHP в виндовом окошке.
$Skype = new COM('SKYPEAPI.Access') Освоив документацию WinBinder и получив достаточное
if ( !$Skype ) количество практики, вы поймете, что еще более просто-
{
wb_message_box($Window, "ERROR! Can not create ↵ го прикладного программирования под Windows вы не на-
SKYPEAPILib.Access object!", "ERROR!"); ходили. Кстати, WinBinder доступен в PECL-репозитории
exit(1024);
} по адресу http://pecl.php.net/package/WinBinder.
$Com->Connect();
$data_array = $Com->GetFriendList(); 1. Оф и ц и а л ьн ы й с а й т фр е й м в о р к а WinBinder – ht tp: //
winbinder.org.
?>
2. Сайт miniPHP Studio – http://exvision.net.
Думаю, на этом можно остановиться. Вы знаете доста- 3. WinBinder в репозитории PECL – http://pecl.php.net/package/
точно, чтобы понять, нужен ли вам этот замечательный WinBinder.

№1, январь 2009 89


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
веб-программирование

Доступ к данным на основе


хранимых процедур в веб-приложениях

Антон Гришан
Большинство приложений вынуждено работать с базами данных, общаясь с СУБД на языке
SQL-запросов. Иными словами, одни программы на языках высокого уровня составляют
другие программы на SQL. Это выглядит привычным – поэтому кажется логичным и удобным,
но так ли это на самом деле?

Р
ассмотрим два способа взаимодействия приложения ций. Скрипт вызывает процедуру со списком параметров
и базы данных. Первый и на данный момент более и обрабатывает полученный результат(ы).
популярный способ – генерация SQL-запроса в теле Приведенный выше запрос (SELECT Cities.name FROM
скрипта (здесь и далее приводятся примеры для PHP5 + Countries, Cities WHERE Cities.countryId = Countries.id AND
MySQL 5 с установленным расширением mysqli): Countries.code = 'RU') можно сохранить в виде процеду-
ры – getCities, с одним входным параметром – код страны
/* Выбрать все города в стране с заданным кодом, (countryCode char(2)).
* динамическая генерация запроса
*/ Приведу пример создания хранимой процедуры:
$countryCode = 'RU';
$result = mysqli_query ($db, "SELECT Cities.name ↵ DELIMITER $$
FROM Countries, Cities WHERE Cities.countryId = ↵ CREATE PROCEDURE `getCities`(countryCode char(2))
Countries.id AND Countries.code = ↵ BEGIN
'".mysqli_real_escape_string($db, $countryCode)."'"); SELECT Cities.name FROM Countries, Cities ↵
WHERE Cities.countryId = Countries.id ↵
Второй способ – доступ к данным через хранимые про- AND Countries.code = countryCode;
цедуры. Хранимая процедура – объект базы данных, пред- END$$
DELIMITER ;
ставляющий собой набор скомпилированных SQL-инструк-

90
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
веб-программирование
В момент вызова хранимой процедуры СУБД подстав- n Защита приложения от изменений структуры БД.
ляет значение параметра в тело запроса и возвращает ре- В процессе развития проекта может возникнуть необ-
зультат выборки данных. ходимость в изменении структуры БД, например, до-
Для вызова хранимой процедуры ‘getCities’ на стороне бавить/удалить/переименовать таблицу или столбец.
сервера БД необходимо выполнить следующую команду: Если приложение генерирует SQL-запросы, то необхо-
димо внести изменения во все фрагменты кода, отве-
CALL `getCities`('RU'); чающие за генерацию запросов. Организация доступа
через хранимые процедуры не требует внесения изме-
Вызвать процедуру getCities из PHP-приложения мож- нений в код приложения до тех пор, пока имя хранимой
но следующим образом: процедуры и список параметров (а также ожидаемый
результат) остаются прежними.
/* Выбрать все города в стране с заданным кодом, n Снижение количества ошибок и упрощение отлад-
* вызов хранимой процедуры
*/ ки. Чаще всего ошибки в работе приложения с БД воз-
$countryCode = 'RU'; никают по следующим причинам:
mysqli_multi_query($db, "CALL getCities ↵
('".mysqli_real_escape_string ↵  приложение использует некорректные значения для
($db, $countryCode)."');"); генерации SQL-запроса;
 SQL-выражение некорректно описывает ожидаемый
Работа с БД через хранимые процедуры в настоящий результат (т.е. ошибка в запросе);
момент встречается реже, чем генерация SQL-запроса в те-  фрагмент кода приложения, отвечающий за генера-
ле программы. На мой взгляд, это происходит по следую- цию SQL-запроса, содержит ошибку и не способен
щим причинам: правильно построить нужный запрос.
n наиболее популярная связка для написания веб-прило- Если доступ к БД построен на основе хранимых проце-
жений – PHP + MySQL, однако только в MySQL 5 стало дур, то:
возможно использовать хранимые процедуры;  легко узнать, какие значения попадают в хранимую
n в большинстве пособий по программированию приве- процедуру, достаточно распечатать список аргумен-
дены примеры работы с БД, основанные на генерации тов в момент вызова хранимой процедуры;
запроса в теле скрипта, и начинающим программистам  вам не нужно гадать по коду приложения, какой
сложно отойти от книжных примеров; именно запрос должен получиться в том или ином
n написание приложения с использованием хранимых месте программы, достаточно посмотреть на тело
процедур подразумевает умение программистов рабо- хранимой процедуры, что значительно упрощает
тать с хранимыми процедурами или наличие времени процесс отладки;
для изучения данной технологии (что не всегда допус-  этой ошибки возникнуть не может, так как приложе-
тимо в рамках конкретного проекта). ние вообще не генерирует SQL-запросов, все запро-
сы находятся в БД в виде хранимых процедур.
Преимущества использования n Безопасность. Использование хранимых процедур поз-
хранимых процедур воляет значительно снизить угрозу возникновения уяз-
n Повышение скорости работы БД. Процедуры хранят- вимости типа SQL-injection. Кроме того, можно устанав-
ся в скомпилированном виде, а значит, СУБД не тратит ливать права доступа к объектам базы данных для каж-
время на компиляцию запроса при каждом его испол- дой хранимой процедуры, что также способствует по-
нении. Приложению не требуется тратить время на ге- вышению уровня безопасности приложения.
нерацию запроса. Команда для вызова хранимой про-
цедуры значительно короче, чем запрос, содержащий- Трудности работы с хранимыми
ся в теле процедуры, поэтому требуется меньше време- процедурами
ни и трафика на передачу команд на сервер БД. Существует масса преимуществ, говорящих за использова-
n Большая степень свободы. Хранимые процедуры под- ние хранимых процедур. Однако не стоит думать, что храни-
держивают: входные и выходные параметры, локальные мые процедуры, безусловно, оптимальное решение для лю-
переменные, операторы условного ветвления, циклы, бого проекта. Чтобы сделать осмысленный выбор, давайте
вызовы встроенных команд и других процедур, испол- рассмотрим отрицательные стороны данного метода.
нение DDL-операторов. Во многом хранимые процеду- n Проблема совместимости. Если необходимо обеспе-
ры похожи на процедуры языков программирования вы- чить легкую переносимость приложения на максималь-
сокого уровня. ное количество СУБД, то, вероятно, стоит отдать пред-
n Упрощение кода приложения. В приложении нет SQL- почтение динамической генерации запросов, так как
запросов, а значит, программисту не нужно писать код хранимые процедуры поддерживаются не всеми СУБД.
для их генерации. Для вызова хранимой процедуры не- n Сложность внедрения хранимых процедур в сущес-
обходимо знать только имя и список параметров (ана- твующий проект. Внедрение хранимых процедур в при-
логично вызову обычных функций/методов в теле при- ложение, использующее динамическую генерацию за-
ложения). Такой подход сокращает размер кода и улуч- просов, приведет к полной реорганизации кода рабо-
шает его читабельность, что положительно влияет на ка- ты с БД. Необходимость такой реорганизации не всег-
чество конечного продукта. да просто объяснить заказчику.

№1, январь 2009 91


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
веб-программирование
n Передача сложных типов данных. Иногда в качест- DBaccess (для работы класса требуется PHP5 c mysqli рас-
ве аргумента процедуре требуется передать не прос- ширением, MySQL 5):
то строку или число, а массив данных (или более слож-
ный объект). В этом случае данные необходимо преоб- <?php
class DBConnection {
разовать в строку и в таком виде передавать хранимой private $db = null;
процедуре, внутри которой происходит обратное пре- public function __construct($dbName, $host, $port, ↵
$login, $password, $charset) {
образование. Построение запроса в теле приложения $this->db = new mysqli($host, $login, ↵
в этом случае проще. $password, $dbName, $port);
$this->db->set_charset($charset);
}
Особенности работы с хранимыми

public function __call($storeProcedureName, $params) {
$quotedParams = array();
процедурами foreach($params as $param) {
n Хранимые процедуры служат только для доступа к дан- array_push($quotedParams, $param === ↵
null ? 'NULL' : '\''.$this->db-> ↵
ным (извлечение/обновление/удаление) и ни для чего escape_string($param).'\'');
больше. Использование процедур в иных целях (про- }
$sql = 'CALL `'.$storeProcedureName.'` ↵
верка данных или генерация HTML) является ошибкой. ('.implode(',', $quotedParams).');';
n Процедура может вернуть более одного результата. $this->db->multi_query($sql);
$results = array();
В коде вызова хранимой процедуры необходимо делать do {
итерацию по всем возвращаемым результатам и обра- if ($result = $this->db->store_result()) {
$rows = array();
батывать каждый из них в отдельности. while ($row = $result->fetch_assoc()) {
n Достаточно сложно передать в хранимую процедуру мас- array_push($rows, $row);
}
сив значений. Наиболее популярным решением являет- $result->close();
ся передача массива в хранимую процедуру в виде стро- array_push($results, $rows);
}
ки, содержащей элементы массива, разделенные спе- } while ($this->db->more_results() && ↵
циальным символом (вертикальная черта – «|»), далее $this->db->next_result());
return($results);
параметр анализируется в теле хранимой процедуры. }
n Если в теле хранимой процедуры необходимо дина- }
?>
мически генерировать SQL-запрос (старайтесь всеми
возможными способами избегать написания подобных Внутри класса DBaccess не объявлен метод getCities,
процедур), не забывайте экранировать кавычки и спец- однако мы можем вызывать хранимую процедуру как
символы во всех переданных в процедуру параметрах, «$db‑>getCities(‘RU’);».
участвующих в построении запроса, иначе процеду- Это достигается за счет использования магического ме-
ра будет содержать потенциальную уязвимость типа тода __call() (данная возможность появилась в PHP5), ко-
SQL‑injection. торый работает следующим образом: при вызове метода,
не объявленного в классе, имя вызываемого метода и спи-
Пример класса для работы с БД сок аргументов передается в __call($metodName, $params)
через хранимые процедуры для обработки (если метод объявлен).
Как мы уже заметили, хранимые процедуры очень похожи Таким образом, мы можем вызывать любую хранимую
на функции, наш класс будет реализовывать прозрачную процедуру на сервере, например «$db->loadUser($email,
работу с процедурами таким образом, чтобы с точки зре- $password);».
ния приложения не было разницы между обычными функ- В приведенном выше коде класса DBaccess отсутству-
циями и хранимыми процедурами. ют необходимые проверки на ошибки, возможность рабо-
Чтобы стало понятно, о чем идет речь, начнем с при- ты с несколькими БД, проверка стабильности соединения
мера: с сервером, автоматическое переподключение и множес-
тво других полезных функций. Это сделано намеренно, да-
<?php бы проиллюстрировать основную идею с использованием
include 'DBaccess.php';
// Создаем объект доступа к БД минимального количества кода.
$db = new DBaccess('main_db' , 'localhost', 3306, ↵ Скачать полнофункциональную версию класса для изу-
'login', 'password', 'utf8');
// Вызываем хранимую процедуру GetCities и передаем чения и использования можно здесь: http://www.vipidn.com/
// в качестве параметра RU dbaccess.zip.
$result = $db->getCities('RU');
// Обрабатываем полученный результат (массив данных)
var_dump($result); 1. Полнофункциональная версия класса «DBaccess» – http://www.
?>
vipidn.com/dbaccess.zip.
В приведенном выше примере для вызова хранимой 2. Описание магического метода __call() – http://ru2.php.net/
процедуры getCities с параметром RU (код страны) исполь- manual/ru/language.oop5.overloading.php.
зуется объект класса DBaccess. С точки зрения приложе- 3. Описание расширения mysqli – http://ru2.php.net/manual/ru/
ния такой вызов процедуры выглядит как вызов обыкно- ref.mysqli.php.
венного метода, что позволяет отказаться от логики на- 4. Информация к размышлению – «Good and Evil in the Garden
писания программы, которая в свою очередь составля- of Stored Procedures» (Jeremy D. Miller) – http://codebetter.com/
ет другую программу на SQL. Приведу далее код класса blogs/jeremy.miller/archive/2005/07/05/130093.aspx.

92
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
сисадмин тоже человек

Сисадминский Новый год ций о том, что к компам прикасаться нельзя и все перестановки
Лежу я, значит, со своей девушкой на диване дома 31 декабря делает только админ. Ровно в 14.00 я свалил. И тут же начались
2008 года, в последний вечер года, и в самый интересный мо- звонки начальнице, почему мы уходим точно по графику, а кадро-
мент раздается звонок моей мобилы (звонят с работы), поднимаю вичка сидит до 10 вечера, когда надо. Была послана, но...
трубку и слышу: «Приезжай скорей, у нас компьютер не включа- Почему админ получает 35к, а кадровичка 150к за то, что со-
ется, пишет, что, типа, не найден такой-то файл, дальнейшая ра- кращает народ? Где-нибудь ценят админов нормально? И как ко-
бота Windows невозможна...» го коснулся этот кризис?
Обслуживаю сеть круглосуточных супермаркетов. Надо ехать, Дмитрий Иванов
но время 22:40, меньше чем через полтора часа Новый год! При-
ехал, спрашиваю: «Что произошло?» Отвечают: «Какое-то сооб-
щение вылезло, ну мы там нажали на OK, комп завис, мы его пе- Кризисное
резагрузили кнопкой, а он и не загружается, вот мы тебе и поз- Работал я админом в офисе. Все было хорошо, цивильно – нор-
вонили...» мальная сеть, построенная по уму, – отдельная серверная, стой-
– Что в сообщении-то было написано? ки-патчпанели, UPS. Разводка розеток (и сеть, и телефон, и пита-
Пожимают плечами. ние) на каждое рабочее место с запасом. Никаких «ужасов» вроде
– ??? серверов на полу или гирлянд из проводов, свисающих по стенам.
– Мы же видели, что ты, типа, нажимаешь на OK, потом пере- Делал ее мой предшественник, за что ему великий почет и ува-
загружаешь сервак, и все пучком! жение. Офис большой, комфортный, в удобном для меня месте.
В общем, на кассовом сервере жесткий сдох, хорошо хоть Полгода работал и горя не знал. А потом пришел кризис.
BackUpы есть! Не стал с ними церемониться, ввел POS-термина- И решили мы переезжать в офис поменьше и подальше, попут-
лы в автономный режим, до утра потерпят! но разделяясь на две организации. Отделилось одно из направле-
В обед на следующий день (1.01.2009) с бодуна прилетаю в ма- ний. Правда, от выбора до фактического переезда осталось две
газин, дабы поднять сервак. Сижу, ковыряюсь, мне звонок на мо- недели, но кого это волновало? А меня (админа) припахали заклю-
билу (генеральная звонит): «Что там произошло?» Объясняю все чать договора и запрашивать счета на подвод всего в это помеще-
доходчиво, что, типа, сервер упал – сижу, поднимаю. Она: «Мо- ние. С постоянными отчетами «когда уже». На намек, что раньше
жет, прислать кого из грузчиков? Помогут поднять!» Я в шоке: надо было суетиться и в средине декабря телефонная компания
«Зачем грузчиков? Сам справлюсь!» Потом сижу-догоняю: она закупает шампанское на корпоратив, а не тянет телефоны, реак-
же не в курсе, что падение сервера не обязательно означает его ции нет. Притом старый офис остался тоже на мне, да еще с пос-
физическое изменение месторасположения в короткий проме- тоянными левыми задачами, вроде «у меня компьютер гудит» или
жуток времени... «поищи нам музыку на Новый год, мы не умеем».
В итоге Новый год встречать приехал без четверти двенад- В серверной нового офиса отсутствует охлаждение. Как класс.
цать, девушка в шоке (она давно мою работу не любит)... Только свисающая с разобранного фальшпотолка труба, отклю-
P.S.: ченная от вентиляции здания. Из питания – розетки, 3 штуки.
1. Почему серваки падают в такое время, когда ты совсем этого На стене. От общей группы. Сети фактически нет. Есть кое-где
не ждешь, и в самый интересный момент (кстати, кому очень розетки, половина не рабочая. Но это ладно. Протянем-проло-
интересно, этот интересный процесс, все же я довел до свое- жим, поставим-настроим, не впервой. Мягко намекнули, что па-
го логического конца)? хать придется все праздники.
2. Я просто в шоке от юзверей, которые не читают сообще- Дальше началось совсем смешно. Питания и розеток на все
ния... рабочие места не хватает. На вопрос руководству «???» ответ:
«Подводи удлинителями». 19" стойку забрать не дали, отдали отде-
С Новым годом вас, камрады! ляющемуся направлению. Стоечный UPS – тоже. На вопрос «когда
ViRuZzz купим?» ответ: «ну, может быть к марту...» На вопрос «упадет, и са-
ми будете плакать» ответ: «ну, раньше же не падало». Убеждения,
что все когда-то бывает в первый раз, не помогли. А ежедневные
Незаменимые у нас есть изнасилования мозга отчетами и планами продолжались.
В свете кризиса выгнали на 4-дневку за свой счет. И начинаются Апогеем стала новость, что забрать из старого офиса мы смо-
в пятницу звонки. Как оказалось, все (бухи, кадры, даже электри- жем только занятые машины. Свободные – нет. И мониторы 19"
ки) работают, выгнали только «избранных», и админы попали в их свободные – тоже нет, сидите на 15". А вообще посмотрим, может,
число. Разумеется, все были посланы далеко и надолго. Сами вы- мы вообще тебе с февраля зарплату понизим, ведь людей будет
гнали – работайте как хотите. После того как подох свитч в сер- меньше. На вялый намек «основная часть моего времени уходит
вачной нам «разрешили» работать по пятницам до 2 часов. не на замену мышек, а на работу с сетью и серверами» ответа
Так, в пятницу, когда я сижу на минимуме поддержки, толь- нет. В итоге я написал заявление ПСЖ. И ушел. И на меня все ко-
ко критические ситуации, долбанутая кадровичка наметила пе- сились, как «бросил нас в кризисной ситуации».
рестановку и позвонила мне за 20 минут до конца рабочего дня Коллеги, подскажите – это я такой дурак, что ушел?
с просьбой подключить компьютеры. О том, что подключать ком- MInoy
пы надо к розеткам и сети, а также о том, что у них есть провода,
они даже не подумали. Также никто даже никто не читал инструк- По материалам сайта «Сисадмин тоже человек» –
http://sysadmin.mail.ru

№1, январь 2009 93


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
подписка на 2009 год

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

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

 

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

94
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
подписка на 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
без диска
**

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

№1, январь 2009 95


Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru
СИСТЕМНЫЙ АДМИНИСТРАТОР
№1(74), Январь, 2009 год

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

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

ИЗДАТЕЛЬ
ООО «С 13»

Отпечатано типографией
ООО «Периодика»
Тираж 17000 экз.

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


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

За содержание статьи ответственность несет


автор. Мнение редакции может не совпадать
с мнением автора. За содержание рекламных
материалов ответственность несет рекламо-
датель. Все права на опубликованные мате-
риалы защищены.

96
Ýëåêòðîííàÿ êîïèÿ æóðíàëà Linux Format. Íåëåãàëüíîå ðàñïðîñòðàíåíèå ïðåñëåäóåòñÿ ïî çàêîíó Ô. Çàêàç LC173025. Âëàäåëåö êîïèè: Ñòðèæåíöîâ Âëàäèìèð Âëàäèìèðîâè÷, email:
bobahsmtp.ru

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