Протоколы Internet

         

Finger


4.5.2 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.



    Формат применения команды Finger:

    finger [ опции ] имя...

    По умолчанию finger отображает информацию обо всех активно работающих пользователях, включая имя-идентификатор, полное имя, имя терминала и т.д. В качестве имени может использоваться имя-идентификатор, фамилия или имя пользователя. Ниже приводится краткий перечень допустимых опций.



    -l

    Запрос подробной информации

    -s

    Запрос краткой информации

    -q

    Запрос имени-идентификатора, имени терминала и времени входа в систему

    -i

    Запрос, аналогичный -q, но выдается и время пребывания терминала в пассивном состоянии

    -w

    Блокирует печать полного имени для -s

    -h

    Блокирует печать файла .project в режиме -l

    -p

    Блокирует печать файла .plan в режиме -l Список работающих пользователей хранится в файле /etc/utmp, полный список имен пользователей размещен в файле /etc/passwd, времена и даты входа в систему записаны в файле /var/adm/lastlog, имена и расположение терминалов можно найти в файле /etc/ttytab, для записи информации о планах и проектах используются файлы ~/.plan и ~/.project, соответственно.

    Ниже приведен пример отклика на команду finger –l (запрос подробной информации, ЭВМ SUN):

    Login name: Ivanov In real life: Andrey Bobyshev
    Directory: /u1/SunITEP/bobyshev Shell: /bin/csh
    On since Aug 10 10:16:35 on ttyp0 from x4u2.desy.de

    1 minute 37 seconds Idle Time

    Mail last read Thu Aug 10 12:06:20 1995

    No Plan. (Никаких планов)
    Login name: Petrov In real life: Yuri Semenov
    Directory: /u1/SunITEP/semenov Shell: /bin/csh

    On since Aug 10 12:14:19 on ttyp3 from semenov.itep.ru

    33 seconds Idle Time

    No unread mail

    No Plan.

    Login name: Sidorov In real life: UU Ekatirin
    Directory: /var/spool/uucppublic Shell:

    /usr/local/lib/uucp/uucico

    On since Aug 10 12:16:04 on ttyy01 57 minutes Idle Time

    Mail last read Wed Nov 16 18:17:50 1994

    No Plan.

    В общем случае при обращении к finger может использоваться символьный Интернет-адрес:

    Finger @Internet_адрес.

    Возможности команды Finger варьируются в широких пределах в зависимости от конкретной реализации. Так команда (PCTCP): finger semenov@vxdesy.desy.de выдаст на экран:



    [vxdesy.desy.de]

    SEMENOV Semenov, Yuri SEMENOV not logged in (и это истинная правда)

    Last login Thu 5-Jan-95 2:35PM-CET

    [No plan]

    Дополнительную информацию о команде finger можно получить:

    Описание протокола ftp nic.merit.edu documents/rfc/rfc1288.txt
    ftp.csd.uwm.edu pub/fingerinfo
    Информация по электронной почте dlangley@netcom.com в поле subject:"#finger USER@HOST.DOMAIN"
    Через удаленный доступ telnet rpi.edu :79  
    Через WWW http www.dlr.de cgi-greving/mfinger

    http sundae.triumf.ca fingerinfo.html
     
    Через finger finger help@dir.su.oz.au  
    Цифра после двоеточия - номер порта. Последняя строка говорит о некоторых необычных возможностях Finger. Опция выдачи содержимого файла пользователя и исполнения программы пользователя расширяет возможности Finger почти беспредельно. Так, выдав команду finger help@dir.su.oz.au (Австралия), получим:

    [extra.ucc.su.OZ.AU]

    **** This is an experimental service offered free of charge by ****

    **** The University Computing Service, University of Sydney. ****

    **** Please mail support@is.su.edu.au if you have any queries. ****

    Finger offers these additional services (Finger предлагает некоторые дополнительные возможности):

  • Access to a database facility (доступ к базе данных)

    Usage (использование): finger %@dir.su.edu.au


  • is usually an "egrep" regular expression and can be (в качестве обычно используется стандартное "egrep"-выражение, а вместо можно записать):

    Aarnet resources available on AARNet (ресурсы AARNet)
    Buildings buildings and their codes at Sydney Uni (коды зданий сиднейского университета)
    Archie query anonymous FTP databases (анонимный поиск по FTP-депозитариям)
    Internet resources available on the Internet (ресурсы Internet)
    Library library access available via AARNet (доступ к библиотечным базам данных)
    Newsgroups find NetNews newsgroups (поиск новостей)
    Phone The Sydney Uni Phone Book (телефонная книга Сиднейского университета)
    Postcodes Australian Postcodes (австралийские почтовые коды)
    Shop prices at the UCS shop (цены в университетском магазине)
    <


    /p> Usage (использование):

    Finger help@dir.su.edu.au this help (данный справочный материал)
    Finger help%@dir.su.edu.au on a particular database facility
    Finger copyright@dir.su.edu.au please read this copyright notice
    Finger egrep@dir.su.edu.au a manual on egrep regular expressions (справочные материалы по допустимым egrep-выражениям).
    Замечание. Задавая ключевые слова, избегайте применения специальных символов, пробелы относятся к их числу.

    Выдав команду:

    Finger 2%AArnet@dir.su.edu.au (запрос содержимого второй раздела базы данных aarnet);
    получим:

    [extra.ucc.su.oz.au]

    Index for Chapter 2 (список библиотек):

    Australian Defense Force Academy Library

    The Australian National University Library

    Curtin University Of Technology T.L. Robertson Library

    Deakin University Library

    Griffith University, Division of Information Services

    La Trobe University Library

    Macquarie University Library

    Murdoch University Library

    R.M.I.T. Library - MATLAS Library Catalogue.

    Swinburne Library

    The University of Adelaide, Barr Smith Library

    The University of Melbourne Baillieu Library

    The University of New England Library

    The University of New South Wales

    The University of Newcastle Libraries

    The University of Queensland Libraries

    The University of Western Australia, Reid Library

    The University of Wollongong Library

    University College of Central Queensland Library

    University of South Australia Library Systems Dept

    Victoria University of Wellington

    Таким образом, даже с помощью Finger можно организовать доступ к базам данных. Finger не сработает для узлов, не имеющих IP-адресов (например, электронный почтовый адрес). Эта команда всегда позволит руководителю проекта узнать, например, когда последний раз тот или иной участник проекта работал на ЭВМ. :-)


    Содержание раздела