Äîêóìåíò âçÿò èç êýøà ïîèñêîâîé ìàøèíû. Àäðåñ îðèãèíàëüíîãî äîêóìåíòà : http://www.arcetri.astro.it/irlab/doc/library/linux/AppLinux/al117.htm
Äàòà èçìåíåíèÿ: Tue Sep 21 18:08:43 1999
Äàòà èíäåêñèðîâàíèÿ: Sat Dec 22 13:23:23 2007
Êîäèðîâêà:
Appunti Linux: FTP [inizio] [indice generale] [precedente] [successivo] [indice analitico] [contributi]

91. FTP

Quando il trasferimento di file riguarda un ambito che supera l'estensione di una piccola rete locale, non Õ conveniente consentire l'utilizzo della condivisione del filesystem (NFS) o della copia remota. A questo scopo si presta meglio il protocollo FTP (File Transfer Protocol).

Il servizio FTP viene offerto da un demone che funge da server e viene utilizzato da un programma client in grado di comunicare attraverso il protocollo FTP. Il funzionamento di un programma client tradizionale Õ paragonabile a quello di una shell specifica per la copia di file da e verso un sistema remoto.

In questo capitolo si mostra in modo sommario l'organizzazione del server FTP della Washington University (WU-FTP), e l'utilizzo di alcuni client. Per un approfondimento della configurazione del server, si deve leggere il capitolo 165.

91.1 Identificazione e privilegi

Il sistema di trasferimento di file attraverso FTP richiede una forma di identificazione. Prima di iniziare una sessione FTP Õ necessario passare per una fase di autenticazione, e in base a questo si potrÞ accedere ai file del sistema remoto.

PerchÈ un utente registrato venga accettato per una sessione FTP Õ necessario che abbia una password (non sono quindi ammessi utenti senza password) e una shell valida, cioÕ compresa nell'elenco del file /etc/shells. Quest'ultimo particolare non Õ trascurabile, infatti, a volte si sospende l'utilizzo di un'utenza modificando il campo della shell nel file /etc/passwd: di solito si tratta di uno script che emette un messaggio contenente la motivazione di questa sospensione.

Oltre a queste limitazioni, si utilizza il file /etc/ftpusers per determinare quali utenti non possano essere accettati per una sessione di FTP normale. Di solito si tratta dell'elenco degli utenti di sistema: root bin mail,...

91.1.1 FTP anonimo

Se si vuole permettere l'accesso a utenti che non sono registrati nel proprio sistema (si parla di utenti che non sono previsti nel file /etc/passwd), Õ possibile abilitare l'utilizzo dell'FTP anonimo. Per questo Õ necessario che sia stato previsto un utente speciale nel file /etc/passwd: ftp.

ftp:*:14:50:FTP User:/home/ftp:

