Рассел Сейдж. Приемы профессиональной работы в unix перевод "Tricks of the unix masters" by Russel G
Вид материала | Документы |
СодержаниеДействия действия Действия действия Действия действия Области для передаваемых файлов Сетевая безопасность Ограничительные файлы Отладка коммуникаций Формат вызова |
- Лекция 10. Файловые системы Unix, 116.79kb.
- Unix-подобные операционные системы, характеристики, особенности, разновидности, 40.63kb.
- Методические материалы, 3002.45kb.
- Курс для опытных администраторов unix, 67.69kb.
- Министерство Образования Российской Федерации. Юургу курсовая, 383.18kb.
- Программа курса «unix», 18.71kb.
- Лабораторная работа №1. Командный интерпретатор, 418.36kb.
- The design of the unix operating system by Maurice, 9215.6kb.
- Разработка автоматизированной системы мониторинга аппаратного и программного обеспечения, 20.06kb.
- Лекція 6 "Інформатика та комп'ютерна техніка" Тема Сервісні та прикладні програми Види, 55.04kb.
ДЕЙСТВИЯ ДЕЙСТВИЯ
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) читать и писать файлы в любом месте дерева,
начиная от корня и двигаясь вниз, т.е. фактически во всей системе.
Это открывает лазейки в системе защиты, например:
uucp central!/etc/passwd /tmp
Здесь извлекается парольный файл из другой системы. С помощью
этого файла можно найти имена пользователей без паролей, и другие
люди могут прорваться в вашу систему. Более строгий файл USERFILE
выглядит так:
uucp /usr/spool/uucppublic /tmp
что ограничивает файловые пересылки только указанными каталогами. Это
препятствует предыдущей попытке пересылки парольного файла.
Последний файл L.sys, вероятно, наиболее важен для uucp с точки
зрения системы защиты. Он содержит имена узлов, телефонные номера,
регистрационные имена и пароли для всех удаленных систем, известных
центральной системе. Если бы какая-то часть этой информации была
доступна широкой публике, кто-нибудь смог бы выполнить пересылку с
помощью uucp из удаленной системы и претендовать на роль центральной
системы. Новая система HoneyDanber uucp в System V кое-что делает для
того, чтобы не давать удаленным системам перехватывать почту и
пересылки данных путем маскировки под другие удаленные системы. В
главе 9 более подробно рассматриваются вопросы безопасности программы
uucp и коммуникаций вообще.
В следующем примере показан файл L.sys, в котором определены два
разных вида систем: системы типа прямого подключения и удаленные
системы с номеронабирателем (dial-up systems).
remote Any ACU 1200 5551212 ogin:--ogin: uucp word: uucp
selector Any ACU 1200 5551213 \d--CLASS--CLASS A ogin:--ogin: uucp word:
uucp
direct Any tty00 9600 tty00 ogin:-@-ogin: uucp word: uucp
Запись для системы "remote" отражает, что это линия с набором
номера, может быть вызвана произвольное число раз ("any time"),
доступна через ACU (automatic call unit - автоматическое устройство
вызова) со скоростью 1200 бод и по номеру 5551212. Регистрационная
последовательность определена в виде регистрационного имени uucp и
пароля uucp. Слово "ogin" - не опечатка. Uucp использует подсказку
"ogin:" для того, чтобы отличить ее от обычной подсказки login
системы UNIX. Распознавание шаблона "ogin:" более надежно, чем
использование "Login:" или "login:".
Указание "Any" можно заменить на определенные интервалы времени,
если 24-часовый доступ не разрешен. Заметим, что обозначение "ACU"
соответствует записи ACU в файле L-devices (как рассмотрено ранее). В
следующей записи файла L-devices имена cua0 и cul0 связаны с
устройством, присоединенным к модему, в данном случае /dev/tty00:
ACU cul0 cua0 1200
Эту связь можно проверить с помощью команды "ls -li /dev/tty*
/dev/cul* /dev/cua*".
Система "selector" в нашем файле L.sys также имеет набор номера,
только подключается через коммутатор порта. Для общения с
коммутатором порта необходима дополнительная информация, которая
начинается с символов "\d". Поля в файле L.sys следуют в таком
порядке: "ожидание посылка ожидание посылка ...". Когда мы в первый
раз подключаемся к селектору порта, в нашу линию ничего не выводится.
Просто он так работает. Селектору нужен символ , чтобы стать
активным, а первое поле uucp означает ожидание. Как нам ничего не
дождаться и послать возврат каретки? Путем указания uucp ожидать
невозможный символ, например control-D (\d). Uucp никогда не получит
его, поэтому по тайм-ауту эта программа выдаст возврат каретки (-).
Если слово CLASS приходит назад, когда мы посылаем CR, то мы
отправляем символ "A", который означает класс системной
идентификации, указанный в данной записи. Когда связь
устанавливается, мы ищем "ogin:" в качестве регистрационной
подсказки. Если мы не находим ее, то посылаем символы возврата
каретки. Это может потребоваться по той причине, что инициирующий
процесс getty в системе A может быть настроен на 9600 бод. Тогда мы
должны будем послать либо символы возврата каретки, либо символы
break, чтобы сбросить скорость обмена до 1200 бод.
Последняя системная запись "direct" не использует ACU и
телефонный номер. Она собирается обращаться к терминальной линии
tty00 на скорости 9600 бод, чтобы получить регистрационную
последовательность. Здесь нет селектора порта, через который нужно
пройти, а есть просто прямая линия. В файле L-devices эта линия
описана так:
DIR tty00 0 9600
ОТЛАДКА КОММУНИКАЦИЙ
В тех случаях, когда uucp работает неправильно, можно
воспользоваться некоторыми хитростями отладки. Последовательность
действий по отладке обычно проходит по такому циклу: попытаться
передать файл, локализовать проблему, разрешить ее, сделать еще одну
передачу. Здесь мы рассмотрим локализацию проблемы и выполнение еще
одной пересылки.
Если после проверки и перепроверки всех конфигурационных файлов
имеют место отказы при передаче файлов, запустите вручную программу
/usr/lib/uucico с некоторыми активными отладочными флагами. Они
помогут увидеть, как происходит рукопожатие. Вот командная строка для
отладочного режима:
/usr/lib/uucp/uucico -r1 -x9 -ssystem_name
где r1 указывает программе uucico стартовать в ведущем (master)
режиме, вызывая system_name, а x9 указывает уровень отладочных
сообщений. Если вы хотите получать от uucico поменьше подробностей,
можете понизить уровень отладки до x4 или другого значения.
Отладочный вывод варьируется в диапазоне от x1 до x9.
Типичная последовательность для этой команды выглядит так. Во
-первых, поставить некоторые файлы в очередь для того, чтобы
направить их в другую систему. Благодаря постановке файлов в очередь,
вы избегаете автоматического запуска процесса uucico. После того как
файлы поставлены в очередь и готовы к передаче, запустите отладочный
режим и следите за происходящим. Это выглядит примерно так:
------------------------------------------------------------------------
|
| $ uucp -r *.c remote!~/src
| $ /usr/lib/uucp/uucico -r1 -x4 -sremote
|
Если вам нужно только активизировать передачу с помощью uucp в
обычном режиме, то проще всего применить команду mail. Направьте
почтой некоторый текст пользователю другой системы - и механизм uucp
сразу же начнет работу. Следующая команда приводит к тому, что этот
механизм вызывает систему "remote" и запускает утилиту rmai(1) в
другой системе, чтобы передать по почте файл "dummy" пользователю
"user":
$ mail remote!user < dummy
Есть команда, которая явно вызывает /usr/lib/uucp/uucico - это
команда uusub(1M), размещенная в каталоге /usr/lib/uucp. Она
вызывается с указанием имени системы, с которой вы хотите связаться.
Большинство систем имеют такую команду. Если у вас ее нет,
пользуйтесь uucico. Если такая команда есть, вы имеете еще один
способ запуска uucico. Синтаксис выглядит так:
$ /usr/lib/uucp/uusub -c system
Теперь когда мы знаем, как использовать все эти команды вручную,
мы можем рассмотреть некоторые инструментальные средства,
автоматизирующие большую часть вашей работы с uucp.
------------------------------------------------------------------------
ИМЯ: uust
------------------------------------------------------------------------
uust Состояние uucp и служебные действия
НАЗНАЧЕНИЕ
Предоставляет управляемый с помощью меню доступ ко многим
служебным функциям, связанным с утилитой uucp и передачей файлов.
ФОРМАТ ВЫЗОВА
uust
Опции меню:
c - подключиться к другой системе в отладочном режиме
d - показать файлы в вашем каталоге PUBDIR
f - длинноформатный список файлов в каталоге подкачки
(spool directory)
l - динамически отображать регистрационный файл
r - повторное подключение к другой системе
s - дать пользователю сводку о транзакциях