  FTP mini-HOWTO
  Matthew Borowski (mkb@yahoo.com)
  v0.2, 9 Gennaio 2000

  Come usare client e server ftp. Traduzione a cura di Fabio Casadei
  (fabicas@tin.it) e revisione di Alessio Rolleri, 25 Ottobre 2003.
  ______________________________________________________________________

  Indice Generale


  1. Premessa
     1.1 Come contattarmi
     1.2 Aspetti legali e distribuzione
     1.3 Storia di questo documento

  2. Informazioni su FTP
  3. Guida all'uso di FTP per il principiante
     3.1 Eseguire il programma ftp
     3.2 Autenticarsi presso un server FTP
     3.3 Tipi di trasferimento file
     3.4 Navigare ed elencare le directory
     3.5 Download e upload dei file
     3.6 Eseguire comandi di shell
     3.7 hash e tick
     3.8 Altri comandi ftp

  4. Client FTP in modalit console
     4.1 NcFTP
     4.2 lukemftp
     4.3 lftp
     4.4 cftp
     4.5 yafc

  5. Client FTP per X Window
     5.1 gFTP
     5.2 WXftp
     5.3 LLNL XDIR e XFTP
     5.4 guiftp

  6. Server FTP
     6.1 Come funziona un server FTP
     6.2 Aiuto riguardo ai server FTP
        6.2.1 WU-FTPD
        6.2.2 ProFTPD


  ______________________________________________________________________

  11..  PPrreemmeessssaa

  Questo documento  stato scritto da Matthew Borowski per il Linux
  Documentation Project. Non ho ancora finito di aggiungere tutto il
  materiale che voglio inserire. In particolare, manca una sezione con
  le informazioni su come far funzionare un server FTP.


  11..11..  CCoommee ccoonnttaattttaarrmmii

  Vi prego di contattarmi nel caso abbiate delle aggiunte o dei
  cambiamenti per questo documento.  Vi prego altres di non chiedermi
  direttamente supporto tecnico: potete acquistare consulenze e supporto
  tecnico per sistemi Unix presso la mia societ, WWoorrllddSSeerrvvee, o potete
  chiedere un aiuto su newsgroup quali ccoommpp..ooss..lliinnuuxx..**.  Vi prego,
  infine, di tenere conto del fatto che io capisco solo l'inglese ed il
  persiano.
  11..22..  AAssppeettttii lleeggaallii ee ddiissttrriibbuuzziioonnee

  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.


  Questo documento  propriet intellettuale di Matthew Borowski
  (Copyright 1999).  La libera distribuzione di questo documento 
  consentita, a patto che il presente avviso sul copyright resti
  inalterato. Se il presente HOWTO viene distribuito a corredo di un
  prodotto commerciale, gradirei ottenerne una copia completa, ma ci
  non  obbligatorio.  Se intendete distribuire una versione modificata
  o tradotta di questo documento, vi prego di contattarmi prima per
  ottenere il consenso.


  11..33..  SSttoorriiaa ddii qquueessttoo ddooccuummeennttoo


    991203: prima scrittura del FTP HOWTO. Si tratta ancora di un
     lavoro in corso.


  22..  IInnffoorrmmaazziioonnii ssuu FFTTPP

  FTP (File Transfer Protocol)  un protocollo client/server che
  consente ad un utente di trasferire file da e verso un sito remoto
  della rete. Funziona con il protocollo TCP ed  comunemente usato su
  Internet, anche se pu essere usato anche su una LAN.


  Un sito FTP  un computer che sta eseguendo un software che fa da
  server FTP (conosciuto anche come demone ftp o ftpd). Solitamente
  chiunque pu accedere ad un sito ftp pubblico perch consente di
  autenticarsi come utente anonymous o ftp. Ci sono molti siti ftp
  pubblici eccellenti che fungono da deposito per il software libero
  Unix disponibile. Imparare l'uso di FTP consente l'accesso a risorse
  indispensabili.


  I siti FTP privati richiedono un nome utente o una password. Se si
  possiede un account di shell presso il proprio ISP, allora potrebbe
  essere possibile accedere ai propri file remoti via FTP (si contatti
  il proprio amministratore di sistema per verificarlo).


  Un client FTP  l'applicazione che consente all'utente l'accesso ai
  server FTP. Ci sono molti client FTP disponibili. Alcuni sono grafici,
  altri sono testuali.


  FTP venne creato presso l'Universit della California, a Berkeley, per
  essere incluso nel BSD4.2 (lo Unix di Berkeley). Il documento RFC
  (Request for Comments)  disponibile presso .


  33..  GGuuiiddaa aallll''uussoo ddii FFTTPP ppeerr iill pprriinncciippiiaannttee

  UUnnaa gguuiiddaa rraappiiddaa aallll''uussoo ddii ffttpp..



  Il programma ftp standard  il client originale ftp. Esso  compreso
  nella configurazione standard della maggior parte delle distribuzioni
  Linux. Apparve per la prima volta nel BSD4.2, sviluppato
  dall'Universit della California, a Berkeley.


  33..11..  EEsseegguuiirree iill pprrooggrraammmmaa ffttpp

  Usare ftp  facile. Poniamo che ci si voglia connettere al sito ftp
  anonimo metalab.unc.edu per scaricare l'ultima versione dei sorgenti
  del kernel di Linux.


  Si digiti, al prompt dei comandi:



       $ ftp metalab.unc.edu



  Il programma ftp tenter di connettersi a metalab.unc.edu. Un altro
  modo per fare ci  quello di eseguire ftp dal prompt dei comandi
  senza parametri, usando poi il comando open, con il nome del sito come
  argomento:



       $ ftp
       ftp> open metalab.unc.edu



  33..22..  AAuutteennttiiccaarrssii pprreessssoo uunn sseerrvveerr FFTTPP

  Quando ci si connette ad un sito FTP, viene avviata una sessione di
  autenticazione (premendo il tasto invio, ftp cercher di autenticarvi
  con lo stesso utente che state usando sulla macchina locale: in questo
  caso, foo). Ci autentichiamo come anonymous o ftp, per accedere
  all'archivio pubblico.



       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):



  Ora, si digiti un indirizzo e-mail completo come password ( quello
  che la maggior parte dei siti FTP pubblici richiede).



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



  Completata con successo l'autenticazione (login), viene fornita
  l'informazione seguente:



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



  33..33..  TTiippii ddii ttrraassffeerriimmeennttoo ffiillee

  Dopo aver ottenuto accesso ad un sito ftp, ftp mostrer il tipo di
  trasferimento file. Nel nostro esempio, esso  binario. La modalit
  binaria trasferisce i file, bit per bit, cos come essi si trovano sul
  server FTP.  La modalit ascii, invece, trasferisce direttamente il
  testo. Per commutare tra le due modalit, basta digitare ascii o
  binary.


  Si vogliono trasferire i sorgenti del kernel, cos si mantiene la
  modalit di trasferimento file binaria. Si user tale modalit anche
  per qualsiasi file non testuale, come immagini, archivi zip/gzip,
  programmi eseguibili, ecc.  Nel dubbio, si usi la modalit binaria.



  33..44..  NNaavviiggaarree eedd eelleennccaarree llee ddiirreeccttoorryy

  Per vedere un elenco dei file, si digiti ls. Il comando ls inviato al
  server ftp  eseguito sul server remoto, cos le opzioni da riga di
  comando che si potranno usare con esso varieranno a seconda del
  server. Comunque, le opzioni pi comuni sono di solito disponibili.
  Controllare la pagina di manuale di ls per i dettagli.



       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.



  Se il comando ls elenca cos tanti file che l'elenco sparisce nella
  parte superiore dello schermo,  possibile usare la combinazione di
  tasti Shift-PaginaSu per scorrere verso l'alto. Ci funziona sia nella
  console Linux che in xterm che in rxvt.

  Negli archivi FTP pubblici, le risorse scaricabili sono di solito
  contenute nella directory /pub. Nel nostro esempio, si sa che i
  sorgenti del kernel si trovano nella directory /pub/Linux/kernel,
  cos, per accedere a tale directory, si digiti:



       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.



  I messaggi mostrati, che iniziano con "250", sono informazioni spedite
  dal server. In questo esempio, il server ftp  stato configurato per
  spedire automaticamente il file README non appena si accede alla
  directory.


  33..55..  DDoowwnnllooaadd ee uuppllooaadd ddeeii ffiillee

  Adesso, dopo aver inviato un altro ls, capiamo di dover accedere con
  cd alla directory v2.2. Grazie ad un ulteriore ls, si trova il file
  che si desiderava scaricare. Si tratta di linux-2.2.13.tar.gz.
  Perci, si digiti:



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



  Il programma ftp ha iniziato a salvare il file remoto
  linux-2.2.13.tar.gz nel file locale linux-2.2.13.tar.gz.


  Se si fosse voluto salvarlo, piuttosto, nel file locale foo.tar.gz, si
  sarebbe dovuto specificare nel modo seguente:



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



  Se si desidera scaricare pi di un file alla volta, si pu usare il
  comando mget (multiple get). Si possono specificare i file che mget
  deve scaricare come una lista di nomi di file separati da spazi,
  oppure tramite l'uso dei caratteri jolly. Per esempio:



       ftp> mget linux*



  Scaricher tutti i file che iniziano con la stringa "linux".
  Normalmente, mget avverte, per ogni file, che sta per scaricarlo.  Si
  pu variare questo comportamento usando il comando prompt.


  Ora, supponiamo di aver scritto una parte di un programma e supponiamo
  di volerla spedire alla MetaLab affinch la includa nell'archivio di
  software per Linux. Per prima cosa, ci si sposter verso la directory
  /incoming (la maggior parte dei server FTP pubblici prevede una
  directory, chiamata solitamente "incoming" o "uploads", in cui si pu
  eseguire l'upload dei file), poi si user il comando 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)



  Il comando put funziona allo stesso modo di get, cos  possibile
  usare mput per l'upload di pi file. Si pu anche effettuare l'upload
  di un file locale cambiandogli il nome sul server: basta specificare
  il nome del file remoto e/o il nome del percorso come argomenti.



  Cosa succede se il file foo.tar.gz non si trova nella directory locale
  corrente al momento del tentativo di upload? Si pu usare il comando
  lcd (local change directory) per cambiare posizione tra le directory
  locali:



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



  33..66..  EEsseegguuiirree ccoommaannddii ddii sshheellll

  Il client ftp supporta l'uso del punto esclamativo (!) per eseguire
  comandi locali. Per esempio, per ottenere un elenco dei file presenti
  nella propria directory locale corrente, si digiti:



  ftp> !ls



  Ci che accade  che ftp chiama la shell (specificata nella variabile
  d'ambiente $SHELL), ed  questa che esegue ls. In questo modo, si pu
  eseguire qualsiasi riga di comando che funziona con la propria shell,
  semplicemente facendola precedere da "!" (la shell predefinita nella
  maggior parte delle distribuzioni Linux  la bash: Bourne Again
  SHell). Si noti che !cd non funziona nel modo atteso: da qui
  l'esigenza del comando lcd.



  33..77..  hhaasshh ee ttiicckk

  Non sarebbe carino poter monitorare il progresso dello scaricamento di
  un file con ftp? Il comando hash mostra a video dei caratteri
  cancelletto (ovvero '#') durante lo scaricamento di un file:



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



  Come si intuisce, ftp mostrer un carattere cancelletto per ogni 1024
  byte di dati scaricati.


  Esiste anche la possibilit di usare tick:



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



  Quando si scaricher un file, questo comando stamper un messaggio
  simile al seguente:



       Bytes transferred: 11680



  33..88..  AAllttrrii ccoommaannddii ffttpp

  Esistono molti altri comandi ftp. Se si possiede l'autorizzazione (e,
  connettendosi al proprio account di shell privato, si dovrebbe
  possederla)  possibile anche creare directory sul server remoto
  usando il comando mkdir.  La rimozione di un file o di una directory
  sul server remoto  possibile usando i comandi delete e rmdir
  rispettivamente.  Si possono anche cambiare i permessi associati a
  file e directory remote usando il comando chmod.
  Per informazioni pi avanzate sull'uso di ftp si veda l'help in linea
  del programma ftp (accessibile digitando help senza argomenti per una
  lista dei comandi disponibili, o seguito da <nome_comando> per aiuto
  su un comando specifico. Un'altra fonte  la pagina di manuale Unix di
  ftp, che si ottiene digitando man ftp al prompt dei comandi.


  44..  CClliieenntt FFTTPP iinn mmooddaalliitt ccoonnssoollee

  Il programma ftp originale fu il primo client ftp, ed  un buon
  investimento il tempo che si spende ad impararlo, essendo anche
  l'unico che si  certi di trovare sulla maggior parte dei sistemi
  (persino Win32 offre il programma ftp, sebbene in una versione arcaica
  e piuttosto stupida).


  Esistono molti altri client ftp disponibili in modalit console (ossia
  testuale o da riga di comando). L'elenco seguente non intende essere
  esaustivo, ma include i client pi usati. Per trovarne altri, si
  cerchi presso FreshMeat.



  44..11..  NNccFFTTPP

  NcFTP  il client ftp preferito da sempre da molti utenti Unix.  Si
  trova incluso nella maggior parte delle distribuzioni Unix ed offre
  molte caratteristiche avanzate come, ad esempio, il completamento
  tramite tasto tab ed i segnalibri (bookmark). La versione 2 di NcFTP
  aveva una modalit a tutto schermo basata su curses, che  stata tolta
  di mezzo nella versione 3 (adesso in fase di beta testing).


  NcFTP non  compatibile al 100% con i comandi presenti in ftp
  standard. Per esempio, get e put in NcFTP agiscono come mget e mput
  nel ftp standard. Cos, volendo salvare un file remoto come un file
  locale con nome diverso, si dovr digitare 'get -z nome_remoto
  nome_locale'. Fortunatamente, NcFTP possiede un valido sistema di help
  in linea che assiste nell'apprendimento dei comandi.


  Si pu ottenere la versione pi recente di NcFTP presso .


  44..22..  lluukkeemmffttpp

  Porting del client FTP di NetBSD su altri sistemi, lukemftp prende il
  suo nome dall'autore della maggior parte delle caratteristiche
  avanzate, le quali includono: editing della riga di comando, ricerca
  di URL FTP e HTTP da riga di comando (anche via proxy), completamento
  automatico delle parole in base al contesto, barra di progresso
  dinamica, supporto dell'IPv6, conservazione della data di modifica,
  paginazione dei file locali e remoti, supporto della modalit passiva
  (con ricaduta sulla modalit attiva), supporto SOCKS, supporto di
  server gate-ftp TIS FWTK e regolazione della velocit di
  trasferimento.


  Raccomando vivamente lukemftp agli utenti che, pur non volendo
  adattarsi a qualcosa di totalmente differente dal client ftp standard,
  richiedono caratteristiche pi avanzate.


  Si pu ottenere la versione pi recente di lukemftp presso .


  44..33..  llffttpp

  lftp  un sofisticato client FTP basato su riga di comando. Come la
  bash, lftp offre un controllo dei job. Utilizza la libreria GNU
  readline per l'input, in modo da offrire completamento ed editing
  della riga di comando. Implementa anche i segnalibri (bookmark), il
  supporto al mirroring e permette di trasferire diversi file in
  parallelo.


  Si pu ottenere la versione pi recente di lftp presso .


  Sono disponibili anche i pacchetti Debian d'installazione presso .


  44..44..  ccffttpp

  Comfortable FTP (cftp)  un client in modalit a tutto schermo.
  Sopperisce alle proprie carenze in fatto di caratteristiche con la
  facilit d'uso. Basta, infatti, navigare attraverso le directory
  usando le frecce direzionali ed il tasto invio.


  La versione pi recente di cftp dovrebbe essere disponibile presso .


  44..55..  yyaaffcc

  Yafc  un client ftp molto carino, le cui caratteristiche comprendono:
  directory cache, completamento automatico dei nomi dei file remoti,
  alias, ls con supporto dei colori, get/put/ls/rm ricorsivi,
  trasferimenti in modalit nohup, tagging (accodamento), connessioni
  multiple, supporto ai proxy e altro. Supporta anche autenticazione
  Kerberos4.


  Si pu ottenere la versione pi recente di yafc presso .


  Sono anche disponibili i pacchetti Debian d'installazione presso .


  Sono anche disponibili i pacchetti Redhat d'installazione presso .



  55..  CClliieenntt FFTTPP ppeerr XX WWiinnddooww

  Ci sono diversi client FTP grafici, progettati per essere eseguiti sul
  sistema X Window. Questi client offrono facilit d'uso agli utenti che
  sono abituati agli ambienti grafici e a volte offrono opzioni
  versatili che sarebbe arduo implementare in un client ftp testuale.


  55..11..  ggFFTTPP

  gFTP  un client FTP per X Windows scritto usando Gtk.  L'interfaccia
  assomiglia al famoso software WS_FTP, usato comunemente su un tale
  sistema operativo instabile.


  gFTP prevede la possibilit di effettuare download simultanei,
  riprendere i trasferimenti precedentemente interrotti di file,
  accodare i trasferimenti di file, scaricare intere directory. Supporta
  il proxy ftp, il caching delle directory remote, il trasferimento
  passivo e non passivo dei file, il drag-n-drop, possiede un gestore
  delle connessioni molto carino e altro ancora.


  Se si possiede un'installazione Linux Red Hat con il gestore di
  finestre GNOME, allora probabilmente si possiede gi gFTP. Se non 
  cos, allora si pu scaricare gFTP dalla sua homepage, presso .


  55..22..  WWXXffttpp

  WXftp  un client FTP per il sistema X Window, progettato per essere
  usato principalmente sulle postazioni di lavoro Linux.  stato scritto
  usando il toolkit WXWindows, quindi pu essere compilato usando sia
  Motif che GTK+.


  Include un'interfaccia utente intuitiva (come WS_FTP), un gestore
  delle sessioni, help in linea, una barra di progresso ed altro.


  Si visiti la homepage di WXftp presso .


  55..33..  LLLLNNLL XXDDIIRR ee XXFFTTPP

  LLNL XFTP fu uno dei primi client FTP grafici per Linux. Supporta FXP
  (trasferimento di file tra due host remoti) ed ha un'interfaccia
  basata su Motif.


  Maggiori informazioni sono disponibili presso .


  55..44..  gguuiiffttpp

  Guiftp  un semplice client ftp scritto con il toolkit GTK+. Lo si
  consiglia a chi non necessita di tante caratteristiche e vuole un
  aspetto semplice e pulito.


  La homepage di Guiftp si trova presso .



  66..  SSeerrvveerr FFTTPP

  66..11..  CCoommee ffuunnzziioonnaa uunn sseerrvveerr FFTTPP

  Un server FTP tradizionale viene eseguito da inetd (il demone che
  avvia le applicazioni server per internet). La porta standard del
  servizio FTP  la numero 21. Quando un utente prova ad autenticarsi,
  il server FTP usa una chiamata di sistema standard per controllare il
  nome utente e la password, confrontando questi dati con quanto salvato
  nel file di sistema per le password o con le tabelle NIS se si sta
  usando NIS. Se l'autenticazione  corretta, viene consentito
  all'utente l'accesso al sistema.


  L'FTP anonimo funziona diversamente. L'utente, in questo caso, si
  autentica con il nome utente 'anonymous' o 'ftp' (come definito nel
  file di configurazione). Quindi, gli viene fornito accesso ad un
  albero delle directory designato con il servizio chroot(). In questo
  modo, si garantisce che l'utente non possa ottenere l'accesso ad
  alberi delle directory per i quali non possiede l'autorizzazione.
  L'albero delle directory designato da chroot() generalmente contiene
  un filesystem fittizio, con le directory bin/, etc/ e lib/. I file
  disponibili per lo scaricamento sono solitamente resi disponibili
  nella directory pub/.


  La motivazione per l'uso di un filesystem fittizio in un albero
  riservato a FTP anonimo risiede nel fatto che il demone FTP pu dover
  eseguire comandi esterni per le richieste di tipo ls. Si possono anche
  aggiungere programmi nella directory bin/ e un utente pu eseguirli
  con il comando SITE nel suo client ftp. Per esempio, l'FTP di Red Hat
  include il comando RPM (per consentire agli utenti di cercare
  pacchetti RPM sul sito).


  Alcuni server FTP funzionano diversamente. Per esempio, alcuni
  consentono di configurare gli account utente indipendentemente dal
  file di sistema usato globalmente per le password (tali account
  prendono il nome di account FTP-only). Alcuni server (ad esempio
  ProFTPD e NcFTPd) implementano al loro interno i comandi di tipo ls e
  non necessitano di un albero delle directory speciale all'interno di
  quello designato con chroot(). Altri server ftp deviano completamente
  dal concetto di ftp standard. FTP4ALL, ad esempio, non usa per niente
  il sistema di password. Esso utilizza i propri file di utenti e di
  gruppi ed implementa caratteristiche quali il rapporto upload/download
  e la personalizzazione dei messaggi del server.


  66..22..  AAiiuuttoo rriigguuaarrddoo aaii sseerrvveerr FFTTPP

  66..22..11..  WWUU--FFTTPPDD

  WU-FTPD  il demone ftp incluso in molte distribuzioni Linux, incluse
  Red Hat e Caldera. Per sapere di pi su WU-FTPD si consulti .


  Le FAQ riguardo WU-FTPD possono essere reperite presso .


  66..22..22..  PPrrooFFTTPPDD

  ProFTPD  un potente server FTP che include una configurazione in
  stile Apache, ampio supporto agli host virtuali ed ls interno.


  Un riferimento completo ai comandi ed ai download si trova presso .



