E:\Moje dokumenty\HELION\Linux Unleashed\Indeks\48.DOC 705
Rozdzia³ 48. ¨ Konfigurowanie FTP i anonimowego FTP 719
Tim Parker
W tym rozdziale:
u Co to jest FTP?
u Konfiguracja FTP
u Bezpieczniejsze FTP
u Zabezpieczanie anonimowego FTP
Jak myślisz, która z usług udostępnianych dzięki protokołowi TCP/IP i Internetowi jest używana najczęściej? Jeśli odpowiedziałeś, że FTP, to masz rację (jeśli uważałeś, że jest inaczej, może to być dla Ciebie niespodzianką – jest to jednak fakt, choć WWW staje się coraz popularniejsze). Popularność FTP jest łatwa do wytłumaczenia: oprogramowanie do jego obsługi dostarczane jest wraz z każdą wersją UNIX-a i Linuxa. Jest ono łatwe do zainstalowania, skonfigurowania i używania. Pozwala na dostęp do ogromnej ilości danych przy minimalnym wysiłku. Rosnąca popularność stron WWW spowodowała również powstanie nowego interfejsu służącego do obsługi FTP, wbudowanego w przeglądarki WWW. Większość przeglądarek, na przykład Netscape Navigator, pozwala na transfer plików za pomocą protokołu FTP.
Jeśli zamierzasz używać protokołu FTP tylko do ładowania plików z innych systemów, musisz tylko załączyć obsługę tego protokołu w swoim systemie. O wiele bardziej interesujące jest jednak umożliwienie innym korzystania z plików zgromadzonych w Twoim systemie. W tym rozdziale omówimy głównie zagadnienia związane z konfigurowaniem węzła FTP. Rozpoczniemy jednak od krótkiego omówienia protokołu FTP i jego powiązań z TCP/IP. Informacje te powinny ułatwić zrozumienie zasady działania usługi FTP.
FTP (ang. File Transfer Protocol, protokół transmisji plików) to jeden z protokołów rodziny TCP/IP, służący do przesyłania plików pomiędzy komputerami obsługującymi system TCP/IP (choć dostępne są również podobne do FTP programy przeznaczone do współpracy z innymi protokołami). FTP pozwala na przesyłanie plików w obie strony i poruszanie się po drzewie katalogów. Protokół ten nie jest przeznaczony do uruchamiania programów w systemie zdalnym, ale jest chyba najlepszym narzędziem do transmisji plików. Aby można było użyć FTP, na obu końcach połączenia musi być uruchomiony odpowiedni program. Komputer, który nawiązuje połączenie (klient), wywołuje drugi komputer (serwer) i po przesłaniu zestawu informacji potwierdzających połączenie jest ustanawiane.
Zwykle po uzyskaniu połączenia należy się zalogować, co oznacza, że trzeba być użytkownikiem systemu zdalnego (czyli posiadać własny identyfikator oraz hasło). Ponieważ niemożliwe jest przyznanie osobnego identyfikatora i hasła każdemu, kto chce skorzystać z ogólnodostępnych zasobów, w wielu systemach używa się tzw. anonimowego FTP. Rozwiązanie to pozwala każdemu zalogować się do systemu po podaniu identyfikatora ftp lub anonymous, bądź to bez podania hasła, bądź podając swój adres e-mailowy.
Połączenie się z systemem zdalnym za pomocą FTP jest łatwe. Dostęp do komputera zdalnego poprzez Internet (bezpośrednio lub poprzez dostawcę Internetu) lub sieć lokalną można uzyskać wtedy, gdy komputer ten jest bezpośrednio osiągalny. Jeśli chcesz użyć FTP, uruchom odpowiedni program (nazywany klientem FTP), podając nazwę komputera, z którym chcesz się połączyć. Przykładowo, jeśli chcesz połączyć się z systemem o nazwie chatton.com, możesz (zakładając, że masz dostęp do komputera zdalnego przez sieć LAN lub Internet; w przypadku Internetu oznacza to również, że nazwa komputera musi dać się przetłumaczyć na numer IP za pomocą usługi Domain Name Service) wydać polecenie:
ftp chatton.com
Spowoduje ono uruchomienie klienta FTP i próbę nawiązania połączenia z systemem chatton.com.
Po nawiązaniu połączenia (zakładając, że system zdalny pozwala na połączenia FTP) system zdalny oczekuje na podanie identyfikatora użytkownika. Jeśli dozwolone są anonimowe połączenia FTP, zwykle pojawia się odpowiednia informacja. Oto przykład pochodzący z węzła sunsite.unc.edu:
ftp sunsite.unc.edu331 Guest login ok, send your complete e-mail address as password.Enter username (default: anonymous): anonymousEnter password [tparker@tpci.com]:|FTP| Open230- WELCOME to UNC and SUN's anonymous ftp server230- University of North Carolina230- Office FOR Information Technology230- sunsite.unc.edu230 Guest login ok., access restrictions apply.FTP>
Po zakończeniu procesu logowania wyświetlana jest zachęta FTP>. Oznacza to, że system jest gotów do przyjmowania poleceń FTP.
W niektórych systemach dodatkowo wyświetlany jest krótki komunikat zawierający instrukcje dotyczące ładowania plików, ograniczeń nałożonych na Ciebie jako użytkownika anonimowego oraz położenia bardziej przydatnych plików. Przykładowe komunikaty z węzła sunsite.unc.edu mają postać:
To get a binary file, type: BINARY and then: GET "File.Name" newfilenameTo get a text file, type: ASCII and then: GET "File.Name" å newfilenameNames MUST match upper, lower case exactly. Use the "quotes" as shown.To get a directory, type: DIR. To change directory, type: CD "Dir.Name"To read a short text file, type GET "File.Name" TTFor more, type HELP or see FAQ in gopher.To quit, type EXIT or Control-Z.230- If you e-mail to info@sunsite.unc.edu you will be sent help å information230- about how to use the different services sunsite provides.230- We use the Wuarchive experimental ftpd. If you "get" å <directory>.tar.Z230- or <file>.Z it will compress and/or tar it on the fly. Using ".gz" å instead230- of ".Z" will use the GNU zip (/pub/gnu/gzip*) instead, a superior230- compression method.
Po zalogowaniu się do systemu zdalnego można przeglądać zawartość katalogów i poruszać się po nich używając poleceń znanych z systemu Linux. Na przykład, aby wyświetlić zawartość bieżącego katalogu, należy wydać polecenie ls (niektóre wersje FTP obsługują również jego DOS-owy odpowiednik, dir). Do zmiany katalogu bieżącego służy polecenie cd. Jeśli chcesz przejść do katalogu nadrzędnego (czyli tego, w którym zawarty jest katalog bieżący), wydaj polecenie cd ... Jak widać, polecenia są takie same, jak te służące do poruszania się w obrębie lokalnego systemu plików; należy jednak pamiętać, że dotyczą one systemu zdalnego.
Podczas używania FTP nie są dostępne żadne skróty klawiaturowe (takie jak dokańczanie nazw plików po naciśnięciu klawisza Tab). Oznacza to, że trzeba wpisywać nazwy plików w pełnej i poprawnej postaci. Jeśli się pomylisz, otrzymasz komunikat o błędzie i będziesz musiał spróbować jeszcze raz. Na szczęście, jeśli używasz systemu X Window, możesz wycinać i wklejać tekst, który wpisałeś wcześniej.
Głównym zadaniem FTP jest przesyłanie plików, więc trzeba wiedzieć zarówno w jaki sposób można załadować plik z systemu zdalnego, jak i wysłać plik do tego systemu. Kiedy znajdziesz w systemie zdalnym jakiś plik, który chciałbyś załadować do swojego komputera, użyj polecenia get, którego argumentem jest nazwa tegoż pliku. Przykładowe polecenie:
get "soundcard_driver"
spowoduje załadowanie pliku o nazwie soundcard_driver znajdującego się w katalogu bieżącym komputera zdalnego do katalogu bieżącego Twojego systemu. Po wydaniu polecenia get system zdalny przesyła dane do Twojego komputera, wyświetlając krótkie podsumowanie po zakończeniu tej operacji. W trakcie przesyłania danych nie jest wyświetlany żaden wskaźnik postępu, więc w przypadku większych plików powinieneś uzbroić się w cierpliwość (większość wersji programu ftp udostępnia opcję hash, która powoduje wyświetlenie znaku # po przesłaniu każdego kilobajta informacji; mimo tego jednak nie jest wyświetlany czas pozostały do zakończenia transferu). Oto przykład:
FTP> get "file1.txt"200 PORT command successful.150 BINARY data connection for FILE1.TXT (27534 bytes)226 BINARY Transfer complete.27534 byte received in 2.35 seconds (12Kbytes/s).
Jeśli chcesz przesyłać pliki w przeciwnym kierunku (z Twojego systemu do komputera zdalnego, zakładając że posiadasz prawo zapisu w systemie plików komputera zdalnego), powinieneś użyć polecenia put w taki sam sposób, jak polecenia get. Polecenie
put "comments"
powoduje przesłanie pliku o nazwie comments znajdującego się w katalogu bieżącym Twojego systemu do katalogu bieżącego w systemie zdalnym (można również bezpośrednio podać odpowiednie ścieżki dostępu).
Polecenia get (załaduj, pobierz) i put (wyślij) mają punkt odniesienia w komputerze lokalnym, co oznacza, że wydając polecenie get, każesz oprogramowaniu pobrać plik z serwera i umieścić go w swoim komputerze, natomiast poleceniem put wysyłasz pliki ze swojego komputera do serwera (mamy tu sytuację dokładnie odwrotną, niż w przypadku programu telnet, w którym polecenia są odniesione do komputera zdalnego). Ważne jest, by dobrze zapamiętać, które polecenie działa w którą stronę, w przeciwnym przypadku może zdarzyć się, że niechcący pozbędziesz się jakichś ważnych danych.
Cudzysłów otaczający nazwy plików w większości wersji FTP nie jest wymagany, ale zabezpiecza przed złym interpretowaniem polecenia przez serwer, więc stosowanie go jest dobrą praktyką.
Niektóre wersje ftp udostępniają polecenia umożliwiające przesyłanie większej liczby plików – polecenia mput i mget. Polecenia get i put powodują jednorazowe przesłanie tylko jednego pliku, którego nazwa musi być podana w całości (bez symboli wieloznacznych). Polecenia mget i mput pozwalają na użycie symboli wieloznacznych, takich jak * czy ?. Jeśli na przykład chcesz załadować wszystkie pliki z rozszerzeniem .doc znajdujące się w katalogu bieżącym, powinieneś wydać polecenie
mget *.doc
Musisz sam sprawdzić, czy polecenia mget i mput działają w Twojej wersji ftp (niektóre wersje zamiast tego umożliwiają po prostu użycie symboli wieloznacznych w argumentach poleceń get i put – powinieneś więc sprawdzić również taką możliwość).
FTP pozwala na przesyłanie plików w kilku trybach, zwykle zależnych od systemu. Większość systemów (w tym Linux) obsługuje tylko dwa tryby: binary (binarny) oraz ASCII (pliki tekstowe). Niektóre stacje robocze obsługują jeszcze standard EBCDIC, a wiele sieci lokalnych posiada własne formaty, pozwalające na przyspieszenie transmisji (mogą one używać 32 - lub 64 - bitowych słów).
Różnica pomiędzy trybem binarnym i ASCII jest prosta. Tryb tekstowy umożliwia przesyłanie plików ASCII, w których wiersze są rozdzielone powrotem karetki i znakiem nowego wiersza, podczas gdy tryb binarny pozwala przesyłać dane bez żadnego sformatowania. Tryb binarny jest szybszy od tekstowego, a pozwala również na prawidłową transmisję plików tekstowych. FTP nie pozwala na przesyłanie praw dostępu do plików, ponieważ nie zostało to ujęte w protokole.
Linux udostępnia dwa tryby transmisji danych: ASCII i binarny. Niektóre systemy przełączają się pomiędzy nimi automatycznie po rozpoznaniu pliku binarnego, ale nie należy zakładać, że jest tak zawsze. Dla pewności zawsze warto ustawić odpowiedni tryb samodzielnie. Domyślnie większość wersji FTP uruchamia się w trybie ASCII (choć istnieją i takie, które uruchamiają się w trybie binarnym).
Upewnij się, że używasz właściwego trybu
Jedną z bardziej nieprzyjemnych pomyłek zdarzających się niedoświadczonym użytkownikom FTP jest użycie trybu tekstowego do przesyłania plików binarnych. Tryb transmisji nie ma znaczenia w przypadku przesyłania plików tekstowych, ale jeśli chcesz uniknąć ładowania niepotrzebnych śmieci, przed rozpoczęciem ładowania plików binarnych powinieneś upewnić się, że załączyłeś tryb binarny.
Aby załączyć tryb binarny (wymagany do ładowania plików wykonywalnych oraz plików z danymi zawierających specjalne kody, generowanych przez arkusze kalkulacyjne, niektóre edytory tekstów czy programy graficzne), wydaj polecenie
binary
Do trybu tekstowego możesz wrócić wydając polecenie ascii. Ponieważ jednak węzły FTP zwykle odwiedza się po to, by załadować jakieś archiwa, nowe wersje programów itp., warto zawsze używać trybu binarnego. Pliki binarne przesłane w trybie ASCII nie będą się nadawały do użycia.
Tryb ASCII pozwala tylko na przesyłanie znaków wchodzących w skład standardu ASCII (kodowanych za pomocą siedmiu bitów), w plikach binarnych natomiast mogą występować również kody nie należące do tego standardu. Przesłanie pliku ASCII w trybie binary nie narusza jego zawartości.
Aby opuścić program ftp, wydaj polecenie quit albo exit. Obydwa te polecenia powodują zamknięcie sesji w systemie zdalnym i zakończenie działania programu ftp w systemie lokalnym. Poniższa lista przedstawia inne, często używane polecenia dostępne w programie FTP:
ascii włączenie tekstowego trybu przesyłania danych;
binary włączenie binarnego trybu przesyłania danych;
cd zmiana katalogu bieżącego na serwerze;
close zamknięcie połączenia;
del usunięcie pliku na serwerze;
dir wyświetlenie zawartości bieżącego katalogu serwera;
get pobranie pliku z serwera;
hash wyświetlanie znaków # po załadowaniu każdego bloku danych;
help wyświetlenie listy dostępnych poleceń;
lcd zmiana katalogu bieżącego w systemie lokalnym;
mget pobranie kilku plików z serwera;
mput przesłanie kilku plików do serwera;
open nawiązanie połączenia z serwerem;
put wysłanie pliku do serwera;
pwd wyświetlenie nazwy katalogu bieżącego na serwerze;
quote bezpośrednie podanie polecenia protokołu FTP;
quit zakończenie sesji FTP.
W większości wersji FTP w poleceniach rozróżniane są małe i wielkie litery, wpisanie więc polecenia wielkimi literami spowoduje wyświetlenie komunikatu o błędzie. W niektórych wersjach w takim przypadku nastąpi automatyczna konwersja na małe litery. Ponieważ jednak w systemie Linux prawie we wszystkich zastosowaniach używa się małych liter, dobrym pomysłem będzie używanie ich i tu.
Protokół FTP wykorzystuje dwa kanały TCP: port 20 jest używany do przesyłania danych, a port 21 do przesyłania poleceń. Oba te porty muszą funkcjonować, jeśli FTP ma działać poprawnie. Wykorzystanie dwóch kanałów odróżnia FTP od innych programów do przesyłania plików. Dzięki temu możliwe jest równoczesne przesyłanie poleceń i danych. FTP działa na pierwszym planie i nie umożliwia użycia mechanizmów kolejkowania.
W połączeniu FTP bierze udział program rezydentny, działający przez cały czas po stronie serwera, oraz program nazywany klientem FTP, uruchamiany po stronie nawiązującej połączenie. W systemie Linux program rezydentny dla serwera nazywa się ftpd, natomiast program klienta FTP – ftp.
Podczas nawiązywania połączenia pomiędzy klientem i serwerem oraz po wydaniu przez użytkownika każdego polecenia, pomiędzy komputerami przesyłane są ciągi poleceń...
wrim