Servidor FTP · 4 min read · Dec 09, 2025
Alojamiento Virtual Con Proftpd Y MySQL (Incl. Cuota) En Debian Etch
Alojamiento Virtual Con Proftpd Y MySQL (Incl. Cuota) En Debian Etch
Versión 1.0
Autor: Falko Timme
Este documento describe cómo instalar un servidor Proftpd que utiliza usuarios virtuales de una base de datos MySQL en lugar de usuarios del sistema reales. 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 con esta configuración.
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 Etch (Debian 4.0). Ya deberías haber configurado un sistema básico de Debian Etch, como se describe en los primeros seis capítulos de este tutorial: https://www.howtoforge.com/perfect_setup_debian_etch
Este tutorial está destinado a ser 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 esta no es la única forma 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 Nota Preliminar
En este tutorial uso el nombre de host server1.example.com con la dirección IP 192.168.0.100. Estas configuraciones pueden diferir para ti, así que debes reemplazarlas donde sea apropiado.
2 Instalar MySQL Y phpMyAdmin
Todo esto se puede instalar con un solo comando:
apt-get install mysql-server mysql-client libmysqlclient15-dev phpmyadmin apache2
Crea una contraseña para el usuario root de MySQL (reemplaza yourrootsqlpassword con la contraseña que deseas usar):
mysqladmin -u root password yourrootsqlpassword
Luego verifica con
netstat -tap | grep mysql
en qué direcciones está escuchando MySQL. Si la salida se ve así:
tcp 0 0 localhost.localdo:mysql *:* LISTEN 2713/mysqld
lo que significa que MySQL está escuchando solo en localhost.localdomain, entonces estás seguro con la contraseña que configuraste antes. Pero si la salida se ve así:
tcp 0 0 *:mysql *:* LISTEN 2713/mysqld
debes establecer una contraseña de MySQL para tu nombre de host también, porque de lo contrario cualquiera puede acceder a tu base de datos y modificar datos:
mysqladmin -h server1.example.com -u root password yourrootsqlpassword
3 Instalar Proftpd Con Soporte Para MySQL
Para Debian hay un paquete proftpd-mysql preconfigurado disponible. Instálalo como un demonio independiente así:
apt-get install proftpd-mysql
Se te hará la siguiente pregunta:
¿Ejecutar proftpd desde inetd o de forma independiente? <– independiente
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 proftpd" -g ftpgroup ftpuser
4 Crear La Base De Datos MySQL Para Proftpd
Ahora creamos una base de datos llamada ftp y un usuario MySQL llamado proftpd que el demonio proftpd usará más tarde para conectarse a la base de datos 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;
Reemplaza la cadena password con la contraseña que deseas usar para el usuario MySQL proftpd. Aún en la consola de MySQL, creamos las tablas de base de datos que necesitamos:
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='Tabla de grupos 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='Tabla de usuarios ProFTP';
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, (asumiendo que el nombre de host de tu sistema de servidor ftp es server1.example.com) puedes acceder a phpMyAdmin en http://server1.example.com/phpmyadmin/ (puedes usar la dirección IP en lugar de server1.example.com) en un navegador e iniciar sesión como proftpd. Luego puedes echar un vistazo a la base de datos. Más adelante puedes usar phpMyAdmin para administrar tu servidor Proftpd.
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.