Benvenuto nel sito del Macintosh User Group Ufficiale dell'Universita' di Roma 3

Abilitare il server TFTP su MacOsX

TFTP è un protocollo molto semplice utilizzato per trasferire file tra due host utilizzando UDP.

TFTP (Trivial File Transfer Protocol) è definito nella RFC 1350, ed è stato progettato per trasferire file utilizzando come protocollo di trasporto UDP (User Datagram Protocol). La porta sulla quale è in ascolto un TFTP server è la 69. Essendo molto semplice e con meno funzioni rispetto a FTP, non può leggere directory e non è provvisto di autenticazione, il suo utilizzo è limitato. TFTP viene solitamente usato per trasferire file tra un computer ed un altro dispositivo come router o switch in ambito LAN.

I dati trasmessi tramite TFTP sono rappresentati da pacchetti con una lunghezza fissa di 512 byte. Un pacchetto avente una dimensione inferiore rappresenta l'ultimo pacchetto trasmesso. I pacchetti dati inviati vengono memorizzati in un buffer fino alla ricezione della avvenuta accettazione da parte dell'host remoto. In caso di mancata conferma della ricezione entro un determinato tempo di un pacchetto, quest'ultimo viene ritrasmesso.

La modalità di trasferimento dati di TFTP è di due tipi:

  • NETASCII per i file di testo;
  • OCTET per i file binari.

I pacchetti utilizzati durante una sessione TFTP sono di cinque tipi:

  •  RR: Read Request (Richiesta di lettura);
  •  WR: Write Request (Richiesta di scrittura);
  •  DATA: Dati;
  •  ACK: Acknowledgment (Accettazione);
  •  ERR: Errore.

Le fasi di una sessione TFTP:

  1. Il client contatta il server inviando una pacchetto di tipo RR (richiesta di lettura) o WR (richiesta di scrittura);
  2. Il server, se accetta la connessione, risponde inviando/ricevendo pacchetti DATA di 512 byte. Per ogni pacchetto inviato/ricevuto regolarmente viene inviato/ricevuto un ACK altrimenti un ERROR;
  3. I pacchetti vengono trasferiti finchè la loro lunghezza non è inferiore a 512 byte;
  4. Termine della connessione.

TFTP e' usato principalmente per caricare ROM in Router e Switch ma puo' essere utilizzato anche in molti altri ambiti come, ad esempio, NetBoot da MacOsX Server

Per configurare TFTP e' necessaria qualche conoscenza di xinetd, il superserver, chiamato cosi' per la quantita' di piccoli server che gestisce, come TFTP e telnet, liberando il sistema operativo da alcune importanti incombenze avviando cio' che serve quando solo quando serve.

Analizzando /etc/xinetd.d/ si trovano alcuni piccoli files di testo che portano il nome dei servizi che gestiscono e che possono essere trovati in /etc/services.

Ci sono varie opzioni nei files inclusa la possibilita' di reindirizzare la connessione di una porta su un'altra porta: le possibilita' sono innumerevoli.

Dobbiamo andare a modificare il file di configurazione tftp cambiando la root directory in modo che non sia piu' all'interno della directory /private, scegliendo, ad esempio, una directory “/tftpserver” che sia legibile da tutti. Infine bisogna cambiare “disabled” inserendo“no”.

Ecco il file di configurazione /etc/xinetd.d/tftp con le due linee modificate in grassetto.

service tftp
{
        disable         = no
        socket_type     = dgram
        wait            = yes
        user            = nobody
        server          = /usr/libexec/tftpd
        server_args     = /tftpserver
        groups          = yes
        flags           = REUSE
}

Adesso bisogna creare le directory ed impostare i permessi:

sudo mkdir /tftpserver 
sudo chmod 777 /tftpserver

Questo permette a chiunque di scrivere, verificare che questo e' cio' che si vuole ottenere.

Attenzione! per poter caricare un file in tftp, e' necessario che un file con lo stesso nome sia gia' presente nel server ed accessibile in scrittura a tutti: questo per evitare che sia possibile a dei malintenzionati approfittare del server tftp per riempire abusivamente il drive del Server.

Infine riavvviare xinetd.

sudo kill -HUP `cat /var/run/xinetd.pid`

Ora andiamo a privare la configurazione mettendo un file nella directosry tftp e poi scaricandolo attraverso il protocollo tftp.

echo “this is just a test” > /tftpserver/testfile 
tftp localhost 
get testfile 
quit 
cat testfile

Se tutto e' andato a buon fine dovreste vedere il contenuto del file visualizzato.

Torna all'indice