Hosting Virtuale · 5 min read · Dec 04, 2025

Hosting Virtuale Con PureFTPd E MySQL (Incl. Gestione Quota E Larghezza Di Banda) Su Mandriva 2008 Spring

Hosting Virtuale Con PureFTPd E MySQL (Incl. Gestione Quota E Larghezza Di Banda) Su Mandriva 2008 Spring

Versione 1.0
Autore: Falko Timme

Questo documento descrive come installare un server PureFTPd 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 di limiti di quota e di larghezza di banda in upload/download con questa configurazione. Le password saranno memorizzate in modo crittografato come stringhe MD5 nel database.

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 impazzire con la riga di comando.

Questo tutorial è basato su Mandriva 2008 Spring (Mandriva 2008.1). Dovresti già aver configurato un sistema di base Mandriva 2008 Spring, ad esempio come descritto nei primi sei capitoli di questo tutorial: https://www.howtoforge.com/perfect-server-mandriva-2008.1

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:

urpmi MySQL MySQL-client phpmyadmin

Per impostazione predefinita, il networking non è abilitato nel pacchetto MySQL di Mandriva 2008 Spring. Possiamo cambiare questo commentando la riga skip-networking in /etc/my.cnf:

vi /etc/my.cnf

| [...] # Non ascoltare affatto su una porta TCP/IP. Questo può essere un miglioramento della sicurezza, # se tutti i processi che devono connettersi a mysqld vengono eseguiti sullo stesso host. # Tutte le interazioni con mysqld devono essere effettuate tramite socket Unix o pipe nominate. # Nota che utilizzare questa opzione senza abilitare pipe nominate su Windows # (tramite l'opzione "enable-named-pipe") renderà mysqld inutile! # #skip-networking [...] |

Dopo, creiamo i collegamenti di avvio del sistema per MySQL e Apache…

chkconfig mysqld on  
chkconfig httpd on

… e avviamo entrambi i servizi:

/etc/init.d/mysqld start  
/etc/init.d/httpd restart

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

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

3 Installa PureFTPd Con Supporto MySQL

Il pacchetto PureFTPd di Mandriva supporta vari backend, come MySQL, PostgreSQL, LDAP, ecc. Lo installiamo in questo modo:

urpmi pure-ftpd pure-ftpd-anon-upload pure-ftpd-anonymous

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

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

4 Crea Il Database MySQL Per PureFTPd

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

mysql -u root -p
CREATE DATABASE pureftpd;  
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO 'pureftpd'@'localhost' IDENTIFIED BY 'ftpdpass';  
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO 'pureftpd'@'localhost.localdomain' IDENTIFIED BY 'ftpdpass';  
FLUSH PRIVILEGES;

Sostituisci la stringa ftpdpass con qualsiasi password tu voglia utilizzare per l’utente MySQL pureftpd. Sempre nella shell MySQL, creiamo la tabella del database di cui abbiamo bisogno (sì, c’è solo una tabella!):

USE pureftpd;
CREATE TABLE ftpd (  
User varchar(16) NOT NULL default '',  
status enum('0','1') NOT NULL default '0',  
Password varchar(64) NOT NULL default '',  
Uid varchar(11) NOT NULL default '-1',  
Gid varchar(11) NOT NULL default '-1',  
Dir varchar(128) NOT NULL default '',  
ULBandwidth smallint(5) NOT NULL default '0',  
DLBandwidth smallint(5) NOT NULL default '0',  
comment tinytext NOT NULL,  
ipaccess varchar(15) NOT NULL default '*',  
QuotaSize smallint(5) NOT NULL default '0',  
QuotaFiles int(11) NOT NULL default 0,  
PRIMARY KEY (User),  
UNIQUE KEY User (User)  
) TYPE=MyISAM;
quit;

Come avrai notato, con il comando quit; siamo usciti dalla shell MySQL e siamo tornati nella 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 anche usare l’indirizzo IP invece di server1.example.com) in un browser e accedere come utente pureftpd. Poi puoi dare un’occhiata al database. Più tardi puoi usare phpMyAdmin per amministrare il tuo server PureFTPd.

5 Configura PureFTPd

Modifica /etc/pure-ftpd/pure-ftpd.conf e assicurati che le righe ChrootEveryone, MySQLConfigFile e CreateHomeDir siano abilitate e appaiano così:

vi /etc/pure-ftpd/pure-ftpd.conf

| [...] ChrootEveryone yes [...] MySQLConfigFile /etc/pure-ftpd/pureftpd-mysql.conf [...] CreateHomeDir yes [...] |

L’impostazione ChrootEveryone farà sì che PureFTPd chroot ogni utente virtuale nella sua home directory in modo che non possa navigare in directory e file al di fuori della sua home directory. La riga CreateHomeDir farà sì che PureFTPd crei la home directory di un utente quando l’utente accede e la home directory non esiste ancora.

Poi modifichiamo /etc/pure-ftpd/pureftpd-mysql.conf. Dovrebbe apparire così:

cp /etc/pure-ftpd/pureftpd-mysql.conf /etc/pure-ftpd/pureftpd-mysql.conf_orig  
cat /dev/null > /etc/pure-ftpd/pureftpd-mysql.conf  
vi /etc/pure-ftpd/pureftpd-mysql.conf

| MYSQLSocket /var/lib/mysql/mysql.sock #MYSQLServer localhost #MYSQLPort 3306 MYSQLUser pureftpd MYSQLPassword ftpdpass MYSQLDatabase pureftpd #MYSQLCrypt md5, cleartext, crypt() or password() - md5 è MOLTO RACCOMANDATO rispetto al testo chiaro MYSQLCrypt md5 MYSQLGetPW SELECT Password FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MYSQLGetUID SELECT Uid FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MYSQLGetGID SELECT Gid FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MYSQLGetDir SELECT Dir FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MySQLGetBandwidthUL SELECT ULBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MySQLGetBandwidthDL SELECT DLBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MySQLGetQTASZ SELECT QuotaSize FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MySQLGetQTAFS SELECT QuotaFiles FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") |

Assicurati di sostituire la stringa ftpdpass con la vera password per l’utente MySQL pureftpd nella riga MYSQLPassword! Si prega di notare che utilizziamo md5 come metodo MYSQLCrypt, il che significa che memorizzeremo le password degli utenti come una stringa MD5 nel database, che è molto più sicura rispetto all’uso di password in chiaro!

Ora avviamo PureFTPd:

/etc/init.d/pure-ftpd start
Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.