Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Linux Network Administrators Guide
Назад Вперед

Глава 16. Управление Taylor UUCP

UUCP был разработан в конце семидесятых Mike Lesk в AT&T Bell Laboratories, чтобы обеспечить простое соединение по модему. Так как большинство людей, которые хотят иметь email и новости Usenet на своей домашней машине все еще связываются через модемы, UUCP стал очень популярен. Хотя имеется много реализаций, разработанных для различных аппаратных платформ и операционных систем, все они совместимы с высокой степенью.

Однако, как это случилось с большинством программного обеспечения, которое так или иначе стало "стандартом" за эти годы, нет такого UUCP, который можно было бы назвать подлинным UUCP. Он подвергался постепенному процессу эволюции, начиная с первой версии, которая была разработана в 1976. В настоящее время имеются две основных разновидности, которые отличаются в основном поддержкой аппаратных средств и конфигурацией. Кроме них существуют различные реализации, немного отличающиеся деталями.

Одна разновидность, это так называемая Версия 2 UUCP (Version 2 UUCP), которая датируется 1977 годом и реализована Mike Lesk, David A. Novitz и Greg Chesson. Она все еще используется, хотя и устарела. Недавние реализации Версии 2 обеспечивают многие из возможностей более новой разновидности UUCP.

Вторая разновидность была разработана в 1983 и обычно упоминается как BNU (Basic Networking Utilities, базисные утилиты работы с сетями), HoneyDanBer UUCP или HDB для краткости. Название получено из имен авторов: P. Honeyman, D. A.Novitz, и B. E. Redman. HDB был задуман, чтобы устранить некоторые из неточностей Версии 2 UUCP. Например, были добавлены новые протоколы передачи, и буферный каталог был переделан так, что теперь имеется каталог для каждого компьютера, с которым Вы связываетесь через UUCP.

Реализация UUCP, в настоящее время распространяемого с Linux, Taylor UUCP 1.06, является версией, которую описывает эта глава. Версия Taylor UUCP 1.06 была выпущена в августе 1995. Кроме традиционных файлов конфигурации Taylor UUCP может быть скомпилирована так, чтобы понимать новый стиль "Taylor-файлы конфигурации".

В большинстве дистрибутивов Linux Taylor UUCP обычно компилируется совместимым с BNU или Taylor-схемой конфигурации, или с обоими. Так как последний намного более гибок и, возможно, проще для понимания, чем довольно часто запутанные файлы конфигурации BNU, ниже я буду описывать схему Taylor.

Цель этой главы не в том, чтобы дать исчерпывающее описание опций командной строки для команд UUCP, а в том, чтобы дать Вам введение в установку работающего узла UUCP. Первый раздел дает введение в то, как UUCP осуществляет удаленное выполнение и передачу файла. Если Вы не новичок в UUCP, Вы можете пропустить этот раздел и перейти к разделу "Файлы настройки UUCP", который объясняет различные файлы, используемые для установки UUCP.

Считается, что Вы знакомы с пользовательскими программами набора программ UUCP uucp и uux. За описанием обратитесь, пожалуйста, к их man-страницам.

Кроме общедоступных программ uucp и uux набор программ UUCP содержит ряд команд, используемых только для административных целей. Они используются для контроля трафика UUCP через узел, удаления старых регистрационных файлов, или для обработки статистики. Они не будут описаны здесь, потому что они периферийные к основным задачам UUCP. Кроме того, они хорошо документированы и довольно легки для понимания. Однако, имеется третий класс, который включает рабочие программы UUCP. Они называются uucico (где cico обозначает copy-in copy-out) и uuxqt, которая выполняет работы, посланные из удаленных систем.

Если Вы в этой главе не найдете то, что хотите, прочитайте документацию, которая поставляется с пакетом. Это набор texinfo-файлов, которые описывают установку с использованием Taylor-схемы конфигурации. Texinfo может быть преобразован в dvi файлы информации, используя команду texi2dvi. Для просмотра служит xdvi.

Хорошим источником сведений по UUCP является Guylhem Aznar's UUCP-HOWTO. Он есть на зеркалах Linux Documentation Project и регулярно рассылается в группу новостей comp.os.linux.answers.

Для обсуждения вопросов по UUCP есть специальная группа новостей comp.mail.uucp.

Обзор передачи UUCP и удаленного выполнения

Ключ к пониманию UUCP - понятие задачи (job). Каждая передача, которую пользователь инициализирует с помощью uucp или uux, называется задачей. Она состоит из программы, которая будет выполнена на удаленной системе, и набора файлов, которые будут перемещены между системами. Одна из этих частей может отсутствовать.

Например, допустим, что на Вашей системе выдали следующую команду, которая заставляет UUCP копировать файл netguide.ps на машину pablo и выполнить команду lpr, чтобы напечатать файл:

$ uux -r pablo!lpr !netguide.ps

UUCP не вызывает удаленную систему немедленно, чтобы выполнить задачу (иначе Вы могли это сделать kermit). Вместо этого он временно сохраняет описание задачи на удаленной системе. Это называется буферизацией задачи (spooling). Каталог, в котором сохраняется задача, называется буферным каталогом (spool directory) и обычно находится в /var/spool/uucp. В нашем примере описание задачи содержало бы информацию относительно удаленной команды, которая будет выполнена (lpr), пользователя, который запросил выполнение, и пары других предметов. В дополнение к описанию задачи, UUCP должен сохранить входной файл netguide.ps.

Точное расположение и наименование буферных файлов может изменяться в зависимости от некоторых опций времени компиляции. HDB-совместимые UUCP вообще сохраняют буферные файлы в подкаталогах структуры /var/spool/uucp с именем удаленной машины. Скомпилированный для Taylor-конфигурации, UUCP создаст подкаталоги в /var/spool/uucp/site для различных типов буферных файлов.

