FTP mini-HOWTO

Matthew Borowski ( mkb@yahoo.com )
( http://tarp.worldserve.net/ )
,
Vertaald door: Ellen Bokhorst, bokkie@nl.linux.org

v0.2, 9 januari 2000


Hoe ftp-client en servers te gebruiken.

1. Inleiding

Dit document werd geschreven door Matthew Borowski voor het Linux Documentatie Project. Ik ben nog niet klaar met hetgeen toe te voegen wat ik toe wil voegen. Er zal een sectie komen met informatie over het in werking stellen van een FTP-server.

1.1 Contact met me opnemen

Neem alsjeblieft contact met me op als je aanvullingen of wijzigingen hebt voor dit document. Vraag me alsjeblieft niet om technische ondersteuning -- advies en ondersteuning over Unix kan tegen betaling via mijn onderneming WorldServe worden verkregen, of je kan in nieuwsgroepen, zoals comp.os.linux.* om hulp vragen. Denk er alsjeblieft ook aan dat ik alleen Engels en Farsi begrijp.

1.2 Rechtsgeldigheden en Distributie

This document is Copyright 1999 by Matthew Borowski. You may freely distribute this document as long as the copyright notice remains unaltered. If you distribute this HOWTO as part of a commercial product, I would like to recieve a copy, but this is not required. If you wish to distribute a modified or translated version of this document, please contact me first for permission.

Vertaling: Dit document valt onder het Copyright 1999 door Matthew Borowski. Je mag dit document vrij distribueren zolang de copyright-vermelding ongewijzigd blijft. Als je deze HOWTO als onderdeel van een commercieel product distribueert, zou ik graag een kopie ontvangen, maar dit is niet vereist. Neem alsjeblieft eerst contact met me op voor permissie, als je een aangepaste of vertaalde versie van dit document wenst te distribueren.

1.3 Historie van dit document

2. Over FTP

FTP (File Transfer Protocol) is een client/server protocol waarmee het mogelijk is bestanden van en naar een remote netwerksite te transporteren. Het werkt met TCP en wordt vooral gebruikt op het Internet, alhoewel het ook op een LAN kan worden toegepast.

Een FTP-site is een computer waarop FTP-serversoftware draait (ook bekend als een FTP-daemon, of ftpd). Een publieke ftp-site kan meestal door iedereen worden benaderd door als anonymous of ftp in te loggen. Er zijn veel uitstekende publieke ftp-sites die opslagplaatsen met vrije Unix-software beschikbaar stellen. Door te leren hoe je FTP kunt gebruiken, geef je jezelf toegang tot een onschatbare bron.

Privé FTP-sites vereisen een gebruikersnaam of wachtwoord. Als je een shell-account bij je ISP hebt, is het wellicht mogelijk je bestanden via FTP te benaderen (neem hierover contact op met je systeembeheerder).

Een FTP-client is de applicatie voor gebruikers waarmee het mogelijk is toegang tot FTP-servers te verkrijgen. Er zijn heel veel FTP-clients beschikbaar. Een aantal daarvan zijn gebaseerd op een grafische gebruikersinterface en anderen zijn gebaseerd op tekst.

FTP werd voor het eerst ontwikkeld door de Universiteit van California, Berkeley voor opname in 4.2BSD (Berkeley Unix). De RFC (Request for Comments) is beschikbaar op ftp://nic.merit.edu/documents/rfc/rfc0959.txt.

3. Beginnersgids in het gebruik van ftp

Een snelle leidraad voor het gebruik van ftp.

Het standaard ftp-programma is de oorspronkelijke ftp-client. Het wordt standaard met de meeste Linux-distributies meegeleverd. Het verscheen voor het eerst in 4.2BSD, dat werd ontwikkeld door de Universiteit van California, Berkeley.

3.1 Uitvoeren van het ftp programma

Het gebruik van ftp is eenvoudig. Stel dat je een verbinding wilt maken met de anonieme ftp-site metalab.unc.edu om de laatste Linux-kernelsource te downloaden.

Typ achter de opdrachtregel:

$ ftp metalab.unc.edu

Het ftp-programma zal proberen een verbinding tot stand te brengen met metalab.unc.edu. Een andere manier om dit te doen is ftp zonder parameters vanaf de opdrachtregel op te starten en gebruik te maken van het open commando, met als argument de naam van de site:

$ ftp
ftp> open metalab.unc.edu

3.2 Op een FTP-server inloggen

Wanneer je een verbinding met een FTP-site hebt, zal het je vragen om een login (de enter-toets indrukken zal je inloggen met je lokale gebruikersnaam, in dit geval foo: We loggen in als anonymous of ftp, om bij het publieke archief te komen.

220 helios.oit.unc.edu FTP server (Version wu-2.6.0(2) Wed Nov 17 14:44:12
EST 1999) ready.
Name (metalab.unc.edu:foo): 

Nu voeren we als wachtwoord een volledig e-mailadres in (dit vereisen de meeste publieke FTP-sites).

331 Guest login ok, send your complete e-mail address as password.
Password:

Na een succesvolle login, wordt de volgende informatie gegeven:

Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 

3.3 Bestandstypen bij het transporteren

Nadat je op een ftp-site bent ingelogd, zal ftp het bestandstype voor het transport afdrukken. In onze situatie is dit binair. In binaire mode worden de bestanden bit voor bit getransporteerd, zoals ze op de FTP-server staan. In ascii-mode zal de tekst echter direct worden gedownload. Je kunt door het intikken van ascii of binary tussen de twee typen wisselen.

Je wilt de kernelsource downloaden dus laat je het bestandstype op binary staat. Het binaire type is ook hetgeen je zou gebruiken voor enige niet-tekst bestanden -- zoals grafische afbeeldingen, zip/gzip archieven, uitvoerbare programma's, enz. Gebruik de binary-mode als je twijfelt.

3.4 Door directory's navigeren en ze weergeven

Je geeft de opdracht ls om een lijst met de bestanden te zien te krijgen. Het commando ls op ftp-servers wordt op de remote-server uitgevoerd, dus de opties die je op de opdrachtregel kunt gebruiken, variëren van server tot server. De meest gebruikelijke opties zijn in het algemeen wel beschikbaar, kijk in de manpage van ls voor de details.

ftp> ls
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
total 33590
-r--r--r--   1 root     other    34348506 Dec 03 03:53 IAFA-LISTINGS
lrwxrwxrwx   1 root     other           7 Jul 15  1997 README -> WELCOME
-rw-r--r--   1 root     other         890 Nov 15 13:11 WELCOME
dr-xr-xr-x   2 root     other         512 Jul 15  1997 bin
dr-xr-xr-x   2 root     other         512 Jul 15  1997 dev
dr-xr-xr-x   2 root     other         512 Jul 18  1997 etc
drwxrwxrwx  11 ftp      20           4608 Nov 28 16:00 incoming
lrwxrwxrwx   1 root     other          13 Jun 04  1998 ls-lR -> IAFA-LISTINGS
dr-xr-xr-x  17 root     root          512 Jun 08 11:43 pub
dr-xr-xr-x   3 root     other         512 Jul 15  1997 unc
dr-xr-xr-x   5 root     other         512 Jul 15  1997 usr
226 Transfer complete.

Als de opdracht ls zoveel bestanden weergeeft dat ze van het scherm scrollen, dan kun je gebruik maken van de Shift-PageUp om naar boven te scrollen. Dit werkt in de Linux console mode als ook in een xterm of rxvt.

Op publieke FTP-archieven worden de te downloaden bronnen meestal in de directory /pub bewaard. In dit voorbeeld weet je al dat de kernelsources in de directory /pub/Linux/kernel staan, dus typ je het volgende om in die directory terecht te komen:

ftp> cd pub/Linux/kernel
250-README for kernel
250-
250-What you'll find here: kernel sources and patches
250-
250-
250 CWD command successful.

De berichten die je te zien krijgt, die met "250" beginnen, bestaan uit informatie die door de server zijn verzonden. In dit geval is de ftp-server zodanig geconfigureerd dat het je automatisch het README-bestand stuurt als je naar de directory gaat.

3.5 Downloaden en uploaden van bestanden

Na nu nog een ls, zie je dat je met cd naar de v2.2 directory wilt gaan. Je geeft nogmaals de opdracht ls, en vindt dan het bestand dat je wilt downloaden. Het is linux-2.2.13.tar.gz. Dus tik je in:

ftp> get linux-2.2.13.tar.gz
local: linux-2.2.13.tar.gz remote: linux-2.2.13.tar.gz
200 PORT command successful.
150 Opening BINARY mode data connection for linux-2.2.13.tar.gz (15079540
bytes).

Het ftp-programma is begonnen met het opslaan van het remote bestand linux-2.2.13.tar.gz als het lokale bestand linux-2.2.13.tar.gz.

Als je het als het lokale bestand foo.tar.gz op zou willen slaan, zou je dit als volgt aan kunnen hebben geven:

ftp> get linux-2.2.13.tar.gz foo.tar.gz
local: foo.tar.gz remote: linux-2.2.13.tar.gz
200 PORT command successful.
150 Opening BINARY mode data connection for linux-2.2.13.tar.gz (15079540
bytes).

Als je meer dan één bestand tegelijkertijd wilt downloaden, dan zal je de opdracht mget (meerdere get's) moeten gebruiken. Je kunt mget met een door spaties gescheiden lijst met de te downloaden bestandsnamen gebruiken, óf je kunt de opdracht mget met wildcards gebruiken. Bijvoorbeeld:

ftp> mget linux*

Hiermee zouden alle bestanden beginnend met de string "linux" worden opgehaald. Normaal gesproken zal mget voor ieder bestand om bevestiging vragen alvorens het wordt gedownload. Je kunt dit met het prompt-commando aan- of uitzetten.

Stel nu dat je wat software hebt geschreven en dat je het naar Metalab wilt uploaden voor opname in hun Linux software-archief. Als eerste ga je naar de directory /incoming (op de meeste FTP-servers komt een directory voor die meestal incoming of uploads wordt genoemd, waar bestanden kunnen worden geupload), vervolgens gebruik je de opdracht put:

ftp> cd /incoming
ftp> put foo.tar.gz
local: foo.tar.gz remote: foo.tar.gz
200 PORT command successful.
150 Opening BINARY mode data connection for foo.tar.gz.
226 Transfer complete.
10257 bytes sent in 0.00316 secs (3.2e+03 Kbytes/sec)

Het commando put werkt op dezelfde wijze als de opdracht get, dus je kunt mput gebruiken om tegelijkertijd meerdere bestanden te uploaden. Je kunt ook een lokaal bestand met een andere bestandsnaam naar de server uploaden door als argument de remote bestandsnaam en/of de naam van het pad op te geven.

Wat als het bestand foo.tar.gz zich niet in je huidige directory bevindt wanneer je het probeert te uploaden? Je kunt met de opdracht lcd (local change directory) naar een andere lokale directory overschakelen:

ftp> lcd /home/foo/
Local directory now /home/foo

3.6 Shell-opdrachten uitvoeren

De ftp-client ondersteunt het gebruik van het uitroepteken (!) voor het uitvoeren van lokale opdrachten. Om bijvoorbeeld een lijst met bestanden in je huidige lokale directory te krijgen, geef je op:

ftp> !ls

De wijze waarop dit werkt is dat ftp de shell aanroept (aangegeven in de omgevingsvariabele $SHELL), en het is de shell die ls uitvoert. Dus je kunt iedere opdrachtregel uitvoeren die met je shell werkt, door er gewoon een "!" aan te laten voorafgaan (de standaardshell onder de meeste Linux-distributies is bash, de Bourne Again SHell). Houdt er alsjeblieft rekening mee dat !cd niet werkt zoals je wellicht verwacht, daarom bestaat er een commando lcd.

3.7 Hash markeringen en tick

Zou het niet fijn zijn als je de voortgang kon bekijken op het moment dat je een bestand met ftp aan het downloaden bent? Je kunt bij het downloaden van een bestand de opdracht hash gebruiken, waardoor er hash markeringen worden weergegeven:

ftp> hash
Hash mark printing on (1024 bytes/hash mark).

Zoals je kunt zien, zal ftp voor iedere 1024 bytes aan gedownloade data een hash markering afdrukken.

Er is ook een tick optie.

ftp> tick           
Tick counter printing on (10240 bytes/tick increment).

Dit heeft als effect dat er bij het downloaden van een bestand iets dergelijks
als het volgende wordt afgedrukt:

Bytes transferred: 11680

3.8 Andere ftp-opdrachten

Er zijn nog veel andere ftp-opdrachten. Als je hier permissie voor hebt (wat zo zou moeten zijn, als je met je eigen privé shell-account een verbinding hebt gemaakt), kun je met de opdracht mkdir een directory op de remote-server aanmaken. Met de opdracht delete kun je een bestand van de remote server verwijderen, of met rmdir een directory verwijderen. Je kunt ook de bestandspermissies wijzigen met het commando chmod.

Zie de online help in het ftp-programma (toegankelijk door het intikken van help zonder argumenten voor een lijst met opdrachten, of help <commandonaam> voor specifieke hulp over een commando) voor uitgebreidere informatie over het gebruik van ftp. Je kunt ook de Unix manpage over ftp lezen door het achter de opdrachtprompt intikken van man ftp.

4. Console FTP-clients

Het oorspronkelijke ftp-programma was de oorspronkelijke ftp-client, en het is een goede investering om het te leren. Het is de enige ftp-client waarvan je er zeker van kunt zijn dat het op de meeste systemen beschikbaar is (zelfs Win32 heeft het ftp-commando, alhoewel het er een enigszins verouderde niet-intellectuele versie van is).

Er zijn nog vele andere console-mode (alleen tekst) ftp-clients beschikbaar. De lijst hier is in geen enkele zin uitgebreid, maar bevat de meest populaire ftp-clients. Zoek op FreshMeat voor meer.

4.1 NcFTP

NcFTP is de nooit eerder bereikte favoriete ftp-client van veel Unix-gebruikers. Het wordt bij de meeste Linux-distributies gebundeld geleverd, en het biedt veel geavanceerde mogelijkheden zoals tab-voltooiïng en bladwijzers. Versie 2 van NcFTP had een volledige schermmodus gebaseerd op de curses library. Dit werd in Versie 3 verwijderd (nu in beta).

Het is niet 100% compatibel met de opdrachten waarvan de standaard ftp gebruik maakt. In NcFTP functioneren get en put bijvoorbeeld zoals mget en mput in standaard ftp. Dus als je een remote-bestand als een andere lokale bestandsnaam op wilt slaan, dan moet je opgeven get -z remotenaam lokalenaam. De hemel zij dank heeft NcFTP een mooi online-helpsysteem om je te assisteren bij het leren van de opdrachten.

De laatste versie van NcFTP is te verkrijgen bij http://www.ncftp.com.

4.2 lukemftp

Een poort van de NetBSD FTP-client naar andere systemen, de naam lukemftp is afgeleid van de auteur met de meest uitgebreide mogelijkheden, waaronder: het wijzigen van de commandregel, opdrachtregel ontvangsten van FTP en HTTP URL's (waaronder via proxies), context gevoelige woordvoltooiïng, dynamische voortgangsbalk, IPv6-ondersteuning, bewaren van de modificatie-tijd, paging van lokale en remote bestanden, passieve mode ondersteuning (met fallback naar actieve mode), SOCKS support, TIS FWTK gate-ftp server support, en vermindering van de transportsnelheid.

Ik raad lukeftp ten zeerste aan voor gebruikers die niet naar iets anders over willen stappen dan iets dat drastisch anders is dan de standaard ftp-client, maar die wel meer geavanceerde mogelijkheden willen.

De laatste versie van lukemftp is te krijgen op ftp://ftp.netbsd.org/pub/NetBSD/misc/lukemftp/.

4.3 lftp

lftp is een verfijnde op de opdrachtregel gebaseerde FTP-client. Net als bash beschikt het over mogelijkheden voor job control. Het maakt voor invoer gebruik van de GNU-readline library dus heb je opdrachtregel-voltooiïng en het wijzigen van de opdrachtregel tot je beschikking. lftp heeft ook bladwijzers, mirror-ondersteuning en kan verscheidene bestanden parallel transporteren.

Je kunt de laatste versie van lftp verkrijgen op http://ftp.yars.free.net/projects/lftp/.

Debian packages zijn beschikbaar op ftp://ftp.freshmeat.net/pub/debs/lftp/.

4.4 cftp

Comfortabele FTP (cftp) is een client in schermvullende modus. Wat er aan mogelijkheden in ontbreekt, wordt goed gemaakt door zijn eenvoud in het gebruik. Je bladert door de directory's met de pijltjestoetesen en enter.

De laatste versie van cftp zou te krijgen moeten zijn op http://ftp.giga.or.at/pub/nih/cftp/.

4.5 yafc

Yafc is een zeer mooie ftp-client, met mogelijkheden zoals directory cache, remote bestandsnaamvoltooiïng, aliassen, ls in kleur, recursieve get/put/ls/rm, nohup mode transport, tagging (queueing), meerdere verbindingen, proxy support en meer. Het biedt ondersteuning voor Kerberos4 authenticatie.

Je kunt de laatste versie van yafc verkrijgen vanaf http://www.stacken.kth.se/~mhe/yafc/.

Debian packages zijn beschikbaar op http://members.home.com/decklin/experimental/.

Redhat packages zijn beschikbaar op http://lz.freeservers.com/linux/yafc.html.

5. X Window FTP-clients

Er zijn verscheidene grafische FTP-clients ontworpen om onder het X-Window systeem te worden uitgevoerd. Deze clients bieden eenvoudig gebruik voor gebruikers die gewend zijn aan grafische omgevingen en bieden soms veelzijdige opties die in een op tekst gebaseerde ftp-client moeilijk zouden zijn te implementeren.

5.1 gFTP

gFTP is een FTP-client voor X Windows geschreven met behulp van Gtk. De interface heeft een aantal overeenkomsten met de populaire WS_FTP software wat meestal onder een bepaald onstabiel besturingssysteem wordt gebruikt.

gFTP ondersteunt simultane downloads, het hervatten van onderbroken bestandstransport, file transfer queues, het downloaden van volledige directory's, ftp proxy support, remote directory caching, passieve en niet-passieve bestandstransport, ondersteuning voor slepen en neerzetten, een zeer fraaie manager voor de verbinding en meer.

Waarschijnlijk heb je gFTP reeds, als je onder Red Hat Linux draait en de GNOME-desktop hebt geïnstalleerd. Als dit niet zo is, kun je gFTP downloaden van de homepage op http://gftp.seul.org/.

5.2 WXftp

WXftp is een FTP-client voor het X Window Systeem, ontworpen om hoofdzakelijk op Linux werkstations te worden gebruikt. Het is geschreven met gebruik van de WXWindows toolkit, dus het kan met Motif of GTK+ worden gecompileerd.

Het heeft een intuïtieve gebruikersinterface (lijkt veel op WS_FTP), een sessie beheerder, on-line help, een voortgangsbalk, en meer.

Kijk op de homepage van WXftp op http://www.wxftp.seul.org.

5.3 LLNL XDIR en XFTP

LLNL XFTP was één van de eerste grafisch FTP-clients voor onder Linux. het ondersteunt FXP (bestandstransport tussen twee remote hosts), en heeft een op Motif gebaseerde interface.

Meer informatie is beschikbaar op http://www.llnl.gov/ia/xdir_xftp/.

5.4 guiftp

Guiftp is een eenvoudige ftp-client geschreven met de GTK+ toolkit. Het is goed als je niet veel mogelijkheden nodig hebt en een eenvoudig, duidelijk uiterlijk wilt.

Guiftp's homepage is op http://www.altern.org/ldufresne/guiftp/.

6. FTP-Servers

6.1 Hoe een FTP-Server werkt

Een traditionele FTP-server wordt vanuit inetd uitgevoerd (de internet superserver daemon). De standaard FTP-poort is poort 21. Wanneer een gebruiker probeert in te loggen, maakt de FTP-server gebruik van een standaard systeemaanroep om de naam van de gebruiker en het wachtwoord te controleren met de records in het wachtwoordbestand op het systeem, of de NIS-tabellen als je gebruik maakt van NIS. Als de login correct is, wordt de gebruiker toegang verleend tot het systeem.

Anonieme FTP werkt anders. De gebruiker logt óf in met de gebruikersnaam anonymous óf met de gebruikersnaam ftp (dit kan in het config bestand worden gedefinieerd). Hem wordt dan toegang gegeven tot een directorystructuur waarop de opdracht chroot() is toegepast. Dit geeft de garantie dat de gebruiker geen toegang tot de directorystructuur kan verkrijgen waartoe hij niet is geautoriseerd. Op de chrooted directorystructuur bevindt zich meestal een mock bestandssysteem, met bin/, etc/, en lib/ directory's. De bestanden voor download zijn meestal in de directory /pub geplaatst.

De reden voor een mock bestandssysteem in een anonieme FTP-structuur is dat de FTP daemon externe opdrachten voor ls verzoeken draait. Je kunt in de bin directory tevens extra programma's plaatsen, en een gebruiker kan ze uitvoeren met het SITE-commando in zijn ftp-client. Om de FTP-site van Red Hat is bijvoorbeeld de opdracht RPM opgenomen (zodat gebruikers RPM-packages op de site kunnen ondervragen).

Een aantal FTP-servers werken anders. Een aantal zullen bijvoorbeeld het instellen van gebruikersaccounts onafhankelijk van het systeemomvattende wachtwoordbestand toestaan (account voor alleen FTP). Een aantal servers (ProFTPD en NcFTPd bijvoorbeeld) hebben ingebouwde ls-opdrachten en hebben geen speciale directorystructuur binnen de chroot-structuur nodig. Andere ftp-servers dwalen af van het standaard ftp-concept. FTP4ALL maakt bijvoorbeeld helemaal geen gebruik van systeemwachtwoorden. Het maakt gebruik van zijn eigen gebruikers- en groepsbestand, en heeft mogelijkheden zoals een upload/download verhouding en aanpasbare server-meldingen.

6.2 Hulp met FTP-Servers

WU-FTPD

WU-FTPD is de ftp-daemon die met veel Linux-distributies wordt geleverd, waaronder Red Hat en Caldera. Je kunt meer leren over WU-FTPD op http://www.wu-ftpd.org.

De WU-FTPD FAQ is te vinden op het web op http://www.cetis.hvu.nl/~koos/wu-ftpd-faq.html.

ProFTPD

ProFTPD is een krachtige FTP-server waarin een configuratie in de stijl van Apache, uitgebreide ondersteuning voor virtuele hosts en een interne ls is opgenomen.

Een complete commando-referentie en te downloaden bestanden zijn te vinden op http://www.proftpd.org