tec! drudo

(banali) tecnicismi su blog

Un server FTP su Mac OS X

leave a comment »

Molto spesso mi capita di rispondere alla classica domanda di amici e parenti:

come faccio a condividere file di grosse dimensioni?

La risposta non è mai semplice, così come di soluzioni ce ne sono tante con i loro pregi e i loro difetti. Si possono sfruttare gli innumerevoli servizi online come Megaupload, Radishare, ecc. o il famoso e comodo Dropbox, per passare all’invio di file attraverso i protocolli di instant messaging come i vari MSN, Jabber, ICQ e chi più ne ha, o attraverso la sempre verde e-mail, che a tutt’oggi riesce ad allegare file anche dell’ordine del GB (si veda ad esempio Jasmine, Jumbo Mail).

Nell’era del web2.0 spesso però ci si dimentica di “servizi” molto efficienti come l’intramontabile protocollo FTP. Anche qui di soluzioni per una sua implementazione ce ne sono davvero tante, da software di terze parti a soluzioni integrate nel O.S., ma è su quest’ultima che mi voglio un po’ dilungare in questo articolo.

Su Mac OS X (rif. 10.6.x Snow Leopard) è già presente una soluzione integrata per avviare in modo semplice un server FTP, che sul sistema viene richiamata attraverso la funzione “Condivisione documenti” presente nelle “Preferenze di sistema” sotto la categoria “Condivisione”.

Vediamo di seguito come sfruttarla.

Premendo sul bottone “Opzioni…” si accede alla finestra sottostante dove si dovrà selezionare “Condividi documenti e cartelle mediante FTP”. Una volta premuto “Fine” dovrebbe partire il demone relativo al servizio FTP (tale tnftpd), derivante dai sistemi NetBSD, presente in FreeBSD sotto il nome di lukemftpd.

A questo punto è possibile accedere alla risorse puntando su ftp://your_local_IP (o ftp://localhost), ma esclusivamente con nome utente e password di utenti (account) già presenti sul sistema! Dal primo screenshot si possono notare infatti due sezioni: una serve a selezionare quale cartella condividere, l’altra a quali utenti associarla e con quali permessi.

NOTA. Nella funzione di associazione “cartella –> utenti” sono diverse le cose che non sono riuscito a far funzionare a dovere e la documentazione in rete, per non parlare di quella di Apple, è decisamente scarsina.
In pratica creando un nuovo utente (account) sul mac e quindi associandolo ad una cartella condivisa, il server FTP fa comunque visualizzare tutta la home dell’utente stesso e non, come dovrebbe, solo la cartella condivisa scelta. Ho letto in rete che bisognerebbe cambiare il “puntatore” alla home del nuovo utente attraverso l’uso dell’utility “Gestione NetInfo”, ma da Leopard in poi non è più presente, al suo posto consigliano uno spartano programma a linea di comando dscl, di cui non ho ancora ben appreso i comandi (sono aperto a suggerimenti).
Altro problema è quello relativo agli accout “Solo condivisione” che si posso creare direttamente da “Preferenze di sistema” della sezione “Condivisione” e presumo dedicati allo scopo!

Ma anche qui la cosa non funziona, al momento di inserire nome utente e password il server FTP non lo riconosce, sputando fuori un errore 530.
Ovviamente accetto ogni tipo di suggerimento per superare questi inghippi 🙂

Appurato i problemi di cui sopra ed appurato che l’unica soluzione è l’uso di utenti registrati sul sistema (account di tipo Standard tra l’altro!), chi vuole condividere documenti con un numero indefinito di utenti e/o vuole evitare di creare tanti (troppi) account si trova alle strette. Una soluzione comunque c’è ed è quella di creare un utente “guest” o “anonimo” attraverso l’uso del fantomatico comando dscl, il che si traduce nella digitazione di due stringhe da terminale (fonte):

$ sudo dscl . -create /Users/ftp
$ sudo dscl . -create /Users/ftp NFSHomeDirectory /path/to/ftp/folder

dove la stringa /path/to/ftp/folder è da sostituire con il percorso della directory di partenza dell’utente anonimo appena creato (es. /Users/nome_utente/Public). Non rimane che riavviare il demone togliendo e rimettendo il segno di spunta sulla voce “Condividi documenti e cartelle mediante FTP” vista prima.

Il server FTP è ora accessibile senza immettere alcun nome utente e password: dal Finder premere cmd + k ed inserire l’indirizzo ftp prima visto.

Purtroppo il pannello di controllo di Mac OS X non offre altri strumenti utili a raffinare la gestione dell’utente anonimo, come la banda massima concessa o il numero massimo di connessioni guest al server; per farlo è necessario “sporcarsi le mani” con un file di configurazione testuale… una prassi in ambito Linux.

Il file imputato per l’operazione è ftpd.conf (leggi il man) presente in /private/etc/ftpd.conf , ma anche qui ho incontrato non poche difficoltà. Prendendo spunto da un esempio di configurazione situato in /usr/share/examples/tnftpd/ftpd.conf ho provato a configurare il limite massimo di velocià in download e upload aggiungendo le stringhe:

rateget slowmo 5k
rateput slowmo 5k

ma il tutto è risultato vano. Diversamente la stringa notify all LEGGIMI* viene intepretata correttamente, naturamente se il file LEGGIMI è presente e il browser/client ftp che si sta utilizzando supporta quel tipo di avviso (I.E. lo fa vedere).

L’articolo sarebbe finito se il server appena impostato non dovesse “vedersi” all’esterno, ossia da un computer esterno alla rete privata. Se così non fosse devo dilungarmi ancora 😀 .

Se non si sta utilizzando un router per accedere ad internet il problema è facilmente risolvibile puntando all’indirizzo pubblico anziché quello locale, ad esempio ftp://87.5.248.221.

Se invece si sta utilizzando un router le cose si complicano un po’, poiché puntando all’indirizzo pubblico si viene reindirizzati (solitamente) sul pannello di controllo del router stesso. Per risolvere il piccolo inghippo è necessario effettuare quello che in gergo si chiama “Port Forwarding“… in parole povere si deve instradare il traffico esterno nella giusta direzione, ossia le chiamate di ftp://87.5.248.221:21 devono andare su ftp://198.162.0.2:21.

Naturalmente ogni router ha il suo firmware e quindi non posso scrivere una procedura standard, ad ogni modo San Google offre una enorme quantità di soluzioni (cercare “port forwarding modello-router“), ecco ad esempio quella per il mio router Netgear.

Finito? No… l’indirizzo IP di solito è “dinamico”, ossia cambia ad ogni connessione effettuata, perciò si è costretti ad informare i nostri potenziali utenti ogni volta. Una possibile soluzione è affidarci a servizi come no-ip, che ci consente di gestire gli IP dinamici. Non mi voglio dilungare ancora sennò questo post diventa un libro, magari l’argomento lo tratterò in un altro articolo chissà 🙂 .

OSSERVAZIONI

  • il server FTP è accessibile oltre che dal Finder, anche da browser (Safari, Firefox, Opera) e da client FTP (Cyberduck, Transmit);
  • per cancellare l’utente anonimo FTP basta digitare da terminale: $ sudo dscl . -delete /Users/ftp
  • soluzioni di terze parti sono forse da preferirsi per un uso “più serio” del server, software come PureFTDd Manager risultano infatti più configurabili e con più facilità;
  • come ho fatto già notare sono aperto a possibili soluzioni riguardo quei due-tre problemi riscontrati.

Ecco ora ho finito.

Annunci

Written by luciano

7 luglio 2010 a 15:36

Pubblicato su Apple

Tagged with , ,

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: