ОГРАНИЧИТЕЛЬНЫЕ ФАЙЛЫ
Когда удаленная система регистрируется в центральной системе с помощью 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