Capitolo successivo Capitolo precedente Indice

57. FTP

Quando il trasferimento di file non è una operazione limitata all'ambito di una piccola rete locale, non è conveniente consentire l'utilizzo della condivisione del filesystem (NFS) o della copia remota. A questo si presta meglio il protocollo FTP (File Transfer Protocol).

Il servizio FTP viene offerto da un daemon 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.

57.1 Identificazione e privilegi

Il sistema di trasferimento di file attraverso FTP richiede una forma di identificazione basata sull'account dell'utente che richiede di accedere. Prima di iniziare una sessione FTP è necessario un login, 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 un account 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 account di sistema: root bin mail, ...

FTP anonimo

Se si vuole permettere l'accesso ad utenti che non sono registrati nel proprio sistema (si parla di utenti che non hanno un account), è 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:

Ad esso 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 ugualmente richiesta una password che però non viene (e non può essere) controllata: per convenzione si inserisce l'indirizzo e-mail.

Quando si inserisce il proprio indirizzo e-mail 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@topolino.zigozago.dg, basterebbe inserire daniele@.

57.2 Dal lato del server

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

# ftpd

ftpd [<opzioni>]

Si tratta del daemon per la gestione degli accessi FTP, cioè del programma che si occupa di rendere disponibile l'accesso al computer 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 di csh, 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 (di debug) all'interno del log di sistema.

-l

Ogni sessione FTP viene registrata all'interno del log 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 registrato all'interno del log 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 di umask.

/etc/ftpaccess

È il file di configurazione di ftpd per la gestione degli accessi da parte di utenti FTP. Viene utilizzato dal daemon 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

Vedere ftpaccess(5).

/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 una estensione, si indica implicitamente una conversione di questo. La tabella (seguente) 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.
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.

/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 gli account 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).

/etc/ftphosts

Il file /etc/ftphosts viene utilizzato per concedere o impedire l'accesso da parte di determinati utenti da determinati computer host. Si utilizzano due tipi di sintassi.

allow <utente> <host>...

deny <utente> <host>...

Nel primo caso si concede di accedere utilizzando quel particolare nome di utente solo dai computer indicati; nel secondo si vieta l'utilizzo di quel particolare nome di utente dai computer indicati.

I computer host possono essere indicati in modo completo o in modo parziale, intendendo così un intero gruppo di host.

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 in corrispondenza dell'utente ftp. Di solito si tratta della directory /home/ftp.

Di solito, le varie distribuzioni 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.

~ftp/

Contiene normalmente un file con un messaggio introduttivo. Si tratta normalmente del file welcome.msg che deve essere opportunamente protetto: deve essere accessibile solo in lettura a tutti gli altri utenti.

~ftp/bin/

Serve a contenere alcuni programmi di utilità indispensabili per le operazioni di FTP. Per esempio, non deve mancare ls.

Dal punto di vista dell'utilizzo, è sufficiente che tali file siano accessibili in esecuzione, mentre dal punto di vista della sicurezza è necessario che non siano modificabili.

~ftp/etc/

Serve a contenere essenzialmente i file passwd e group. È importante che questi file non contengano password, o al massimo che queste non siano reali. La presenza di questi file serve solo a ottenere una conversione tra UID e nome dell'utente e tra GID e nome del gruppo. In pratica, vengono utilizzati da ls per generare un listato leggibile della proprietà dei file.

Se la directory ~ftp/lib/ contiene delle libreria, oltre ai due file già visti, è necessario che sia presente ld.so.cache.

I file contenuti in questa directory devono essere accessibili solo in lettura.

~ftp/lib/

Serve a contenere i file di libreria degli eseguibili contenuti in ~ftp/bin/. Questi file di libreria devono essere accessibili in lettura e in esecuzione, e naturalmente devono essere protetti dalla scrittura.

~ftp/pub/

Questa directory può essere organizzata in vario modo. Di solito è il contenitore di file messi a disposizione per il prelievo. In tal caso sarà conveniente che la directory non sia modificabile e che i file siano accessibili solo in lettura.

Per poter rendere disponibile una directory per la ricezione di file, questa deve essere accessibile in scrittura. Di solito si crea la directory incoming collocata al di sotto di ~ftp/pub/ o di un'altra sottodirectory, e gli si danno solo i permessi di esecuzione e scrittura, impedendo così la lettura del suo contenuto.

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:

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.

57.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à.

$ ftp

ftp [<opzioni>] [<host>]

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

Alcune opzioni

-V

Vengono visualizzati tutti i messaggi.

-n

Disabilita il login 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.

Comandi

Come già accennato, quando ftp è in attesa di un comando da parte dell'utente, presenta il prompt 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 doppi apici ("). L'elenco è suddiviso per categorie.

Shell

! [<comando> [<argomenti>]]

