Perl for System Administration David N. Blank(cid:1)Edelman Perl для системного администрирования Дэвид Н. Бланк(cid:1)Эдельман Санкт(cid:6)Петербург 2001 Дэвид Н. Бланк(cid:12)Эдельман Perl для системного администрирования Перевод Т.Морозовой Главный редактор А.Галунов Зав. редакцией Н.Макарова Научный редактор В.Коновалов Редакторы Л. Ага, В. Овчинников Корректура С.Беляева, С.Журавина Верстка Н. Гриценко Дэвид Н. Бланк(cid:29)Эдельман Perl для системного администрирования.– Пер. с англ.– СПб: Символ(cid:19)Плюс, 2001.– 496 с., ил. ISBN 5(cid:19)93286(cid:19)024(cid:19)3 Эта книга будет полезна администраторам с различным уровнем опыта– от обычных пользователей Linux до администраторов крупных систем. Автор рас(cid:19) сматривает основные платформы, включая Unix, WindowsNT/2000 и MacOS. При наличии некоторого опыта программирования на Perl вы узнаете, как при помощи этого языка повысить производительность во многих областях, включая: управление учетными записями пользователей; наблюдение за файловой системой и отслеживание процессов; работу с сетевыми службами имен NIS и DNS; администрирование баз данных при помощи DBI и ODBC; ра(cid:19) боту со службами каталогов LDAP и ADSI; обработку и анализ файлов журна(cid:19) лов регистрации; поддержку защищенной сети; наблюдение за удаленными устройствами средствами SNMP. Автор– опытный системный администратор, работающий в многоплатфор(cid:19) менном окружении, что предоставляет вам хорошую возможность поучиться на чужом опыте. Вы узнаете о возможных ловушках и способах их обойти при помощи Perl. Включенные в книгу примеры и сценарии можно использовать для решения рутинных повседневных задач. ISBN 5(cid:1)93286(cid:1)024(cid:1)3 ISBN 0(cid:1)56592(cid:1)609(cid:1)9 (англ) © Издательство Символ(cid:19)Плюс, 2001 Authorized translation of the English edition © 2000 O’Reilly & Associates Inc. This translation is published and sold by permission of O’Reilly & Associates Inc., the own(cid:19) er of all rights to publish and sell the same. Все права на данное издание защищены Законодательством РФ, включая право на полное или час(cid:19) тичное воспроизведение в любой форме. Все товарные знаки или зарегистрированные товарные зна(cid:19) ки, упоминаемые в настоящем издании, являются собственностью соответствующих фирм. Издательство«Символ(cid:19)Плюс».193148,Санкт(cid:19)Петербург,ул.Пинегина,4, тел.(812) 324(cid:19)5353, [email protected]. Лицензия ЛП N 000054 от 25.12.98. Подписано в печать 06.09.2001. Формат 70х1001 /16. Бумага офсетная. Печать офсетная. Объем 31 печ.л. Тираж 3000 экз. Заказ N Отпечатано с диапозитивов в ФГУП «Печатный Двор» им.А.М.Горького Министерства РФ по делам печати, телерадиовещания и средств массовых коммуникаций. 197110, Санкт(cid:19)Петербург, Чкаловский пр., 15. Оглавление Предисловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9 1. Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15 Системное администрирование – это ремесло. . . . . . . . . . . . . . . . . . .15 Какой помощи ждать от Perl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15 Эта книга покажет вам, как. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17 Что вам нужно. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19 Поиск и установка модулей. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20 Нелегко быть всемогущим. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23 Ссылки на подробную информацию . . . . . . . . . . . . . . . . . . . . . . . . . . .28 2. Файловые системы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29 Perl приходит на помощь . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29 Различия файловых систем. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30 Прогулка по файловой системе. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .35 Обход файловой системы при помощи модуля File::Find . . . . . . . .41 Работа с дисковыми квотами. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .52 Получение сведений об использовании файловой системы. . . . . . .60 Информация о модулях из этой главы . . . . . . . . . . . . . . . . . . . . . . . . .62 Источники подробной информации. . . . . . . . . . . . . . . . . . . . . . . . . . . .62 3. Учетные записи пользователей . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63 Информация о пользователях в Unix . . . . . . . . . . . . . . . . . . . . . . . . . .64 Информация о пользователях в WindowsNT/2000. . . . . . . . . . . . . .73 Создание системы учетных записей для работы с пользователями . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .84 Информация о модулях из этой главы . . . . . . . . . . . . . . . . . . . . . . . .119 Рекомендуемая дополнительная литература . . . . . . . . . . . . . . . . . .120 4. Действия пользователей. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .122 Управление процессами в MacOS. . . . . . . . . . . . . . . . . . . . . . . . . . . . .123 Управление процессами в NT/2000. . . . . . . . . . . . . . . . . . . . . . . . . . .125 Управление процессами в Unix. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .142 Отслеживание операций с файлами и сетью . . . . . . . . . . . . . . . . . . .150 6 Оглавление Информация о модулях из этой главы . . . . . . . . . . . . . . . . . . . . . . . .160 Рекомендуемая дополнительная литература . . . . . . . . . . . . . . . . . .162 5. Службы имен TCP/IP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .163 Файлы узлов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .164 NIS, NIS+ и WINS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .177 Служба доменных имен (DNS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .182 Информация о модулях из этой главы . . . . . . . . . . . . . . . . . . . . . . . .203 Рекомендуемая дополнительная литература . . . . . . . . . . . . . . . . . .203 6. Службы каталогов. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .204 Что такое каталог?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .204 Finger: простая служба каталогов . . . . . . . . . . . . . . . . . . . . . . . . . . . .205 Служба каталогов WHOIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .209 LDAP: сложная служба каталогов. . . . . . . . . . . . . . . . . . . . . . . . . . . .212 ADSI (Интерфейсы служб активных каталогов) . . . . . . . . . . . . . . .241 Информация о модулях из этой главы . . . . . . . . . . . . . . . . . . . . . . . .261 Рекомендуемая дополнительная литература . . . . . . . . . . . . . . . . . .261 7. Администрирование баз данных SQL . . . . . . . . . . . . . . . . . . . . . .264 Взаимодействие с SQL(cid:19)сервером из Perl. . . . . . . . . . . . . . . . . . . . . . .265 Использование DBI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .268 Использование ODBC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .274 Документирование сервера . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .277 Учетные записи баз данных. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .284 Мониторинг состояния сервера. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .286 Информация о модулях из этой главы . . . . . . . . . . . . . . . . . . . . . . . .293 Рекомендуемая дополнительная литература . . . . . . . . . . . . . . . . . .293 8. Электронная почта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .294 Отправка почты. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .294 Распространенные ошибки при отправке почты . . . . . . . . . . . . . . .301 Получение почты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .315 Информация о модулях из этой главы . . . . . . . . . . . . . . . . . . . . . . . .339 Рекомендуемая дополнительная литература . . . . . . . . . . . . . . . . . .339 9. Журналы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .341 Текстовые журналы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .341 Двоичные журналы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .342 Данные с состоянием и без. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .348 Проблемы с пространством на диске. . . . . . . . . . . . . . . . . . . . . . . . . .351 Анализ журналов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .359 Оглавление 7 Информация о модулях из этой главы . . . . . . . . . . . . . . . . . . . . . . . .388 Рекомендуемая дополнительная информация. . . . . . . . . . . . . . . . .388 10. Безопасность и наблюдение за сетью . . . . . . . . . . . . . . . . . . . . . .389 Обращаем внимание на неожиданные или несанкционированные изменения. . . . . . . . . . . . . . . . . . . . . . . . . . . .390 Обращайте внимание на подозрительную активность . . . . . . . . . .399 Протокол SNMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .407 Опасность на проводе. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .417 Предотвращение подозрительных действий. . . . . . . . . . . . . . . . . . .427 Информация о модулях из этой главы . . . . . . . . . . . . . . . . . . . . . . . .432 Рекомендуемая дополнительная литература . . . . . . . . . . . . . . . . . .433 A. Пятиминутное руководство по RCS . . . . . . . . . . . . . . . . . . . . . . . . . .435 B. Десятиминутное руководство по LDAP. . . . . . . . . . . . . . . . . . . . . . .438 C. Восьмиминутное руководство по XML . . . . . . . . . . . . . . . . . . . . . . .444 D. Пятнадцатиминутное руководство по SQL . . . . . . . . . . . . . . . . . . .449 E. Двадцатиминутное руководство по SNMP . . . . . . . . . . . . . . . . . . .462 Алфавитный указатель. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .478 Об авторе Дэвид Н. Бланк(cid:29)Эдельман– директор по технологиям факультета вы(cid:19) числительной техники Северо(cid:19)восточного Университета (Northeas(cid:19) tern University College of Computer Science). Последние 14 лет он рабо(cid:19) тал системным и сетевым администратором на больших многоплат(cid:19) форменных системах в Brandies University, в технологической группе Кэмбриджа (Cambridge Technology Group) и лаборатории MIT. Кроме того, он является главным техническим редактором журнала «The Perl Journal» и написал немало статей о музыке разных стран. В сво(cid:19) бодное время он учится играть на мбире– традиционном музыкальном инструменте Зимбабве. Предисловие Perl– это мощный язык программирования, уходящий корнями в за(cid:19) дачи традиционного системного администрирования. В течение мно(cid:19) гих лет он адаптировался и расширялся для работы с новыми операци(cid:19) онными системами и новыми задачами. До сих пор, однако, не было ни одной книги, посвященной использованию Perl исключительно для системного администрирования, тем самым признавая факт глубокой исторической связи. Если вы уже немного знакомы с Perl и вам необходимо выполнять за(cid:19) дачи системного администрирования, то эта книга для вас. Читатели с различным уровнем опыта как в Perl, так и в системном администри(cid:19) ровании, найдут в этой книге что(cid:19)то для себя полезное. Структура книги Каждая глава этой книги посвящена определенному кругу задач сис(cid:19) темного администрирования. В конце каждой главы приведен список используемых в ней модулей и ссылки на более подробную информа(cid:19) цию по рассмотренной теме. В книгу включены следующие главы: Глава1 «Введение» Во введении описан материал, детально рассмотренный далее в кни(cid:19) ге, рассказано, как он может послужить и что нужно для того, чтобы получить от него максимальную пользу. В этой книге рассмотрен серьезный материал и считается, что он будет использован «влия(cid:19) тельными» пользователями (например, привилегированными поль(cid:19) зователями в Unix или администраторами Windows NT/2000). Кро(cid:19) ме того, введение содержит важные советы, помогающие писать бо(cid:19) лее безопасные программы на Perl. Глава2 «Файловые системы» Эта глава о том, как содержать в порядке и правильно использовать различные многоплатформенные файловые системы. Мы начнем с рассмотрения принципиальных различий между файловыми систе(cid:19) мами каждой из операционных систем. Затем мы рассмотрим про(cid:19) цесс исследования файловой системы средствами Perl и расскажем, когда это может оказаться полезным. И, наконец, мы узнаем, как работать с дисковыми квотами из Perl. 10 Предисловие Глава3 «Учетные записи пользователей» В этой главе рассказано о том, что собой представляют учетные за(cid:19) писи на двух различных операционных системах. Основная часть главы– простейшая система ведения учетных записей, написанная на Perl. В процессе построения этой системы мы рассмотрим меха(cid:19) низмы, необходимые для записи учетных записей в простую базу данных, основанную на XML, а также механизмы для создания учетных записей и их удаления. Глава4 «Действия пользователей» В главе4 рассмотрены различные механизмы управления процес(cid:19) сами для всех трех операционных систем от самых простых (напри(cid:19) мер, процессов в MacOS) до более сложных (в WinNT/2000). Мы ор(cid:19) ганизуем работу этих механизмов с помощью вспомогательных сце(cid:19) нариев. И, наконец, мы узнаем, как средствами Perl проследить за операциями с файлами и за сетью. Глава5 «Службы имен TCP/IP» Службы имен позволяют узлам в сети TCP/IP общаться друг с дру(cid:19) гом. В этой главе отражена вся история развития, начиная с файлов узлов, продолжая сетевой информационной службой (NIS) и закан(cid:19) чивая связующим звеном в Интернете– доменной службой имен (DNS). Для каждого шага такого пути мы покажем, как можно уп(cid:19) ростить профессиональную работу с этими службами при помощи Perl. Глава6 «Службы каталогов» По мере роста сложности рассматриваемой информации растет и важность служб каталогов, которые мы используем для доступа к этой информации. Хорошо, если системные администраторы будут не просто использовать эти службы, но и создавать собственные инструменты для работы с ними. В этой главе рассказано о некото(cid:19) рых из наиболее популярных служб, таких как LDAP и ADSI, а также показано, как с ними работать при помощи Perl. Глава7 «Администрирование баз данных SQL» Очень часто в сферу действий системного администратора попадает и работа с реляционными базами данных. А значит, системные ад(cid:19) министраторы должны быть знакомы с администрированием баз данных SQL. В этой главе рассмотрены два механизма для работы с базами данных– DBI и ODBC, а также приведены примеры их ис(cid:19) пользования. Глава8 «Электронная почта» В этой главе показано, как с помощью Perl лучше использовать электронную почту в качестве инструмента системного админист(cid:19) рирования. После обсуждения основ отправки и разбора электрон(cid:19) ной почты с помощью Perl мы рассмотрим несколько интересных