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 eficaz y permite tener miles de usuarios de ftp en una sola máquina. Además de eso, mostraré el uso de la cuota y los límites de ancho de banda de carga/descarga con esta configuración. Las contraseñas se almacenarán cifradas como cadenas MD5 en la base de datos.
Para la administración de la base de datos MySQL, puede usar herramientas basadas en web como phpMyAdmin, que también se instalará en este instructivo. phpMyAdmin es una interfaz gráfica cómoda, lo que significa que no tiene que perder el tiempo con la línea de comandos.
Este tutorial está basado en Ubuntu 8.10 (Intrepid Ibex). Ya debería haber configurado un sistema de servidor Ubuntu 8.10 básico, como se describe en los primeros diez capítulos de este tutorial:https://www.howtoforge.com/perfect-server-ubuntu-8.10
Este howto pretende ser una guía práctica; no cubre los antecedentes teóricos. Se tratan en muchos otros documentos en la web.
¡Este documento viene sin garantía de ningún tipo! Quiero decir que esta no es la única forma de establecer un sistema de este tipo. Hay muchas maneras de lograr este objetivo, pero este es el camino que tomo. ¡No emito ninguna garantía de que esto funcione para usted!
1 nota preliminar
En este tutorial utilizo el nombre de host server1.example.com con la dirección IP 192.168.0.100. Estas configuraciones pueden diferir para usted, por lo que debe reemplazarlas cuando corresponda.
Asegúrese de haber iniciado sesión como raíz (escriba
sudo su
para convertirse en root), porque debemos ejecutar todos los pasos de este tutorial como usuario root. Además, si desea utilizar vi como su editor de texto (como se sugiere en este tutorial), debe ejecutar
apt-get install vim-nox
El paquete vim-nox se asegura de que el editor de texto vi se comporte como se espera (sin vim-nox, es posible que experimente algún comportamiento extraño en el editor de texto vi).
2 Instalar MySQL y phpMyAdmin
Todo esto se puede instalar con un solo comando:
apt-get install mysql-server mysql-client phpmyadmin apache2
Se le harán estas preguntas:
Nueva contraseña para el usuario "root" de MySQL:<-- yourrootsqlpassword
Repita la contraseña para el usuario "root" de MySQL:<-- yourrootsqlpassword
Servidor web para reconfigurar automáticamente:<-- apache2
3 Instalar PureFTPd con compatibilidad con MySQL
Para Ubuntu 8.10 hay disponible un paquete pure-ftpd-mysql preconfigurado. Instálalo así:
apt-get install pure-ftpd-mysql
Luego creamos un grupo ftp (ftpgroup) y un usuario (ftpuser) al que se asignarán todos nuestros usuarios virtuales. Reemplace el grupo y el ID de usuario 2001 con un número que esté libre en su sistema:
groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c "pureftpd user" -g ftpgroup ftpuser
4 Crea la base de datos MySQL para PureFTPd
Ahora creamos una base de datos llamada pureftpd y un usuario de MySQL llamado pureftpd que el demonio PureFTPd usará más adelante 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;
Reemplace la cadena ftpdpass con la contraseña que desee usar para el usuario de MySQL pureftpd. Todavía en el shell 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 la renuncia; hemos dejado el shell de MySQL y estamos de vuelta en el shell de Linux.
Por cierto, (supongo que el nombre de host de su sistema de servidor ftp es server1.example.com) puede acceder a phpMyAdmin en http://server1.example.com/phpmyadmin/ (también puede usar la dirección IP en lugar de server1 .example.com) en un navegador e inicie sesión como usuario pureftpd. A continuación, puede echar un vistazo a la base de datos. Más tarde puede usar phpMyAdmin para administrar su servidor PureFTPd.
5 Configurar PureFTPd
Edite /etc/pure-ftpd/db/mysql.conf. Debería verse así:
cp /etc/pure-ftpd/db/mysql.conf /etc/pure-ftpd/db/mysql.conf_orig
cat /dev/null > /etc/pure-ftpd/db/mysql.conf
vi /etc/pure-ftpd/db/mysql.conf
MYSQLSocket /var/run/mysqld/mysqld.sock #MYSQLServer localhost #MYSQLPort 3306 MYSQLUser pureftpd MYSQLPassword ftpdpass MYSQLDatabase pureftpd #MYSQLCrypt md5, cleartext, crypt() or password() - md5 is VERY RECOMMENDABLE uppon cleartext 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") |