Что вам нужно
Чтобы понять большую часть книги, вам следует знать основы языка и иметь кое-какие ресурсы под рукой. Давайте начнем с перечисления тех знаний, которыми вы должны обладать:
Вы должны немного знать Perl
В этой книге недостаточно места, чтобы приводить основы языка Perl, поэтому перед дальнейшим чтением вы должны изучить их самостоятельно. Познакомившись с содержанием таких книг, как «Learning Perl» (Изучаем Perl) Рэндала Шварца (Randal L. Schwartz) и Тома Кристиансена (Tom Christiansen) (O'Reilly) или «Learning Perl on Win32 Systems» (Изучаем Perl для Win32) Рэндала Шварца (Randal L. Schwartz), Эрика Олсона (Erik Olson) и Тома Кристиансена (Tom Christiansen) (O'Reilly), вы будете в хорошей форме, чтобы приступить к кодам из этой книги.
Вы должны знать основы вашей операционной системы (систем)
В этой книге предполагается, что у вас есть некоторый опыт работы с операционной системой (системами), которую вы собираетесь администрировать. Вы
должны знать, как работать с этой операционной системой, как выполнять команды, искать документацию и т. д. Вы должны знать и основы более сложных технологий, существующих в операционной системе (например, WMI для Windows 2000 или SNMP).
Вам может понадобиться знание особенностей вашей операционной системы (систем)
Я предпринял попытку описать различия между основными операционными системами, но я не смог охватить все внутренние различия. В частности, каждый вариант Unix немного отличается от всех остальных. Таким образом, вам может понадобиться найти информацию об особенностях вашей операционной системы и разобраться, будет ли эта информация отличаться от описанной здесь.
Из технических ресурсов вам понадобятся только две вещи: Perl
Вам нужна копия Perl, установленная или доступная для каждой системы, которую вы хотите администрировать. С веб-сайта http:// www.perl.com вы можете загрузить дистрибутив либо с исходными кодами, либо в скомпилированном виде для конкретной операционной системы. В примерах этой книги применяется Perl 5.005 (в момент написания книги - это последняя стабильная версия1). В Unix мы используем дистрибутив Perl, скомпилированный из исходных кодов, на платформе Win32 - версию, распространяемую ActiveSta-te (build 522), а на MacOS - дистрибутив MacPerl (5.2.0r4).
Возможность найти и установить модули Perl
Следующий раздел этой главы посвящен информации о местонахождении и установке модулей, поскольку эти данные чрезвычайно важны. Мы предполагаем, что у вас есть знания и необходимые права для установки всех нужных модулей.
В конце каждой главы приведен список номеров версий всех модулей, используемых в примерах этой главы. Информация о номерах версий приводится потому, что модули постоянно обновляются. Обновление не всегда сохраняет совместимость с предыдущими версиями, поэтому при возникновении трудностей эта информация поможет вам определить, изменялся ли модуль со времени издания книги.
Эта книга покажет вам, как
В телевизионном шоу «Бэтмэн», популярном в 1966-1968 годах, у энергичной парочки были чудо-пояса с инструментами. Если Бэтмэну и Робину нужно было взобраться на здание, Бэтмэн говорил: «Быстрый Робин, абордажный крюк!». Или же Бэтмэн говорил: «Быстрый Робин, нокаутирующий газ!», и тут же нужный инструмент для борьбы с плохими парнями оказывался в руках у каждого. Цель этой книги - снабдить читателя таким поясом, необходимым для того, чтобы хорошо выполнять работу системного администратора.
В каждой главе вы найдете:
Понятную и четкую информацию о сфере действий системного администратора
В каждой главе мы подробно рассказываем об одной из сфер действий системного администрирования. Число возможных сфер действий при многоплатформенном системном администрировании слишком велико, чтобы рассказать обо всем в одной книге. Лучшие книги по системному администрированию в Unix - «Essential System Administration» (Суть системного администрирования) Элен Фриш (Eileen Frisch) (O'Reilly & Associates) и «Unix System Administration Handbook» (UNIX: руководство системного администратора) Эви He-мет (Evi Nemeth), Гарта Снайдера (Garth Snyder) и Трента Р. Хейна (Trent R. Hein) (Prentice-Hall) - одна в два, а другая в три раза больше этой работы. Мы же рассмотрим вопросы, относящиеся к трем различным операционным системам: Unix, Windows NT/2000 и MacOS.
В результате, приходилось выбирать, что включить в книгу, а что отложить. Были исключены темы, которые, на мой взгляд, приобретут существенно большее значение только в последующие пять лет. А такие важные технологии, как XML, были рассмотрены, потому что в ближайшее время они, наверняка, окажут заметное влияние на всю эту область. К сожалению, этот подход привел к тому, что такие вечные вопросы системного администрирования, как резервное копирование и печать, были вытеснены более новыми темами, подобными LDAP и SNMP. Навыки и инструменты, представленные в этой книге, могут помочь в тех областях, которые я пропустил, но детальные описания нужно искать где-то в другом месте.
Я попытался собрать вместе достаточно информации о системном и сетевом администрировании для людей с различным уровнем опыта. Опытные профессионалы и новички могут почерпнуть из этой книги совершенно разную информацию, но каждый из них найдет для себя что-то интересное. В конце каждой главы приведен список источников информации, которые могут помочь глубже разобраться с выбранной темой.
Для каждой темы или области, особенно, если ее изучение требует известного времени, я включил приложения с информацией, необходимой для того, чтобы быстро во всем разобраться. Даже если тема вам знакома, такие приложения могут помочь дополнить свои знания (например, выяснить, как нечто реализовано на другой операционной системе).
Технологии и подходы Perl, которые можно использовать в системном администрировании
Чтобы извлечь из книги все возможное, необходимо владеть некоторыми основами Perl. В каждой главе достаточно много разных по сложности программ, иногда простых и доступных новичкам, а порой требующих довольно серьезного знания Perl. Если будет встречаться технология, структура данных или идиома среднего или повышенного уровня сложности, я потрачу время, чтобы аккуратно рассмотреть ее шаг за шагом. Рассмотрев некоторые интересные технологии программирования на Perl, вы сможете включить их в свою практику. Я надеюсь, что программисты на Perl любого уровня смогут чему-нибудь научиться на приведенных примерах. И, по мере роста вашего уровня, вы сможете вернуться к этой книге и научиться чему-нибудь еще.
Чтобы еще больше расширить такой опыт обучения, я буду часто приводить несколько способов решения одной и той же задачи при помощи Perl, а не единственный из возможных. Запомните девиз Perl: «Существует более одного способа сделать это». Все примеры, отражающие различные подходы, придуманы для того, чтобы лучше оснастить ваш пояс с инструментами: чем больше их будет у вас в руках, тем более правильный выбор вы сможете сделать, когда столкнетесь с новой проблемой.
Иногда кажется очевидным, что одна технология имеет преимущество перед остальными. Но в этой книге описаны лишь некоторые ситуации, с которыми вы можете столкнуться, а решения, достаточно неуклюжие для одной проблемы, могут оказаться разгадкой для другой. Так что наберитесь терпения. Для каждого примера я попытаюсь показать вам как преимущества, так и недостатки разных подходов (и часто буду говорить, какой метод предпочитаю я).
Принципы и лучшие приемы системного администрирования
Как я уже говорил в начале этой главы, существуют лучшие и худшие способы выполнять задачи системного администрирования. В течение последних 15 лет я в качестве системного и сетевого администратора управляю весьма требовательным многоплатформенным окружением. В каждой главе я попытаюсь передать свой опыт, рассказывая о лучших приемах, которым я научился, и глубоких принципах, лежащих в их основе. Иногда я буду ссылаться на «военные рассказы прямо с передовой» из собственного опыта, используя их в качестве отправной точки для обсуждения. Будем надеяться, по мере чтения вся глубина искусства системного администрирования станет для вас очевидной.
Какой помощи ждать от Perl
В работе системного администратора используется любой и всякий язык программирования, если его применение приносит пользу. Так почему же в этой книге выбран именно Perl?
Ответ на этот вопрос слышится в самой природе системного администрирования. Реми Эвард, мой друг и коллега, однажды описал работу системного администратора такими словами: «С одной стороны, у тебя есть набор ресурсов: компьютеры, сети, программное обеспечение и т. д. А с другой стороны, есть пользователи со своими нуждами и проектами - люди, которые хотят, чтобы их работа выполнялась. Наша задача заключается в том, чтобы состыковать эти два множества оптимальным способом, являясь при необходимости посредником между кругом расплывчатых нужд людей и техническим миром».
Системное администрирование - это зачастую склеивание;
Perl - один из наиболее подходящих для этого языков. Perl использовался для системного администрирования задолго до того, как появился WWW со всеми своими требованиями к механизмам склеивания.
В Perl есть несколько других особенностей, свойственных принципам системного администрирования:
Это очевидный потомок различных командных интерпретаторов Unix и языка С - то, чем многие системные администраторы уверенно владеют.
Он доступен практически на всех современных операционных системах. И на каждой из них интерфейс остается практически одинаковым. Это очень важно для системных администраторов, работающих с несколькими платформами.
В нем есть отличные инструменты для работы с текстом, по доступу к базам данных и программированию для сети - трем основам профессии.
Основа языка может быть легко расширена благодаря тщательно продуманному механизму модулей.
Многочисленное и преданное сообщество пользователей потратило несметное количество часов на создание модулей практически для каждой задачи. Как правило, эти модули тщательно организованы (мы вскоре к этому вернемся). Такая поддержка от сообщества может быть очень значительной.
На Perl просто интересно программировать.
Для полноты картины следует заметить, что Perl не позволяет решить все мировые проблемы. Иногда он даже не подходит для программирования в области системного администрирования, потому что:
Механизм объектно-ориентированного программирования в Perl несколько странен. В этом отношении Python гораздо лучше.
Perl доступен не везде. На только что установленной системе вы скорее найдете командный интерпретатор Борна, а не Perl.
Perl не всегда прост и последователен и он довольно запутан. В Tel гораздо меньше сюрпризов.
Perl достаточно непрост в использовании, чтобы заставить вас не раз наступить на грабли.
Мораль такова - всегда выбирайте подходящий инструмент. Таким инструментом для меня чаще всего бывал Perl, поэтому и появилась эта книга.
Нелегко быть всемогущим
Перед тем как продолжить, давайте отвлечемся на несколько минут и скажем пару предостерегающих слов. У программ, написанных для системного администрирования, есть одна характерная черта, которая отличает их от всех остальных программ. В Unix и Windows NT/2000 они зачастую выполняются с повышенными привилегиями, т. е. с правами пользователей root или Administrator. А такая сила подразумевает ответственность. На нас, как на программистов, ложится дополнительная ответственность писать безопасные программы. Мы пишем программы, которые могут обходить (и обходят) ограничения безопасности, накладываемые на «простых смертных». Если мы не будем осторожными, менее «нравственные» личности смогут использовать «дыры» нашего кода в низких целях. Вот несколько моментов, о которых вы всегда должны помнить, применяя Perl в этих обстоятельствах.
Не делайте этого
Конечно же, используйте Perl. Но, по возможности, старайтесь избегать выполнения программ в привилегированном окружении. Большинство задач не требует привилегий пользователя root или Admi nistrator. Например, программа анализа журналов, вероятно, не должна выполняться с правами суперпользователя. Для выполнения этих автоматизированных действий создайте другого пользователя, наделенного меньшими привилегиями. Пусть у вас будет маленькая программа, наделенная привилегиями, которая будет передавать при необходимости данные этому пользователю, и затем этот пользователь будет выполнять анализ.
Избавьтесь от своих привилегий как можно быстрее
Иногда невозможно избежать необходимости запускать сценарий с правами привилегированного пользователя. Например, созданная вами программа доставки почты может потребовать возможности записывать в файл от имени любого пользователя в системе. Программы, подобные этой, должны отказываться от своего «всемогущества» как можно раньше во время своего выполнения.
В программах на Perl, выполняющихся в Unix или Linux, можно установить переменные $< и $>:
# Навсегда избавиться от привилегий ($<,$>} = (getpwnam('nobody'),getpwnam('nobody'));
В результате, реальный и эффективный идентификаторы пользователя будут установлены равными идентификатору пользователя nobody, не являющемуся привилегированным пользователем. Если вы хотите подойти к проблеме более основательно, то можете также использовать переменные $( и $) для смены реального и эффективного идентификатора группы.
В Windows NT и Windows 2000 вообще нет идентификаторов пользователей, но для избавления от привилегий существует схожий процесс. В Windows 2000 есть возможность, называемая «RunAs», которую можно использовать для запуска процесса от имени другого пользователя. В Windows NT и Windows 2000 пользователи с правами Act as part of the operating system могут выдавать себя за других пользователей. Эти права можно установить с помощью программы User Manager или User Manager for Domains:
В меню Policies выберите пункт User Rights. Отметьте пункт Show Advanced User Rights. Выберите Act as part of the operating system из выпадающего списка. Выберите пункт Add... и определите пользователей или группы, которых вы хотите наделить этими правами. Если вы хотите предоставить такое право определенному пользователю, выберите пункт Show Users. Вероятно, данному пользователю придется повторно зарегистрироваться в системе, чтобы эти изменения вступили в силу.
Вам также понадобится добавить права Replace a process level token и, в некоторых случаях, Bypass traverse checking (см. документацию по Win32: : AdminMisc). Как только вы присвоили эти права пользователю, он сможет запускать сценарии на Perl с функцией LogonAs(Jser() из модуля Дэвида Рота (David Roth) Win32: :AdminMisc, который можно найти на http://www.roth.net:
use Win32::AdminMisc;
die "Невозможно персонализировать $user\n"if
(!Win32::AdminMisc::LogonAsUser('',$user,Suserpw);
Замечание: здесь существует некоторая опасность, поскольку в отличие от предыдущего примера, вы должны передать пароль пользователя в функцию LogonAsUser().
Будьте осторожны при чтении данных
При чтении важных данных, скажем, конфигурационных файлов, сначала протестируйте возможность небезопасных состояний. Например, стоит проверить, запрещена ли запись в файл и каталоги, в которых он находится (иначе, кто угодно может их испортить). Хороший способ подобной проверки можно найти в главе 8 книги «Perl Cookbook» («Perl: библиотека программиста») Тома Кристиансена (Тот Christiansen) и Натана Торкингтона (Nathan Torkington) (O'Reilly).
Другая забота - ввод пользователей. Никогда не считайте, что данным, поступающим от пользователей, можно доверять. Даже если вы явно просите пользователя: Пожалуйста, ответьте Да(У) или Нет(М):, ничто не помешает ему набрать 2049 случайных символов (либо от вредности со злым умыслом, либо потому, что его двухлетний ребенок занял освободившееся на минуту место за клавиатурой).
Ввод пользователей может быть причиной еще более серьезных проблем. Мой любимый пример- это использование нулевого байта «Poison NULL Byte», о котором сообщалось в статье о проблемах Perl в CGI. Обязательно прочитайте всю статью (ссылка на нее есть в конце этой главы). Неприятности возникают из-за отличий в обработке нулевого байта (\000) в Perl и в системных библиотеках С. Для Perl этот символ ничем не примечателен. Однако в библиотеках этот символ используется для обозначения конца строки.
На практике это означает, что у пользователя существует возможность обойти различные проверки. Один пример, приведенный в этой статье, - это программа, меняющая пароль пользователя:
if (Suser ne "root"){ <вызов соответствующей функции С>}
Если переменная $user установлена в значение root\000 (т. е. если за словом root следует нулевой байт), то приведенная выше проверка окажется удачной. Когда эта строка будет передана библиотеке, она будет воспринята просто как root, и пользователю удастся обойти проверку. Если эту ситуацию не отследить, то подобная «дыра» позволит получить доступ к произвольным файлам и другим ресурсам. Самый простой способ не пострадать от этой проблемы - подправить код, добавив что-то похожее на следующую строку:
Sinput =" tr/\000//d;
Это всего лишь один пример того, как ввод пользователя может вызвать проблемы. Именно поэтому в Perl существует специальное средство предосторожности - режим пометки (taint mode). Изучите страницу руководства perlsec, входящую в состав дистрибутива Perl, чтобы ознакомиться с отличным объяснением того, что такое отмеченные данные, а также с другими мерами предосторожности.
Будьте осторожны при записи данных
Если ваша программа может записывать или дописывать данные в любой файл локальной файловой системы, вы должны особенно заботиться о том, как, куда и когда записываются данные. В системах Unix это особенно важно, поскольку символические ссылки очень сильно упрощают подмену файлов и перенаправление. Если ваша программа написана не очень аккуратно, может оказаться, что она пишет не в тот файл или устройство. Существует два класса программ, в которых это соображение особенно важно.
В первый класс попадают программы, дописывающие данные в существующие файлы. Перед дописыванием в файл в вашей программе должна быть выполнена следующая последовательность шагов:
Используйте функцию stat() и обычные операторы проверки файлов для проверки атрибутов файлов. Убедитесь, что файл не является ни жесткой, ни символической ссылкой, что у него установлены нужные права и владельцы и т. д. Откройте файл для дописывания. Передайте файловый дескриптор функции stat(). Сравните значения, полученные на шагах 1 и 3, чтобы убедиться, что открытый файловый дескриптор соответствует нужному вам файлу.
Смотрите программу bigbuffy из главы 9 «Журналы», которая соблюдает эту последовательность шагов.
Во второй класс попадают программы, использующие временные файлы или каталоги. Вы часто видели подобный код:
open(TEMPFILE,">/tmp/temp.$$") or die "невозможно записать в /tmp/ temp.$$:$!\n";
К сожалению, это недостаточно безопасно для многопользовательских систем. Последовательность идентификаторов процессов ($$) на большинстве машин легко предсказуема, а это означает, что также предсказуемо имя следующего временного файла, который будет использовать ваш сценарий. Если кто-то сможет предсказать это имя, он сможет оказаться там раньше вас. А это уже, как правило, плохие новости.
В некоторых операционных системах есть библиотечные вызовы, которые генерируют имена временных файлов, используя современный алгоритм случайных значений. Чтобы проверить вашу операционную систему, вы можете запустить следующий код. Если получаемые имена кажутся вам достаточно случайными, вы можете полагаться на POSIX: :tmpnam(). Если нет, вы можете написать собственную функцию генерации случайных имен файлов:
use POSIX qw(Tr4pnar-'): for (1..20){ print POSIX::tmpnam(),"\n"; }
Как только у вас будет имя файла, которое нельзя отгадать, вам нужно будет открыть его безопасным образом:
sysopen(TEMPFILE,$tmpname,0_RDWR|0_CREATjO_EXCL0666);
Существует другой, более простой способ выполнить эти же два шага (получить имя и открыть временный файл). Метод 10: : File->new_trnpfi-1е() из модуля 10: : File не только подберет хорошее имя (если системные библиотеки это поддерживают), но и откроет файл для чтения и записи.
Примеры использования POSIX: :tmpnam() и 10: : File->new_tmpfile(), a также другую информацию по этой теме вы можете найти в главе 7 книги рецептов «Perl Cookbook» («Perl: библиотека программиста»). В модуле File: :Temp Тима Дженнеса (Tim Jenness) также предпринимаются попытки обеспечить безопасные операции работы с временными файлами.
Избегайте состояний перехвата
По мере возможности, старайтесь не писать программ, допускающих состояния перехвата. Обычное состояние перехвата начинается с предположения, что следующая последовательность допустима:
Ваша программа будет накапливать некоторые данные. Ваша программа затем будет работать с этими данными.
Если пользователи могут проникнуть в эту последовательность на шаге, скажем 1,5, и выполнить некоторую замену данных, это может привести к неприятностям. Если им удается контролировать вашу программу на шаге 2, чтобы обработать данные, отличающиеся от тех, которые были на шаге 1, значит, им удалось использовать состояние перехвата (т. е., их программа выиграла состязание, чтобы получить данные). В другом случае состояние перехвата может произойти, если вы неверно работаете с блокировкой файлов.
Состояния перехвата часто возникают в программах системного администрирования, которые на первом шаге сканируют файловую .систему, а на втором шаге изменяют данные. Бесчестные пользователи могут внести изменения в файловую систему сразу после сканирования, чтобы изменения были внесены в неверный файл. Убедитесь, что в вашем коде нет подобных «дыр».
Наслаждайтесь
Очень важно помнить, что системное администрирование интересно. Не всегда и не тогда, когда вам надо решать самые досаждающие проблемы, но определенное наслаждение в этом можно найти. Есть настоящее удовольствие в том, чтобы поддерживать других людей и создавать инфраструктуру, которая улучшает жизнь всем. Когда созданные вами программы объединяют людей - это прекрасно.
Теперь, когда вы готовы, давайте поработаем над «теми самыми проводами».
Поиск и установка модулей
Основное преимущество использования Perl для системного администрирования заключается в доступности свободного исходного кода модулей. Рассмотренные в этой книге модули можно найти в одном из трех источников:
Полная сеть Perl-архивов (Comprehensive Perl Archive Network, CPAN)
CPAN - это огромный архив исходного кода на Perl, документации, сценариев и модулей, продублированных на сотне сайтов по всему миру. Эту информацию можно найти по адресу http://www.cpan.org. Самый простой способ найти модули на CPAN - воспользоваться поисковой системой, разработанной и поддерживаемой Элэни Аштоном (Elaine Ashton), Грэхемом Баром (Graham Barr) и Клифтоном
Поси (Clifton Posey) на http://search.cpan.org. Поле «CPAN Search:» облегчает задачу поиска нужных модулей.
Репозитории для скомпилированных пакетов
Скоро мы познакомимся с менеджером пакетов Perl (Perl Package Manager, PPM), очень важным инструментом для пользователей Perl на Win32. Этот инструмент соединяется с репозиториями (самый известный из которых расположен на ActiveState), чтобы получить собранные пакеты модулей. Адреса репозиториев можно найти в списке часто задаваемых вопросов о РРМ на http://www.ac tivestate.com/Products/ActivePerl/docs/faq/ActwePerl-faq2.html. Если пакет для Win32 получен не с ActiveState, я обязательно укажу на это. Пакеты для MacOS лучше всего искать на сайте MacPerl Module Porters по адресу
http://pudge.net/mmp/.
Отдельные веб-сайты
Некоторые модули не попадают на CPAN или в репозитории РРМ. Я всегда буду говорить, где можно найти модуль, если он находится в необычном месте.
Как установить модуль после того, как вы его найдете? Ответ зависит от того, какую операционную систему вы используете. В дистрибутив Perl входит документация по установке, которую можно найти в файле perlmodinstall.pod
(наберите perldoc perlmodinstall, если хотите ее прочитать). В следующем разделе я приведу краткое описание действий, которые необходимо выполнить в каждой из операционных систем, рассмотренных в этой книге.
Установка модулей в Unix
В большинстве случаев этот процесс выглядит так:
Скачайте модуль и распакуйте его.
Запустите perl Makefile.PL, чтобы создать необходимый Makefile.
Запустите make, чтобы собрать пакет.
Запустите make test, чтобы выполнить все тестовые действия, включенные в модуль автором.
Запустите make install, чтобы установить модуль в отведенное на вашей системе место.
Если вы не хотите возиться с установкой вручную, то можете использовать написанный Андреасом Кенигом (Andreas J. Kbnig) модуль СРА. (модуль входит в состав Perl). Этот модуль позволит выполнить все эти действия, набрав:
% perl -MCPAN -e shell
cpan install modulename
Модуль CPAN достаточно «умен», чтобы обрабатывать зависимости (т. е. если один модуль требует запуска другого модуля, то CPAN установит оба модуля автоматически). В СРАМ, кроме того, есть функция для поиска связанных модулей и пакетов. Я рекомендую набрать perldoc CPAN, чтобы ознакомиться со всеми полезными возможностями этого модуля.
Установка модулей на Win32
Процесс установки модулей на платформе Win32 совпадает с процессом установки модулей на Unix, но требует одного дополнительного шага — ррт. Если вы собираетесь устанавливать модули вручную, следуя инструкциям по Unix, то можете использовать программы, подобные WinZip (http://www.winzip.com), чтобы распаковать дистрибутив, и nmake (ftp://ftp.microsoft.com/Softlib/MSLFILES/nmakel5.exe)
вместо make - для сборки и установки модуля.
Некоторые модули в процессе сборки требуют компиляции исходных файлов на С. У многих пользователей Perl на Win32 нет нужного программного обеспечения для компиляции, поэтому в ActiveState создали менеджер пакетов Perl для работы с дистрибутивами скомпилированных модулей.
Система РРМ похожа на модуль CPAN. Для загрузки и установки специальных файлов архивов из репозиториев РРМ используется программа ppm.pl,
написанная на Perl. Вы можете запустить ее, либо набрав ррт, либо выполнив команду perl ppm.pl из каталога bin:
C:\Perl\bin>perl ppm.pl
РРМ interactive shell (1.1.1) - type 'help' for available commands.
PPM> install module-name
ррт,
как и CPAN, может искать для вас список доступных и установленных модулей. Наберите help после приглашения ррт, чтобы получить информацию о том, как использовать эти команды.
Установка модулей на MacOS
Установка модулей на MacOS - это странный гибрид уже рассмотренных методов. Крис Нандор (Chris Nandor) собрал дистрибутив срап-тас (его можно найти либо на CPAN, либо на http://pudge.net/macperl), в состав которого входит перенесенная на MacOS версия CPAN, а также невероятное количество других модулей.
После установки дистрибутива срап-тас можно при помощи CPAN загружать и устанавливать большинство модулей, реализованных исключительно на языке Perl. Нандор упростил эту задачу, написав небольшое приложение installme.
Архивные файлы (т. е. файлы .tar.gz), переданные installme, будут разархивированы и установлены в стиле CPAN.
Подробности об установке модулей на MacOS можно найти в расширенной версии документа perlmodinstall.pod, упомянутого ранее как macperl modinstall.pod. Его можно найти также и на http://pudge.net > macperl.
Системное администрирование - это ремесло
В моем городе есть несколько троллейбусных линий. Однажды, когда я поехал по незнакомому маршруту, я попросил водителя предупредить меня, когда мы будем подъезжать к нужной мне улице. Но он ответил: «Извините, я не смогу. Я ведь еду только по проводам».
Вы никогда не услышите, чтобы хороший системный администратор описывал бы свою работу подобными словами. В системном и сетевом администрировании зачастую приходится решать, какие провода прокладывать, где и как их соединять и как за ними следить. А затем, в итоге, отказываться от старых решений и начинать все заново. Хороший системный администратор вряд ли делает что-либо по привычке, не задумываясь, особенно в многоплатформенном окружении, где вопросы категорично требуют быстрых ответов. Как и в любом другом ремесле, в системном администрировании существуют способы отвечать на такие вопросы лучше или хуже. Эта книга для всех, кто сталкивается с подобными проблемами, будь то профессиональный системный администратор или новичок. Я попытаюсь показать, какой помощи можно ждать от Perl.
Ссылки на подробную информацию
http://dwheeler.com/secure-programs/Secure-Programs-HOWTO.html
-документ HOWTO (соображения «как сделать») о безопасном программировании в Linux, но рассмотренные в нем концепции и технологии применимы и в других ситуациях.
http://www.cs.ucdavis.edu/~bishop/secprog.html
содержит лучшие способы безопасного программирования от эксперта по безопасности Мэтта Бишопа (Matt Bishop).
http://www.homeport.org/~adam/review.html -
список указаний по написанию безопасного кода от Адама Шостака (Adam Shostack).
http://www.dnaco.net/~kragen/security-holes.html -
хороший документ о том, как искать дыры в защите (особенно в собственном коде) от Крегена Ситэйкера (Kragen Sitaker).
http://www.shmoo.com/securecode/
предлагает отличную коллекцию статей о том, как писать безопасные программы.
«Perl CGI Problems»,
Rain Forest Puppy (Phrack Magazine, 1999). Электронный вариант можно найти на http://www.insecure.org/news/P55 07.txt или в архивах Phrack на http://www.phrack.com/archwe.html.
«Perl Cookbook»,
Tom Christiansen, Nathan Torkington (O'Reilly, 1998) -эта книга рецептов содержит много хороших советов по созданию безопасных программ.