Hosting Virtuale · 4 min read · Feb 10, 2026
Hosting Virtuale Con vsftpd E MySQL Su Debian Lenny
Hosting Virtuale Con vsftpd E MySQL Su Debian Lenny
Versione 1.0
Autore: Falko Timme
Seguimi su Twitter
Vsftpd è uno dei server FTP più sicuri e veloci per Linux. Di solito vsftpd è configurato per lavorare con utenti di sistema. Questo documento descrive come installare un server vsftpd che utilizza utenti virtuali da un database MySQL invece di veri utenti di sistema. Questo è molto più performante e consente di avere migliaia di utenti ftp su una singola macchina.
Per l’amministrazione del database MySQL puoi utilizzare strumenti basati sul web come phpMyAdmin che saranno anche installati in questo howto. phpMyAdmin è un’interfaccia grafica comoda che significa che non devi armeggiare con la riga di comando.
Questo tutorial è basato su Debian Lenny (Debian 5.0). Dovresti già aver configurato un sistema Debian Lenny di base, come descritto nei primi sette capitoli di questo tutorial: The Perfect Server - Debian Lenny (Debian 5.0) [ISPConfig 2]
Questo howto è inteso come una guida pratica; non copre le basi teoriche. Queste sono trattate in molti altri documenti sul web.
Questo documento viene fornito senza alcuna garanzia di alcun tipo! Voglio dire che questo non è l’unico modo per impostare un sistema del genere. Ci sono molti modi per raggiungere questo obiettivo, ma questo è il modo che seguo. Non rilascio alcuna garanzia che questo funzionerà per te!
1 Nota Preliminare
In questo tutorial utilizzo il nome host server1.example.com con l’indirizzo IP 192.168.0.100. Queste impostazioni potrebbero differire per te, quindi devi sostituirle dove appropriato.
2 Installa vsftpd, MySQL E phpMyAdmin
Vsftpd non ha supporto MySQL integrato, quindi dobbiamo usare PAM per autenticare contro il database MySQL. Quindi installiamo libpam-mysql oltre a vsftpd, MySQL e phpMyAdmin:
aptitude install vsftpd libpam-mysql mysql-server mysql-client phpmyadminTi verranno poste le seguenti domande:
Nuova password per l’utente MySQL “root”: <– yourrootsqlpassword
Ripeti la password per l’utente MySQL “root”: <– yourrootsqlpassword
Server web da riconfigurare automaticamente: <– apache2
3 Crea Il Database MySQL Per vsftpd
Ora creiamo un database chiamato vsftpd e un utente MySQL di nome vsftpd che il demone vsftpd utilizzerà in seguito per connettersi al database vsftpd:
mysql -u root -pCREATE DATABASE vsftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO 'vsftpd'@'localhost' IDENTIFIED BY 'ftpdpass';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO 'vsftpd'@'localhost.localdomain' IDENTIFIED BY 'ftpdpass';
FLUSH PRIVILEGES;Sostituisci la stringa ftpdpass con qualsiasi password tu voglia usare per l’utente MySQL vsftpd. Ancora sulla shell MySQL, creiamo la tabella del database di cui abbiamo bisogno (sì, c’è solo una tabella!):
USE vsftpd;CREATE TABLE `accounts` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR( 30 ) NOT NULL ,
`pass` VARCHAR( 50 ) NOT NULL ,
UNIQUE (
`username`
)
) ENGINE = MYISAM ;quit;Come avrai notato, con il comando quit; siamo usciti dalla shell MySQL e siamo tornati sulla shell di Linux.
A proposito, (presumo che il nome host del tuo sistema server ftp sia server1.example.com) puoi accedere a phpMyAdmin sotto http://server1.example.com/phpmyadmin/ (puoi anche usare l’indirizzo IP invece di server1.example.com) in un browser e accedere come utente vsftpd. Poi puoi dare un’occhiata al database. Più tardi puoi usare phpMyAdmin per amministrare il tuo server vsftpd.
4 Configura vsftpd
Per prima cosa creiamo un utente non privilegiato chiamato vsftpd (con la home directory /home/vsftpd) appartenente al gruppo nogroup. Eseguiremo vsftpd sotto questo utente, e le directory FTP dei nostri utenti virtuali saranno nella directory /home/vsftpd (ad es. /home/vsftpd/user1, /home/vsftpd/user2, ecc.).
useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpdPoi facciamo un backup del file originale /etc/vsftpd.conf e creiamo il nostro:
cp /etc/vsftpd.conf /etc/vsftpd.conf_orig
cat /dev/null > /etc/vsftpd.conf
vi /etc/vsftpd.confIl file dovrebbe avere il seguente contenuto:
| listen=YES anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES nopriv_user=vsftpd chroot_local_user=YES secure_chroot_dir=/var/run/vsftpd pam_service_name=vsftpd rsa_cert_file=/etc/ssl/certs/vsftpd.pem guest_enable=YES guest_username=vsftpd local_root=/home/vsftpd/$USER user_sub_token=$USER virtual_use_local_privs=YES user_config_dir=/etc/vsftpd_user_conf |
Le opzioni di configurazione sono spiegate su http://vsftpd.beasts.org/vsftpd_conf.html. Le opzioni importanti per la nostra configurazione virtuale sono chroot_local_user, guest_enable, guest_username, user_sub_token, local_root e virtual_use_local_privs.
Con l’opzione user_config_dir puoi specificare una directory per i file di configurazione per utente che sovrascrivono parti delle impostazioni globali. Questo è totalmente facoltativo e sta a te decidere se vuoi utilizzare questa funzionalità. Tuttavia, dovremmo creare quella directory ora:
mkdir /etc/vsftpd_user_confOra dobbiamo configurare PAM in modo che utilizzi il database MySQL per autenticare i nostri utenti FTP virtuali invece di /etc/passwd e /etc/shadow. La configurazione PAM per vsftpd si trova in /etc/pam.d/vsftpd. Facciamo un backup del file originale e creiamo un nuovo file in questo modo:
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd_orig
cat /dev/null > /etc/pam.d/vsftpd
vi /etc/pam.d/vsftpd| auth required pam_mysql.so user=vsftpd passwd=ftpdpass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2 account required pam_mysql.so user=vsftpd passwd=ftpdpass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2 |
Assicurati di sostituire la password MySQL con la tua!
Successivamente, riavviamo vsftpd:
/etc/init.d/vsftpd restartRicevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.