Instalar servidor ftp con usuarios virtuales, PureFTP

Publicado en Junio 13th, 2009 | por bambuka | 87 views

Instalación del servidor PureFtp con usuarios virtuales autenticados contra mysql.

Instalamos los siguientes paquetes si no lo están ya:

apt-get install mysql-server mysql-client libmysqlclient15-dev phpmyadmin apache2

Nos pedirá la clave de root para el servidor mysql y también que httpd vamos usar para el phpmyadmin.

Instalamos el paquete pureftpd con soporte para mysql.

apt-get install pure-ftpd-mysql

Posteriormente creamos el ftpgroup y ftpuser por los que serán mapeados todos los usuarios virtuales. Remplanzar el grupo y el userid 2001 por uno que este libre en el servidor.

groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c "pureftpd user" -g ftpgroup ftpuser

Ahora vamos a crear una base de datos llamada pureftpd y un usuario MySQL llamado pureftpd el cual usará el servicio para conectar con la base de datos.

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;

No olvidar remplazar la clave del usuario pureftpd por una segura.

Creamos la tabla que albergará los usuarios virtuales:

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;

Configurar el acceso del servicio a MySQL.

cp /etc/pure-ftpd/db/mysql.conf /etc/pure-ftpd/db/mysql.conf_backup
>/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
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")

Asegurarse de cambiar la clave por la correcta para el usuario pureftpd.

Parámetros de configuración:

echo "yes" > /etc/pure-ftpd/conf/ChrootEveryone
echo "yes" > /etc/pure-ftpd/conf/CreateHomeDir
echo "yes" > IPV4Only
echo "10" > MaxClientsNumber
echo "3" > MaxClientsPerIP
echo "80" > MaxDiskUsage
echo "1000" > MinUID
echo "yes" > NoAnonymous

Reiniciar el servicio:

/etc/init.d/pure-ftpd-mysql restart

Restarting ftp server: Running: /usr/sbin/pure-ftpd-mysql -l mysql:/etc/pure-ftpd/db/mysql.conf -l pam -A -C 3 -k 80 -u 1000 -j -O clf:/var/log/pure-ftpd/transfer.log -4 -c 10 -E -B

Podemos crear usuarios desde http://localhost/phpmyadmin

Si os da un error tipo que no arranca el servicio y no muestra ningún mensaje de error ni siquiera en los logs, cambiar la linea de /etc/default/pure-fptd-common para que quede así.

STANDALONE_OR_INETD=standalone

Listo! ;)

Compártelo!!!
  • BarraPunto
  • Meneame
  • Bitacoras.com

Artículos relacionados

Lo siento, comentarios para esta entrada están cerrados en este momento.