Server ftp con Raspberry Pi

ServerRaspFTP

Salve a tutti! Oggi in questo post vi proporremo un progettino per il Raspberry Pi! Ultimamente stavo pensando: ma se ho più computer e su ognuno lavoro ad uno stesso progetto, come posso avere tutti i file contemporaneamente su tutti i pc? Senza dover ogni volta spostarli con un supporto USB? Beh, la risposta l'ho trovata nel mini computer, ossia un piccolo server FTP di archiviazione dati! Una sorta di cloud si, ma che utilizza il protocollo ftp.

PROTOCOLLO FTP

Ma prima di imbatterci nel nostro progetto, vediamo cos'è questo protocollo. FTP (File Transfer Protocol), è un protocollo usato per il trasferimento dei file in rete, basato sul protocollo TCP (Transmission Control Protocol). Il server FTP rimane in ascolto sulla porta 21, attendendo che un client si connetta.

 

INSTALLAZIONE

Bene, iniziamo ora con l'installazione dei programmi sul nostro Raspberry. Apriamo una shell e diventiamo utenti root:

 

sudo -i

 

Ora aggiorniamo l'elenco delle dipendenze con:

 

apt-get update

 

E installiamo ciò che ci serve:

 

apt-get install pure-ftpd pure-ftpd-common

 

Il programma pure-ftpd farà da server ftp sul nostro Raspberry, quindi rimarrà in ascolto sulla porta 21.

 

CONFIGURAZIONE
Ora iniziamo la configurazione del nostro server, sarà una semplice configurazione base.
Spostiamoci nella directory dei file di configurazione:

 

cd /etc/pure-ftpd/conf

 

Ora creeremo dei file, in cui all'interno di essi ci saranno dei semplici valori, ogni file corrisponde ad un'opzione di configurazione, all'interno ci sarà “yes” oppure “no” o un valore numerico in base al tipo di opzione:

 

echo yes > ChrootEveryone
echo yes > NoChmod
echo yes > BrokenClientsCompatibility
echo 4 > MaxClientsPerIP
echo 10 > MaxClientsNumber
echo 0 > TLS
echo no > PAMAuthentication
echo no > UnixAuthentication
echo /etc/pure-ftpd/pureftpd.pdb > PureDB
Ora creiamo un collegamento simbolico del file PureDB nella directory /etc/pure-ftpd/auth, con il seguente comando:
 

 

ln -s /etc/pure-ftpd/conf/PureDB ../auth/50pure
 

 

Creazione dell'utente
Ora creiamo un'utente sul nostro sistema operativo, a questo utente collegheremo gli utenti del server ftp.
Per prima cosa creiamo un gruppo per l'utente con un suo id, per esempio:

 

 
groupadd -g 2468 gruppoftp
 

 

Ora che abbiamo creato il gruppo, creiamo un'utente, ed associamolo a questo gruppo:

 

 
useradd -u 2468 -s /bin/false -d /bin/null -c “utente ftp” -g gruppoftp daniele
 

 

Dove -u indica un id univoco per l'utente, -s indica la shell da associare all'utente e siccome verrà utilizzato per il server ftp non gli associamo nessuna shell quindi diamo /bin/false, -d indica la home directory da associare all'utente e anche in questo caso non dobbiamo associare nulla in quanto utente del server ftp quindi gli diamo /bin/null, -c è semplicemente un commento per l'utente, -g è il gruppo di appartenenza e mettiamo il gruppo precedentemente creato per il server ftp ed infine il nome dell'utente ovviamente.
 

 

Ora dobbiamo creare un'utente per il server, che sarà associato all'utente precedentemente creato.
Quindi diamo il seguente comando:

 

pure-pw useradd ska -u daniele -d /home/pi/cloud/ 

 

in questo modo abbiamo aggiunto l'utente ska e con l'opzione -u lo abbiamo associato all'utente daniele, inoltre abbiamo messo l'opzione -d dove abbiamo specificato la directory usata per il server ftp. Ovviamente se non lo avete fatto, dovete creare la directory e mettere come proprietario l'utente che abbiamo creato (nel mio caso daniele), per cambiare il proprietario date il seguente comando:

 

chown daniele:gruppoftp /home/pi/cloud/  

 

Attentione! Se avete dei file all'interno della directory, allora dovrete cambiare i permessi anche a quelli, quindi in questo caso aggiungete l'opzione -R, che cambia i permessi ricorsivamente a tutti i file e le subdirectory.

 

Ora che abbiamo creato l'utente, creiamo il database dando il seguente comando:

 

pure-pw mkdb

 

E infine riavviamo il server con il seguente comando:

 

/etc/init.d/pure-ftpd restart

 

E dovrebbe apparire una cosa del genere:

schell_riavvio

 
Bene, ora che abbiamo terminato non ci resta che testare il tutto.

 

TEST
Per testare, dobbiamo utilizzare un qualsiasi client ftp da un altro computer, ad esempio un semplicissimo browser.

Apriamone uno e nella barra degli indirizzi scriviamo:

 

ftp://indirizzo_ip_raspberry

 

Apparirà una piccola finestra che ci chiederà nome utente e password, inseriamo il nome utente che abbiamo aggiunto con il comando pure-pw useradd (nel mio caso ska) e come password quella che abbiamo inserito sempre con lo stesso comando.

