**Finger** (ფინგერი) — ქსელური პროტოკოლი, რომლის დანიშნულებაცაა მიაწოდოს ინფორმაცია დაშორებული კომპიუტერის მომხმარებლებზე.

შესავალი
--------

პროტოკოლი Finger წარმოადგენს უბრალო პროტოკოლს (აღწერილია RFC 1288-ში), რომელიც მოიპოვებს ინფორმაციას ინტერნეტის მომხმარებელთა შესახებ. პროგრამა Finger-ს შეუძლია მოგვაწოდოს იმ მომხმარებელთა სიები, რომლებიც განსაზღვრულ დროს მუშაობენ ამ თუ იმ კომპიუტერზე, ასევე იძლევა ინფორმაცია კონკრეტულ მომხმარებელზე (სისტემაში შესვლის ბოლო სეანსის თარიღი და ა.შ.), ჩატვირთულ პროგრამებზე და ინტერფეისთა ტიპებზე (მაგ. ტერმინალებზე). პროგრამის თავდაპირველი ვერსია დაწერა Les Earnest-მა 1971 წელს, ხოლო პროტოკოლის საბოლოო ვერსია შეადგინა Earl Killian-მა მასაჩუსეტის ტექნოლოგიური ინსტიტუტიდან და Brian Harvey-მა (SAIL).

მუშაობის პრინციპი
-----------------

Finger ეფუძნება Transmission Control Protocol-ს და იყენებს TCP-პორტ 79-ს. ეს პროტოკოლი უზრუნველყოფს შორეული მომხმარებლის ინფორმაციული პროგრამის (RUIP — Remote User Information Program) ინტერფეისს. ლოკალური კომპიუტერი ამყარებს TCP-კავშირს შორეულ კომპიუტერთან აღნიშნული პორტის მეშვეობით. ამის შემდეგ შესაძლებელი ხდება RUIP პროგრამით სარგებლობა და მომხმარებელს საშუალება ეძლევა გაუგზავნოს თავისი მოთხოვნები. ყოველი მოთხოვნა წარმოადგენს ტექსტურ სტრიქონს. მიიღებს რა RUIP მოთხოვნას, აანალიზებს მას და აგზავნის პასუხს, როს შემდეგაც კავშირი იხურება. ჩვეულებრივ, ოქმის რეალიზება სერვერის მხრიდან ხდება პროგრამა „fingerd"-ის, ხოლო კლიენტის მხრიდან პროგრამა „finger"-ის საშაუალებით, რომელსაც გააჩნია მეგობრული სამომხმარებლო ინტერფეისი. მაგალითად, Unix სისტემებში ბრძანება finger @foo.bar.net თეორიულად აბრუნებს კომპიუტერის მომხმარებელთა სიას მისამართზე „foo.bar.net" (რა თქმა უნდა, თუ მასზე გაშვებულია „fingerd"), ხოლო ბრძანება finger giorgi@foo.bar.net აბრუნებს სრულ ინფორმაციას მომხმარებელ „giorgi"-ზე: სახელი, გვარი, ტელეფონის ნომერი და მისი საშინაო კატალოგის „.plan" ფაილის შიგთავსს. ყველა გადასაგზავნი ინფორმაცია უნდა იყოს ASCII ფორმატში, არ უნდა ჰქონდეს კონტროლი თვლადობის მიხედვით და ყოველი სტრიქონი ბოლოვდებოდეს თანმიმდევრობით: CRLF (ASCII 13 და შემდეგ — ASCII 10).

Finger მოთხოვნების ფორმატი
--------------------------

პროგრამა RUIP უნდა აღიქვავდეს Finger-ის ნებისმიერ მოთხოვნას. ასეთ მოთხოვნებს შეიძლება

ჰქონდეთ შემდეგნაირი ფორმატი:  

`finger [ოფცია] [login1 [login2 ...]]`

ბრძანება finger-ს სისტემა Unix-ის ყველა მომხმარებლის სიაში გამოაქვს:

* სისტემაში რეგისტრაციის სახელი
* სრული სახელი
* ტერმინალის დასახელება
* ჩანაწერის სტატუსი (ჩანაწერზე თანხმობის უარყოფის შემთხვევაში ტერმინალური სახელი წინ

აღინიშნება «\*» სიმბოლოთი)

* დაყოვნების დრო
* რეგისტრაციის დრო
* სამუშაო ადგილისა და ტელეფონის ნომრის პოვნა (თუ ცნობილია)

