( firstname.lastname@example.org ),
( http://tarp.worldserve.net/ )
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.
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.
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.
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.
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.
ftpprogramma
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
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>
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.
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.
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
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.
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
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.
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.
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.
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/.
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/.
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/.
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.
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.
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/.
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.
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/.
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/.
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.
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 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