Hosting Virtuale · 4 min read · Dec 09, 2025

Hosting Virtuale Con Proftpd E MySQL (Incl. Quota) Su Debian Etch

Hosting Virtuale Con Proftpd E MySQL (Incl. Quota) Su Debian Etch

Versione 1.0
Autore: Falko Timme

Questo documento descrive come installare un server Proftpd 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. Inoltre, mostrerò l’uso delle quote con questa configurazione.

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, il che significa che non devi armeggiare con la riga di comando.

Questo tutorial è basato su Debian Etch (Debian 4.0). Dovresti già aver configurato un sistema Debian Etch di base, come descritto nei primi sei capitoli di questo tutorial: https://www.howtoforge.com/perfect_setup_debian_etch

Questo howto è inteso come una guida pratica; non copre gli aspetti teorici. Questi sono trattati in molti altri documenti sul web.

Questo documento viene fornito senza 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 MySQL E phpMyAdmin

Tutto questo può essere installato con un solo comando:

apt-get install mysql-server mysql-client libmysqlclient15-dev phpmyadmin apache2

Crea una password per l’utente root di MySQL (sostituisci yourrootsqlpassword con la password che desideri utilizzare):

mysqladmin -u root password yourrootsqlpassword

Poi controlla con

netstat -tap | grep mysql

su quali indirizzi MySQL sta ascoltando. Se l’output appare così:

tcp        0      0 localhost.localdo:mysql *:*                     LISTEN     2713/mysqld

il che significa che MySQL sta ascoltando solo su localhost.localdomain, allora sei al sicuro con la password che hai impostato prima. Ma se l’output appare così:

tcp        0      0 *:mysql *:*                     LISTEN     2713/mysqld

dovresti impostare anche una password MySQL per il tuo nome host, altrimenti chiunque può accedere al tuo database e modificare i dati:

mysqladmin -h server1.example.com -u root password yourrootsqlpassword

3 Installa Proftpd Con Supporto MySQL

Per Debian è disponibile un pacchetto proftpd-mysql preconfigurato. Installalo come demone standalone in questo modo:

apt-get install proftpd-mysql

Ti verrà posta la seguente domanda:

Esegui proftpd da inetd o standalone? <– standalone

Poi creiamo un gruppo ftp (ftpgroup) e un utente (ftpuser) a cui tutti i nostri utenti virtuali saranno mappati. Sostituisci il gruppo e l’userid 2001 con un numero che è libero sul tuo sistema:

groupadd -g 2001 ftpgroup  
useradd -u 2001 -s /bin/false -d /bin/null -c "utente proftpd" -g ftpgroup ftpuser

4 Crea Il Database MySQL Per Proftpd

Ora creiamo un database chiamato ftp e un utente MySQL di nome proftpd che il demone proftpd utilizzerà in seguito per connettersi al database ftp:

mysql -u root -p
create database ftp;  
GRANT SELECT, INSERT, UPDATE, DELETE ON ftp.* TO 'proftpd'@'localhost' IDENTIFIED BY 'password';  
GRANT SELECT, INSERT, UPDATE, DELETE ON ftp.* TO 'proftpd'@'localhost.localdomain' IDENTIFIED BY 'password';  
FLUSH PRIVILEGES;

Sostituisci la stringa password con qualsiasi password tu voglia utilizzare per l’utente MySQL proftpd. Ancora sulla shell MySQL, creiamo le tabelle del database di cui abbiamo bisogno:

USE ftp;
CREATE TABLE ftpgroup (  
groupname varchar(16) NOT NULL default '',  
gid smallint(6) NOT NULL default '5500',  
members varchar(16) NOT NULL default '',  
KEY groupname (groupname)  
) TYPE=MyISAM COMMENT='Tabella gruppo ProFTP';
CREATE TABLE ftpquotalimits (  
name varchar(30) default NULL,  
quota_type enum('user','group','class','all') NOT NULL default 'user',  
per_session enum('false','true') NOT NULL default 'false',  
limit_type enum('soft','hard') NOT NULL default 'soft',  
bytes_in_avail int(10) unsigned NOT NULL default '0',  
bytes_out_avail int(10) unsigned NOT NULL default '0',  
bytes_xfer_avail int(10) unsigned NOT NULL default '0',  
files_in_avail int(10) unsigned NOT NULL default '0',  
files_out_avail int(10) unsigned NOT NULL default '0',  
files_xfer_avail int(10) unsigned NOT NULL default '0'  
) TYPE=MyISAM;
CREATE TABLE ftpquotatallies (  
name varchar(30) NOT NULL default '',  
quota_type enum('user','group','class','all') NOT NULL default 'user',  
bytes_in_used int(10) unsigned NOT NULL default '0',  
bytes_out_used int(10) unsigned NOT NULL default '0',  
bytes_xfer_used int(10) unsigned NOT NULL default '0',  
files_in_used int(10) unsigned NOT NULL default '0',  
files_out_used int(10) unsigned NOT NULL default '0',  
files_xfer_used int(10) unsigned NOT NULL default '0'  
) TYPE=MyISAM;
CREATE TABLE ftpuser (  
id int(10) unsigned NOT NULL auto_increment,  
userid varchar(32) NOT NULL default '',  
passwd varchar(32) NOT NULL default '',  
uid smallint(6) NOT NULL default '5500',  
gid smallint(6) NOT NULL default '5500',  
homedir varchar(255) NOT NULL default '',  
shell varchar(16) NOT NULL default '/sbin/nologin',  
count int(11) NOT NULL default '0',  
accessed datetime NOT NULL default '0000-00-00 00:00:00',  
modified datetime NOT NULL default '0000-00-00 00:00:00',  
PRIMARY KEY (id),  
UNIQUE KEY userid (userid)  
) TYPE=MyISAM COMMENT='Tabella utenti ProFTP';
quit;

Come avrai notato, con il comando quit; siamo usciti dalla shell MySQL e siamo tornati sulla shell Linux.

A proposito, (presumo che il nome host del tuo sistema server ftp sia server1.example.com) puoi accedere a phpMyAdmin all’indirizzo http://server1.example.com/phpmyadmin/ (puoi utilizzare l’indirizzo IP invece di server1.example.com) in un browser e accedere come proftpd. Poi puoi dare un’occhiata al database. In seguito puoi utilizzare phpMyAdmin per gestire il tuo server Proftpd.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.