დაყოვნების დრო გამოიანგარიშება, როგორც ნებისმიერი მოქმედების მომენტიდან გასული დრო მოცემულ

ტერმინალზე. ის შეიცავს ბრძანება finger-ის წინა გამოძახებებს, რომელმაც, შესაძლოა ცვლილებები

შეიტანა არსებულ ტერმინალთან შესატყვისი მოწყობილობის ფაილში. ის აისახება წუთებში, თუ ის

გამოისახება ერთი მთელი რიცხვით; საათებსა და წუთებში, თუ მის გამოსახულებაში ფიგურირებს ორი

წერტილი (:); ან დღეებსა და საათებში, თუ კი გამოსახულებას ახლავს სიმბოლო «d».

*ოფციები*

|  |  |
| --- | --- |
| **-b** | მომხმარებელთა გამოტანის შემოკლებული გრძელი ფორმატი |
| **-f** | აღკვეთს სტრიქონის სათაურის ბეჭდვას (მოკლე ფორმატი) |
| **-i** | მომხმარებელთა სწრაფი სია დაყოვნებათა დროის მითითებით |
| **-l** | გამოტანა გრძელი ფორმატით |
| **-p** | .plan ფაილების ბეჭდვა |
| **-q** | მომხმარებელთა სწრაფი სია |
| **-s** | გამოტანა მოკლე ფორმატით |
| **-w** | მითითებული მომხმარებლების ვიწროფორმატიანი სია |

ამას გარდა, არსებობს გამოსახვის უფრო გრძელი ფორმატი და ის გამოიყენება finger ბრძანებით იმ

შემთხვევაში, თუ მითითებულია მომხმარებელთა სახელების სია. (დაშვებულია პირველ და ბოლო

მომხმარებლებთან ერთად, ასევე სამომხმარებლო სახელები.) ეს ფორმატი შედგება რამდენიმე

სტრიქონისაგან; ის შეიცავს ზემოთ აღწერილ მთელ ინფორმაციას, ამავდროულად სამომხმარებლო

შემავალ კატალოგსა და shell რეგისტრაციის ინტერპრეტატორს, ყველა იმ გეგმას, რომელიც

მომხმარებელმა განათავსა საკუთარი შემავალი კატალოგის .plan ფაილში, და პროექტს, რომლის

შესაბამისობაშიც მომხმარებლები ამ დროს მუშაობენ და რომელიც აღებულია შემავალ კატალოგშივე

არსებული .project ფაილიდან. თუ მითითებული მომხმარებლის საშინაო დირექტორიაში არსებობს

.nofinger ფაილი, მაშინ finger ბრძანებით ინფორმაცია ამ მომხმარებლის შესახებ არ

დაბრუნდება.

უსაფრთხოების მოსაზრებებიდან გამომდინარე
---------------------------------------

ისეთი დეტალური ინფორმაციის მოპოვება, როგორებიცაა ელექტრონული ფოსტის მისამართები და სრული სახელები, ინტერნეტის არსებობის პირველ დღეებში მისაღებად და მოსახერხებლად ითვლებოდა, თუმცა მოგვიანებით ის კონფედენციალურობისა და უსაფრთხოების პრინციპებიდან გამომდინარე საეჭვო გახდა. Finger-ით მოპოვებულ ინფორმაციას ხშირად იყენებდნენ ხაკერები სხვადასხვა კომპანიათა კომპიუტერულ სისტემებზე თავდასხმისთვის. «Finger» პროგრამის მეშვეობით სხვა მომუშავის სახით შენიღბულ ბოროტმოქმედს შეეძლო მოეპოვებინა კომპანიის თანამშრომელთა სია, მათი სახელები, ელექტრონული ფოსტის მისამართები, ტელეფონის ნომრები და სხვა საჭირო ინფორმაცია.
ამიტომაც, უსაფრთხოების პრობლემებიდან გამომდინარე, Finger სერვისი აღარავის მიერ აღარაა ქსელში შემოთავაზებული. Finger-ის ცნობილი მომხმარებლები არიან — ჯონ კარმაკი id Software-დან და Winamp-ის შემქმნელი ჯასტინ ფრანკელი. 2005 წელს კარმაკი მაინც გადავიდა მოძველებული «.plan»-იდან ახალ ბლოგზე.

რესურსები ინტერნეტში
--------------------

* RFC 1288
* History of the Finger protocol by Rajiv Shah