Il pro­to­col­lo FTP è una delle soluzioni più ap­prez­za­te per l’upload e il download dei file. In questa guida scoprirai come con­fi­gu­ra­re il tuo server FTP su Ubuntu e a cosa dovresti as­so­lu­ta­men­te prestare at­ten­zio­ne.

In­stal­la­zio­ne di un server FTP su Ubuntu

Prima di poter co­min­cia­re con la con­fi­gu­ra­zio­ne del tuo server FTP, devi trovare il software adatto. I sistemi Ubuntu come Ubuntu 22.04 hanno già una propria soluzione a di­spo­si­zio­ne con vsftpd nel gestore di pacchetti, che devi solo in­stal­la­re. Per in­stal­la­re l’ap­pli­ca­zio­ne, è suf­fi­cien­te aprire il terminale e dare il seguente comando:

sudo apt-get install vsftpd
bash
Immagine: Ubuntu 22.04: installazione di vsftpd nel terminale
I permessi di root e di am­mi­ni­stra­to­re (sudo) sono necessari per l’in­stal­la­zio­ne di vsftpd.
Consiglio

Vorresti salvare o tra­sfe­ri­re i tuoi dati? Crea una base sicura per la tra­smis­sio­ne e noleggia il tuo server secure FTP su IONOS, con SSH, SSL/TLS e backup gior­na­lie­ri.

Il giusto hardware per il tuo server FTP su Ubuntu

A seconda dello scenario ap­pli­ca­ti­vo, un server FTP su Ubuntu 22.04 presenta requisiti diversi. Per ottenere un col­le­ga­men­to ottimale a internet ti con­si­glia­mo in ogni caso l’hosting af­fi­dan­do­ti a un provider pro­fes­sio­na­le come IONOS. Con i server virtuali (VPS) e i server dedicati puoi scegliere fra due modelli di server per uti­liz­za­re un potente server FTP.

La pa­no­ra­mi­ca seguente mostra tre possibili scenari per il tuo server FTP su Ubuntu e il pacchetto IONOS più adatto allo scopo.

Scenario server FTP su Ubuntu Pacchetto IONOS adatto
Server FTP semplice; tra­smis­sio­ne dati sporadica VPS Linux M
Server FTP esteso nella propria azienda; tra­smis­sio­ne dati regolare VPS Linux XL
Server FTP pubblico; tra­smis­sio­ne dati continua Server dedicato AR6-32 SSD
Server virtuali (VPS)
Affidati ai VPS e server di IONOS, il tuo partner digitale cer­ti­fi­ca­to ISO
  • 1 Gbps di larghezza di banda e traffico il­li­mi­ta­to
  • Di­spo­ni­bi­li­tà del 99,99% e cer­ti­fi­ca­zio­ne ISO
  • As­si­sten­za 24/7 e con­su­len­te personale

Tutorial del server FTP su Ubuntu: come con­fi­gu­ra­re il servizio

Dopo il breve processo di in­stal­la­zio­ne puoi chiudere di nuovo il terminale e co­min­cia­re con la con­fi­gu­ra­zio­ne del server FTP su Ubuntu. A tal fine, apri il file di con­fi­gu­ra­zio­ne vsftpd.conf, che si trova per im­po­sta­zio­ne pre­de­fi­ni­ta nella cartella etc.

Immagine: Screenshot dei documenti disponibili nella cartella etc
La cartella “etc” contiene diversi file di con­fi­gu­ra­zio­ne e in­for­ma­zio­ni, come ad esempio il file vsftpd.conf.

Per poter aprire e mo­di­fi­ca­re il file di con­fi­gu­ra­zio­ne del server FTP su Ubuntu è ne­ces­sa­rio un semplice editor di testo. Per im­po­sta­zio­ne standard su Ubuntu trovi già in­stal­la­to il programma gedit (editor di GNOME).

