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 independiente

Crear 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.php

Busque la variable db_password.

Anote la contraseña para más tarde.

Edite /etc/proftpd/proftpd.conf

nano /etc/proftpd/proftpd.conf

Busque:

#Include /etc/proftpd/sql.conf

Cambie a:

Include /etc/proftpd/sql.conf

Edite /etc/proftpd/sql.conf

nano /etc/proftpd/sql.conf

Borre 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.conf

Busque:

#LoadModule mod_sql.c

Cambie a:

LoadModule mod_sql.c

Busque:

#LoadModule mod_sql_mysql.c

Cambie a:

LoadModule mod_sql_mysql.c

Ejecute:

/etc/init.d/proftpd restart

6 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.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.