Через определенные интервалы UUCP связывается с удаленной системой. Когда соединение установлено, UUCP передает файлы, описывающие задачу, плюс все входные файлы. Входящие задачи не будут выполнены немедленно, а только после разрыва соединения. Это делает программа uuxqt, которая также заботится о дальнейшей пересылке любых задач, если они предназначены для другой машины.

Для различия между очень важными и менее важными задачами, UUCP с каждой задачей связывает уровень приоритета (grade). Это один знак, в пределах от 0 до 9, от А до Z и через z, в уменьшающемся старшинстве. Почта обычно записывается в буферный файл с приоритетом B или C в то время, как новости записываются с приоритетом N. Работы с более высоким приоритетом передаются раньше. Приоритеты могут быть назначены, используя опцию -g при вызове uucp или uux (так вот, что значат эти имена файлов!).

Вы можете также запретить передачу задач в определенное время с приоритетом ниже заданного. Это также называется максимальным приоритетом буфера (maximum spool grade), допустимым в течение диалога (по умолчанию z). Обратите внимание на терминологическую неоднозначность: файл будет перемещен только, если он имеет приоритет выше максимального приоритета буфера!

Внутренние действия uucico

Чтобы понять, почему uucico должен знать некоторые вещи, приведем краткое описание того, как фактически происходит соединение с удаленной системой.

Когда Вы выполняете из командной строки команду uucico -s system, сначала происходит физическое соединение. Предпринимаемые действия зависят от типа открываемого соединения. Например, при использовании телефонной линии, команда должна найти модем и набрать номер. Если используется TCP, uucico должна вызвать функцию gethostbyname, чтобы преобразовать имя в сетевой адрес, выяснить, какой порт открывать, и связать адрес с соответствующим сокетом.

После того, как соединение будет установлено, должна выполниться процедура идентификации пользователя. Она состоит из запроса удаленной системой имени, и, возможно, пароля. Все это называется login chat. Процедура идентификации выполняется обычным набором программ getty/login или (на сокетах TCP) непосредственно uucico. Если разрешение на вход получено, удаленная система запускает uucico. Локальная копия uucico, которая инициализировала соединение, назначается главной (master), а удаленная подчиненной (slave).

Затем следует фаза рукопожатия (handshake phase): главная копия посылает cвое hostname и некоторые флаги. Подчиненная система проверяет, имеет ли hostname право входить в нее, посылать и принимать файлы и т.д. Флаги описывают (кроме всего прочего) максимальный приоритет буферизации передаваемых файлов. Если возможно, счет диалога или проверка порядкового номера обращения происходит здесь. Благодаря этой возможности, обе копии поддерживают счет успешных соединений (call sequence number), которые сравниваются. Если они не соответствуют, рукопожатиe прерывается. Это помогает защищаться от самозванцев-хакеров.

В заключение uucico пытается установить общий протокол передачи (transfer protocol). Этот протокол обеспечивает способ перемещения данных, проверку на непротиворечивость и повторную передачу в случае ошибки. Имеется потребность в различных протоколах из-за отличающихся типов обеспечиваемых соединений. Например, телефонные линии требуют "безопасный" протокол, который включает в себя жесткую проверку ошибок в то время, как передача TCP по существу надежна и может использовать более эффективный протокол.

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

Сначала главная система посылает все файлы, поставленные в очередь для передачи на удаленную систему, приоритет буферизации которых является достаточно высоким. Когда передача завершена, она сообщает об этом подчиненной системе, она может теперь отключиться или принимать диалог. Это изменение ролей (назначений): теперь удаленная система становится главной, а локальная становится подчиненной. Она теперь посылает файлы. Когда передача завершена, обе программы обмениваются заключительными сообщениями и закрывают соединение.

Мы не будем вникать во все детали: пожалуйста, обратитесь за ними к исходным текстам или к любой хорошей книге по UUCP. Есть также очень старая статья, касающаяся сети, написанной David A. Novitz, которая дает детализированное описание протокола UUCP. Taylor UUCP FAQ также обсуждает некоторые подробности UUCP. Это всегда есть в группе новостей comp.mail.uucp.

Опции командной строки uucico

Этот раздел описывает наиболее важные опции командной строки uucico. За полным списком, пожалуйста обратитесь к man-странице uucico.

-system, -s <TTCLASS="REPLACEABLE">system

Вызов по имени системы system, если нет запрета в соответствии c ограничениями времени обращения.

-S system

Вызов по имени системы system безоговорочно.

-master, -r1

Запукает uucico в режиме master. Это опция задана по умолчанию, когда указаны -s или -S. Опция -r1 заставляет uucico пробовать вызывать все системы в sys, если не запрещено обращение и нет ограничения времени повторения.

-slave, -r0

Запускает uucico в режиме подчиненного. Это используется как значение по умолчанию, когда не заданы -s или -S. В непривилегированном режиме любой стандартный ввод-вывод соединяется с последовательным портом, порт TCP используется, если задана опция -p.

-ifwork, -C

Предписывает uucico вызывать указанную систему только при наличии задач для нее.

-debug type, -x type, -X type

Включают отладку заданного типа. Несколько типов могут быть разделены запятой. Допустимы следующие типы: abnormal, chat, handshake, uucp-proto, proto, port, config, spooldir, execute, incoming и outgoing. Использование all включает все опции сразу. Для совместимости с другими реализациями UUCP, взамен может быть определен номер, который включает отладку для первых n типов из вышеупомянутого списка.

Отладочные сообщения будут регистрироваться в файле Debug в /var/spool/uucp.