Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lr3.doc
Скачиваний:
9
Добавлен:
09.11.2019
Размер:
217.09 Кб
Скачать

Описание протокола Finger

Finger является простым протоколом (RFC-1288), который служит для получения информации о пользователях узлов Internet. Протокол использует TCP-порт 79. Команда Finger может дать вам данные о списке пользователей, которые работают в данный момент на интересующей вас ЭВМ, о конкретном пользователе (дата последнего сеанса входа в систему и т.д.), о списке загруженных задач, о типах интерфейсов (например, терминалов). Данный протокол обеспечивает интерфейс для удаленной информационной программы пользователя (RUIP - Remote User Information Program).

Первоначальная версия такой программы была написана Les Earnest. Окончательная версия протокола была подготовлена Earl Killian из Мессачусетского Технологического Института и Brian Harvey (SAIL).

Протокол Finger базируется на TCP. Локальная ЭВМ осуществляет TCP-соединение с удаленным узлом через указанный порт. После этого становится доступной программа RUIP и пользователь может посылать ей свои запросы. Каждый запрос представляет собой строку текста. RUIP, получив запрос, анализирует его и присылает ответ, после чего соединение закрывается.

Любые пересылаемые данные должны иметь формат ASCII, не иметь контроля по четности и каждая строка должна завершаться последовательностью CRLF (ASCII 13, за которым следует ASCII 10).

Программа RUIP должна воспринимать любые запросы Finger. Такие запросы могут иметь следующий формат:

{Q1} ::= [{W}|{W}{S}{U}]{C} {Q2} ::= [{W}{S}][{U}]{H}{C}

где {U} ::= имя_пользователя

{H} ::= @hostname | @hostname{H} {W} ::= /W {S} ::= | {S} {C} ::=

{H}, является рекурсивным, по этой причине не существует каких-либо ограничений на число лексем типа @hostname в запросе. В примере спецификации {Q2}, число лексем @hostname не может превышать двух.

Следует иметь в виду, что в случае запросов "finger user@host". Программа RUIP в действительности получит "user".

Запрос {Q2} требует переадресации запроса другой программе RUIP. Программа RUIP может либо осуществить эту процедуру, либо отказать в переадресации. В случае выполнения запроса она должна это подтвердить:

Сообщая, что:

ЭВМ <H1> открывает соединение Finger <F1-2> с RUIP на ЭВМ <H2>.

<H1> выдает <H2> RUIP запрос <Q1-2> типа {Q2} (например, FOO@HOST1@HOST2).

При этом следует извлечь информацию о том, что:

ЭВМ <H2> является самой правой ЭВМ в запросе <Q1-2> (например, HOST2)

Запрос <Q2-3> является остатком запроса <Q1-2> после удаления правой части "@hostname" (например, FOO@HOST1)

Таким образом:

<H2> RUIP должна открыть соединение <F2-3> с <H3>, используя <Q2-3>. <H2> RUIP должна прислать любую информацию, посланную от <F2-3> к <H1> через <F1-2> . <H2> RUIP должна закрыть <F1-2> в нормальных обстоятельствах только когда <H3> RUIP закрывает <F2-3> .

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

Запрос {C} требует выдачи списка всех работающих пользователей. RUIP должна либо ответить, либо активно отказаться. Если она отвечает, тогда она должна выдать, по крайней мере, полные имена пользователей. Системный администратор может включить в выдачу и другую полезную информацию, такую как:

Положение терминала

Расположение офиса

Рабочий номер телефона

Должность

Время пребывания в пассивном состоянии (число минут с момента ввода последнего символа или со времени завершения последней сессии).

Запрос {U}{C} является требованием присылки информации о статусе определенного пользователя {U}. Если вы не хотите выдавать такую информацию, тогда следует заблокировать работу Finger.

Ответ должен включать в себя полное имя пользователя. Если пользователь активно работает в сети, то присылаемые данные должны включать, по крайней мере, тот же объем информации что и при запросе {C}.

Так как это запрос информации об отдельном пользователе, администратор может добавить определенную информации об этом человеке, например:

Расположение офиса

Рабочий номер телефона

Номер домашнего телефона

Статус работы в системе (not logged in, logout time, и т.д.)

Информационный файл пользователя

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

