Опубликован: 01.07.2008 | Уровень: специалист | Доступ: платный
Лекция 8:

Сетевая файловая система NFS - Network File System

UUCP - Unix to Unix Copy

Система пересылки файлов по телефону.

Если uucp правильно сконфигурировано, то его использование выглядит примерно так:

uucp -r moj_fajl 'pulsar!fajl_tam'

перешлет moj_fajl на удаленную машину pulsar. Хотя, скорее всего не сделает, из-за ограничений на права доступа. А, впрочем, такая команда скорее всего сработает:

uucp -r moj_fajl 'pulsar!~'

через некоторое время этот файл вы сможете обнаружить на машине pulsar в каталоге

/usr/spool/uucppublic/

в этот каталог разрешено копирование с удаленных машин, для него используется специальное обозначение: "~"

Пусть вас не удивляет, что в команде uucp использовались одинарные кавычки. Они нужны, чтобы заэкранировать "!" и "~" от вашего командного интерпретатора ksh или bash. Ключ -r в команде uucp нужен, чтобы НЕ ЗАСТАВЛЯТЬ нашу машину немедленно начинать звонить на pulsar. Она сама позвонит, в предусмотренное для этого время.

uucp поддерживается на двух уровнях:

  1. Пользовательский. Это команды uucp - постановка файла в очередь на удаленную пересылку, и uux - постановка в очередь на пересылку удаленной команды.
  2. Системный. Периодически, автоматически запускается демон uucico - (UUCP Copy in Copy out). Он созванивается с удаленными машинами по телефону. На удаленной машине также запускается "встречный" демон uucico. Наш демон "проталкивает" на удаленную машину все файлы, которые к этому времени накопились в очереди на отправку туда. После этого он "принимает" файлы, которые приготовила для нас удаленная машина (их к нам проталкивает "встречный" демон uucico, а наш принимает). После этого сеанс uucico заканчивается. А пользователи обнаруживают, что у них возникли новые файлы.

Предполагается, что системные администраторы на нашей и на удаленной машине не забыли правильно описать и проконфигурировать систему UUCP.

Конфигурация нашей машины как UUCP клиента

После этого наша машина сможет звонить на удаленные машины и посылать/забирать оттуда файлы. Для этого мы должны задать:

  1. Наше собственное UUCP имя.
  2. Имя(имена) удаленной(ых) UUCP системы.
  3. Телефонный номер(а), по которому нужно туда звонить.
  4. Login и пароль, которые выделены там для нашего uucp-account'а.
  5. Порт, к которому подключен наш модем.
  6. Наборщик - описание "AT" команд для управления нашим модемом.

Эти данные задаются в нескольких конфигурационных файлах, которые должны лежать в каталоге /etc/uucp/ (или /usr/lib/uucp/, или /usr/lib/uucp/taylor_config ) (или в каком нибудь другом, см. man uucp для более точной информации). Это файлы:

Config # задает имя нашей машины (и многое другое) ;
Systems # описывает удаленные uucp-системы: имя, но-
 # мер телефона, uucp-logname, uucp-passwd ;
Devices # порты, к которым подключены модемы.
Dialers # описывает модемы-наборщики (систему AT-ко-
 # манд).

(А в Linux они называются: config, sys, port, dial)

Итак, представим классический случай. У вас один Hayes-совместимый модем V32/V42bis на 14400 baud (GVC, ZyXEL, US-Robotics...), подключенный к последовательному порту /dev/modem (если у вас порт называется /dev/contty03, вам никто не мешает сделать символический линк ln -s /dev/contty03 /dev/modem не так ли ?). Имя вашего узла fedfuru.

ВНИМАНИЕ. На большинстве Unix-ов выделены раздельные специальные файлы для одного и того-же порта: терминальная линия (для подключения терминала или модема, НА который будут звонить - используется для getty или ttymon ), и линия с модемным управлением, на выход - например, чтоб звонить НАРУЖУ модемом. Эти специальные файлы и называются по разному, например:

SunOS: /dev/ttyy01 IN, /dev/ttyz01 OUT
Linux: /dev/ttyS1 IN, /dev/cua1 OUT
ISC: /dev/ttyFD01 IN, /dev/ttyFM01 OUT
SVR4/88: /dev/contty00 IN, /dev/??????? OUT

###следующий абзац написан "мелким шрифтом"(можно не читать)###
На самом деле все не совсем так. Цитирую Linux-Serial-HOWTO:
> There has been some discussion on the merits of /dev/mouse
> and /dev/modem. I strongly discourage the use of these links.
> In particular, if you are planning on using your modem for
> dialin you will run into problems because the lock files will
> not work correctly if you use /dev/modem. Also, Taylor UUCP
 does not support symlinks either. Однако uugetty позволяет
 корректно отрабатывать эту ситуацию. См. параметр ALTLOCK в
 /etc/defaults/getty файле.
################_конец_"мелкого шрифта"_#######################

Вам надо подключиться к двум uucp-узлам:

  1. Узел Релком, имя узла kiae, телефоны: 9469984, 9469994. Вы зарегистрированы там под именем/паролем uufedurp/ABCd8
  2. Ваше московское отделение, имя узла fedfond, телефон 095-125-7623. Вы зарегистрированы там под именем/паролем uufedurp/KLmn10

В каталоге /etc/uucp редактируем файлы Systems, Devices, Dialers

Systems: ------- Удаленные машины -----------------------------
kiae Any modem1 19200 946-9984 "" \n\r\d\r\d\r ogin:-BREAK-ogin:
 uufedurp ssword: ABCd8
fedfond Any modem1 19200 8w095-125-7623 "" \n\r ogin:-BREAK-ogin:
 uufedurp ssword: KLmn10