Il contenuto testuale si può sud­di­vi­de­re in due ambiti:

  • Le righe che co­min­cia­no con il simbolo del can­cel­let­to (#) sono tra­sfor­ma­te in commenti e vengono perciò ignorate dal server vsftpd. Si tratta di righe con commenti riguardo alle diverse opzioni di im­po­sta­zio­ne o di funzioni di­sat­ti­va­te.
  • Le righe che non co­min­cia­no con il simbolo del can­cel­let­to com­pren­do­no invece quelle in­for­ma­zio­ni che vengono in­ter­pre­ta­te suc­ces­si­va­men­te dal server.
Immagine: Visualizzazione del file vsftpd.conf
I can­cel­let­ti non sono solo segnali per i server vsftpd, ma servono anche per la com­pren­sio­ne e l’ot­ti­miz­za­zio­ne della leg­gi­bi­li­tà.

Per l’ulteriore con­fi­gu­ra­zio­ne del server FTP su Ubuntu 22.04 non ci sono direttive generali; infatti, la con­fi­gu­ra­zio­ne varia a seconda di quali requisiti decidi di imporre al server FTP. Nei paragrafi seguenti di questa guida per il server FTP su Ubuntu trovi perciò in­for­ma­zio­ni sulle opzioni di im­po­sta­zio­ne più im­por­tan­ti e le loro funzioni.

N.B.

Per salvare le modifiche al file vsftpd.conf hai bisogno dei permessi di root, al­tri­men­ti puoi solo leggere il file di con­fi­gu­ra­zio­ne.

Con­sen­ti­re l’accesso anonimo

Per im­po­sta­zio­ne standard vsftpd è con­fi­gu­ra­to di modo che gli utenti si possano re­gi­stra­re sul server FTP solo con un account specifico. Il File Transfer Protocol consente però anche una procedura di login, in cui gli utenti possono re­gi­strar­si ano­ni­ma­men­te senza dover fornire dati personali. Per attivare questo tipo di accesso, cerca la voce anonymous_enable=NO e so­sti­tui­sci il parametro NO con YES:

anonymous_enable=YES
txt
Immagine: vsftpd.conf: configurazione dell’accesso FTP anonimo
Digitando la riga “anonymous enable=YES” puoi abilitare il login anonimo sul tuo server FTP su Ubuntu.

Ampliare i permessi degli utenti anonimi

I permessi sono per im­po­sta­zio­ne pre­de­fi­ni­ta molto limitati se l’utente si registra ano­ni­ma­men­te su un server FTP Ubuntu. Così è ad esempio possibile solo scaricare i file che sono leggibili per tutte le persone (anon_world_readable_only=YES). Se neghi questa direttiva, sarà con­sen­ti­to anche il download degli altri file.

N.B.

Se il server FTP è connesso a internet, ti scon­si­glia­mo di ampliare i permessi per le sessioni anonime. In caso contrario corri il rischio che terzi prendano il controllo del tuo server.

Ulteriori opzioni di­spo­ni­bi­li per ampliare i permessi degli utenti anonimi sono le seguenti:

  • anon_mkdir_write_enable: gli utenti anonimi possono creare nuove directory se in­se­ri­sco­no qui il valore YES ed eli­mi­nan­do il simbolo # per i commenti. Come requisito è ne­ces­sa­rio che sia attivato write_enable.
  • anon_other_write_enable=YES: se inserisci questa riga, puoi ri­no­mi­na­re ed eliminare i file e le directory sul server FTP anche nel caso di un accesso non au­to­riz­za­to.
  • anon_upload_enable=YES: con questa riga di testo viene attivato l’upload anonimo di file. A tal fine, i pre­re­qui­si­ti sono aver attivato write_enable e creato una directory di upload separata, visto che gli utenti anonimi non possono scrivere di­ret­ta­men­te nella cartella home.

Limitare l’accesso per gli utenti locali alla directory home

Se desideri garantire l’accesso alla directory home /home/username solo agli utenti locali, puoi definire anche questa pos­si­bi­li­tà nel vsftpd.conf. Il parametro di markup re­spon­sa­bi­le in questo caso è chroot_local_user. In Ubuntu 22.04, questa riga è intesa come commento pre­de­fi­ni­to. Elimina il simbolo # per vietare agli account locali l’accesso a tutte le altre directory:

chroot_local_user=YES
txt

Attivare e di­sat­ti­va­re il login degli utenti locali

Per garantire agli utenti locali l’accesso al server FTP, la voce local-enable=YES deve essere impostata (in genere è così per im­po­sta­zio­ne standard). Se desideri negare agli utenti locali l’accesso al tuo server FTP su Ubuntu, devi tra­sfor­ma­re in commento solo la riga relativa, an­te­po­nen­do il simbolo del can­cel­let­to:

#local_enable=YES
txt
Immagine: Server FTP su Ubuntu: configurazione die permessi degli utenti locali
Per im­po­sta­zio­ne pre­de­fi­ni­ta, nel vsftpd.conf è con­sen­ti­to il login a tutti gli account utente locali.

Attivare l’accesso globale in scrittura

La con­fi­gu­ra­zio­ne standard di Ubuntu 22.04 definisce che possono uti­liz­za­re i comandi FTP sia gli account locali che quelli anonimi. La riga cor­ri­spon­den­te per la scrittura globale write_enable=YES viene tra­sfor­ma­ta in commento. Se deve essere data la pos­si­bi­li­tà alle persone che hanno ef­fet­tua­to il login di mo­di­fi­ca­re il file system del server vsftpd, occorre di con­se­guen­za rimuovere il simbolo del can­cel­let­to:

write_enable=YES
txt

Limitare l’accesso FTP a de­ter­mi­na­ti utenti

In par­ti­co­la­ri si­tua­zio­ni può essere utile vietare a de­ter­mi­na­ti utenti l’accesso al server FTP su Ubuntu o definire chia­ra­men­te quali utenti possono ef­fet­tua­re il login.

Per vietare l’accesso a de­ter­mi­na­ti utenti aggiungi le seguenti righe alla fine del file di con­fi­gu­ra­zio­ne:

userlist_deny=YES
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
txt

In questo modo si vieta l’accesso agli utenti che sono inseriti nel file esterno vsftpd.user_list. Tutti gli altri utenti possono in questo caso re­gi­strar­si come di consueto.

Se desideri concedere l’accesso solo a de­ter­mi­na­te persone, è ne­ces­sa­rio negare il parametro userlist_deny. Il risultato è che soltanto gli account utente che hai inserito nel file vsftpd.user_list possono ef­fet­tua­re il login:

userlist_deny=NO
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
txt
N.B.

In entrambi i casi è ne­ces­sa­rio creare ma­nual­men­te il file di testo esterno vsftpd.user_list nella directory /etc/. Per ogni voce di account utente devi uti­liz­za­re una riga separata.

Opzione Valore standard De­scri­zio­ne
download_enable - Attiva (YES) o disattiva i download (NO)
ssl_enable NO Abilita la crit­to­gra­fia SSL per l’accesso FTP
force_anon_logins_ssl NO Rende ob­bli­ga­to­ria la con­nes­sio­ne SSL per gli utenti anonimi (YES)
force_local_logins_ssl NO Rende ob­bli­ga­to­ria la con­nes­sio­ne SSL per gli utenti locali (YES)
anon_max_rate 0 Velocità di tra­smis­sio­ne massima (in byte/secondo) per gli utenti anonimi; 0 indica una velocità il­li­mi­ta­ta
local_max_rate 0 Velocità di tra­smis­sio­ne massima (in byte/secondo) per gli utenti locali; 0 indica una velocità il­li­mi­ta­ta
max_clients 0 Valore massimo di client che possono ef­fet­tua­re l’accesso con­tem­po­ra­nea­men­te; 0 significa che non ci sono li­mi­ta­zio­ni
max_per_ip 0 Numero massimo di con­nes­sio­ni che sono possibili da un singolo indirizzo IP; 0 significa che non ci sono li­mi­ta­zio­ni
anon_root /home/ftp Directory standard per gli utenti anonimi

Una lista completa di tutte le opzioni è con­sul­ta­bi­le dando il seguente comando sul terminale:

man vsftpd.conf
bash
Immagine: Pagina man del file di configurazione vsftpd
Nei manuali dell’ap­pli­ca­zio­ne server FTP su Ubuntu trovi de­scri­zio­ni det­ta­glia­te per tutte le opzioni di­spo­ni­bi­li.
Server dedicati
Per­for­man­ce e in­no­va­zio­ne
  • Pro­ces­so­ri al­l'a­van­guar­dia di ultima ge­ne­ra­zio­ne
  • Hardware dedicato ad alte pre­sta­zio­ni
  • Data center cer­ti­fi­ca­ti ISO

Come uti­liz­za­re il server FTP su Ubuntu 22.04

Dopo aver con­fi­gu­ra­to il file di con­fi­gu­ra­zio­ne secondo le tue pre­fe­ren­ze, ricordati di salvarlo. Per fare in modo che l’ap­pli­ca­zio­ne server apporti tutte le modifiche, è ne­ces­sa­rio un riavvio, ese­gui­bi­le con il seguente comando:

sudo systemctl restart vsftpd
bash

Se non hai ancora riavviato il server FTP, puoi farlo con questo comando dal terminale:

sudo systemctl start vsftpd
bash
Consiglio

Se vuoi chiudere nuo­va­men­te il server FTP su Ubuntu, ti basta so­sti­tui­re il parametro start con stop nel comando pre­ce­den­te.

Creare un account utente FTP

Dopo aver impostato e avviato il tuo server FTP su Ubuntu, hai bisogno di un account utente per poter ef­fet­tua­re il login. Ad esempi, a questo punto creiamo l’utente con il nome “ftpuser” e la password “test123”.

sudo useradd -m user -s/usr/sbin/nologin
sudo passwd user
bash

Suc­ces­si­va­men­te, consenti l’accesso alla shell NoLogin inserendo alla fine del file /etc/shells la riga seguente:

/usr/sbin/nologin
txt

Stabilire la con­nes­sio­ne al server FTP

Ora è possibile uti­liz­za­re l’account utente creato per in­stau­ra­re la con­nes­sio­ne al server vsftpd con il client FTP di tua scelta. Una famosa soluzione già presente su Ubuntu è l’ap­pli­ca­zio­ne open source mul­ti­piat­ta­for­ma FileZilla. L’in­stal­la­zio­ne avviene quindi come di consueto dal terminale:

sudo apt-get install filezilla
bash

Apri FileZilla e aggiungi una nuova con­nes­sio­ne con i dati richiesti: alla voce host inserisci l’indirizzo IP del tuo server FTP su Ubuntu, che ascolta le richieste sulla porta 21 (se non hai mo­di­fi­ca­to le im­po­sta­zio­ni standard). Scegli il File Transfer Protocol e se possibile SFTP (Secure FTP) o FTP over TLS, visto che una semplice con­nes­sio­ne FTP tramite la porta 21 rap­pre­sen­ta davvero un elevato rischio per la sicurezza. Nel campo “Logon Type” scegli la voce “Normal”. Per ”User” e “Password” hai bisogno dei dati di login generati prima. Fai clic su ”Connect“ per col­le­gar­ti al server.

Immagine: Gestore siti di FileZilla
Il client FileZilla offre opzioni di im­po­sta­zio­ne det­ta­glia­te per in­stau­ra­re una con­nes­sio­ne a un server FTP.

500 OOPS: una funzione di sicurezza che causa problemi

Se hai con­fi­gu­ra­to un server FTP su Ubuntu e delle de­ter­mi­na­te im­po­sta­zio­ni non fun­zio­na­no, ciò può dipendere da diversi motivi: quindi è pensabile che tu abbia di­men­ti­ca­to di riavviare il server FTP o di pro­teg­ge­re il file di con­fi­gu­ra­zio­ne. Al­tret­tan­to ve­lo­ce­men­te si in­tru­fo­la­no degli errori di sintassi nel file vsftpd.conf, quando ad esempio viene inserito uno spazio al posto sbagliato. Un messaggio di errore frequente che ha tutta un’altra causa è il seguente:

500 OOPS: vsftpd: refusing to run with writable root inside chroot ()

In questo messaggio che può ve­ri­fi­car­si durante il tentativo di con­nes­sio­ne non si tratta però di un messaggio di errore in senso stretto, ma di una funzione di sicurezza. Alla base vi è una possibile vul­ne­ra­bi­li­tà della libreria glibc (la libreria standard di Ubuntu del lin­guag­gio di pro­gram­ma­zio­ne C), che gli utenti po­treb­be­ro sfruttare con i permessi di scrittura per la loro directory root. Per aggirare questo blocco di sicurezza, esistono due soluzioni:

  1. Rimuovere i permessi di scrittura nella root dell’utente: revoca agli utenti locali i permessi di scrittura per la propria directory root, di modo che possano ancora scrivere nelle sot­to­car­tel­le. Questa li­mi­ta­zio­ne risolve il problema “500 OOPS”, si dimostra però poco van­tag­gio­sa se i file devono essere scritti for­za­ta­men­te nella root. Il comando dal terminale per questa soluzione si presenta così:
chmod a-w */home/user*
bash
  1. Con­sen­ti­re i permessi di scrittura per la root nel file vsftpd.conf: se non temi alcuna vio­la­zio­ne dei permessi di scrittura, puoi anche co­mu­ni­ca­re al server FTP su Ubuntu che la funzione è richiesta espli­ci­ta­men­te. A questo scopo è ne­ces­sa­ria solamente un’altra voce nel file di con­fi­gu­ra­zio­ne:
allow_writeable_chroot=YES
txt
Novità: offerta VPS
Il tuo server virtuale a prezzi im­bat­ti­bi­li

Prova il nostro VPS. I primi 30 giorni sono in omaggio e se allo scadere del periodo di prova non sarai convinto, ti rim­bor­se­re­mo tutte le spese sostenute.

Vai al menu prin­ci­pa­le