Hosting Virtuale · 2 min read · Feb 09, 2026

Hosting Virtuale Con vsftpd E MySQL Su Debian Etch - Pagina 2

4 Configurare vsftpd

Prima 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 esempio /home/vsftpd/user1, /home/vsftpd/user2, ecc.).

useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd

Poi 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.conf

Il 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_conf

Ora 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 di MySQL con la tua!

Dopo, riavviamo vsftpd:

/etc/init.d/vsftpd restart

5 Creare Il Primo Utente Virtuale

Per popolare il database puoi usare la shell di MySQL:

mysql -u root -p
USE vsftpd;

Ora creiamo l’utente virtuale testuser con la password secret (che sarà memorizzata in modo crittografato utilizzando la funzione PASSWORD di MySQL):

INSERT INTO accounts (username, pass) VALUES('testuser', PASSWORD('secret'));  
quit;

directory home di testuser è /home/vsftpd/testuser; sfortunatamente vsftpd non crea automaticamente quella directory se non esiste. Pertanto, la creiamo manualmente ora e la rendiamo di proprietà dell’utente vsftpd e del gruppo nogroup:

mkdir /home/vsftpd/testuser  
chown vsftpd:nogroup /home/vsftpd/testuser

Ora apri il tuo programma client FTP sulla tua workstation (qualcosa come WS_FTP o SmartFTP se sei su un sistema Windows o gFTP su un desktop Linux) e prova a connetterti. Come nome host utilizzi server1.example.com (o l’indirizzo IP del sistema), il nome utente è testuser e la password è secret.

Se riesci a connetterti - congratulazioni! Se no, qualcosa è andato storto.

6 Amministrazione Del Database

Per la maggior parte delle persone è più facile avere un’interfaccia grafica per MySQL; quindi puoi anche usare phpMyAdmin (in questo esempio sotto http://server1.example.com/phpmyadmin/) per amministrare il database vsftpd.

Ogni volta che crei o modifichi un utente, assicurati di utilizzare la funzione PASSWORD di MySQL per crittografare la password di quell’utente. Inoltre, quando crei un nuovo utente virtuale, per favore non dimenticare di creare la home directory di quell’utente nella shell, come mostrato alla fine del capitolo precedente.

7 Link

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.