Alojamiento Virtual · 6 min read · Jan 19, 2026
Alojamiento Virtual Con PureFTPd Y MySQL (Incl. Gestión De Cuotas Y Ancho De Banda) En Fedora 20 - Página 2
5 Configurar PureFTPd
Edita /etc/pure-ftpd/pure-ftpd.conf y asegúrate de que las líneas ChrootEveryone, MySQLConfigFile y CreateHomeDir estén habilitadas y se vean así:
vi /etc/pure-ftpd/pure-ftpd.conf| [...] ChrootEveryone yes [...] MySQLConfigFile /etc/pure-ftpd/pureftpd-mysql.conf [...] CreateHomeDir yes [...] |
La configuración ChrootEveryone hará que PureFTPd chroot a cada usuario virtual en su directorio personal, por lo que no podrá navegar por directorios y archivos fuera de su directorio personal. La línea CreateHomeDir hará que PureFTPd cree el directorio personal de un usuario cuando el usuario inicie sesión y el directorio personal aún no exista.
Luego editamos /etc/pure-ftpd/pureftpd-mysql.conf. Debería verse así:
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() o password() - md5 es MUY RECOMENDABLE sobre texto claro 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") |
Asegúrate de reemplazar la cadena ftpdpass con la contraseña real para el usuario MySQL pureftpd en la línea MYSQLPassword! Ten en cuenta que usamos md5 como método MYSQLCrypt, lo que significa que almacenaremos las contraseñas de los usuarios como una cadena MD5 en la base de datos, lo cual es mucho más seguro que usar contraseñas en texto plano.
Ahora creamos los enlaces de inicio del sistema para PureFTPd y lo iniciamos:
systemctl enable pure-ftpd.service
systemctl start pure-ftpd.service6 Población De La Base De Datos Y Prueba
Para poblar la base de datos puedes usar el shell de MySQL:
mysql -u root -pUSE pureftpd;Ahora creamos el usuario exampleuser con el estado 1 (lo que significa que su cuenta ftp está activa), la contraseña secret (que se almacenará encriptada usando la función MD5 de MySQL), el UID y GID 2001 (usa el userid y groupid del usuario/grupo que creaste al final del paso dos!), el directorio personal /home/www.example.com, un ancho de banda de subida y bajada de 100 KB/sec. (kilobytes por segundo), y una cuota de 50 MB:
INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) VALUES ('exampleuser', '1', MD5('secret'), '2001', '2001', '/home/www.example.com', '100', '100', '', '*', '50', '0');quit;Ahora abre tu programa cliente FTP en tu estación de trabajo (algo como WS_FTP o SmartFTP si estás en un sistema Windows o gFTP en un escritorio Linux) y trata de conectarte. Como nombre de host usas server1.example.com (o la dirección IP del sistema), el nombre de usuario es exampleuser, y la contraseña es secret.
Si puedes conectarte - ¡felicitaciones! Si no, algo salió mal.
Ahora, si ejecutas
ls -l /homedebes ver que el directorio /home/www.example.com (el directorio personal de exampleuser) ha sido creado automáticamente, y es propiedad de ftpuser y ftpgroup (el usuario/grupo que creamos al final del paso dos):
[root@server1 system]# ls -l /home/
total 4
drwxr-xr-x 2 ftpuser ftpgroup 4096 May 2 02:35 www.example.com
[root@server1 system]# 7 Administración De La Base De Datos
Para la mayoría de las personas es más fácil si tienen una interfaz gráfica para MySQL; por lo tanto, también puedes usar phpMyAdmin (en este ejemplo bajo http://server1.example.com/phpMyAdmin/) para administrar la base de datos pureftpd.

Siempre que quieras crear un nuevo usuario, debes crear una entrada en la tabla ftpd, así que explicaré las columnas de esta tabla aquí:
Tabla ftpd:
- User: El nombre del usuario virtual de PureFTPd (por ejemplo, exampleuser).
- status: 0 o 1. 0 significa que la cuenta está deshabilitada, el usuario no puede iniciar sesión.
- Password: La contraseña del usuario virtual. Asegúrate de usar la función MD5 de MySQL para guardar la contraseña encriptada como una cadena MD5:

- UID: El userid del usuario ftp que creaste al final del paso dos (por ejemplo, 2001).
- GID: El groupid del grupo ftp que creaste al final del paso dos (por ejemplo, 2001).
- Dir: El directorio personal del usuario virtual de PureFTPd (por ejemplo, /home/www.example.com). Si no existe, se creará cuando el nuevo usuario inicie sesión por primera vez a través de FTP. El usuario virtual estará encerrado en este directorio personal, es decir, no puede acceder a otros directorios fuera de su directorio personal.
- ULBandwidth: Ancho de banda de subida del usuario virtual en KB/sec. (kilobytes por segundo). 0 significa ilimitado.
- DLBandwidth: Ancho de banda de bajada del usuario virtual en KB/sec. (kilobytes por segundo). 0 significa ilimitado.
- comment: Puedes ingresar cualquier comentario aquí (por ejemplo, para tu administración interna) aquí. Normalmente dejas este campo vacío.
- ipaccess: Ingresa direcciones IP aquí que están permitidas para conectarse a esta cuenta FTP. * significa que cualquier dirección IP está permitida para conectarse.
- QuotaSize: Espacio de almacenamiento en MB (no KB, como en ULBandwidth y DLBandwidth!) que el usuario virtual puede usar en el servidor FTP. 0 significa ilimitado.
- QuotaFiles: cantidad de archivos que el usuario virtual puede guardar en el servidor FTP. 0 significa ilimitado.
8 FTP Anónimo
Si deseas crear una cuenta ftp anónima (una cuenta ftp a la que todos pueden iniciar sesión sin una contraseña), necesitas un usuario y un grupo llamados ftp. Ambos se han creado automáticamente cuando instalaste el paquete pure-ftpd, así que no necesitas crearlos manualmente. Sin embargo, el homedir de ftp es /var/ftp por defecto, pero me gustaría crear el directorio ftp anónimo en /home/ftp (los directorios ftp de los usuarios normales también están en /home, por ejemplo, /home/www.example.com). Pero, por supuesto, puedes usar el directorio /var/ftp para ftp anónimo, si lo prefieres.
Si deseas usar /home/ftp, abre /etc/passwd y cambia el homedir del usuario ftp de /var/ftp a /home/ftp (no hagas esto si deseas usar /var/ftp):
vi /etc/passwd| [...] #ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin ftp:x:14:50:FTP User:/home/ftp:/sbin/nologin [...] |
Luego mueve /var/ftp a /home (no hagas esto si deseas usar /var/ftp):
mv /var/ftp /homeLuego creamos el directorio /home/ftp/incoming que permitirá a los usuarios anónimos subir archivos. Daremos al directorio /home/ftp/incoming permisos de 311 para que los usuarios puedan subir, pero no ver ni descargar ningún archivo en ese directorio. El directorio /home/ftp tendrá permisos de 555 que permiten ver y descargar archivos:
chown ftp:nobody /home/ftp
cd /home/ftp
mkdir incoming
chown ftp:nobody incoming/
chmod 311 incoming/
cd ../
chmod 555 ftp/(Si deseas usar /var/ftp en su lugar, reemplaza /home/ftp con /var/ftp en los comandos anteriores.)
Los usuarios anónimos podrán iniciar sesión y se les permitirá descargar archivos de /home/ftp, pero las subidas estarán limitadas a /home/ftp/incoming (y una vez que un archivo se suba a /home/ftp/incoming, no se puede leer ni descargar desde allí; el administrador del servidor debe moverlo a /home/ftp primero para hacerlo disponible para otros).
Ahora tenemos que configurar PureFTPd para ftp anónimo. Abre /etc/pure-ftpd/pure-ftpd.conf y asegúrate de que tienes las siguientes configuraciones en él:
vi /etc/pure-ftpd/pure-ftpd.conf| [...] NoAnonymous no [...] AntiWarez no [...] AnonymousBandwidth 8 [...] AnonymousCantUpload no [...] |
(La configuración AnonymousBandwidth es opcional - te permite limitar los anchos de banda de subida y bajada para usuarios anónimos. 8 significa 8 KB/sec. Usa cualquier valor que desees, o comenta la línea si no deseas limitar los anchos de banda.)
Finalmente, reiniciamos PureFTPd:
systemctl restart pure-ftpd.service9 Enlaces
- PureFTPd: http://www.pureftpd.org/
- MySQL: http://www.mysql.com/
- phpMyAdmin: http://www.phpmyadmin.net/
- Fedora: http://fedoraproject.org/
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.