Avvia una shell sul computer locale, oppure esegue il comando indicato con gli eventuali argomenti.

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 login nel sistema remoto. Se password e account non vengono forniti, ma sono richiesti nel sistema con il quale si intende connettersi, questi verranno richiesti al momento del collegamento.

Trasferimento dati

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

Aggiunge, appendendolo, 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 la 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/disattiva la trasformazione della sequenza <CR><LF> in <LF> (ovvero newline nei sistemi Unix) per i trasferimenti ASCII verso il sistema locale. Quando è attivato, viene eseguita la conversione.

mode [<modalità-di-trasferimento>]

Configura la modalità di trasferimento. Il valore predefinito è stream.

runique

Attiva/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/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 computer 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/disattiva la segnalazione acustica alla fine di ogni operazione di trasferimento di file.

debug [<livello-di-debug>]

Attiva/disattiva la modalità di debug. Quando questa è attiva, vengono visualizzati i comandi inviati al sistema remoto, evidenziati dal simbolo -->.

hash

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

prompt

Attiva/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/disattiva il tracciamento dei pacchetti. È normalmente disattivato.

verbose

Attiva/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 il computer remoto indicato ed eventualmente anche specificando la porta di comunicazione. Se la modalità di login automatico è attiva, ftp tenta anche di effettuare il login nel sistema remoto.

Conversione dei nomi e filtri

case

Attiva/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/disattiva l'espansione dei nomi di file contenenti simboli per il globbing per l'uso con mdelete, mget e mput. L'utilità di disattivare il file globbing sta nella possibilità di identificare (e trasferire) file con nomi strani che utilizzano simboli che altrimenti sarebbero intesi come metacaratteri. Il globbing, cioè l'espansione dei nomi, viene fatto in maniera differente a seconda che si riferisca a dati contenuti nel computer locale, oppure nel computer remoto. Per le operazioni con mput che si riferiscono a dati locali da trasmettere, si utilizza il modello della shell csh.

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 nel computer remoto. Per verificare il comportamento del globbing in un computer 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 umask nel sistema remoto. Se non viene specificata una nuova maschera come argomento, viene visualizzato il valore attuale di questa.

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>]

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 a meno che non venga 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 per il globbing opportuni.

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 il simbolo - al posto di questo. 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 del computer locale. Se non viene specificato il percorso, si intende ~.

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 computer 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 computer 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 computer secondario, i comandi proxy ... riguardano il trasferimento di file tra il computer remoto normale e quello secondario, trattando quest'ultimo come se si trattasse di quello locale.

Flusso standard di dati

Se, all'interno dei parametri dei comandi, quando viene richiesto un nome di file, viene fornito il simbolo -, si intende riferirsi a:

Quando al posto del nome di un file viene fornito il simbolo | seguito da una qualche stringa (eventualmente racchiusa tra doppi apici, ovvero tra virgolette, 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.

Configurazione

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

---------

machine <nome>

Il nome del computer a cui fa riferimento la configurazione seguente.

default

Rappresenta la configurazione predefinita per tutti i computer 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 ulteriore password 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 del login automatico.

57.4 Informazioni

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

# ftpcount

ftpcount

Visualizza la quantità di utenti connessi in modo ftp per ogni classe e anche il massimo numero di connessioni ammissibili.

# ftpwho

ftpwho

Vengono visualizzate le informazioni disponibili inerenti gli utenti connessi in modo ftp.

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

57.6 Trivial FTP

A fianco del sistema FTP normale, può trovarsi anche un vecchio tipo di FTP: TFTP. La differenza fondamentale sta nel fatto che questo tipo di servizio non richiede alcun tipo di identificazione; in pratica, è quasi come se si condividesse il filesystem attraverso il protocollo NFS.

È importante sapere che questo tipo di servizio esiste, soprattutto per sapere controllare che sia disattivato.

# tftpd

tftpd [<directory>... ]

È il daemon del servizio necessario per ricevere connessioni attraverso tftp. È gestito dal supervisore inetd e filtrato da tcpd. Si tratta di un sistema di FTP senza particolari controlli di accesso, non ha praticamente alcun sistema di sicurezza. Per questo, di solito, all'interno del file di configurazione di inetd, cioè /etc/inetd.conf, la riga di attivazione di questo servizio è commentata.

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

#tftp   dgram   udp     wait    root    /usr/sbin/tcpd  in.tftpd

$ tftp

tftp [<host>]

Si tratta di un programma di FTP semplificato, dove in particolare non è possibile effettuare un login nel computer host. Di conseguenza, questo programma non può essere usato se non per connessioni in cui non è richiesto il login. I pochi comandi a disposizione sono simili al programma ftp, e si può ottenere l'elenco di questi con il comando ?.

 

1997.10.26 - Scritto da Daniele Giacomini   daniele@calion.com   (vedi copyright: Appunti Linux).


Capitolo successivo Capitolo precedente Indice