Una volta effettuato l'accesso, sarà visualizzata una pagina con tutti i file contenuti nella directory assegnata all'utente ska.

Ci sono anche altri modi per accedere ad un server ftp, come ad esempio aprendo una qualsiasi cartella, andare su File->Connetti al server.. e apparirà una schermata del genere:

 connessione_da_cartella
 
 
Nel menù a tendina dovrete selezionare Ftp (con accesso).

Un altro famoso client ftp è FileZilla, che potete installare dando questo comando:

 

sudo apt-get install filezilla

 

Qui di seguito abbiamo il programma aperto:

 

filezilla

 

È un client fatto veramente bene secondo me, ed è molto intuitivo.

 

Ma di certo non poteva mancare anche l'accesso da riga di comando!! Con il semplice comando ftp! Ma in questo caso, devo ammettere che è più comoda un'interfaccia grafica, in ogni caso troverete tutte le informazioni utili digitando

 

man ftp

 

Al nostro server possiamo connetterci anche da remoto, basta sbloccare la porta 21 dalle impostazioni del nostro modem.

 

COMANDI UTILI

Qui di seguito vi mostriamo alcuni comandi utili per l'amministrazione del server ftp.

Per avere un elenco di tutti gli utenti sul server dare il comando:

 

pure-pw list

 

Per cambiare password ad un utente:

 

pure-pw passwd utente

 

Per avere dettagli su un utente:

 

pure-pw show utente

 

Per eliminare un utente:

 

pure-pw userdel utente  

 

Per vedere tutti gli utenti attualmente connessi al server:

 

pure-ftpwho

 

Per aggiungere un utente al server (come abbiamo visto prima):

 

pure-pw useradd utente -u alias_utente -d directory_da_associare

 

Infine dopo aver aggiunto un utente, ricostruire il database con il seguente comando:

 

pure-pw mkdb
 

 

Per utilizzare le modifiche ricordare di riavviare il server con il seguente comando:

 

/etc/init.d/pure-ftpd restart

 

CONCLUSIONI
Bene, con oggi vi abbiamo proposto un modo molto utile per salvare i nostri file su un server, ed accedervi facilmente con il semplice programma pure-ftpd. Se volete leggere e vedere altri progetti da fare con il Raspberry Pi andate qui, alla voce Raspberry Pi troverete numerose guide per questo fantastico esempio di tecnologia moderna!
Se non avete questo fantastico dispositivo, potete acquistare il Raspberry Pi 2 B Complete Starter Kit oppure la versione base del Raspberry Pi 2 B. Al prossimo post!;)

 

Fonti

- Immagini di Joel Garia;

- Opzioni pure-ftpd;

 

Dottore in Informatica. Da sempre appassionato di Linux, reti informatiche, sicurezza e, in modo amatoriale, all'elettronica. Il mio intento è quello di trasmettere le mie conoscenze ad altri appassionati.

7 risposte

  1. Ciao, articolo molto interessante che metterò subito in pratica perché mi serviva un server FTP. Ho due domande:

    1) Hardware: che configurazione dovrei comprare visto che in futuro vorrei metter in piedi anche un piccolo sistema di videosorveglianza?

    2) Con il comando pure-ftpwho vedo gli utenti che sono collegati, ma è possibile ricevere una email ogni volta che qualcuno si collega al server?

    Ciao e Grazie
    Andrea

    • Daniele Scanu

      Ciao, sono contento che ti sia piaciuto. Allora per quanto riguarda il punto 1, non ti consiglio un raspberry, ma un pc normale con un hard disk capiente dato che vuoi fare un sistema di video sorveglianza. In parole povere un pc che trovi comunemente in commercio va benissimo basta che non sia un raspberry.

      Per il secondo punto ovviamente si può fare, io sono della filosofia che ogni cosa si può fare basta aver voglia:) . Scherzi a parte secondo me ci sarà qualche modulo o qualche estensione che ti permette di fare ciò, in alternativa puoi scriverti te uno script che ti segnala ogni connessione ftp, magari esaminando i file di log. È solo un'idea di un possibile modo di fare questo:)

  2. Ciao, la tua guida è ben fatta, molto semplice e chiara quindi innanzitutto grazie!
    Io ho implementato l'installazione aggiungendo il supporto SSL/TLS seguendo questa guida: https://www.howtoforge.com/how-to-configure-pureftpd-to-accept-tls-sessions-on-debian-lenny

    magari può tornare utile anche ad altri!

    • Daniele Scanu - Blogger

      Ciao Marco, sono contento che ti sia piaciuta la guida. Hai fatto benissimo a mettere il link al tls/ssl, la ciliegina sulla torta per concludere al meglio questo progettino;)

      A presto

  3. Ciao,

    per prima cosa ti ringrazio per la guida, avrei solo un problema mi blocco in un punto:
    pure-pw useradd ska -u daniele -d /home/pi/cloud/ quando do questo comando, mi restituisce questo errore:You must give (non-root) uid and gid.

    Qualche consiglio? Non so come andare avanti...

    • Daniele Scanu - Blogger

      Ciao Lucio,

      il comando non ha avuto successo perché gli hai messo un utente errato. Quell'errore viene dato poiché si è messo un utente non esistente o un utente root, o con permessi di root. Verifica di aver rispettato i parametri, quindi che quell'utente sia utilizzabile.

Lascia un commento