Страница:
порты. Это становится важным моментом, когда имеется только один
выводной порт для шести или семи человек. Опыт показывает, что если
вы не получите доступ к порту сразу, то вам прийдется ждать снова и
снова и вы не будете знать, как долго собирается текущий пользователь
занимать определенный порт. Вместо того чтобы терять время на
постоянную проверку занятости порта, почему бы не поручить машине
сообщить вам, когда этот порт освободится?
ЧТО ДЕЛАЕТ cuchk?
При вызове программы cuchk она запускается в фоновом режиме. Она
управляется бесконечным циклом, обеспечивающим ее работоспособность.
Программа cuchk наблюдает за системой, ведя поиск среди всех активных
процессов. Если она обнаруживает процесс cu (который может работать с
интересующим нас портом, а может и нет), она засыпает на 5 секунд и
снова ведет поиск. Если нет процессов cu, функционирующих на машине,
она выдает сообщение "cu is free" ("cu свободна") и завершается.
Таким образом, мы не обязаны вручную следить за работой cuchk, она
сама запускается и сама завершается. Это имеет смысл, поскольку вся
ценность этой утилиты свелась бы на нет, если бы ее саму нужно было
периодически проверять!
В строках 4-8 выполняется проверка на ошибки. Поскольку cuchk не
имеет никаких опций, в командной строке не должно быть никаких
параметров. Если параметры присутствуют, это считается ошибкой.
Строки 10-15 организуют вечный цикл while. Обратите внимание,
что амперсанд в строке 15 автоматически запускает cuchk в фоновом
режиме, ведь нет никакого резона выполнять эту программу в
приоритетном режиме.
В строке 12 выполняется команда "ps -e", которая выдает
информацию о состоянии всех значительных пользовательских процессов.
Эти данные пропускаются по конвейеру через fgrep. Утилита fgrep ищет
наличие символов "cu". Мы надеемся, что эти символы соответствуют
только процессам cu, которые мы ищем. Они могут, однако, относиться к
чему-то совершенно неожиданному, например "picuser" или к какому-то
аналогично построенному имени. Результат работы команды fgrep
направляется на устройство /dev/null, чтобы избавиться от лишней
информации. Нас интересует только статус завершения команды fgrep. Он
сообщает нам, найдено ли вхождение символов "cu" или нет.
В конце строки 12 присутствует символ обратной косой черты,
указывающий интерпретатору shell, что следующая физическая строчка
является на самом деле частью той же самой программной строки и что
нужно добавить ее к строке 12, а не выполнять самостоятельно.
Разбиение длинных строк на несколько меньших строк с помощью символов
обратной косой черты позволяет нам получать красиво оформленный,
более наглядный исходный код.
Строка 13 выполняется в том случае, если fgrep отработала
успешно (т.е. если она выдает нулевой статус завершения). Это
означает, что символы "cu" найдены, а значит процесс cu работает и в
настоящее время не доступен. Поэтому процесс cuchk засыпает на 5
секунд. Когда он пробуждается, выполнение продолжается со строки 10,
возобновляется вечный цикл и проверка процессов продолжается.
Если fgrep не находит символы "cu" (возвращается ненулевой
статус завершения), то выполняется строка 14, которая выдает
сообщение о том, что программа cu свободна, и работа программы
завершается. Таким образом, мы сразу же знаем, что линия cu открыта
для использования, поэтому мы можем поскорее занять ее.
----------------------------------------------------
ИМЯ: talk
----------------------------------------------------
talk Обращение к последовательному порту
Выполняет командную строку, подготавливающую последовательный
порт для общения с другой системой.
talk [-bBAUD] [-l] [-tTTY] [-u]
Опции:
-b установить новую скорость обмена
-l протоколировать все поступающие данные
-t использовать другой порт tty
-u использовать принятую в UNIX скорость обмена 9600
talk -b300 -t01 -l
Обратиться к последовательному порту tty01 на скорости 300 бод и
протоколировать выводные данные в текстовый файл.
1 :
2 # @(#) talk v1.0 Talk to the serial port Author: Russ Sage
Обращение к последовательному порту
4 BAUD="1200"
5 TTY="tty11"
6 PIPE=""
8 for ARG in $@
9 do
10 case $ARG in
11 -b*) BAUD="`echo $ARG|cut -c3-`";;
12 -l) echo "logging in /tmp/talk.$$"
13 PIPE="| tee /tmp/talk.$$";;
14 -t*) TTY="tty`echo $ARG|cut -c3-`";;
15 -u) BAUD="9600";;
16 *) echo "talk: invalid argument $ARG" >&2
17 echo "usage: talk [-bBAUD] [-l] [-tTTY] [-u]" >&2
18 echo " -b baud rate" >&2
19 echo " -l log the output" >&2
20 echo " -t use another tty" >&2
21 echo " -u 9600 baud to UNIX" >&2
22 exit 1;;
23 esac
24 done
26 eval cu -s$BAUD -l$TTY dir $PIPE
ARG Аргумент из командной строки
BAUD Скорость обмена, которую нужно указать программе cu
PIPE Содержит строку, создающую конвейер для захвата данных
TTY Номер используемого порта tty
ОПИСАНИЕ
ЗАЧЕМ НАМ НУЖЕН КОМАНДНЫЙ ФАЙЛ talk?
Регистрация в удаленной системе расширяет горизонты ваших
вычислительных возможностей. Учитывая, что UNIX становится все более
распространенной системой среди микро-ЭВМ, системы UNIX, пригодные
для связи, скоро будут везде. Кроме того, вы можете вызвать из вашей
системы UNIX много систем типа досок объявлений, функционирующих на
микро-ЭВМ.
Нам нужен хороший интерфейс для управления модемной линией и
облегчения ее использования. Нам необходимо захватывать данные, если
это возможно, изменять скорость обмена и менять терминальный порт,
если в этом есть потребность. Все это делает командный файл talk.
ЧТО ДЕЛАЕТ talk?
Программа talk генерирует командную строку, основанную на
подразумеваемой конфигурации. Эта конфигурация такова: 1200 бод,
подключение к терминальной линии /dev/tty11 (последовательный порт 1
в системе SCO XENIX), захват данных не производить. Все
подразумеваемые параметры можно изменить в тексте исходного файла, а
терминальная линия должна быть установлена с учетом специфики вашей
системы.
Если вы хотите изменить скорость обмена, укажите с помощью опции
-b нужную вам скорость (подразумевается, что это одна из стандартных
скоростей, поддерживаемых программой cu). Например,"talk -b2400"
устанавливает скорость 2400 бод. Указанная скорость передается
команде cu, которая непосредственно изменяет характеристики вашего
подключения.
Важно иметь в виду, что эта скорость должна быть определена в
файле L-devices.
Если вы хотите захватить все данные, выводимые на ваш экран,
включите опцию протоколирования, указав -l. Файл с захваченными
данными будет называться /tmp/talk.$$, где $$ - уникальный
идентификатора процесса вашего текущего интерпретатора shell. Это имя
выдается на экран при вызове данной опции, так что вы увидите его на
вашем экране. Уникальность имен файлов обеспечивается для того, чтобы
вы не потеряли по недосмотру регистрационные файлы от предыдущих
сеансов работы (или чтобы, по крайней мере, было очень мало шансов,
что это произойдет).
Если у вас факультативный последовательный порт с модемом или
если вы хотите подключаться к любой из возможных линий, примените
опцию -t. Вместе с этой опцией укажите номер tty, который будет затем
передан в команду cu. Это очень полезная опция, если у вас много
различных линий для использования cu.
Если вы не используете ваш последовательный порт для подключения
модема, а имеете прямое подсоединение к другой системе UNIX, опция -u
тотчас же установит скорость обмена 9600 бод. Заметим, что того же
эффекта можно было бы достичь, указав -b9600, но опцию -u проще
вводить и запоминать.
1. $ talk -l -t12
Подключиться к дополнительному последовательному порту и
захватывать данные, которые проходят на экране.
2. $ talk -u
Подключиться к основному последовательному порту с
использованием скорости 9600 бод. Не включать захват данных.
3. $ talk -b2400 -t04 -u
Внимание! Сначала опция -b устанавливает скорость 2400, но далее
следует опция -u, которая переустанавливает значение скорости на
9600.
4. $ talk -u -l -b4800
Снова будьте внимательны! Сначала линия подключается напрямую со
скоростью 9600 бод. Затем включается протоколирование. Наконец,
значение скорости меняется с 9600 на 4800. Если на самом деле линия,
к которой вы обращаетесь, работает на скорости 9600 бод, вы должны,
если это возможно, понизить скорость, нажимая ~%b для генерации
сигнала break.
В строках 4-6 устанавливаются действия, выполняемые программой
talk по умолчанию. Эти действия можно полностью изменить путем
редактирования исходного файла. Главное достоинство этих умолчаний в
том, что если такую конфигурацию вы используете чаще всего, то вам
достаточно просто ввести "talk", без всяких опций.
Строка 4 инициализирует переменную BAUD значением 1200, это
значение по умолчание для скорости модема. Строка 5 присваивает
переменной TTY значение tty11, что соответствует первому
последовательному порту аппаратуры. Обычно нужно tty00, но SCO XENIX
имеет виртуальную консоль, причем tty02-tty10 являются отдельными
экранами, доступ к которым осуществляется с одного консольного
устройства. Если это не так в вашей системе, укажите здесь правильное
значение TTY. В строке 6 переменная PIPE инициализируется пустой
строкой, так как конвейер применяется для протоколирования данных, а
по умолчанию захват данных не выполняется.
Строки 8-24 представляют собой цикл, который перебирает все
аргументы командной строки. В строках 10-23 используется оператор
выбора среди опций для выполнения требуемых функций.
Строка 11 проверяет, начинается ли данная опция с символов -b,
после которых следует что-то еще. Если да, то символы, следующие
после -b, вырезаются и заносятся в переменную BAUD. Обратите
внимание, что именно поэтому вы должны набирать "-b2400", а не "-b
2400".
В строке 12 проверяется, хотите ли вы включить протоколирование.
Если да, то на экран выводится имя протокольного файла, а переменная
PIPE устанавливается так, чтобы направить стандартный вывод по
конвейеру программе tee системы UNIX. Программа tee - это
универсальная конвейерная программа расщепления, которую можно
использовать для посылки копии потока данных в определенный пункт
назначения, не воздействуя на основной конвейер. В данном случае мы
применяем программу tee для посылки данных, проходящих через
последовательный порт, на экран и в наш регистрационный файл
/tmp/talk/.$$. (Если вы представите себе водяную трубу с T-образным
стыком, то поймете, что происходит.)
Строка 14 проверяет, начинается ли опция с -t. Если это так, то
вырезается номер терминала. Здесь можно передать любое значение tty,
но не забывайте, что этот номер tty должен также присутствовать в
файле /usr/lib/uucp/L-devices. Благодаря этому файлу, программа cu
знает, что терминальное устройство подключено к разрешенному порту.
В строке 15 проверяется, собираетесь ли вы подключаться к
системе UNIX напрямую. Если да, скорость обмена автоматически
устанавливается на 9600 бод в целях повышения пропускной способности
терминала.
Строки 16-22 выполняют проверку ошибок. Если какая-либо опция,
переданная в командной строке, не соответствует никакому из
предыдущих образцов оператора case, этот факт фиксируется здесь,
выдаются сообщения об ошибках и командный файл завершается.
Строка 26 - это волшебная строка. Поскольку все shell-переменные
получили свои значения, мы можем использовать их в командной строке,
чтобы подставить в нее необходимые значения. Сначала применяется
команда eval. Она раскрывает все имена переменных, заменяя их на
соответствующие значения.
В данном случае мы формируем полную командную строку утилиты cu:
скорость берется из переменной BAUD, линия из TTY, а подсоединение
прямое. Если мы не ведем протоколирование данных, значение PIPE
нулевое и оно будет отброшено при синтаксическом разборе. Если же
переменная PIPE содержит команду для отправки данных в протокольный
файл, команда eval обеспечивает это, организовывая такой конвейер,
как мы указали.
ДОСТУП ИЗ UNIX В UNIX
Теперь давайте рассмотрим полновесное общение двух систем UNIX.
Имеется область, в которой UNIX опередила свое время. Система uucp
позволяет связать несколько машин воедино и создать то, что в
некоторых отношениях является виртуальным окружением, позволяющим вам
работать на любой машине. Функционирование такой сети основано на
удаленной регистрации в системе (cu(1)), дистанционном выполнении
команд (uux(1)), электронной почте (mail(1)), передаче файлов
(uucp(1), uucico(1)) и опознавании узла системы (uname(1) и
uuname(1)).
Поскольку мы занимаемся реализацией коммуникаций типа UNIX-UNIX,
давайте рассмотрим некоторые способы физического соединения
UNIX-машин в одну рабочую среду.
СВЯЗЫВАНИЕ UNIX-МАШИН
В рабочей обстановке машинные конфигурации постоянно меняются в
целях тестирования, из-за аппаратных изменений, перестановок и
переездов и т.д. Планировать конфигурацию ваших машин нужно так,
чтобы она была максимально гибкой, это поможет избежать хаоса и
разлада.
Ваши потребности влияют на то, как вы соедините различные
UNIX-машины. Если имеется блок определения приоритетного запроса к
порту (port contender), вам приходится иметь с ним дело. Одни линии
могут быть подсоединены напрямую, другие напрямую через блок опреде-
ления приоритетного запроса к порту, третьи через модемные коммутато-
ры. Для того чтобы научиться иметь дело со всеми этими возможностями,
попробуем представить эти конфигурации в графическом виде.
Первый тип подключения - прямое подключение (см. рис. 8-7).
Слева показана вызывающая система, справа вызываемая. Вызывающая
система использует последовательный порт для вывода, поэтому на этом
порту не должно быть процесса getty. Инициирующая команда "cu -ltty00
-s9600 dir" обеспечивает подключение к последовательному порту tty00
на очень высокой скорости обмена. Прямые подсоединения могут
поддерживать такую скорость. Сам кабель должен быть выполнен в виде
нулевого модема (рассмотренного ранее в данной главе). В вызываемой
системе задействованы процессы getty, работающие со скоростью 9600
бод на входящей терминальной линии. Когда пользователь вводит
регистрационное имя, getty выполняет процесс login, запрашивающий
пароль, и если этот пароль верный, запускается shell.
Рис. 8-7. Прямое подключение одной системы UNIX к другой
-------------------------------------------------------------------
DTE-1 DTE-2
+---------+ +---------+
| | | |
| UNIX 1 | | UNIX 2 |
| | Нулевой модем | |
| tty00 |-------------------->| tty00 |
| | | |
| | | |
+---------+ +---------+
ДЕЙСТВИЯ ДЕЙСТВИЯ
1. Нет getty 1. getty 9600 tty00
cu -ltty00 -s9600 dir login имя_пользователя
sh
2. uucp файл 2. getty 9600 tty00
unix 2!~/user login uucp
uucico
-------------------------------------------------------------------
При использовании uucp происходят аналогичные вещи. Команда uucp
генерирует процесс uucico, инициирующий вызов системы, показанной
справа. Регистрационная последовательность та же самая, за
исключением того, что вместо запуска интерпретатора shell в конце
этой последовательности действий запускается еще один процесс uucico,
который общается с вызывающим процессом.
Следующая конфигурация - прямое подключение через селектор порта
- показана на рис. 8-8. Здесь тоже кабель, идущий от DTE-1 к
селектору порта, должен быть нулевым модемом.
Рис. 8-8. Прямое подключение через селектор порта
-------------------------------------------------------------------
+---------+ +----------+ +---------+
| | | | | |
| UNIX 1 | | | | UNIX 2 |
| | Нулевой | Селектор | Прямой | |
| tty00 |--------->| порта |-------->| tty00 |
| | модем | | кабель | |
| | | | | |
+---------+ +----------+ +---------+
ДЕЙСТВИЯ ДЕЙСТВИЯ
1. cu -ltty00 -s9600 dir 1. getty tty00 9600
login имя_пользователя
sh
2. uucp файл 2. getty 9600 tty00
unix 2!~/user login uucp
uucico
-------------------------------------------------------------------
Селектор порта принимает любое количество входных линий и
переключает их на меньшее количество фиксированных входных линий
компьютера. Таким образом, можно получить доступ ко всем терминалам,
не имея входной линии, которая часто бы пустовала, поскольку она
предназначена определенному лицу. Регистрационная последовательность
в точности такая же, как и для прямого подключения, кроме каких-либо
дополнительных нажатий на клавиши, применяемых для прохождения через
селектор. Обычно возврат каретки активизирует линию, чтобы получить
регистрационную подсказку.
Последняя конфигурация (на рис. 8-9) представляет собой
дистанционное подключение двух систем UNIX. Каждое терминальное
устройство DTE соединяется со своим модемом прямым кабелем. DTE-1
вызывает DTE-2 либо вручную с помощью cu, либо с помощью утилиты
uucp, использующей uucico и программу набора телефонного номера.
Самое большое отличие в том, что это подсоединение работает на
скорости 1200 бод. Это значит, что либо DTE-2 запускает 1200-бодовый
процесс getty, либо если getty имеет скорость 9600, то вам нужно
сбросить ее. Для того чтобы понизить скорость, в программе cu
требуется ввести ~%b в качестве сигнала break. Или, если вы работаете
с помощью uucp, можно поместить строку BREAK в файле L.sys, чтобы
отправить ее в вызванную систему.
Рис. 8-9. Дистанционное соединение двух систем UNIX
-------------------------------------------------------------------
+---------+ +---------+
| | | |
| UNIX 1 | ***** _||_ ***** | UNIX 2 |
| | Прямой * * _||_ * * Прямой | |
| tty00 |------->* модем *-- || --* модем *------->| tty00 |
| | кабель * * || * * кабель | |
| | ***** || ***** | |
+---------+ +---------+
ДЕЙСТВИЯ ДЕЙСТВИЯ
1. cu -ltty00 -s9600 dir 1. getty 1200 tty00
login имя_пользователя
sh
2. uucp файл 2. getty 1200 tty00
unix 2!~/user login uucp
uucico
-------------------------------------------------------------------
Когда вы пересылаете файлы между машинами, uucp придерживается
определенных протоколов и стандартов. Один из них связан с тем,
откуда и куда могут поступать файлы. Чтобы свести возможную
неразбериху к минимуму и обеспечить определенную степень защиты,
создаются защищенный и публичный каталоги для хранения стоящих в
очереди заданий и переданных файлов.
Наиболее важен каталог /usr/spool/uucp. Он содержит LOGFILE, что
дает возможность с помощью команды "tail -f LOGFILE" заглянуть в
операции передачи во время их выполнения. Транзакции uucp и mail
попадают в этот каталог. Обычно транзакция состоит из управляющего
файла (C.*) и файла данных (D.*). Когда одна машина используется в
качестве центрального узла, ее каталог uucp может заполниться очень
большим количеством файлов. Необходимо обычное сопровождение и
постоянное слежение за файлами занятости (LCK* и STST*), чтобы быть
уверенным, что все работает правильно.
Следующий интересный каталог /usr/spool/uucppublic, чаще всего
известный под названием PUBDIR (это shell-переменная). Он содержит
каталоги, названные по имени каждого пользователя, чтобы хранить
файлы, проходящие транзитом с одной машины на другую. Большинство
каталогов имеют все права доступа, что обеспечивает другим
пользователям возможность копировать файлы. Я посчитал полезным
создать переменную среды интерпретатора shell, которая содержит
маршрутный префикс моего каталога в /usr/spool/uucppublic, т.е.
P=/usr/spool/uucppublic/russ. Теперь я могу обращаться к файлам,
вводя $P/*. Это значительно сокращает ввод и упрощает пересылку
файлов в этот каталог и из него.
Переменная PUBDIR поддерживается синтаксисом uucp. В данном
примере используется синтаксис uucp:
$ uucp * remote!~/user
Эта команда копирует каждый файл текущего каталога в систему
"remote", затем обозначение ~/ превращается в префикс
/usr/spool/uucppublic. Если в этой команде user не является
каталогом, копируемые файлы получают имя user, а не копируются в
каталог с именем user. Вы должны сами создать каталог, после чего
применить к нему команду chmod 777, чтобы в него можно было
копировать. Для справки отметим, что указание ^user превращается
программой uucp в $HOME/user, а ^/user превращается uucp в
$PUBDIR/user.
Еще один способ ввода команды с помощью shell-переменных
выглядит так:
$ uucp * remote!$P
Такая команда копирует все файлы в мой каталог PUBDIR. Если я
зарегистрировался в этой системе, я могу ввести:
$ ls -al $P
или
$ cd $P
$ ls -al
для того, чтобы увидеть все скопированные файлы.
Один из моментов, за которым вы должны следить,- разрушительные
командные файлы типа "uuclean". Эти программы обычно запускаются
процессом cron или некоторыми другими фоновыми программами. Они
проходят по всем областям системы, связанным с uucp, находят файлы, к
которым не было обращений определенный период времени, и удаляют их.
Это может быть катастрофическим, если вы используете PUBDIR в
качестве временной области хранения. Вот как может выглядеть одна из
таких "очищающих" операций:
PATH=/usr/bin:/bin
export PATH
cd /usr/spool/uucp
find C. D. TM. X. XTMP -type f -mtime +7 -exec rm {} \;
cd /usr/spool/uucppublic
find . -type f -mtime +7 -exec rm {} \;
Если в вашей системе работают такие очищающие командные файлы,
имеется несколько способов сохранения файлов от неумышленного
уничтожения. Первый способ - постоянно обрабатывать все файлы
утилитой touch, чтобы они не распознавались оператором find, который
ищет старые файлы. Это можно сделать так:
$ find $P -exec touch {} \;
Утилита touch обновляет дату доступа и изменения файла. Фигурные
скобки означают, что нужно поместить в них литеральное имя,
соответствующее оператору find. Вам желательно оформить это в виде
запланированного процесса, который запускается чаще, чем программа
очистки!
Другая стратегия - проанализировать очищающую программу (или
командный файл). Она запускается суперпользователем (root)? Если нет,
то команда "chmod 000 $P" может помешать ей вести поиск имен внутри
моего каталога. Если же программа очистки запущена
суперпользователем, то, конечно, никакие ограничения прав доступа ее
не остановят. В какое время она запускается? Могу ли я приказать ей
пройти мимо меня, не заглядывая в мои файлы? Что является стартовым
каталогом для очищающего командного файла? Углубляясь в эти вопросы,
мы можем собрать много информации о том, что делает этот командный
файл и какие действия мы можем предпринять, чтобы он нам не навредил.
Может показаться, что самый легкий способ - просто удалить
программу очистки (в предположении, что вы имеете на это право). Это,
однако, не способствует поддержке свободного пространства и чистых
каталогов. К тому же если вы хотите запретить очистку каталогов,
которые очень важны для вас, то вы должны нести ответственность за их
сопровождение.
Каталог uucppublic, как мы уже видели, содержит файлы,
передаваемые транзитом между системами. Обычно все подкаталоги в
uucppublic имеют режим доступа rwxrwxrwx. Это сразу же порождает
проблему защиты, ведь кто угодно может создать, разрушить или
изменить файлы в этих каталогах.
Такие права доступа должны соблюдаться для любого каталога,
который является источником или адресатом для файлов, передаваемых с
помощью uucp. Uucp требует, чтобы все промежуточные каталоги имели
разрешение на чтение и запись для всех пользователей. Если uucp берет
из каталога исходные файлы, должны быть обеспечены права на чтение.
Если же uucp записывает файлы в этот каталог, нужны права на запись в
каталог-адресат. Если вы хотите, чтобы файлы uucp попадали прямо в
ваш регистрационный каталог, вы должны разрешить запись в ваш каталог
для всех окружающих.
Широко открытый доступ на запись позволяет доставлять файлы
прямо к вашему порогу, но вы не знаете, кому вы открываете двери.
Если вы заботитесь о безопасности, вам не пон ПРИЕМЫ П.
может записать все, что угодно, в ваше рабочее пространство. Одно из
решений - разблокировать ваш регистрационный каталог, но
заблокировать все ваши подкаталоги, кроме тех, которые нужны для
uucp. Основная проблема при этом - так установить все права доступа,
чтобы каждый файл обрабатывался надлежащим образом.
Более простое решение - держать ваши каталоги для uucp за
пределами вашего регистрационного дерева каталогов. Это избавляет вас
от проблемы безопасности, но означает, что вы должны вручную
копировать файлы после их попадания в каталог туда, где вы хотите их
фактически разместить.
Когда удаленная система регистрируется в центральной системе с
помощью uucp, несколько файлов в центральной системе определяют,
какие возможности имеет удаленная система. Эти конфигурационные файлы
размещаются в каталоге /usr/lib/uucp.
Первый из таких файлов называется L.cmds. Он содержит имена всех
команд центральной системы, которые можно выполнить из удаленной
системы. Если удаленная система посылает команду посредством uux, то
команда выполняется только при условии, что имя этой команды
присутствует в файле L.cmds.
Следующий файл - USERFILE - определяет, к каким каталогам
центральной системы может иметь доступ удаленная система. Вы можете
ограничить пересылки одним каталогом или разрешить доступ к любому
файлу системы. По умолчанию в файле USERFILE имеется такая запись:
uucp, /
что позволяет пользователю uucp (подразумеваемому пользовательскому
имени процесса uucico) читать и писать файлы в любом месте дерева,
выводной порт для шести или семи человек. Опыт показывает, что если
вы не получите доступ к порту сразу, то вам прийдется ждать снова и
снова и вы не будете знать, как долго собирается текущий пользователь
занимать определенный порт. Вместо того чтобы терять время на
постоянную проверку занятости порта, почему бы не поручить машине
сообщить вам, когда этот порт освободится?
ЧТО ДЕЛАЕТ cuchk?
При вызове программы cuchk она запускается в фоновом режиме. Она
управляется бесконечным циклом, обеспечивающим ее работоспособность.
Программа cuchk наблюдает за системой, ведя поиск среди всех активных
процессов. Если она обнаруживает процесс cu (который может работать с
интересующим нас портом, а может и нет), она засыпает на 5 секунд и
снова ведет поиск. Если нет процессов cu, функционирующих на машине,
она выдает сообщение "cu is free" ("cu свободна") и завершается.
Таким образом, мы не обязаны вручную следить за работой cuchk, она
сама запускается и сама завершается. Это имеет смысл, поскольку вся
ценность этой утилиты свелась бы на нет, если бы ее саму нужно было
периодически проверять!
В строках 4-8 выполняется проверка на ошибки. Поскольку cuchk не
имеет никаких опций, в командной строке не должно быть никаких
параметров. Если параметры присутствуют, это считается ошибкой.
Строки 10-15 организуют вечный цикл while. Обратите внимание,
что амперсанд в строке 15 автоматически запускает cuchk в фоновом
режиме, ведь нет никакого резона выполнять эту программу в
приоритетном режиме.
В строке 12 выполняется команда "ps -e", которая выдает
информацию о состоянии всех значительных пользовательских процессов.
Эти данные пропускаются по конвейеру через fgrep. Утилита fgrep ищет
наличие символов "cu". Мы надеемся, что эти символы соответствуют
только процессам cu, которые мы ищем. Они могут, однако, относиться к
чему-то совершенно неожиданному, например "picuser" или к какому-то
аналогично построенному имени. Результат работы команды fgrep
направляется на устройство /dev/null, чтобы избавиться от лишней
информации. Нас интересует только статус завершения команды fgrep. Он
сообщает нам, найдено ли вхождение символов "cu" или нет.
В конце строки 12 присутствует символ обратной косой черты,
указывающий интерпретатору shell, что следующая физическая строчка
является на самом деле частью той же самой программной строки и что
нужно добавить ее к строке 12, а не выполнять самостоятельно.
Разбиение длинных строк на несколько меньших строк с помощью символов
обратной косой черты позволяет нам получать красиво оформленный,
более наглядный исходный код.
Строка 13 выполняется в том случае, если fgrep отработала
успешно (т.е. если она выдает нулевой статус завершения). Это
означает, что символы "cu" найдены, а значит процесс cu работает и в
настоящее время не доступен. Поэтому процесс cuchk засыпает на 5
секунд. Когда он пробуждается, выполнение продолжается со строки 10,
возобновляется вечный цикл и проверка процессов продолжается.
Если fgrep не находит символы "cu" (возвращается ненулевой
статус завершения), то выполняется строка 14, которая выдает
сообщение о том, что программа cu свободна, и работа программы
завершается. Таким образом, мы сразу же знаем, что линия cu открыта
для использования, поэтому мы можем поскорее занять ее.
----------------------------------------------------
ИМЯ: talk
----------------------------------------------------
talk Обращение к последовательному порту
Выполняет командную строку, подготавливающую последовательный
порт для общения с другой системой.
talk [-bBAUD] [-l] [-tTTY] [-u]
Опции:
-b установить новую скорость обмена
-l протоколировать все поступающие данные
-t использовать другой порт tty
-u использовать принятую в UNIX скорость обмена 9600
talk -b300 -t01 -l
Обратиться к последовательному порту tty01 на скорости 300 бод и
протоколировать выводные данные в текстовый файл.
1 :
2 # @(#) talk v1.0 Talk to the serial port Author: Russ Sage
Обращение к последовательному порту
4 BAUD="1200"
5 TTY="tty11"
6 PIPE=""
8 for ARG in $@
9 do
10 case $ARG in
11 -b*) BAUD="`echo $ARG|cut -c3-`";;
12 -l) echo "logging in /tmp/talk.$$"
13 PIPE="| tee /tmp/talk.$$";;
14 -t*) TTY="tty`echo $ARG|cut -c3-`";;
15 -u) BAUD="9600";;
16 *) echo "talk: invalid argument $ARG" >&2
17 echo "usage: talk [-bBAUD] [-l] [-tTTY] [-u]" >&2
18 echo " -b baud rate" >&2
19 echo " -l log the output" >&2
20 echo " -t use another tty" >&2
21 echo " -u 9600 baud to UNIX" >&2
22 exit 1;;
23 esac
24 done
26 eval cu -s$BAUD -l$TTY dir $PIPE
ARG Аргумент из командной строки
BAUD Скорость обмена, которую нужно указать программе cu
PIPE Содержит строку, создающую конвейер для захвата данных
TTY Номер используемого порта tty
ОПИСАНИЕ
ЗАЧЕМ НАМ НУЖЕН КОМАНДНЫЙ ФАЙЛ talk?
Регистрация в удаленной системе расширяет горизонты ваших
вычислительных возможностей. Учитывая, что UNIX становится все более
распространенной системой среди микро-ЭВМ, системы UNIX, пригодные
для связи, скоро будут везде. Кроме того, вы можете вызвать из вашей
системы UNIX много систем типа досок объявлений, функционирующих на
микро-ЭВМ.
Нам нужен хороший интерфейс для управления модемной линией и
облегчения ее использования. Нам необходимо захватывать данные, если
это возможно, изменять скорость обмена и менять терминальный порт,
если в этом есть потребность. Все это делает командный файл talk.
ЧТО ДЕЛАЕТ talk?
Программа talk генерирует командную строку, основанную на
подразумеваемой конфигурации. Эта конфигурация такова: 1200 бод,
подключение к терминальной линии /dev/tty11 (последовательный порт 1
в системе SCO XENIX), захват данных не производить. Все
подразумеваемые параметры можно изменить в тексте исходного файла, а
терминальная линия должна быть установлена с учетом специфики вашей
системы.
Если вы хотите изменить скорость обмена, укажите с помощью опции
-b нужную вам скорость (подразумевается, что это одна из стандартных
скоростей, поддерживаемых программой cu). Например,"talk -b2400"
устанавливает скорость 2400 бод. Указанная скорость передается
команде cu, которая непосредственно изменяет характеристики вашего
подключения.
Важно иметь в виду, что эта скорость должна быть определена в
файле L-devices.
Если вы хотите захватить все данные, выводимые на ваш экран,
включите опцию протоколирования, указав -l. Файл с захваченными
данными будет называться /tmp/talk.$$, где $$ - уникальный
идентификатора процесса вашего текущего интерпретатора shell. Это имя
выдается на экран при вызове данной опции, так что вы увидите его на
вашем экране. Уникальность имен файлов обеспечивается для того, чтобы
вы не потеряли по недосмотру регистрационные файлы от предыдущих
сеансов работы (или чтобы, по крайней мере, было очень мало шансов,
что это произойдет).
Если у вас факультативный последовательный порт с модемом или
если вы хотите подключаться к любой из возможных линий, примените
опцию -t. Вместе с этой опцией укажите номер tty, который будет затем
передан в команду cu. Это очень полезная опция, если у вас много
различных линий для использования cu.
Если вы не используете ваш последовательный порт для подключения
модема, а имеете прямое подсоединение к другой системе UNIX, опция -u
тотчас же установит скорость обмена 9600 бод. Заметим, что того же
эффекта можно было бы достичь, указав -b9600, но опцию -u проще
вводить и запоминать.
1. $ talk -l -t12
Подключиться к дополнительному последовательному порту и
захватывать данные, которые проходят на экране.
2. $ talk -u
Подключиться к основному последовательному порту с
использованием скорости 9600 бод. Не включать захват данных.
3. $ talk -b2400 -t04 -u
Внимание! Сначала опция -b устанавливает скорость 2400, но далее
следует опция -u, которая переустанавливает значение скорости на
9600.
4. $ talk -u -l -b4800
Снова будьте внимательны! Сначала линия подключается напрямую со
скоростью 9600 бод. Затем включается протоколирование. Наконец,
значение скорости меняется с 9600 на 4800. Если на самом деле линия,
к которой вы обращаетесь, работает на скорости 9600 бод, вы должны,
если это возможно, понизить скорость, нажимая ~%b для генерации
сигнала break.
В строках 4-6 устанавливаются действия, выполняемые программой
talk по умолчанию. Эти действия можно полностью изменить путем
редактирования исходного файла. Главное достоинство этих умолчаний в
том, что если такую конфигурацию вы используете чаще всего, то вам
достаточно просто ввести "talk", без всяких опций.
Строка 4 инициализирует переменную BAUD значением 1200, это
значение по умолчание для скорости модема. Строка 5 присваивает
переменной TTY значение tty11, что соответствует первому
последовательному порту аппаратуры. Обычно нужно tty00, но SCO XENIX
имеет виртуальную консоль, причем tty02-tty10 являются отдельными
экранами, доступ к которым осуществляется с одного консольного
устройства. Если это не так в вашей системе, укажите здесь правильное
значение TTY. В строке 6 переменная PIPE инициализируется пустой
строкой, так как конвейер применяется для протоколирования данных, а
по умолчанию захват данных не выполняется.
Строки 8-24 представляют собой цикл, который перебирает все
аргументы командной строки. В строках 10-23 используется оператор
выбора среди опций для выполнения требуемых функций.
Строка 11 проверяет, начинается ли данная опция с символов -b,
после которых следует что-то еще. Если да, то символы, следующие
после -b, вырезаются и заносятся в переменную BAUD. Обратите
внимание, что именно поэтому вы должны набирать "-b2400", а не "-b
2400".
В строке 12 проверяется, хотите ли вы включить протоколирование.
Если да, то на экран выводится имя протокольного файла, а переменная
PIPE устанавливается так, чтобы направить стандартный вывод по
конвейеру программе tee системы UNIX. Программа tee - это
универсальная конвейерная программа расщепления, которую можно
использовать для посылки копии потока данных в определенный пункт
назначения, не воздействуя на основной конвейер. В данном случае мы
применяем программу tee для посылки данных, проходящих через
последовательный порт, на экран и в наш регистрационный файл
/tmp/talk/.$$. (Если вы представите себе водяную трубу с T-образным
стыком, то поймете, что происходит.)
Строка 14 проверяет, начинается ли опция с -t. Если это так, то
вырезается номер терминала. Здесь можно передать любое значение tty,
но не забывайте, что этот номер tty должен также присутствовать в
файле /usr/lib/uucp/L-devices. Благодаря этому файлу, программа cu
знает, что терминальное устройство подключено к разрешенному порту.
В строке 15 проверяется, собираетесь ли вы подключаться к
системе UNIX напрямую. Если да, скорость обмена автоматически
устанавливается на 9600 бод в целях повышения пропускной способности
терминала.
Строки 16-22 выполняют проверку ошибок. Если какая-либо опция,
переданная в командной строке, не соответствует никакому из
предыдущих образцов оператора case, этот факт фиксируется здесь,
выдаются сообщения об ошибках и командный файл завершается.
Строка 26 - это волшебная строка. Поскольку все shell-переменные
получили свои значения, мы можем использовать их в командной строке,
чтобы подставить в нее необходимые значения. Сначала применяется
команда eval. Она раскрывает все имена переменных, заменяя их на
соответствующие значения.
В данном случае мы формируем полную командную строку утилиты cu:
скорость берется из переменной BAUD, линия из TTY, а подсоединение
прямое. Если мы не ведем протоколирование данных, значение PIPE
нулевое и оно будет отброшено при синтаксическом разборе. Если же
переменная PIPE содержит команду для отправки данных в протокольный
файл, команда eval обеспечивает это, организовывая такой конвейер,
как мы указали.
ДОСТУП ИЗ UNIX В UNIX
Теперь давайте рассмотрим полновесное общение двух систем UNIX.
Имеется область, в которой UNIX опередила свое время. Система uucp
позволяет связать несколько машин воедино и создать то, что в
некоторых отношениях является виртуальным окружением, позволяющим вам
работать на любой машине. Функционирование такой сети основано на
удаленной регистрации в системе (cu(1)), дистанционном выполнении
команд (uux(1)), электронной почте (mail(1)), передаче файлов
(uucp(1), uucico(1)) и опознавании узла системы (uname(1) и
uuname(1)).
Поскольку мы занимаемся реализацией коммуникаций типа UNIX-UNIX,
давайте рассмотрим некоторые способы физического соединения
UNIX-машин в одну рабочую среду.
СВЯЗЫВАНИЕ UNIX-МАШИН
В рабочей обстановке машинные конфигурации постоянно меняются в
целях тестирования, из-за аппаратных изменений, перестановок и
переездов и т.д. Планировать конфигурацию ваших машин нужно так,
чтобы она была максимально гибкой, это поможет избежать хаоса и
разлада.
Ваши потребности влияют на то, как вы соедините различные
UNIX-машины. Если имеется блок определения приоритетного запроса к
порту (port contender), вам приходится иметь с ним дело. Одни линии
могут быть подсоединены напрямую, другие напрямую через блок опреде-
ления приоритетного запроса к порту, третьи через модемные коммутато-
ры. Для того чтобы научиться иметь дело со всеми этими возможностями,
попробуем представить эти конфигурации в графическом виде.
Первый тип подключения - прямое подключение (см. рис. 8-7).
Слева показана вызывающая система, справа вызываемая. Вызывающая
система использует последовательный порт для вывода, поэтому на этом
порту не должно быть процесса getty. Инициирующая команда "cu -ltty00
-s9600 dir" обеспечивает подключение к последовательному порту tty00
на очень высокой скорости обмена. Прямые подсоединения могут
поддерживать такую скорость. Сам кабель должен быть выполнен в виде
нулевого модема (рассмотренного ранее в данной главе). В вызываемой
системе задействованы процессы getty, работающие со скоростью 9600
бод на входящей терминальной линии. Когда пользователь вводит
регистрационное имя, getty выполняет процесс login, запрашивающий
пароль, и если этот пароль верный, запускается shell.
Рис. 8-7. Прямое подключение одной системы UNIX к другой
-------------------------------------------------------------------
DTE-1 DTE-2
+---------+ +---------+
| | | |
| UNIX 1 | | UNIX 2 |
| | Нулевой модем | |
| tty00 |-------------------->| tty00 |
| | | |
| | | |
+---------+ +---------+
ДЕЙСТВИЯ ДЕЙСТВИЯ
1. Нет getty 1. getty 9600 tty00
cu -ltty00 -s9600 dir login имя_пользователя
sh
2. uucp файл 2. getty 9600 tty00
unix 2!~/user login uucp
uucico
-------------------------------------------------------------------
При использовании uucp происходят аналогичные вещи. Команда uucp
генерирует процесс uucico, инициирующий вызов системы, показанной
справа. Регистрационная последовательность та же самая, за
исключением того, что вместо запуска интерпретатора shell в конце
этой последовательности действий запускается еще один процесс uucico,
который общается с вызывающим процессом.
Следующая конфигурация - прямое подключение через селектор порта
- показана на рис. 8-8. Здесь тоже кабель, идущий от DTE-1 к
селектору порта, должен быть нулевым модемом.
Рис. 8-8. Прямое подключение через селектор порта
-------------------------------------------------------------------
+---------+ +----------+ +---------+
| | | | | |
| UNIX 1 | | | | UNIX 2 |
| | Нулевой | Селектор | Прямой | |
| tty00 |--------->| порта |-------->| tty00 |
| | модем | | кабель | |
| | | | | |
+---------+ +----------+ +---------+
ДЕЙСТВИЯ ДЕЙСТВИЯ
1. cu -ltty00 -s9600 dir 1. getty tty00 9600
login имя_пользователя
sh
2. uucp файл 2. getty 9600 tty00
unix 2!~/user login uucp
uucico
-------------------------------------------------------------------
Селектор порта принимает любое количество входных линий и
переключает их на меньшее количество фиксированных входных линий
компьютера. Таким образом, можно получить доступ ко всем терминалам,
не имея входной линии, которая часто бы пустовала, поскольку она
предназначена определенному лицу. Регистрационная последовательность
в точности такая же, как и для прямого подключения, кроме каких-либо
дополнительных нажатий на клавиши, применяемых для прохождения через
селектор. Обычно возврат каретки активизирует линию, чтобы получить
регистрационную подсказку.
Последняя конфигурация (на рис. 8-9) представляет собой
дистанционное подключение двух систем UNIX. Каждое терминальное
устройство DTE соединяется со своим модемом прямым кабелем. DTE-1
вызывает DTE-2 либо вручную с помощью cu, либо с помощью утилиты
uucp, использующей uucico и программу набора телефонного номера.
Самое большое отличие в том, что это подсоединение работает на
скорости 1200 бод. Это значит, что либо DTE-2 запускает 1200-бодовый
процесс getty, либо если getty имеет скорость 9600, то вам нужно
сбросить ее. Для того чтобы понизить скорость, в программе cu
требуется ввести ~%b в качестве сигнала break. Или, если вы работаете
с помощью uucp, можно поместить строку BREAK в файле L.sys, чтобы
отправить ее в вызванную систему.
Рис. 8-9. Дистанционное соединение двух систем UNIX
-------------------------------------------------------------------
+---------+ +---------+
| | | |
| UNIX 1 | ***** _||_ ***** | UNIX 2 |
| | Прямой * * _||_ * * Прямой | |
| tty00 |------->* модем *-- || --* модем *------->| tty00 |
| | кабель * * || * * кабель | |
| | ***** || ***** | |
+---------+ +---------+
ДЕЙСТВИЯ ДЕЙСТВИЯ
1. cu -ltty00 -s9600 dir 1. getty 1200 tty00
login имя_пользователя
sh
2. uucp файл 2. getty 1200 tty00
unix 2!~/user login uucp
uucico
-------------------------------------------------------------------
Когда вы пересылаете файлы между машинами, uucp придерживается
определенных протоколов и стандартов. Один из них связан с тем,
откуда и куда могут поступать файлы. Чтобы свести возможную
неразбериху к минимуму и обеспечить определенную степень защиты,
создаются защищенный и публичный каталоги для хранения стоящих в
очереди заданий и переданных файлов.
Наиболее важен каталог /usr/spool/uucp. Он содержит LOGFILE, что
дает возможность с помощью команды "tail -f LOGFILE" заглянуть в
операции передачи во время их выполнения. Транзакции uucp и mail
попадают в этот каталог. Обычно транзакция состоит из управляющего
файла (C.*) и файла данных (D.*). Когда одна машина используется в
качестве центрального узла, ее каталог uucp может заполниться очень
большим количеством файлов. Необходимо обычное сопровождение и
постоянное слежение за файлами занятости (LCK* и STST*), чтобы быть
уверенным, что все работает правильно.
Следующий интересный каталог /usr/spool/uucppublic, чаще всего
известный под названием PUBDIR (это shell-переменная). Он содержит
каталоги, названные по имени каждого пользователя, чтобы хранить
файлы, проходящие транзитом с одной машины на другую. Большинство
каталогов имеют все права доступа, что обеспечивает другим
пользователям возможность копировать файлы. Я посчитал полезным
создать переменную среды интерпретатора shell, которая содержит
маршрутный префикс моего каталога в /usr/spool/uucppublic, т.е.
P=/usr/spool/uucppublic/russ. Теперь я могу обращаться к файлам,
вводя $P/*. Это значительно сокращает ввод и упрощает пересылку
файлов в этот каталог и из него.
Переменная PUBDIR поддерживается синтаксисом uucp. В данном
примере используется синтаксис uucp:
$ uucp * remote!~/user
Эта команда копирует каждый файл текущего каталога в систему
"remote", затем обозначение ~/ превращается в префикс
/usr/spool/uucppublic. Если в этой команде user не является
каталогом, копируемые файлы получают имя user, а не копируются в
каталог с именем user. Вы должны сами создать каталог, после чего
применить к нему команду chmod 777, чтобы в него можно было
копировать. Для справки отметим, что указание ^user превращается
программой uucp в $HOME/user, а ^/user превращается uucp в
$PUBDIR/user.
Еще один способ ввода команды с помощью shell-переменных
выглядит так:
$ uucp * remote!$P
Такая команда копирует все файлы в мой каталог PUBDIR. Если я
зарегистрировался в этой системе, я могу ввести:
$ ls -al $P
или
$ cd $P
$ ls -al
для того, чтобы увидеть все скопированные файлы.
Один из моментов, за которым вы должны следить,- разрушительные
командные файлы типа "uuclean". Эти программы обычно запускаются
процессом cron или некоторыми другими фоновыми программами. Они
проходят по всем областям системы, связанным с uucp, находят файлы, к
которым не было обращений определенный период времени, и удаляют их.
Это может быть катастрофическим, если вы используете PUBDIR в
качестве временной области хранения. Вот как может выглядеть одна из
таких "очищающих" операций:
PATH=/usr/bin:/bin
export PATH
cd /usr/spool/uucp
find C. D. TM. X. XTMP -type f -mtime +7 -exec rm {} \;
cd /usr/spool/uucppublic
find . -type f -mtime +7 -exec rm {} \;
Если в вашей системе работают такие очищающие командные файлы,
имеется несколько способов сохранения файлов от неумышленного
уничтожения. Первый способ - постоянно обрабатывать все файлы
утилитой touch, чтобы они не распознавались оператором find, который
ищет старые файлы. Это можно сделать так:
$ find $P -exec touch {} \;
Утилита touch обновляет дату доступа и изменения файла. Фигурные
скобки означают, что нужно поместить в них литеральное имя,
соответствующее оператору find. Вам желательно оформить это в виде
запланированного процесса, который запускается чаще, чем программа
очистки!
Другая стратегия - проанализировать очищающую программу (или
командный файл). Она запускается суперпользователем (root)? Если нет,
то команда "chmod 000 $P" может помешать ей вести поиск имен внутри
моего каталога. Если же программа очистки запущена
суперпользователем, то, конечно, никакие ограничения прав доступа ее
не остановят. В какое время она запускается? Могу ли я приказать ей
пройти мимо меня, не заглядывая в мои файлы? Что является стартовым
каталогом для очищающего командного файла? Углубляясь в эти вопросы,
мы можем собрать много информации о том, что делает этот командный
файл и какие действия мы можем предпринять, чтобы он нам не навредил.
Может показаться, что самый легкий способ - просто удалить
программу очистки (в предположении, что вы имеете на это право). Это,
однако, не способствует поддержке свободного пространства и чистых
каталогов. К тому же если вы хотите запретить очистку каталогов,
которые очень важны для вас, то вы должны нести ответственность за их
сопровождение.
Каталог uucppublic, как мы уже видели, содержит файлы,
передаваемые транзитом между системами. Обычно все подкаталоги в
uucppublic имеют режим доступа rwxrwxrwx. Это сразу же порождает
проблему защиты, ведь кто угодно может создать, разрушить или
изменить файлы в этих каталогах.
Такие права доступа должны соблюдаться для любого каталога,
который является источником или адресатом для файлов, передаваемых с
помощью uucp. Uucp требует, чтобы все промежуточные каталоги имели
разрешение на чтение и запись для всех пользователей. Если uucp берет
из каталога исходные файлы, должны быть обеспечены права на чтение.
Если же uucp записывает файлы в этот каталог, нужны права на запись в
каталог-адресат. Если вы хотите, чтобы файлы uucp попадали прямо в
ваш регистрационный каталог, вы должны разрешить запись в ваш каталог
для всех окружающих.
Широко открытый доступ на запись позволяет доставлять файлы
прямо к вашему порогу, но вы не знаете, кому вы открываете двери.
Если вы заботитесь о безопасности, вам не пон ПРИЕМЫ П.
может записать все, что угодно, в ваше рабочее пространство. Одно из
решений - разблокировать ваш регистрационный каталог, но
заблокировать все ваши подкаталоги, кроме тех, которые нужны для
uucp. Основная проблема при этом - так установить все права доступа,
чтобы каждый файл обрабатывался надлежащим образом.
Более простое решение - держать ваши каталоги для uucp за
пределами вашего регистрационного дерева каталогов. Это избавляет вас
от проблемы безопасности, но означает, что вы должны вручную
копировать файлы после их попадания в каталог туда, где вы хотите их
фактически разместить.
Когда удаленная система регистрируется в центральной системе с
помощью uucp, несколько файлов в центральной системе определяют,
какие возможности имеет удаленная система. Эти конфигурационные файлы
размещаются в каталоге /usr/lib/uucp.
Первый из таких файлов называется L.cmds. Он содержит имена всех
команд центральной системы, которые можно выполнить из удаленной
системы. Если удаленная система посылает команду посредством uux, то
команда выполняется только при условии, что имя этой команды
присутствует в файле L.cmds.
Следующий файл - USERFILE - определяет, к каким каталогам
центральной системы может иметь доступ удаленная система. Вы можете
ограничить пересылки одним каталогом или разрешить доступ к любому
файлу системы. По умолчанию в файле USERFILE имеется такая запись:
uucp, /
что позволяет пользователю uucp (подразумеваемому пользовательскому
имени процесса uucico) читать и писать файлы в любом месте дерева,