A questo utente non deve essere abbinata alcuna password (l'asterisco non corrisponde ad alcuna password) e non deve avere alcuna shell (eventualmente, se si temono accessi indesiderati in altra forma, si puÐ indicare il programma /bin/false come shell).

Per utilizzare un FTP anonimo si puÐ accedere identificandosi come ftp, oppure anonymous. Di norma, viene richiesta ugualmente una password che perÐ non viene (e non puÐ essere) controllata: per convenzione si inserisce l'indirizzo di posta elettronica. *1*

91.2 Dal lato del server

Come giÞ accennato, per poter offrire un servizio FTP, occorre che l'elaboratore disponga del demone ftpd. Oltre al demone occorre predisporre la directory home del servizio FTP anonimo, sempre ammesso che si intenda offrire anche quest'ultimo tipo di servizio.

91.2.1 # ftpd

in.ftpd [<opzioni>]

Si tratta del demone per la gestione degli accessi FTP, cioÕ del programma che si occupa di rendere disponibile l'accesso all'elaboratore per il File Transfer Protocol. õ gestito dal supervisore inetd e filtrato da tcpd. ftpd interpreta il globbing, cioÕ i simboli per i riferimenti a gruppi di file, secondo lo standard della shell C, utilizzando quindi i simboli *, ?, &, [, ], { e }.

Nell'esempio seguente viene mostrata la riga di /etc/inetd.conf in cui si dichiara il suo possibile utilizzo.

ftp	stream	tcp	nowait	root	/usr/sbin/tcpd	in.ftpd -l -a

Opzioni

-d | -v

Vengono aggiunte informazioni diagnostiche all'interno del registro di sistema.

-l

Ogni sessione FTP viene annotata all'interno del registro di sistema.

-tn

Permette di specificare la durata espressa in secondi (n) del timeout, cioÕ del tempo di inattivitÞ oltre il quale la sessione FTP viene conclusa automaticamente. Questo parametro Õ negoziabile anche da parte del client. Il valore predefinito Õ di 15 minuti (900 secondi).

-Tn

Permette di specificare la durata espressa in secondi (n) del timeout massimo. In questo modo, un client non puÐ negoziare un tempo di timeout superiore.

-a

Stabilisce l'uso da parte di ftpd della configurazione contenuta all'interno del file /etc/ftpaccess.

-A

Disabilita l'uso da parte di ftpd della configurazione contenuta all'interno del file /etc/ftpaccess. Questa Õ la modalitÞ predefinita.

-L

Ogni comando inviato da parte degli utenti FTP viene annotato all'interno del registro di sistema.

-i

Vengono registrate le operazioni di invio di file da parte dei client FTP all'interno di /var/log/xferlog.

-o

Vengono registrate le operazioni di prelievo di file da parte dei client FTP all'interno di /var/log/xferlog.

-u<umask>

Definisce un valore particolare della maschera dei permessi.

91.2.2 /etc/ftpaccess

õ il file di configurazione di ftpd per la gestione degli accessi da parte di utenti FTP. Viene utilizzato dal demone ftpd solo se questo Õ stato avviato con l'opzione -a. Segue un esempio del contenuto di questo file.

class   all   real,guest,anonymous  *

email root@localhost

loginfails 5

readme  README*    login
readme  README*    cwd=*

message /welcome.msg            login
message .message                cwd=*

compress        yes             all
tar             yes             all
chmod		no		guest,anonymous
delete		no		guest,anonymous
overwrite	no		guest,anonymous
rename		no		guest,anonymous

log transfers anonymous,real inbound,outbound

shutdown /etc/shutmsg

passwd-check rfc822 warn

La sezione 165.3 descrive meglio la configurazione con questo file. In alternativa si puÐ anche leggere ftpaccess(5).

91.2.3 /etc/ftpconversions

Viene usato da ftpd per determinare le modalitÞ di conversione dei file compressi. Segue un esempio di questo file.

 :.Z:  :  :/bin/compress -d -c %s:T_REG|T_ASCII:O_UNCOMPRESS:UNCOMPRESS
 :   : :.Z:/bin/compress -c %s:T_REG:O_COMPRESS:COMPRESS
 :.gz: :  :/bin/gzip -cd %s:T_REG|T_ASCII:O_UNCOMPRESS:GUNZIP
 :   : :.gz:/bin/gzip -9 -c %s:T_REG:O_COMPRESS:GZIP
 :   : :.tar:/bin/tar -c -f - %s:T_REG|T_DIR:O_TAR:TAR
 :   : :.tar.Z:/bin/tar -c -Z -f - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+COMPRESS
 :   : :.tar.gz:/bin/tar -c -z -f - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+GZIP

In pratica, a seconda di come viene identificato un file durante una sessione FTP, con l'aggiunta o l'eliminazione di un'estensione, si indica implicitamente una conversione di questo. La tabella 91.1 dovrebbe chiarire il meccanismo.

Nome reale Nome specificato Azione compiuta prima della trasmissione del file
<radice>.Z <radice> Viene trasmesso dopo essere stato decompresso con uncompress.
<radice> <radice>.Z Viene trasmesso dopo essere stato compresso con compress.
<radice>.gz <radice> Viene trasmesso dopo essere stato decompresso con gunzip.
<radice> <radice>.gz Viene trasmesso dopo essere stato compresso con gzip.
<radice> <radice>.tar Viene trasmesso dopo essere stato archiviato con tar.
<radice> <radice>.tar.Z Viene archiviato e compresso con tar e compress.
<radice> <radice>.tar.gz Viene archiviato e compresso con tar e gzip.

Tabella 91.1: FTP -- conversione automatica degli archivi in base alle estensioni utilizzate.

Di solito, questa tecnica di trasformazione automatica non viene utilizzata: i nomi dei file vengono indicati esattamente come sono nella realtÞ e nessuna conversione ha luogo.

91.2.4 /etc/ftpusers

Il file /etc/ftpusers viene utilizzato per impedire l'accesso agli utenti indicati al suo interno. L'esempio seguente chiarisce il senso di questo file.

root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody

Come si vede, si vuole evitare che si possa accedere a un servizio FTP normale (non anonimo) utilizzando i nomi degli utenti di sistema, root incluso. Ovviamente, si possono aggiungere altri nomi di utenti registrati in questo elenco, impedendo cosË il loro utilizzo del servizio FTP normale (se il servizio FTP anonimo Õ attivato, continuano a poterlo utilizzare).

91.2.5 /etc/ftphosts

Il file /etc/ftphosts viene utilizzato per filtrare l'accesso da parte di determinati utenti da determinati nodi.

deny <utente> <host>...

L'utente indicato non puÐ accedere dai nodi elencati. Questi nodi possono essere specificati in modo completo o in modo parziale, intendendo cosË un intero gruppo di nodi.

91.2.6 Home dell'FTP anonimo

Una volta effettuato il collegamento, l'utente anonimo (ftp o anonymous) viene posizionato nella directory home, in base a quanto indicato nel file /etc/passwd nella voce corrispondente dell'utente ftp. Di solito si tratta della directory /home/ftp/.

õ bene precisare che l'utente anonimo, dopo la connessione, trova davanti a sÈ solo la gerarchia che si articola a partire da ~ftp/, dal momento che il server FTP esegue la funzione chroot(). õ questo il motivo per cui Õ necessario che da quel punto siano disponibili alcuni programmi di utilitÞ nella directory ~ftp/bin/, assieme ad altri elementi essenziali di un filesystem Unix.

Generalmente, le varie distribuzioni GNU/Linux organizzano giÞ questa directory in modo ragionevolmente corretto. Segue un esempio di struttura di ~ftp/ che puÐ essere utilizzato in mancanza d'altro. õ da tenere presente che le soluzioni legate all'organizzazione e alla sicurezza possono essere molte altre.

õ opportuno che nessuna directory sia modificabile, a parte il caso di incoming/, descritta piÛ avanti.

Segue un esempio del contenuto delle directory appena esaminate.

bin:
total 534
---x--x--x   1 root     root        14940 Mar  3  1997 compress
---x--x--x   1 root     root       292160 Mar  3  1997 cpio
---x--x--x   1 root     root        45056 Mar  3  1997 gzip
---x--x--x   1 root     root        49432 Mar  3  1997 ls
---x--x--x   1 root     root        56380 Mar  3  1997 sh
---x--x--x   1 root     root        77560 Mar  3  1997 tar
lrwxrwxrwx   1 root     root            4 Jul 12 11:29 zcat -> gzip

etc:
total 6
-r--r--r--   1 root     root           53 Mar  3  1997 group
-r--r--r--   1 root     root         4004 Feb 26  1997 ld.so.cache
-r--r--r--   1 root     root           79 Mar  3  1997 passwd

lib:
total 725
-rwxr-xr-x   1 root     root        19704 Mar  3  1997 ld-linux.so.1
-rwxr-xr-x   1 root     root        19704 Mar  3  1997 ld-linux.so.1.7.14
-rwxr-xr-x   1 root     root        24576 Mar  3  1997 ld.so
-rwxr-xr-x   1 root     root        24576 Mar  3  1997 ld.so.1.7.14
lrwxrwxrwx   1 root     root           14 Jul 12 11:29 libc.so.5 -> libc.so.5.3.12
-rwxr-xr-x   1 root     root       644036 Mar  3  1997 libc.so.5.3.12

pub:
total 0

Quello che segue Õ l'esempio del contenuto del file ~ftp/etc/passwd.

root:*:0:0:::
bin:*:1:1:::
operator:*:11:0:::
ftp:*:14:50:::
nobody:*:99:99:::

Quello che segue Õ l'esempio del contenuto del file ~ftp/etc/group.

root::0:
bin::1:
daemon::2:
sys::3:
adm::4:
ftp::50:

91.2.6.1 Conciliare sicurezza e praticitÞ

Il massimo della sicurezza si ottiene:

Da un punto di vista di praticitÞ, o di necessitÞ, puÐ essere opportuno che sia consentito all'utente root di accedere in lettura e scrittura, altrimenti il lavoro di amministrazione dell'FTP anonimo risulterebbe impedito.

91.3 Dal lato del client

Per usufruire di un servizio FTP Õ necessario un programma in grado di comunicare attraverso il protocollo FTP. Per esempio, i navigatori web integrati includono anche questa funzionalitÞ. Tuttavia, i programmi tradizionali che funzionano in modo simile a una shell, sono spesso piÛ ricchi di funzionalitÞ.

91.3.1 $ ftp

ftp [<opzioni>] [<host>]

õ il programma client tradizionale per il trasferimento di file da e verso un nodo remoto. Quando viene avviato con l'indicazione del nome dell'elaboratore remoto, ftp tenta immediatamente di effettuare il collegamento; diversamente si avvia e attende il comando con il quale questo elaboratore verrÞ specificato. Se esiste il file ~/.netrc, questo viene utilizzato per automatizzare l'accesso nell'elaboratore remoto. Quando ftp Õ in attesa di un comando da parte dell'utente, presenta l'invito seguente (prompt): ftp>.

Alcune opzioni

-V

Vengono visualizzati tutti i messaggi.

-n

Disabilita l'accesso automatico.

-i

Disattiva la richiesta interattiva durante i trasferimenti multipli di file.

-d

Attiva il debug, ovvero la modalitÞ diagnostica.

-g

Disabilita il globbing, ovvero l'uso di simboli per l'indicazione di gruppi di file.

91.3.1.1 Comandi

Come giÞ accennato, quando ftp Õ in attesa di un comando da parte dell'utente, presenta l'invito ftp>. Quello che segue Õ l'elenco dei comandi che possono essere utilizzati. Se i parametri dei comandi contengono il carattere spazio, questi devono essere delimitati da una coppia di apici doppi ("). L'elenco Õ suddiviso per categorie.

Se la lettura di questa sezione Õ troppo noiosa, si puÐ saltare direttamente a leggere gli esempi della sezione 91.3.2.

Shell

! [<comando> [<argomenti>]]

Avvia una shell sull'elaboratore locale, oppure esegue il comando indicato con gli argomenti che gli vengono forniti.

Macro

$ <macro> [<argomenti>]

Esegue la macro indicata che si riferisce a un nome di una macro creata con il comando macdef. Gli argomenti vengono passati alla macro giÞ espansi (unglobbed).

macdef <macro>

Definisce una macro (macro istruzione) attribuendole un nome. La macro puÐ contenere piÛ righe purchÈ consecutive: la prima riga vuota viene interpretata come la fine dell'inserimento. Possono essere inserite un massimo di 16 macro che occupano uno spazio complessivo di 4096 caratteri. Le macro restano definite fino a che non viene immesso un comando close che conclude la connessione con un determinato sistema remoto.

La macro viene interpretata nel modo seguente:

Identificazione

account [<password>]

Fornisce a ftp l'informazione sulla password di account che a volte viene richiesta da alcuni sistemi per potervi accedere. Se l'argomento password non viene fornito, viene richiesto all'utente di inserirlo.

user <utente> [<password>] [<account>]

Definisce l'identitÞ dell'utente da utilizzare per il l'accesso nel sistema remoto. Se password e account non vengono forniti, ma sono richiesti nel sistema con il quale si intende connettersi, questi dovranno essere inseriti al momento del collegamento.

Trasferimento dati

append <file-locale> [<file-remoto>]

Aggiunge, in coda, il contenuto del file locale a quello del sistema remoto. Se non viene fornito il nome del file di destinazione, si intende lo stesso nome di quello di origine.

get <file-remoto> [<file-locale>] | recv <file-remoto> [<file-locale>]

get e recv sono sinonimi. Riceve il file remoto indicato, eventualmente rinominandolo come indicato.

mget <file-remoti>

Esegue un get multiplo, cioÕ su tutti i file che si ottengono dall'espansione del nome indicato utilizzando i simboli per il globbing.

newer <file-remoto>

Esegue un get del file remoto, solo se risulta essere piÛ recente di quello presente nel sistema locale.

put <file-locale> [<file-remoto>] | send <file-locale> [<file-remoto>]

put e send sono sinonimi. Copia il file specificato nel sistema remoto eventualmente rinominandolo come indicato.

mput <file-locali>

Espande il nome indicato con l'aiuto dei simboli per il globbing ed esegue un put per tutti questi file, trasmettendoli in sostanza nel sistema remoto.

reget <file-remoto> [<file-locale>]

Permette di riprendere il get di un file remoto quando l'operazione precedente Õ stata interrotta involontariamente. L'operazione non Õ sicura e si basa solo sul calcolo della dimensione del file locale per determinare la parte mancante ancora da trasferire.

Interruzione del trasferimento

L'operazione di trasferimento puÐ essere interrotta utilizzando la combinazione [Ctrl+c].

ModalitÞ di trasferimento dei dati

ascii

Imposta il tipo di trasferimento in modalitÞ ASCII. Questa Õ la modalitÞ normale e comunque non Õ adatta al trasferimento di file i cui byte contengono informazioni anche dopo il settimo bit. Questo tipo di modalitÞ di trasferimento di dati puÐ essere conveniente (ma non necessaria) solo per i file di testo puro che non contengono caratteri speciali di alcun tipo.

binary

Imposta il tipo di trasferimento in modalitÞ binaria. Questa modalitÞ Õ adatta al trasferimento di qualunque tipo i file.

cr

Attiva o disattiva la trasformazione della sequenza <CR><LF> in <LF> per i trasferimenti ASCII verso il sistema locale. In pratica, converte i file di testo scritti in stile Dos in file corrispondenti in stile Unix. Quando Õ attivata la modalitÞ, viene eseguita la conversione.

mode [<modalitÞ-di-trasferimento>]

Configura la modalitÞ di trasferimento. Il valore predefinito Õ stream.

runique

Attiva o disattiva la modalitÞ di unicitÞ dei nomi in ricezione. Quando la modalitÞ Õ attiva, se durante le operazioni di get o mget, si incontrano nel sistema locale dei file con gli stessi nomi, l'operazione di trasferimento avviene aggiungendo al nome il suffisso .1, oppure .2, fino a un massimo di .99. La condizione predefinita di questa modalitÞ Õ di disattivazione.

sunique

Attiva o disattiva la modalitÞ di unicitÞ dei nomi in trasmissione. Quando la modalitÞ Õ attiva, se durante le operazioni di put o mput, si incontrano nel sistema remoto dei file con gli stessi nomi, l'operazione di trasferimento avviene aggiungendo al nome il suffisso .1, oppure .2, fino a un massimo di .99. La condizione predefinita di questa modalitÞ Õ di disattivazione.

struct [<struttura>]

Stabilisce il tipo di struttura da utilizzare per il trasferimento dei dati. Il valore predefinito Õ stream.

tenex

Configura il tipo di trasferimento dati in modo da essere compatibile con il sistema usato da un elaboratore remoto che utilizza questo tipo di protocollo.

type [<tipo-di-trasferimento>]

Attiva o visualizza il tipo di trasferimento dei dati. Il valore predefinito Õ ascii. I tipi a disposizione sono i seguenti.

Informazioni

bell

Attiva o disattiva la segnalazione acustica alla fine di ogni operazione di trasferimento di file.

debug [<livello-di-debug>]

Attiva o disattiva la modalitÞ diagnostica. Quando questa Õ attiva, vengono visualizzati i comandi inviati al sistema remoto, evidenziati dal simbolo -->.

hash

Abilita o disabilita la visualizzazione della progressione delle operazioni di trasferimento utilizzando i simboli # che rappresentano un blocco di 1024 byte.

prompt

Attiva o disattiva la modalitÞ di conferma. Se Õ attiva, durante le operazioni di trasferimento di gruppi di file, viene richiesta la conferma per ogni file.

trace

Attiva o disattiva il tracciamento dei pacchetti. Normalmente Õ disattivato.

verbose

Attiva o disattiva la modalitÞ con la quale si visualizzano tutti i messaggi legati alla comunicazione con il sistema remoto.

Connessione e chiusura

bye | quit

bye e quit sono sinonimi. Termina il collegamento e termina l'attivitÞ di ftp.

close | disconnect

Termina la connessione senza uscire del programma.

open <host> [<porta>]

Apre una connessione con l'elaboratore remoto indicato ed eventualmente anche specificando la porta di comunicazione. Se la modalitÞ di accesso automatico Õ attiva, ftp tenta anche di effettuare l'accesso nel sistema remoto.

Conversione dei nomi e filtri

case

Attiva o disattiva la modalitÞ di trasformazione per cui i nomi dei file trasferiti dal sistema remoto attraverso il comando mget vengono copiati nel sistema locale utilizzando solo lettere minuscole.

form <formato>

Configura il filtro di trasferimento form in base al formato attribuito. Il valore predefinito Õ file.

glob

Attiva o disattiva l'espansione dei nomi di file contenenti simboli per il globbing per l'uso con mdelete, mget e mput. L'utilitÞ di disattivare l'espansione dei nomi sta nella possibilitÞ di identificare (e trasferire) file con nomi strani che utilizzano simboli speciali che altrimenti sarebbero intesi come jolly (o metacaratteri). Il globbing, cioÕ l'espansione dei nomi, viene fatto in maniera differente a seconda che si riferisca a dati contenuti nell'elaboratore locale, oppure nell'elaboratore remoto. Per le operazioni con mput che si riferiscono a dati locali da trasmettere, si utilizza il modello della shell C.

Nel caso di mget e mdelete che si riferiscono all'acquisizione e alla cancellazione di dati remoti, valgono le regole stabilite dal server FTP in funzione nell'elaboratore remoto. Per verificare il comportamento dell'espansione dei nomi in un elaboratore remoto Õ possibile utilizzare il comando mls nel modo seguente:

mls <file-remoti> -

---------

nmap [<modello-in-ingresso> <modello-in-uscita>]

Definisce una regola per la trasformazione dei nomi dei file per il collegamento con il sistema remoto. Se non viene fornito alcun parametro, la regola di trasformazione viene annullata.

ntrans [<caratteri-in-ingresso> <caratteri-in-uscita>]

Definisce una trasformazione dei caratteri in ingresso con i rispettivi caratteri in uscita per la trasformazione dei nomi dei file quando ci sono incompatibilitÞ con i nomi utilizzati nel sistema remoto. Se non viene fornito alcun parametro, la regola di trasformazione viene annullata.

umask [<maschera>]

Definisce una nuova maschera dei permessi nel sistema remoto. Se non viene specificato l'argomento, si ottiene la visualizzazione del valore corrente di questa maschera.

Operazioni sul sistema remoto

cd [<directory-remota>]

Cambia la directory corrente nel sistema remoto.

cdup

Cambia la directory corrente nel sistema remoto, portandosi sul livello precedente (parent).

chmod <permessi file-remoto>

Cambia i permessi sul file remoto.

delete <file-remoto>

Cancella il file indicato nel sistema remoto.

dir [<directory-remota>] [<file-locale>] | ls [<directory-remota>] [<file-locale>]

nlist [<directory-remota>] [<file-locale>]

dir, ls, nlist sono sinonimi. Elencano il contenuto della directory remota specificata, oppure di quella attuale se non viene indicata. L'elenco viene emesso attraverso lo standard output, quando non viene specificato il file locale all'interno del quale si vuole immettere questo elenco. L'aspetto dell'elenco dipende dal sistema con il quale si sta comunicando. Di solito Õ molto simile a quello di un ls -l.

mdelete [<file-remoti>]

Cancella i file remoti indicati con l'aiuto di simboli opportuni per il globbing,

mdir <file-remoti> <file-locale> | mls <file-remoti> <file-locale>

mdir e mls sono sinonimi. Elencano i file remoti indicati con l'aiuto di simboli per il globbing e ne immettono il risultato nel file locale indicato. Se si vuole visualizzare l'elenco, invece di generare un file, si puÐ utilizzare un trattino singolo (-) al posto del nome di questo file. Questo comando Õ particolarmente importante per verificare la trasformazione dei simboli usati per il globbing sui file del sistema remoto prima di procedere con operazioni piÛ delicate come il prelievo multiplo (mget) o la cancellazione multipla (mdelete).

mkdir <directory-remota>

Crea una directory nel sistema remoto.

modtime <file-remoto>

Visualizza la data e l'ora dell'ultima modifica del file indicato nel sistema remoto.

pwd

Visualizza il nome della directory corrente del sistema remoto.

quote <argomenti>

Trasmette gli argomenti indicati al sistema remoto esattamente cosË come vengono scritti.

remotestatus [<file-remoto>]

Se il comando viene dato senza l'argomento, si ottiene lo stato del sistema remoto. Se viene fornito il nome di file remoto, si ottiene lo stato di quel file nel sistema remoto.

rename <origine> <destinazione>

Permette di cambiare il nome di un file nel sistema remoto.

rmdir <directory-remota>

Cancella una directory nel sistema remoto.

size <file-remoto>

Restituisce la dimensione del file remoto.

status

Visualizza lo stato attuale del sistema remoto.

system

Visualizza il tipo di sistema operativo in funzione nel sistema remoto.

Operazioni sul sistema locale

lcd [<directory>]

Cambia la directory corrente all'interno dell'elaboratore locale. Se non viene specificato il percorso si intende la directory personale dell'utente.

Help

help [<comando>] | ? [<comando>]

help e ? sono sinonimi. Visualizza una breve guida dei comandi.

remotehelp [<comando>]

Permette di richiedere la guida dei comandi al sistema remoto.

Proxy

proxy <comando-ftp>

Invia il comando indicato a un altro elaboratore remoto. Questo Õ un modo per potersi connettere contemporaneamente a due sistemi remoti e di conseguenza di trasferire file tra i due. Per poter iniziare il collegamento con un elaboratore remoto secondario, il primo comando sarÞ proxy open. Non tutti i comandi sono disponibili anche per una connessione secondaria; per visualizzarne l'elenco, basta dare il comando proxy ?. Quando viene aperta la connessione con un elaboratore secondario, i comandi proxy riguardano il trasferimento di file tra l'elaboratore remoto normale e quello secondario, trattando quest'ultimo come se fosse quello locale.

91.3.1.2 Flusso standard di dati

Se, all'interno dei parametri dei comandi, quando viene richiesto un nome di file, viene fornito un singolo trattino (-), si intende riferirsi a:

Quando al posto del nome di un file viene fornita una barra verticale (|) seguita da una qualche stringa (eventualmente racchiusa tra apici doppi, nel caso contenga spazi), quella stringa viene interpretata come un comando da inviare alla shell. CiÐ in modo che venga sostituito l'insieme |<stringa> con il risultato di quel comando inviato alla shell.

91.3.1.3 Configurazione

ftp puÐ essere configurato creando o modificando il file ~/.netrc. Si tratta di un file di testo normale in cui ogni riga corrisponde a un comando. Per separare i comandi dai loro parametri possono essere usati sia spazi che caratteri di tabulazione. Le indicazioni contenute all'interno del file sono precedute dal nome del nodo remoto a cui si riferiscono. In tal modo, quando ftp riceve l'ordine di collegamento con un certo nodo, cerca all'interno di questo file per trovare il profilo che lo riguarda.

Alcune direttive

machine <nome>

Il nome del nodo a cui fa riferimento la configurazione seguente:

default

Rappresenta la configurazione predefinita per tutti i nodi remoti non previsti all'interno di questo file.

login <utente>

Definisce il nominativo da utilizzare per il collegamento.

password <stringa-password>

Definisce la password per l'accesso al sistema remoto.

account <stringa-password>

Definisce una password ulteriore per i sistemi remoti che lo richiedono.

macdef <macro>

Definisce una macro (macro istruzione) attribuendole un nome. Il contenuto della macro Õ rappresentato dalle righe successive alla definizione. La macro puÐ contenere piÛ righe purchÈ consecutive: la prima riga vuota viene interpretata come la fine dell'inserimento. Possono essere inserite un massimo di 16 macro che occupano uno spazio complessivo di 4096 caratteri. Le macro restano definite fino a che non viene immesso un comando close che conclude la connessione con un determinato sistema remoto. La macro viene interpretata nel modo seguente:

Se viene definita una macro con il nome init, questa viene eseguita automaticamente come ultima operazione dell'accesso automatico.

91.3.2 Esempi

L'uso di un client FTP puÐ essere anche semplice, se si lasciano da parte raffinatezze non indispensabili. Seguono alcuni esempi di sessioni FTP.

Prelievo di file

daniele@roggen:~$ ftp dinkel.brot.dg[Invio]

Si richiede la connessione FTP all'elaboratore dinkel.brot.dg.

Connected to dinkel.brot.dg.
220 dinkel.brot.dg FTP server (Version wu-2.4.2-academ[BETA-12](1) Wed Mar 5 12:37:21 EST 1997) ready.
Name (roggen.brot.dg:daniele):

anonymous[Invio]

Si utilizza una connessione anonima e per correttezza si utilizza il proprio indirizzo di posta elettronica abbreviato al posto della password.

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

daniele@[Invio]

230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using ascii mode to transfer files.

Come si vede, la modalitÞ di trasferimento predefinita Õ ASCII (almeno cosË succede di solito). Generalmente si deve utilizzare una modalitÞ binaria. Questa verrÞ richiesta tra un po'; per ora viene richiesta la guida interna dei comandi a disposizione.

ftp> help[Invio]

Commands may be abbreviated.  Commands are:

!		debug		mdir		sendport	site
$		dir		mget		put		size
account		disconnect	mkdir		pwd		status
append		exit		mls		quit		struct
ascii		form		mode		quote		system
bell		get		modtime		recv		sunique
binary		glob		mput		reget		tenex
bye		hash		newer		rstatus		tick
case		help		nmap		rhelp		trace
cd		idle		nlist		rename		type
cdup		image		ntrans		reset		user
chmod		lcd		open		restart		umask
close		ls		prompt		rmdir		verbose
cr		macdef		passive		runique		?
delete		mdelete		proxy		send

ftp> binary[Invio]

Come accennato, viene richiesto di passare alla modalitÞ di trasferimento binario.

200 Type set to I.

ftp> prompt[Invio]

Anche la modalitÞ interattiva viene disattivata per evitare inutili richieste.

Interactive mode off.

La struttura delle directory di un normale servizio FTP anonimo prevede la presenza della directory pub/ dalla quale discendono i dati accessibili all'utente sconosciuto.

Anche se dal punto di vista del client FTP, che accede al servizio remoto, si tratta della prima directory dopo la radice, in realtÞ questa radice Õ solo la directory home del servizio FTP anonimo. Di conseguenza, Õ quasi impossibile che corrisponda realmente con la directory radice del filesystem remoto. Tutto questo serve solo a spiegare perchÈ il comando cd /pub potrebbe non funzionare quando ci si collega a server configurati male. Ecco perchÈ nell'esempio che segue non si utilizza la barra obliqua davanti a pub.

ftp> cd pub[Invio]

250 CWD command successful.

ftp> pwd[Invio]

257 "/pub" is current directory.

ftp> ls[Invio]

200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
total 4
dr-xr-sr-x   3 root     ftp          1024 Nov 12 21:04 .
drwxr-xr-x   6 root     root         1024 Sep 11 20:31 ..
-rw-r--r--   1 root     ftp            37 Nov 12 21:04 esempio
drwxrwsrwx   2 root     ftp          1024 Nov  2 14:04 incoming
226 Transfer complete.

Attraverso il comando ls si vede che la directory pub/ contiene solo il file esempio e la directory incoming/. Si decide di prelevare il file.

ftp> get esempio[Invio]

local: esempio remote: esempio
200 PORT command successful.
150 Opening BINARY mode data connection for esempio (37 bytes).
226 Transfer complete.
37 bytes received in 0.00155 secs (23 Kbytes/sec)

Il file scaricato viene messo nella directory in cui si trovava l'utente quando avviava il programma ftp.

ftp> quit[Invio]

221 Goodbye.

Invio di dati

daniele@roggen:~$ ftp dinkel.brot.dg[Invio]

Si richiede la connessione FTP all'elaboratore dinkel.brot.dg e si danno una serie di comandi per raggiungere la directory pub/incoming.

Connected to dinkel.brot.dg.
220 dinkel.brot.dg FTP server (Version wu-2.4.2-academ[BETA-12](1) Wed Mar 5 12:37:21 EST 1997) ready.
Name (dinkel.brot.dg:daniele):

anonymous[Invio]

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

daniele@[Invio]

230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using ascii mode to transfer files.

ftp> binary[Invio]

200 Type set to I.

ftp> prompt[Invio]

Interactive mode off.

ftp> cd pub/incoming[Invio]

250 CWD command successful.

ftp> pwd[Invio]

Si verifica la posizione in cui ci si trova.

257 "/pub/incoming" is current directory.

ftp> mput al-1*[Invio]

Dal momento che la directory Õ giusta, si inizia la trasmissione di tutti i file che nella directory locale corrente iniziano per al-1.

local: al-1 remote: al-1
200 PORT command successful.
150 Opening BINARY mode data connection for al-1.
226 Transfer complete.
2611649 bytes sent in 1.38 secs (1.9e+03 Kbytes/sec)
local: al-15 remote: al-15
200 PORT command successful.
150 Opening BINARY mode data connection for al-15.
226 Transfer complete.
2612414 bytes sent in 2.51 secs (1e+03 Kbytes/sec)
local: al-16 remote: al-16
200 PORT command successful.
150 Opening BINARY mode data connection for al-16.
226 Transfer complete.
2612414 bytes sent in 2.16 secs (1.2e+03 Kbytes/sec)
local: al-17 remote: al-17
200 PORT command successful.
150 Opening BINARY mode data connection for al-17.
226 Transfer complete.
2612420 bytes sent in 2.17 secs (1.2e+03 Kbytes/sec)
local: al-18 remote: al-18
200 PORT command successful.
150 Opening BINARY mode data connection for al-18.
226 Transfer complete.
2612409 bytes sent in 2.4 secs (1.1e+03 Kbytes/sec)
local: al-19 remote: al-19
200 PORT command successful.
150 Opening BINARY mode data connection for al-19.
226 Transfer complete.
2612431 bytes sent in 2.35 secs (1.1e+03 Kbytes/sec)

ftp> ls[Invio]

Si controlla il risultato nell'elaboratore remoto. A volte, i servizi FTP impediscono la lettura del contenuto di questa directory.

200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
total 15379
drwxrwsrwx   2 root     ftp          1024 Dec 11 20:40 .
dr-xr-sr-x   3 root     ftp          1024 Nov 12 21:04 ..
-rw-rw-r--   1 ftp      ftp       2611649 Dec 11 20:40 al-1
-rw-rw-r--   1 ftp      ftp       2612414 Dec 11 20:40 al-15
-rw-rw-r--   1 ftp      ftp       2612414 Dec 11 20:40 al-16
-rw-rw-r--   1 ftp      ftp       2612420 Dec 11 20:40 al-17
-rw-rw-r--   1 ftp      ftp       2612409 Dec 11 20:40 al-18
-rw-rw-r--   1 ftp      ftp       2612431 Dec 11 20:40 al-19
226 Transfer complete.

ftp> quit[Invio]

221 Goodbye.

91.4 Informazioni

Alcuni programmi possono informare sullo stato dell'utilizzo del servizio FTP.

91.4.1 # ftpcount

ftpcount

ftpcount visualizza la quantitÞ di utenti connessi in modo ftp per ogni classe e anche il massimo numero di connessioni ammissibili.

Esempi

ftpcount[Invio]

Service class all	-    1 users ( -1 maximum)

L'esempio mostra la risposta di ftpcount quando un solo utente accede al proprio sistema. Il valore -1 rappresenta in realtÞ 65535, o comunque l'intero di dimensione massima che puÐ essere gestito.

91.4.2 # ftpwho

ftpwho

ftpwho visualizza le informazioni disponibili inerenti gli utenti connessi in modo ftp.

Esempi

ftpwho[Invio]

Service class all: 
  592  ?  S    0:00 ftpd: dinkel.brot.dg: anonymous/daniele@: IDLE
   -   1 users ( -1 maximum)

L'esempio mostra la risposta di ftpwho quando un solo utente accede al proprio sistema. Il valore -1 rappresenta in realtÞ 65535, o comunque l'intero di dimensione massima che puÐ essere gestito.

91.5 Altri tipi di client

Il protocollo FTP Õ molto importante per il trasferimento dei file, di conseguenza, oltre al programma client tradizionale (ftp), ne esistono diversi altri che possono compiere funzioni analoghe. Due di questi meritano particolare attenzione.

---------------------------

Appunti Linux 1999.09.21 --- Copyright © 1997-1999 Daniele Giacomini --  daniele @ pluto.linux.it


1.) Quando si inserisce il proprio indirizzo di posta elettronica come password per accedere a un servizio FTP anonimo, Õ sufficiente indicare la parte che precede il dominio, fino al simbolo @ incluso. Quindi, se l'indirizzo fosse daniele@dinkel.brot.dg, basterebbe inserire daniele@.


[inizio] [indice generale] [precedente] [successivo] [indice analitico] [contributi]