ProFTPd Debian · 3 min read · Nov 06, 2025
ISPConfig 3 ProFTPd Para Debian
ISPConfig 3 ProFTPd Para Debian
1 Introducción
Soy un nuevo usuario de ISPConfig y he estado jugando con Linux durante unos años. Mi servidor es actualmente un VPS con OpenVZ y no me permite ejecutar el pureftpd predeterminado que viene con ISPConfig, así que comencé a investigar ProFTPd y descubrí que no era muy difícil cambiar a usarlo.
2 Pre-Instalación
Por favor, tenga en cuenta: Esto no incluye soporte de cuotas porque mi VPS no lo soporta. Si tiene alguna sugerencia o idea sobre cómo mejorar esta integración sin tener que modificar ftp_user_edit.php en ISPConfig3, por favor hágamelo saber. Estas instrucciones se hicieron ejecutando Debian 5.0 Lenny, pero deberían funcionar igual para 6.0. Para otras distribuciones, estas instrucciones pueden tener que ser modificadas ligeramente.
También tenga en cuenta: Este proceso funcionó bien para mí en un servidor nuevo y una instalación de ISPConfig 3. Usar esto en un servidor existente requerirá entrar y editar/guardar cada usuario ftp que se haya creado, y puede causar otros problemas. Puede que cree un script php simple para hacer esto automáticamente en el futuro. No soy responsable de ningún problema que pueda surgir, así que por favor use esto BAJO SU PROPIO RIESGO.
3 Instalación
Ejecute
apt-get remove pure-ftpd-common pure-ftpd-mysql
apt-get install proftpd proftpd-mod-mysql
Ejecutar como independienteCrear Grupo y Usuario
groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c “usuario proftpd” -g ftpgroup ftpuser
4 Configuración de la Base de Datos
mysql -u root -p
Usar dbispconfig
Ejecutar consulta:
ALTER TABLE `ftp_user` ADD `shell` VARCHAR( 18 ) NOT NULL DEFAULT '/sbin/nologin',
ADD `count` INT( 11 ) NOT NULL DEFAULT '0',
ADD `accessed` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
ADD `modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00';
CREATE TABLE ftp_group (
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 grupo ProFTP';
INSERT INTO `ftp_group` (`groupname`, `gid`, `members`) VALUES
('ftpgroup', 2001, 'ftpuser');5 Configuración de ProFTPd
Edite /usr/local/ispconfig/interface/lib/config.inc.php:
nano /usr/local/ispconfig/interface/lib/config.inc.phpBusque la variable db_password.
Anote la contraseña para más tarde.
Edite /etc/proftpd/proftpd.conf
nano /etc/proftpd/proftpd.confBusque:
#Include /etc/proftpd/sql.confCambie a:
Include /etc/proftpd/sql.confEdite /etc/proftpd/sql.conf
nano /etc/proftpd/sql.confBorre todo el contenido y reemplace con:
#
# Configuración de ejemplo de Proftpd para autenticación basada en SQL.
#
# (Esto no debe usarse si prefiere una autenticación SQL basada en PAM)
#
DefaultRoot ~
SQLBackend mysql
# Las contraseñas en MySQL están encriptadas usando CRYPT
SQLAuthTypes Plaintext Crypt
SQLAuthenticate users groups
# usado para conectarse a la base de datos
# nombre_basededatos@host usuario_basededatos contraseña_usuario
SQLConnectInfo dbispconfig@localhost ispconfig _insertpasswordhere_
# Aquí le decimos a ProFTPd los nombres de las columnas de la base de datos en la "tabla de usuarios"
# con las que queremos que interactúe. Coincidan los nombres con los de la base de datos
SQLUserInfo ftp_user username password uid gid dir shell
# Aquí le decimos a ProFTPd los nombres de las columnas de la base de datos en la "tabla de grupos"
# con las que queremos que interactúe. Nuevamente, los nombres coinciden con los de la base de datos
SQLGroupInfo ftp_group groupname gid members
# establecer UID y GID mínimos - de lo contrario, estos son 999 cada uno
SQLMinID 500
# crear el directorio home de un usuario a demanda si no existe
CreateHome off
# Actualizar el conteo cada vez que el usuario inicia sesión
SQLLog PASS updatecount
SQLNamedQuery updatecount UPDATE "count=count+1, accessed=now() WHERE userid='%u'" ftpuser
# Actualizar modificado cada vez que el usuario sube o elimina un archivo
SQLLog STOR,DELE modified
SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser
RootLogin off
RequireValidShell off
Asegúrese de cambiar insertpasswordhere por la contraseña que recuperó de ISPConfig.
Si su base de datos MySQL está en otro servidor, cambie localhost para representar su servidor MySQL.
Edite: /etc/proftpd/modules.conf
nano /etc/proftpd/modules.confBusque:
#LoadModule mod_sql.cCambie a:
LoadModule mod_sql.cBusque:
#LoadModule mod_sql_mysql.cCambie a:
LoadModule mod_sql_mysql.cEjecute:
/etc/init.d/proftpd restart6 Cambios en ISPConfig 3
Ahora tenemos que cambiar uno de los archivos de ispconfig. Esto no es ideal, ya que si actualiza a una nueva versión perderá los cambios, pero es la única forma de hacer que proftpd funcione que pude encontrar.
Edite /usr/local/ispconfig/interface/web/sites/ftp_user_edit.php
nano /usr/local/ispconfig/interface/web/sites/ftp_user_edit.php
Busque:
$uid = $web["system_user"];
$gid = $web["system_group"];Reemplace con:
$userinfo = posix_getpwnam($web["system_user"]);
$uid = $userinfo['uid'];
$gid = $userinfo['gid'];Nota: si actualmente está conectado al panel web de ISPConfig, debe cerrar sesión antes de que los cambios se registren en su máquina.
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.