Devices: --------------- Описание портов ----------------------
modem1 contty03 - 19200 gvc1440

Dialers: --------------- Команды модемов ----------------------
gvc1440 =,-, "" \M\dATZ\r\c OK\r \EATDP\T\r\c CONNECT \m\c

---------------- Это все --------------------------------------

###следующий абзац написан "мелким шрифтом"(можно не читать)###

А дальше идет описание Taylor-uucp. Проблема в том, что в стандартной поставке SVR4/88 _нет_ Taylor-uucp, а есть только т.н. HoneyDanBer-uucp, он же BNU (Basic Networking Utilities). Taylor новее и гибче, к тому же поддерживает два формата конфигурационных файлов - традиционный (Config, Systems, Devices, Dialers, ...) и свой (config, sys, port, dial, ...). Есть конвертер туда-обратно. В Linuxе Taylor-uucp скомпилирован так, чтобы сначала искать Taylor-конфигурацию в /usr/lib/uucp/taylor_config/, если там ничего нет - искать HDB-конфигурацию в /usr/lib/uucp/hdb_config/. IMHO главный изъян HDB - невозможность указывать альтернативные номера телефонов.

################_конец_"мелкого шрифта"_#######################

###следующий абзац написан "мелким шрифтом"###

Если вы используете не устаревший BNU-uucp, а Taylor-uucp 1.05: В каталоге /usr/lib/uucp/taylor_config создаем файлы config, sys, port, dial следующего содержания: /* Примечание: в дистрибутивах RedHat Linux конфигурационные файлы uucp должны лежать в /etc/uucp/ */

config: -------------------------------------------------------
uuname fedfuru # Наше собственное имя

sys: ------- Удаленные машины ---------------------------------
system kiae # Узел Релком ############################
myname fedfuru
time Any
port modem # Имя описания порта в файле port
speed 38400
chat ogin:-BREAK-ogin: uufedurp ssword: ABCd8
phone 946-9984
alternate # Второй телефонный номер.
phone 946-9994

system fedfond # Московское отделение ##################
time Any
myname fedfuru
port modem # Имя описания порта в файле port
speed 38400
chat ogin:-BREAK-ogin: uufedurp ssword: KLmn10
phone 8w095-125-7623

port: --------------- Описание портов ------------------------
port modem # Обозначение порта из файла sys
type modem
device /dev/modem
speed 38400
dialer gvc1440 # Имя наборщика-модема в файле dial

dial: --------------- Команды модемов ------------------------
dialer gvc1440 # Обозначение наборщика из файла port

# Строка инициализации модема.
# Вместо \T будет подставлен телефонный номер
chat "" ATZ OK ATH0E0Q0 OK ATDP\T CONNECT
# ATZ - загрузить profile 0
# ATH0 - повесить трубку
# ATE0 - no echo
# ATQ0 - выводить код возврата

chat-fail BUSY # Воспринимать как ошибку набора
chat-fail ERROR
chat-fail NO\sCARRIER
chat-fail NO\sDIALTONE
---------------------------------------------------------------
8.1.

################_конец_"мелкого шрифта"_#######################

Все. Клиентская часть UUCP сконфигурирована. Теперь, чтобы "протолкнуть" посланные файлы, достаточно периодически выполнять команды:

uucico -s kiae
uucico -s fedfond

А еще лучше, добавить эти команды в crontab, чтобы они выполнялись автоматически, по несколько раз в сутки.

Конфигурирование UUCP с использованием sysadm

Все вышеперечисленные настройки можно сделать, используя утилиту системного администратора sysadm. Надо войти в меню network_services / basic_network

Конфигурирование серверной части UUCP

Итак, мы уже можем звонить на чужие машины, и пересылать на них файлы. Теперь нужно сделать, чтобы чужие машины (клиенты) могли звонить нам. Для этого нужно:

  1. Иметь описание звонящей нам uucp-системы в файле Systems - для клиента такое же, как и для сервера.
  2. Проверить права доступа для клиента в файле Permitions
  3. Завести для него специальный uucp-login
  4. Убедиться, что модем стоит в "Auto-answer" режиме, и на порт /dev/modem запущена программа getty (или ttymon), позволяющая логиниться по телефону на порт /dev/modem
  • Описание добавляется в файл Systems, (номер телефона и название порта не обязательны), если мы сами не собираемся туда звонить, но я бы посоветовал их вписать, для единообразия.
  • В файле /etc/passwd завести строчку вида:
    uupetrov:x:1002:14:UU Petrov:/var/spool/uucp:/usr/lib/uucp/uucico
    выполнить команды:
    pwconv
    passwd uupetrov
  • Любой терминальной программой "войти" в модемный порт и выполнить команды
    atz0 # Загрузить пользовательский profile 0
    ats0=1 # Регистр0=1 - снимать трубку после 1-го звонка
    at&w0 # Сохранить текущий setup в profile 0
    at&y0 # Чтобы при включении питания загружался профайл 0
    
    # at&f # загрузить заводские установки, если вы запутались
     # с профайлами, можно сделать модему "reset"
  • Ввиду отсутствия коммуникационных программ в SVR4 (за исключением сумасшедшего "cu"), используйте "echo".
    echo atz0 > /dev/modem
     echo ats0=0 > /dev/modem
     echo at&w0 > /dev/modem # и так далее
    А еще лучше gold, там есть режим прямой связи с любым портом.
  • В файле /etc/inittab иметь строчку вида:
    c3:234:respawn:/usr/lib/saf/ttymon -g -d /dev/modem -l contty
Дмитрий Ярцев
Дмитрий Ярцев
Россия
Игорь Зарубин
Игорь Зарубин
Россия