Руководство системного администратора • третье издание { h h y с п п т п р



Pdf просмотр
страница49/82
Дата12.11.2016
Размер7.94 Mb.
Просмотров12668
Скачиваний0
ТипРуководство
1   ...   45   46   47   48   49   50   51   52   ...   82
5 4 6
Часть II. Робота в сетях
незашифрованном виде, файл должен быть доступен для чтения только пользователю root. Наконец, следует модифицировать файл /etc/rsyncd. coil Г, который сообщает серверу rsync (принимающей стороие) о том. как себя вести. Разумная конфигурация выглядит примерно так
[ s y s f i l e s ] p a t h - / e t c s e c r e t s f i l e = / e t c / r s y n c d . s e c r e t s r e a d o n l y = f a l s e u i d = r o o t g i d — r o o t h o s t s a l l o w = глввиый_сервер
Существует масса других опций, но установки по умолчанию вполне приемлемы. В данной конфигурации все операщти локализованы в каталоге
/etc, а доступ разрешен только указанному узлу. Программа rsync входит в дистрибутив Red Hal. Исходный код (общий для всех систем) можно загрузить с узла rsync.sairiba.org. Система рассылка файлов поза просу Существует несколько способов реализации системы рассылки файлов по запросу. Один из них. который нам нравится н который, оказывается, полезен и для решения других задач, заключается в том. чтобы сделать системные файлы доступными на центральном сервере по протоколу FTP и осуществлять последующую их выборку и инсталляцию с помощью системы expect.
Подробнее о протоколе FTP речь пойдет в параграфе 22.6.
Система expect представляет собой набор расширений языка Tel (Tool
Command Language — инструментальный командный язык, разработанного Джоном Оустерхаутом (John Ousteriiout). Эти расширения позволяют писать управляющие сценарии для интерактивных программ. Автором системы expect является Дон Либис (Don Libes) из Национального института стандартов и технологий (National Institute of Standards and Technology, NIST). Система expect отличается от обычного языка сценариев (например, от принятого в большинстве интерпретаторов команд) тем. что обеспечивает пошаговое управление подпроцессами. Можно проверять результат каждой операции и определять, какие входные данные необходимо посылать дальше. Кроме тою, язык expect устойчив к недружелюбным действиям, которые способна предпринять программа, считающая, что работает с реальным терминалом.
Tel сам по себе — это функционально полный язык сценариев. Формально сценарии expect являются просто сценариями Tel. в которых используются дополнительные команды, определенные в расширениях expect. Тем не менее для написания простейших сценариев expect не требуется глубокое знание языка Tel. Язык Tel синтаксически прост. Большинство команд задается аналогично командам системного интерпретатора команда и ее аргументы просто разделяются пробелами. Фигурные скобки объединяют групповые элементы в отдельные "слова и позволяют продлевать операторы на несколько строк. В качестве разделителя команд используется точка с запятой в конце строки и перед закрывающей фигурной скобкой разделитель необязателен.
Глово 18. Совместное использовоние системны* фойпов
547
Вот основные команды системы expect: в s p a w n — запускает подпроцесс; в s e n d — посылает подпроцессу входную информацию
• e x p e c t — выполняет действие в зависимости от выходной информации подпроцесса. Четвертая команда, i n t e r a c t , также может оказаться полезной, если нужно, чтобы система expect выполнила часть задачи, а затем передала управление пользовательской программе. Прежде чем рассматривать команды по отдельности, разберем простой пример. Следующий сценарий пересылает с компьютера сервер (посредством программы ftp) файл /etc/passwd: spawn / u s r / b i n / £ t p сервер
w h i l e 1 ( e x p e c t (
"Name*: " ( s e n d "клиенаЛг"}
" P a s s w o r d : " {send "клиентский_пароль\т"}
, n f t p > " ( b r e a k )
" f a i l e d " ( s e n d _ u s e r " C a n ' t l o g i n . \ r " ; e x i t 1 ) t i m e o u t ( s e n d _ u s e r "Timeout p r o b l e m . \ r " ; e x i t 2 }
}} send " l e d / e t c \ r " e x p e c t " f t p > " ( s e n d "cd p u b / s y s f i l e s \ r " } e x p e c t " f t p > " (send "get p a s s w d \ r " } e x p e c t " f t p > " (send " q u i t \ r " , - send u s e r " \ r " } e x i t 0 Последовательность выполнения операций здесь очевидна. Рассматриваемый сценарий сначала запускает команду ftp сервер, а затем ожидает приглашения на ввод имении пароля в цикле w h i l e (базовая конструкция языка Tel). После получения основного приглашения f t p > программа выходит из цикла w h i l e , ив программу ftp подается простая серия команд. Перед отправкой каждой команды сценарий ожидает, пока завершится выполнение предыдущей команды это нестрого обязательно, но делает вывод информации очень удобным. Начальный цикл регистрации предназначен для решения двух проблем.
Во-первых, производится проверка строки "failed", позволяющая выявить ситуацию, когда удаленный компьютер отклоняет указанное имя и пароль и программа ftp выводит сообщение "Login failed". Во-вторых, условие t i m e o u t позволяет обнаружить случаи, когда в течение десяти секунд ничего не происходит, возможно, потому, что сервер отключен. Если возникает одна из описанных выше ситуаций, сценарий выводит сообщение об ошибке и завершает свое выполнение. Данный сценарий предполагает, что после успешного входа в систему ошибок быть не может реальные сценарии обычно включают дополнительные проверки. В этом примере благодаря циклу w h i l e для нескольких пересылок задается одна процедура обработки ошибок. Есть несколько специальных версий команды e x p e c t , предназначенных для решения этой проблемы более элегантным способом. Команда s e n d посылает на вход подпроцесса строку, указанную и качестве аргумента. Прн желании можно явно включить в эту строку символ возврата каретки (обозначается как \ г ) . Строку без пробелов и специальны символов ненужно брать в кавычки. Команда s e n d _ u s e r аналогична
548
Чость II. Роботов сетях
команде s e n d , за исключением того, что строка записывается в стандартный выходной поток сценария. В команде e x p e c t в качестве артументов задаются группы пар шаб-
лон/действие. Если аргументы занимают несколько строк, как в приведенном выше примере, их следует заключать в фигурные скобки. Каждый аргумент
действие также необходимо брать в фигурные скобки.
Шаблон — это то, что нужно искать в выходной информации команды как только появляется эта строка, инициируется соответствующее ей действие.
Понск по шаблону осуществляется, как правило, в соответствии с синтаксисом интерпретатора командно можно использовать н регулярные выражения Действия, указанные для условий t i m e o u t и e o f . запускаются соответственно после некоторого (задаваемого) периода бездействия и по достижении конца входного потока. Исходный код системы expect можно загрузить с узла expeci.nisi.gov.
18.3. NIS: сетевая информационная служба Административная база данных NIS (Network Information Service — сетевая информационная служба) была выпущена в свет компанией Sun в х гг. Сначала она называлась Sun Yellow Pages (Желтые страницы Sun), но по причинам правового характера ее пришлось переименовать. Команды
NIS до сих пор начинаются с префикса ур. поскольку имя. данное при рождении, забыть трудно. Многие фирмы купили у Sun лицензию на это программное обеспечение, что сделало NIS наиболее широко распространенной системой совместного использования файлов. Вначале х компания Sun выпустила новую административную СУБД
N1S+. Невзирая на сходство названий. NIS и NIS+ не связаны друг с друтом. Система NIS+ гораздо сложнее, чем NIS, и не столь популярна. Подробнее о ней рассказывается в параграфе 18.4. В табл. 18.2 отражены сведения о поддержке NIS н NIS+ в наших тестовых системах.
Тоблицо 18 2 Подцержко N15 ив опероционных системох Система Поддерживает NIS? Поддерживает NIS+?
Solaris Да Да
HP-UX Да Да
Red Hat Да Нет
FreeBSD Да Нет Единицей совместного использования в NIS является запись, а не файл Запись обычно соответствует одной строке конфигурационного файла. Главный сервер храни г авторитетные копии системных файлов, которые находятся в своих исходных каталогах и имеют текстовый формат. Серверный процесс делает содержимое этих файлов доступным посети. Сервер и его клиенты образуют домен NIS". Для повышения эффективности поиска файлы подвергаются предварительной обработке подпрограммами хэширования (обычно это ndbm или ее Не путайте домены NIS с доменами DNS. Это два абсолютно разных понятия, которые ие имеют между собой ничего общего
Глово 18. Совместное использовоние системны* фойпов
549

G N U - эквивалент. превращаясь в файлы базы данных, называемые
картами. После редактирования файлов на главном сервере необходимо попросить N1S преобразовать их в хэ ш и ро ванный формат либо с помощью программы make, либо посредством сценария ypmake (в зависимости от системы. Базовые подпрограммы хэширования позволяют связывать с каждой записью всего один ключ, поэтому системный файл, возможно, придется транслировать в несколько карт NIS. Например, файл /etc/passwd преобразуется в две карты passwd.byname и passwd.byuid. Первая применяется для поиска элементов по имени пользователя, а вторая — для поиска по идентификатору. Любую из них можно использовать для получения списка всех элементов файла passwd. Но хэшнруюшие подпрограммы не сохраняют порядок записей, поэтому нельзя воссоздать точную копию исходного файла если только он не был отсортирован. Служба NIS позволяет тиражировать сетевые карты, размещая их на нескольких подчиненных серверах. Использование группы серверов помогает ослаблять нагрузку на главный сервер н поддерживать функционирование клиентов даже в том случае, когда некоторые серверы недоступны. Если на главном сервере файл изменился, необходимо разослать соответствующую карту на все подчиненные серверы, чтобы на всех серверах были одинаковые данные. Клиенты не различают главный н подчиненные серверы В соответствии с традиционной реализацией NIS. в каждой физической сети необходимо назначать хотя бы один сервер NIS. С целью обнаружения серверов клиенты посылают широковещательные пакеты, которые не перенаправляются маршрутизаторами и шлюзами. Лля нацеливания клиента на конкретный сервер можно воспользоваться командой ypset, однако при первых признаках тревоги клиент попытается обнаружить новый сервер путем широковещательного запроса Если в клиентской сети нет сервера, это может вызвать зависание машины-клиента.
Solaris и Red Hat позволяют избежать традиционного широковещательного способа обнаружения серверов NIS. Подробнее об этом рассказывается в конце даниого параграфа. Сетевые группы Вместе с системой N I S появилось новое понятие, ставшее вскоре весьма популярным так называемые сетевые группы. Это совокутгости пользователей. компьютеров и сетей, па которые делается ссылка в системных файлах. Сетевые группы определяются в файле /ete/netgroup и становятся известными клиентам сети через карту. Формат записи файла netgroup гаков:
имя_группы слисок_ членов
Имена членов группы разделяются пробелами или знаками табуляции. Член группы может, в свою очередь, представляться именем сетевой группы или триплетом следующего кила
(нмяхомпьютера, имя пользователя, имя ломеиа_ЛГ/5) Каждое пустое поле в триплете — это метасимвол. Так. элемент ( b o u l - d e r , ,) ссылается на всех пользователей во всех доменах на компьютере boulder (или на сам компьютер boulder в зависимости от контекста, в котором используется имя данной сетевой группы. Знак в томили ином поле
545
Чость II. Роботов сетях
свидетельствует об отрицании. Например, элемент { b o u l d e r , ) обозначает компьютер boulder и отсутствие пользователей. Определения групп могут быть вложенными друг в друга. Вот простой пример файла /etc/netgroup: b o b c a t s ( s n a k e , , ) ( h e a d r e s t . , ) s e r v e r s ( a n c h o r , , ) ( m o e t , , ) ( p i p e r , . ) ( k i r k , , ) a n c h o r c l i e n t s ( x x , , ) ( w a t n e y s , , ) ( m o l s o n , , ) b e e r s ( a n c h o r , , ) ( a n c h o r - g a t e w a y , , ) a n c h o r c l i e n t s a l l h o s t s b e e r s b o b c a t s s e r v e r s Все эти сетевые группы определены в виде совокупностей компьютеров, что типично для реальных условий. Сетевые группы можно использовать в различных файлах, определяющих права доступа. Например, в файле /etc/exports или в команде share (вони указывают на то, какие компьютеры имеют право монтировать файловые системы. Это очень удобно, если файловая система экспортируется на множество компьютеров и необходимо указывать полностью определенные доменные имена, потому что длина записи в файле exports часто ограничена
1024 символами. Вообще говоря, применение сетевых групп — прекрасная идея. Их использование помогает упростить системные файлы и сделать их более понятными. Они также дают возможность ввести дополнительный уровень абстракции, который позволяет для изменения статуса пользователя или компьютера вносить необходимые изменения водном файле, а не в пятнадцати. Задание приоритетов для источников административной информации В большинстве систем информацию о конфигурации можно распространять несколькими способами. Обычные файлы способна обрабатывать любая система кроме того, почти во всех системах реализована поддержка N1S и обеспечивается возможность поиска имен компьютеров и адресов средствами DNS. Поскольку для каждого элемента информации может существовать несколько потенциальных источников, поставщики систем обычно предусматривают способ задания источников и порядок их опроса. В первоначальной реализации N I S некоторые конфигурационные файлы в частности, /etc/passwd и /etc/group) должны были "втягивать" в себя содержимое соответствующих карт NIS. Для этого в сами файлы помешались особые обозначения. Одинокий символ V вначале строки означал включение всей карты NIS, выражение "+@сетевая группа" задавало включение записей, относящихся только к указанной группе, а выражение "имя" соответствовало отдельной записи. У этого подхода никогда не было много сторонников, поэтому в большинстве систем был введен центральный конфигурационный файл
/etc/nsswitch.conf, позволяющий для каждого типа административной информации указывать явный путь поиска. Типичный файл nsswitch.conf выглядит следующим образом passwd: f i l e s n i s h o s t s : f i l e s dns g r o u p : f i l e s
Глово 18. Совместное использовоние системны* фойпов
551
Каждая строка описывает отдельный тип информации (обычно это эквивалент одного текстового файла. Возможные константы источников таковы m s , m s p l u s , f i l e s , d n s и c o m p a t . Им соответствуют ( в порядке перечисления) следующие источники NIS, NIS+. обычные текстовые файлы без учета специальных обозначений наподобие '-'), D N S и обычные файлы системы NIS. DNS предоставляет информацию только об узлах. Источники просматриваются слева направо, пока один из них не выдаст ответ на запрос. В случае показанного выше примера функция gethostbyname() сначала проверит файл /etc/hosts, и если требуемый узел там не будет указан, обратится кВ процессе обоаботки запросов, касающихся UNIX-rpvnn. будет проверяться только файл /etc/group. При необходам ости можно явно указать, как следует поступать при получении отрицательного ответа на запрос оттого или иного источника. Например, строка h o s t s : cms [NOTFOUND=returnj n i s p l u s заставляет получать информацию только от DNS, если эта система доступна. Получение отрицательного ответа от сервера имен приведет к немедленному завершению запроса (с выдачей кода ошибки, и обращения к NIS+ не произойдет. Однако служба N I S + будет задействована, если все серверы имен окажутся недоступными. В табл. 18.3 перечислены различные условия проверки ошибок. Каждое из них может быть задано равным r e t u r n или c o n t i n u e , что означает соответственно прерывание запроса или переход к следующему источнику. Таблица 18.3. Условия проверки ошибок в фоиле /etc/nsswitch.conf Условие Смысл
UNAVAIL Источник не существует или недоступен
NOTFOUND Источник существует, ноне может ответить на запрос
TRYAGAIN Источник существует, но занят
SUCCESS Источник смог отметить на запрос В каталоге /etc обычно содержится несколько образцов файла nsswitch.conf
(Is /etc/nss*). Прежде чем создавать собственный файл, проверьте, не подойдет ли один из имеющихся вариантов.
FreeBSD еше не поддерживает концепцию центрального файла "переключения сервисов". Приоритет источников данных при поиске узлов может быть задан в файле /etc/host.conf, который является самолокументируемым. Специальные обозначения N I S должны включаться в файлы passwd и group для импорта удаленных карт. Дополнительную информацию можно получить в разделе 5 интерактивной документации по этим файлам. Преимущества и недостатки N I S У системы N I S есть одна хорошая черта ее могут понять простые смертные. Работает она аналогично схеме копирования файлов. В большинстве случаев администраторам ненужно чего знать о внутренних форматах данных NIS. Администрирование осуществляется с помощью привычных текстовых файлов, и дополнительно требуется изучить всего одну-две новые процедуры. Часть II. Робота в сетях
Поскольку механизма объединения доменов в системе NIS ие существует, она годится для управления крупной сетью только при условии, что каждый входящий в сеть компьютер имеет одну и туже конфигурацию. Можно разделить большую сеть на несколько доменов, но тогда каждый из них должен администрироваться отдельно. Если подчиненный сервер в момент изменения карты не работает или недоступен, находящаяся на нем копия откорректирована не будет. Подчиненные серверы должны периодически опрашивать главный сервер, чтобы иметь самую последнюю версию всех карт. Хотя весть базовые средства, позволяющие это делать, требуемую схему опроса нужно реапизовывать с помощью демона сгоп. Но даже в этом случае существует вероятность того, что две разные версии одной карты в течение некоторого времени будут обслуживаться одновременно. При этом клиенты, получая доступ к различным подчиненным серверам, будут попеременно видеть то одну, то другую версию.
Более подробная информация о демоне егоп содержится в главе 9.
Система NIS небезопасна. Любой компьютер сети может выступить в роли сервера для того или иного домена и распространить среди клиентов ложные административные данные. Любой человек может прочесть карты и попытаться расшифровать пароли с помощью программы-взломщика, если в системе есть плохо защищенные учетные записи. Некоторые серверы NIS пытаются повысить безопасность паролей, запрещая доступ к карте теиевых паролей из непривилегированных портов. Это благородная мера, но она является очень слабым способом зашиты Те. кого волнуют проблемы безопасности, не должны использовать N1S. Схема работы Файлы данных NIS (а часто и некоторые команды этой системы) содержатся водном каталоге, обычно /var/ур. Далее мы будем называть его "каталогом" Все карты хранятся в хэшированном виде в подкаталоге каталога. соответствующем домену NIS. Точные имена и число карт зависят от применяемой подпрограммы хэширования. Например, в домене cssuns могут быть следующие файлы для карт файла /etc/passwd:
/ v a r / y p / c s s u n s / p a s s w d - b y n a m e . d i r
/ v a r / у р / c s s u n s / p a s s w d . b y n a m e . p a g
/ v a r / у р / c s s u n s / p a s s w d . b y u i d . d i r
/ v e r / у р / c s s u n s / p a s s w d . b y u i d . p a g Помните, что для каждого поля, по которому можно произвести поиск в файле, должна быть создана отдельная карта. Поиск в файле passwd осуществляется по имении по идентификатору, поэтому из него получаются две карты (четыре файла в случае программы ndbm). Команда makedbm создает карты из обычных файлов. Ее никогда ненужно вызывать непосредственно. В большинстве систем файл Makefile в каталоге сконфигурирован так, чтобы автоматически генерировать все распространенные карты. После модификации системного файла перейдите "в каталоги запустите программу make. Она сверит время модификации каждого файла с временем модификации карт, полученных из него, и выполнит команду makedbm для каждой карты, которую необходимо перестроить.
Главо 18 Совместное использование системных фойлов
553
В HP-UX вместо программы make используется команда ypmuke. Копирование карт с главного сервера иа подчиненные осуществляется с помощью команды ypxfr. Данная команда работает по принципу запроса лля того чтобы она импортировала карггы, ее нужно запускать на каждом подчиненном сервере. Подчиненные серверы время от времени выполняют команду ypxfr. стем чтобы проверить, последние ли версии карт находятся в их распоряжении. Посредством демона сгоп можно управлять периодичностью этих проверок. Стандартная реализация механизма копирования карт не очень эффективна, поэтому в большинстве систем существует демон ypxfrd, выполняющийся на главном сервере для ускорения ответов на запросы команды ypxfr. Этот демон работает в обход стандартного протокола NIS и просто рассылает копии файлов карт. К сожалению, в разных системах карты хранятся в разных форматах и имеют неодинаковый порядок следования байтов, поэтому применение демона ypxfrd чревато возникновением их несовместимости. Команда yppush используется на главном сервере. Она. по сути, не пересылает никаких данных, а просто заставляет каждый подчиненный сервер выполнить команду ypxfr. Команда yppush задается в файле Makefile, находящемся в каталоге, и обеспечивает принудительную рассылку откорректированных карт на подчиненные серверы. Есть специальная карта ypservers. которая не соответствует ни одному обычному файлу. Она содержит список всех серверов данного домена и строится автоматически при его конфигурировании посредством программы (о ней будет рассказано далее. Содержимое этой карты изучается всякий раз, когда главному серверу нужно разослать карты на вспомогательные серверы. После начального конфигурирования активными компонентами системы
NIS остаются лишь демоны ypserv и ypbind. Первый работает только на серверах (и главном, и подчиненных он принимает запросы от клиентов и отвечает на них, осуществляя поиск информации в хэш-файлах карт. Демон ypbind работает на всех компьютерах NIS-домеиа. включая серверы. Функции библиотеки языка С обращаются к локальному демону ypbind всяким раз, когда им нужно ответить на административный запрос (при условии, что это разрешено файлом /etc/nsswitch.conf) Демон ypbind находит в соответствующем домене демон ypserv и возвращает сведения о нем библиотечной функции, которая затем обращается непосредственно к серверу. Механизм обработки запроса изображен на рис. А. Сторона клиента Сторона сервера
С
Прикладная программа ypbind
г
-
^
| | gatpwuld '
J
Си-библиотека
1
t
I 1 ndbm
1
Си-бибпиотока!
1
* Рис. А. Процедуро оброботки зопросов в системе N15
554
Чость II. Роботов сетях
Найдя сервер, демон ypbind будет пользоваться им при ответе на все запросы до тех пор, пока сервер не отключится или пока не возникнет какая-нибудь проблема со связью. Демон ypbind на сервере не предоставляет себе никаких льгот, поэтому серверы необязательно обращаются к самим себе. При некоторых обстоятельствах (например, когда все серверы, кроме одного, одновременно перезагружаются) клиенты могут "закрепиться" на одном сервере и отказаться уйти с него даже после того, как станут доступны остальные серверы. Это значительно уменьшает быстродействие системы. Весть ряд вспомогательных команд, которые используются для изучения карт, определения версий карт, используемых каждым сервером, и управления привязкой клиентов к серверам. Полный перечень команд и демонов NIS дан в табл. 18.4.
Тоблицо 18.4. Комонды и демоны системы N15 Команда Описоние ypserv Демон сервера NIS. запускается вовремя начальной загрузки ypbind Демон клиента N1S. запускается вовремя начальной загрузки domainname Задаст домен NIS. в который входит данный компьютер (выполняется вовремя начальной загрузки) ypxfr Загружает текущую версию карты с главного сервера ypxfrd Обслуживает залросы. поступающие от команды ypxfr (работает на главном сервере) yppusb Заставляет подчиненный сервер обновить свою версию карты makedbm Создает хэширо ванную карту из обычною файла ypmake
1
Обновляет хэшированные карты для тех файлов, которые изменились yplnit Конфигурирует компьютер как главный или подчиненный сервер ypset Заставляет демон ypbind установить соединение с конкретным сервером Определяет, с каким сервером работает текущий компьютер yppoli Определяет, какую версию карты использует сервер ypcal Выводит на экран значения, содержащиеся & карте ypmateb Выводит ни экран элементы карты, соответствующие заданному ключу yppa.sswd Изменяет пароль ни главном сервере N1S ypcbfn Изменяет информацию GECOS на главном сервере NIS vpchsb Меняет регистрационный интерпретатор команд на главном сервере
NIS yppa.4Swdd Сервер для команд yppasswd. vpchsb и ypcbfn ypupdatcd* Сервер для обновления карт (им управляет демон inetd)
1
Используется не во всех системах. Создание домена Службу N I S следует инициализировать на главном сервере, на подчиненных серверах и па всех клиентах. Эта работа выполняется в два этапа
Во-первых, необходимо запустить программу ypinit на каждом сервере.
Ггово 18. Совместное использование системных фойлов



Поделитесь с Вашими друзьями:
1   ...   45   46   47   48   49   50   51   52   ...   82


База данных защищена авторским правом ©nethash.ru 2019
обратиться к администрации

войти | регистрация
    Главная страница


загрузить материал