Alojamiento Virtual · 3 min read · Dec 16, 2025
Alojamiento Virtual Con PureFTPd Y MySQL (Incl. Gestión De Cuotas Y Ancho De Banda)
Este documento describe cómo instalar un servidor PureFTPd que utiliza usuarios virtuales de una base de datos MySQL en lugar de usuarios reales del sistema. Esto es mucho más eficiente y permite tener miles de usuarios ftp en una sola máquina. Además, mostraré el uso de cuotas y límites de ancho de banda de carga/descarga con esta configuración. Las contraseñas se almacenarán encriptadas como cadenas MD5 en la base de datos.
Para la administración de la base de datos MySQL, puedes usar herramientas basadas en la web como phpMyAdmin, que también se instalará en este tutorial. phpMyAdmin es una interfaz gráfica cómoda, lo que significa que no tienes que lidiar con la línea de comandos.
Este tutorial se basa en Debian Sarge (Debian 3.1). Ya deberías haber configurado un sistema Debian básico, como se describe aquí: https://www.howtoforge.com/perfect_setup_debian_sarge y https://www.howtoforge.com/perfect_setup_debian_sarge_p2. Debería aplicarse a otras distribuciones basadas en Debian como Ubuntu, Knoppix, etc. sin modificaciones. En otras distribuciones como SuSE, Fedora, Mandriva, etc. solo la instalación de PureFTPd es diferente; la configuración de PureFTPd debería aplicarse a estas distribuciones también.
Este tutorial está destinado como una guía práctica; no cubre los antecedentes teóricos. Estos se tratan en muchos otros documentos en la web.
¡Este documento se proporciona sin garantía de ningún tipo! Quiero decir que este no es el único modo de configurar un sistema así. Hay muchas maneras de lograr este objetivo, pero este es el camino que elijo. No emito ninguna garantía de que esto funcione para ti!
1 Instalar MySQL Y phpMyAdmin
Todo esto se puede instalar con un solo comando:
apt-get install mysql-server mysql-client libmysqlclient12-dev phpmyadmin
Se te harán algunas preguntas:
¿Habilitar suExec? <– Sí
Configurando mysql-server (Consejos de Instalación) <– OK
¿Qué servidor web te gustaría reconfigurar automáticamente? <– apache, apache2
¿Quieres que reinicie apache ahora? <– Sí
Crea una contraseña para el usuario MySQL root (reemplaza yourrootsqlpassword con la contraseña que deseas usar):
mysqladmin -u root password yourrootsqlpassword
2 Instalar PureFTPd Con Soporte Para MySQL
Para Debian hay un paquete preconfigurado pure-ftpd-mysql disponible. Instálalo como un demonio independiente así:
apt-get install pure-ftpd-mysql
¿Ejecutar pure-ftpd desde inetd o como un servidor independiente? <– independiente
¿Quieres que pure-ftpwho se instale con setuid root? <– No
Luego creamos un grupo ftp (“ ftpgroup “) y un usuario (“ ftpuser “) al que se mapearán todos nuestros usuarios virtuales. Reemplaza el grupo y el ID de usuario 2001 con un número que esté libre en tu sistema:
groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c “usuario de pureftpd” -g ftpgroup ftpuser
3 Crear La Base De Datos MySQL Para PureFTPd
Ahora creamos una base de datos llamada pureftpd y un usuario MySQL llamado pureftpd que el demonio PureFTPd usará más tarde para conectarse a la base de datos 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;
Reemplaza la cadena ftpdpass con la contraseña que desees usar para el usuario MySQL pureftpd. Aún en la consola de MySQL, creamos la tabla de base de datos que necesitamos (sí, ¡solo hay una tabla!):
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;
Como habrás notado, con el comando quit; hemos salido de la consola de MySQL y estamos de vuelta en la consola de Linux.
Por cierto, (sugiero que el nombre de host de tu sistema de servidor ftp sea server1.example.com) puedes acceder a phpMyAdmin a través de http://server1.example.com/phpmyadmin/ (también puedes usar la dirección IP en lugar de server1.example.com) en un navegador e iniciar sesión como pureftpd. Luego puedes echar un vistazo a la base de datos. Más adelante puedes usar phpMyAdmin para administrar tu servidor PureFTPd.
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.