При запросе Finger существует возможность запуска определенной программы пользователя. Если такая опция предусмотрена, системному администратору должно быть позволено запрещать эту процедуру. Данная опция, создавая определенные угрозы, практически беспредельно расширяет возможности Finger (см. примеры в конце раздела).

В командной строке допустимо имя пользователя или имя, под которым он входит в систему. Если имя неопределенно, реакция системы определяется системным администратором.

Лексема /W в запросе типа {Q1} или {Q2} в лучшем случае интерпретируется последней RUIP и означает требование выдачи максимально возможной информации о пользователе, в худшем случае она игнорируется.

Продающие автоматы должны реагировать на запрос {C} выдачей списка всех предметов, предлагаемых для продажи в данный момент Продающие автоматы должны откликаться на запросы {U}{C}, сообщая число различных продуктов или отделений для размещения продуктов.

Корректная реализация Finger крайне важна. В частности, RUIP должна защищать себя от некорректного ввода. Конкретная реализация программы должна проходить столь же тщательную проверку, как Telnet, FTP или SMTP.

Следует учитывать, что Finger раскрывает информацию о пользователях. Лица, ответственные за сетевую безопасность, должны решить разрешать или нет работу Finger, и какую информацию о пользователях следует рассылать.

Сетевой администратор должен иметь возможность разрешать и запрещать прохождение запросов {Q2}. Если обработка запросов {Q2} RUIP заблокировано, программа должна отсылать соответствующее сообщение (например, "Finger forwarding service denied"). По умолчанию обработка запросов {Q2} должна быть запрещена.

Программа RUIP при отправке данных должна отфильтровывать все символы вне диапазона (ASCII 32 - ASCII 126), за исключением TAB (ASCII 9) и CRLF. Такая мера обезопасит получателя.

Примеры реализации запросов.

Узел: elbereth.rutgers.edu

Командная строка: <CRLF>

Login Name TTY Idle When Office rinehart Mark J.Rinehart p0 1:11 Mon 12:15 019 Hill x3166 greenfie Stephen J.Greenfiel p1 Mon 15:46 542 Hill x3074 rapatel Rocky - Rakesh Patel p3 4d Thu 00:58 028 Hill x2287 pleasant Mel Pleasant p4 3d Thu 21:32 019 Hill 908-932- dphillip Dave Phillips p5 021: Sun 18:24 265 Hill x3792 dmk David Katinsky p6 2d Thu 14:11 028 Hill x2492 cherniss Cary Cherniss p7 5 Mon 15:42 127 Psychol x2008 harnaga Doug Harnaga p8 2:01 Mon 10:15 055 Hill x2351 brisco Thomas P.Brisco pe 2:09 Mon 13:37 h055 x2351 laidlaw Angus Laidlaw q0 1:55 Mon 11:26 E313C 648-5592 cje Chris Jarocha-Ernst q1 8 Mon 13:43 259 Hill x2413 Узел: dimacs.rutgers.edu Командная строка: pirmann<CRLF> Login name: pirmann In real life: David Pirmann Office: 016 Hill, x2443 Home phone: 989-8482 Directory: /dimacs/u1/pirmann Shell: /bin/tcsh Last login Sat Jun 23 10:47 on ttyp0 from romulus.rutgers. No unread mail Project: Plan: Work Schedule, Summer 1990 Rutgers LCSR Operations, 908-932-2443 Monday 5pm - 12am Tuesday 5pm - 12am Wednesday 9am - 5pm Thursday 9am - 5pm Saturday 9am - 5pm larf larf hoo hoo Login name: surak In real life: Ron Surak Office: 000 OMB Dou, x9256 Directory: /u2/surak Shell: /bin/tcsh Last login Fri Jul 27 09:55 on ttyq3 No Plan. Login name: etter In real life: Ron Etter Directory: /u2/etter Shell: /bin/tcsh Never logged in. No Plan.

Узел: dimacs.rutgers.edu

Командная строка: hedrick@math.rutgers.edu@pilot.njin.net [pilot.njin.net] [math.rutgers.edu] Login name: hedrick In real life: Charles Hedrick Office: 484 Hill, x3088 Directory: /math/u2/hedrick Shell: /bin/tcsh Last login Sun Jun 24 00:08 on ttyp1 from monster-gw.rutge No unread mail No Plan.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]