#format wiki #LANGUAGE it <
> <> = Introduzione = '''FTP''' (File Transfer Protocol) è uno dei protocolli maggiormente usati per il trasferimento dei file. Solitamente prevede l'autenticazione degli utenti e una serie di comandi semplici per scaricare e caricare file. Questa guida si occupa della configurazione del servizio FTP utilizzando il programma '''vsftpd''' (acronimo di '''Very Secure FTP Daemon'''), uno dei programmi più usati e sicuri per l'implementazione di questo servizio. = Installazione = È necessario [[AmministrazioneSistema/InstallareProgrammi|installare]] il pacchetto ''[[apt://vsftpd|vsftpd]]'', reperibile dal [[Repository/Componenti|componente]] '''universe'''. <> = Prova del servizio = Ora, consideriamo di doverci collegare al computer, con indirizzo IP '''192.168.1.2''', su cui è stato installato il servizio FTP. Per fare ciò, da un terminale, digitare: {{{ ftp 192.168.1.2 }}} Viene visualizzato un messaggio di richiesta di immissione delle credenziali di accesso simile al seguente: {{{ Connected to 192.168.1.2 Name (192.168.1.2): }}} Inserire come nome utente: {{{ anonymous }}} e premere «'''Invio'''». Viene dunque richiesta la password. In questo caso è sufficiente premere «'''Invio'''». Generalmente, per l'utente '''anonymous''' non viene impostata alcuna password. Una volta effettuato l'accesso sarà possibile esplorare le cartelle disponibili sul server, dunque caricare e scaricare i file, limitatamente ai permessi impostati per il proprio utente. Gli utenti anonimi possono avere accesso soltanto alla cartella `/srv/ftp` del server, nella quale, a seconda dei parametri di configurazione impostati, potranno soltanto leggere/scaricare, oppure anche scrivere/caricare. = Configurazione = Per configurare un server FTP in cui gli utenti abilitati ad accedere siano gli stessi del sistema, è necessario modificare il file di configurazione del servizio {{{/etc/vsftpd.conf}}} con uno degli [[Ufficio/EditorDiTesto|editor di testo]] messi a disposizione da Ubuntu. Aprire una finestra di terminale e digitare il seguente comando: {{{ sudo gedit /etc/vsftpd.conf }}} == Elenco dei parametri di vsftpd.conf == Di seguito vengono presentati alcuni dei parametri che è possibile configurare per '''vsftpd''': * {{{ anonymous_enable=YES }}} Abilita/disabilita l'accesso anonimo. * {{{ local_enable=YES }}} Abilita/disabilita l'accesso agli utenti locali. * {{{ write_enable=YES }}} Abilita/disabilita agli utenti l'accesso in scrittura. * {{{ anon_upload_enable=YES }}} Abilita/disabilita la possibilità degli utenti anonimi di caricare file. Valido solo se l'opzione precedente è impostata a vero. * {{{ anon_mkdir_write_enable=YES }}} Abilita/disabilita la possibilità degli utenti anonimi di creare nuove directory. * {{{ xferlog_enable=YES }}} Attiva i log su tutte le operazioni di scaricamento e caricamento file. * {{{ xferlog_file=/var/log/vsftpd.log }}} Specifica il percorso per i [[AmministrazioneSistema/LogDiSistema|file di log]]. * {{{ ftpd_banner= }}} Imposta un messaggio di benvenuto visualizzato all'accesso al server FTP. * {{{ chroot_local_user= }}} Limita/Non limita l'accesso degli utenti solamente alla propria cartella '''Home'''. * {{{ connect_from_port_20= }}} Usa/non usa la porta 20 al posto della porta 21. * {{{ listen= }}} Abilita/Disabilita l'ascolto da parte dei client al server. * {{{ listen_port=21 }}} Seleziona la porta di ascolto. == Limitare l'accesso == Per rafforzare la sicurezza, è possibile scegliere gli utenti ai quali vietare l'accesso al servizio FTP. Per far ciò è utile modificare il file {{{/etc/ftpusers}}}, il quale contiene la lista degli utenti ai quali non è consentito accedere al servizio. Il seguente è del contenuto di default del file {{{/etc/ftpusers}}}: {{{ # /etc/ftpusers: list of users disallowed FTP access. See ftpusers(5). root daemon bin sys sync games man lp mail news uucp nobody }}} ||<> ||'''È consigliato aggiungere gli utenti all'elenco senza cancellare quelli pre-esistenti.''' || Per non consentire l'utilizzo del servizio all'utente '''mario''', è sufficiente aggiungere il nome dell'utente in coda all'elenco, in questo caso '''mario'''. Effettuate le modifiche, è necessario [[#avvio|riavviare il servizio]]. = Gestione di un server FTP = Ci sono principalmente tre modi per configurare un server ftp: 0. '''[[#ftp1|FTP anonimo]]''' Sarà possibile accedere al server senza aver bisogno di un account registrato; tutti gli utenti saranno liberi di eseguire upload, che verranno ovviamente controllati da alcune regole impostate dall'amministratore di sistema (limite di dimensione, controllo anti-pirateria, etc). 0. '''[[#ftp2|FTP anonimo e controllato da password]]''' Questo metodo darà la possibilità di accedere al server sia ad utenti anonimi che a quelli con un regolare account a cui sarà dato accesso ad alcune cartelle predefinite dall'amministratore, eccetto che per l'utente '''root''' che potrà vedere/modificare/cancellare tutte i file e/o le cartelle. 0. '''[[#ftp3|FTP con utenti virtuali e il supporto di un database MySQL]]''' Questo metodo abilita l'accesso al server solo per il gruppo di utenti che non ha un'autenticazione virtuale via shell nel sistema. Sarà richiesto l'uso di un database [[Server/MySql|MySql]] che conterrà tutte le informazioni riguardanti gli utenti. <> == FTP anonimo == Prima di creare un server con accesso anonimo, si dovrà aggiungere al sistema l'utente '''ftp''', con una sua directory home. Per farlo seguite questi comandi: {{{ useradd -d /home/ftp/ftp -s /bin/false ftp mkdir -p /home/ftp/upload }}} Ci sono inoltre numerose opzioni con le quali avviare il server, in modo da configurarne ogni singolo aspetto. Alcune di queste opzioni sono le seguenti: * '''-e''' Accesso solo per gli utenti anonimi. * '''-B''' Avvia il server in modalità background. * '''-i''' Gli utenti anonimi non potranno caricare file. * '''-M''' Permette agli utenti anonimi di creare cartelle. * '''-s''' I file degli utenti ''ftp'' non possono essere scaricati. <> == FTP anonimo e controllato da password == Per consentire l'accesso al server a tutti gli utenti (registrati e anonimi), è possibile seguire questi semplici comandi: * '''-B ,-i ,M, -r, -s''' Stesse variabili descritte in precedenza. * '''-u ''' Autorizza utenti con uno specifico ID(uid) ad accedere al server. * '''-V ''' Solo specifici IP potranno accedere al server in modalità non-anonima. <> == FTP con utenti virtuali e il supporto di un database MySQL == Per creare un server che affidi a '''My``SQL''' la gestione degli utenti, è possibile utilizzare procedere come segue: * Aprire una finestra di terminale e digitare il seguente comando: {{{ sudo apt-get install pure-ftpd }}} * Scaricare '''User Manager for PureFTPd''' da [[http://machiel.generaal.net/index.php?subject=user_manager_pureftpd|questo]] indirizzo. * Decomprimere il pacchetto e caricare il contenuto nella directory principale del server web, dunque aprire, con il proprio browser, [[http://localhost/ftp/install.php|questo]] indirizzo. * Seguire le indicazioni a schermo. * Copiare {{{pureftpd-mysql.conf}}} nella cartella di '''User Manager for PureFTPd'''. * Salvare la configurazione e chiudere. Per effettuare l'accesso tramite l'interfaccia web è sufficiente aprire [[http://localhost/ftp|questo]] indirizzo con il proprio browser. === Opzioni varie === * '''-c ''' Numero di client massimo abilitato ad effettuare l'accesso al server. Esempio: {{{ pure-ftpd -c 3 }}} * '''-C ''' Numero massimo di connessioni per IP. '''Esempio:''' {{{ pure-ftpd -C 3 }}} * '''-T ''' Massima banda disponibile per ogni connessione (in kb/s). '''Esempio:''' {{{ pure-ftpd -T 150 }}} * '''-n ''' Numero massimo di Mb disponibili per ogni utente. '''Esempio:''' {{{ pure-ftpd -n 200 }}} * '''-m ''' Blocca gli upload da parte di utenti anonimi nel caso che il caricamento della CPU superi il livello definito in termini di percentuale. Esempio: {{{ pure-ftpd -m 50 }}} = Creare utenti appositi per il server FTP = Se si volessero creare degli utenti appositi che hanno disponibile l'accesso al solo server FTP, ecco cosa si deve fare: {{{ sudo useradd -c "Utente FTP" -g ftp -m -k /dev/null -s /bin/false -d /home/utenteftp utenteftp }}} Analizziamo il comando: * {{{ sudo}}} fa si che il comando sia eseguito come Super User. * {{{ useradd}}} è il comando per aggiungere un utente * {{{ -c"Utente FTP"}}} Indica il nome utente. * {{{ -g ftp}}} Aggiunge l'utente al gruppo ftp. * {{{ -m}}} Dice al comando di creare una nuova directory per l'utente. * {{{ -k /dev/null}}} Indica la directory da usare se la directory principale non c'è * {{{ -s /bin/false}}} Indica la shell che l'utente deve usare (In questo caso è disabilitata). * {{{ -d /home/utenteftp}}} Indica la home dell'utente. = Ulteriori risorse = * [[http://vsftpd.beasts.org/|Sito ufficiale di vsftpd]] * [[http://vsftpd.beasts.org/vsftpd_conf.html|Guida alla configurazione di vsftpd]] ---- CategoryServer