ISPConfig 3 ProFTPd para Debian
1 Introducción
Soy un nuevo usuario de ISPConfig y he estado jugando con Linux durante algunos años. Mi servidor actualmente es 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 Preinstalación
Tenga en cuenta:esto no incluye el soporte de cuotas porque mi VPS no lo admite. Si tiene alguna sugerencia o idea sobre cómo mejorar esta integración sin tener que modificar ftp_user_edit.php en ISPConfig3, hágamelo saber. Estas instrucciones se realizaron con Debian 5.0 Lenny, pero deberían funcionar igual para 6.0. Para otras Distribuciones, estas instrucciones pueden tener que modificarse ligeramente.
También tenga en cuenta:este proceso funcionó bien para mí en un servidor nuevo y en la instalación de ISPConfig 3. Usar esto en un servidor existente requerirá ingresar y editar/guardar cada usuario de ftp que se haya creado, y puede causar otros problemas. Puedo crear un script php simple para hacer esto automáticamente en el futuro. No soy responsable de ningún problema que pueda surgir, así que utilice este BAJO SU PROPIO RIESGO.
3 Instalación
Ejecutar
apt-get remove pure-ftpd-common pure-ftpd-mysql
apt-get install proftpd proftpd-mod-mysql
Run as standalone
Crear grupo y usuario
groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c "proftpd usuario" -gftpgroup 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='ProFTP group table';
INSERT INTO `ftp_group` (`groupname`, `gid`, `members`) VALUES
('ftpgroup', 2001, 'ftpuser');
5 Configuración ProFTPd
Edite /usr/local/ispconfig/interface/lib/config.inc.php:
nano /usr/local/ispconfig/interface/lib/config.inc.php
Encuentra la variable db_password.
Anote la contraseña para más tarde.
Editar /etc/proftpd/proftpd.conf
nano /etc/proftpd/proftpd.conf
Encuentra:
#Include /etc/proftpd/sql.conf
Cambiar a:
Include /etc/proftpd/sql.conf
Editar /etc/proftpd/sql.conf
nano /etc/proftpd/sql.conf
Borre todo el contenido y reemplácelo con:
#
# Proftpd sample configuration for SQL-based authentication.
#
# (This is not to be used if you prefer a PAM-based SQL authentication)
#
<IfModule mod_sql.c>
DefaultRoot ~
SQLBackend mysql
# The passwords in MySQL are encrypted using CRYPT
SQLAuthTypes Plaintext Crypt
SQLAuthenticate users groups
# used to connect to the database
# [email protected] database_user user_password
SQLConnectInfo [email protected] ispconfig _insertpasswordhere_
# Here we tell ProFTPd the names of the database columns in the "usertable"
# we want it to interact with. Match the names with those in the db
SQLUserInfo ftp_user username password uid gid dir shell
# Here we tell ProFTPd the names of the database columns in the "grouptable"
# we want it to interact with. Again the names match with those in the db
SQLGroupInfo ftp_group groupname gid members
# set min UID and GID - otherwise these are 999 each
SQLMinID 500
# create a user's home directory on demand if it doesn't exist
CreateHome off
# Update count every time user logs in
SQLLog PASS updatecount
SQLNamedQuery updatecount UPDATE "count=count+1, accessed=now() WHERE userid='%u'" ftpuser
# Update modified everytime user uploads or deletes a file
SQLLog STOR,DELE modified
SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser
RootLogin off
RequireValidShell off
</IfModule>
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.
Editar:/etc/proftpd/modules.conf
nano /etc/proftpd/modules.conf
Encuentra:
#LoadModule mod_sql.c
Cambiar a:
LoadModule mod_sql.c
Encuentra:
#LoadModule mod_sql_mysql.c
Cambiar a:
LoadModule mod_sql_mysql.c
Ejecutar:
/etc/init.d/proftpd restart
6 ISPConfig 3 Cambios
Ahora tenemos que cambiar uno de los archivos 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.
Editar /usr/local/ispconfig/interface/web/sites/ftp_user_edit.php
nano/usr/local/ispconfig/interface/web/sites/ftp_user_edit.php
Encuentra:
$uid = $web["system_user"]; $gid = $web["system_group"];
Reemplazar 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 la sesión antes de que se registren los cambios en su máquina.