Rss

  • flickr
  • linkedin
  • google

Archives for : ftp

Instalar PureFTPd y configurarlo para usarlo con MySQL

Vamos a llevar a cabo una instalación de un servidor ftp, en este caso PureFTPd, y vamos a almacenar los usuarios en una tabla de una base de datos, en este caso MySQL. Este tipo de instalación es muy útil, ya que podremos agregar, modificar o eliminar usuarios modificando la tabla de MySQL, esto es muy cómodo cuando necesitamos modificar usuarios desde una aplicación como podría ser una aplicación web, o incluso desde una app móvil como (android o IOS). También podrán ser modificados desde PHPMyAdmin.

 

En caso de no disponer de MySQL en nuestro equipo, lo instalamos

sudo apt-get install mysql-server mysql-client

Nos preguntará por la contraseña que queremos usar, y nos pedirá repetirla.

 

Una vez listo MySQL, abrimos una terminal o consola y nos autenticamos en MySQL con nuestro usuario de MySQL con el comando:

mysql -u username -p

autenticación_mysql

 

Creamos la base de datos para PureFTPd con el comando:

CREATE DATABASE pureftpd;

crear_base_datos

 

Creamos el usuario de MySQL pureftpd y le damos permisos de selección, inserción, actualización, borrado y creación en la base de datos que creamos en el paso anterior con el comando (sustituyendo ContraseñaDeEsteUsuario por la contraseña que deseemos):

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO ‘pureftpd’@’localhost’ IDENTIFIED BY ‘ContraseñaDeEsteUsuario’;

crear_usuario

 

Creamos la tabla en la base de datos:

CREATE TABLE pureftpd.ftpd (

User varchar(30) NOT NULL default ”,

status enum(‘0′,’1’) NOT NULL default ‘0’,

Password varchar(64) NOT NULL default ”,

Uid varchar(11) NOT NULL default ‘1060’,

Gid varchar(11) NOT NULL default ‘1009’,

Dir varchar(128) NOT NULL default ”,

ULBandwidth smallint(5) NOT NULL default ‘0’,

DLBandwidth smallint(5) NOT NULL default ‘0’,

comment varchar(255) NOT NULL default ”,

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)

);

creamos_tabla

 

Con esto ya tenemos la base de datos preparada. Salimos de MySQL

exit

salir_mysql

 

Continuamos instalando PureFTPd

sudo apt-get install pure-ftpd-mysql

instalacion

 

Hacemos una copia de la configuración por defecto de PureFTPd

sudo cp /etc/pure-ftpd/db/mysql.conf /etc/pure-ftpd/db/mysql.conf_orig

 

Vaciamos el archivo de configuración

sudo sh -c “cat /dev/null > /etc/pure-ftpd/db/mysql.conf”

NOTA: A alguien le puede parecer extraño este comando y estará pensando porque no se hace con sudo cat /dev/null > /etc/pure-ftpd/db/mysql.conf, el motivo es que se hacerlo de esa forma, la primera parte, el cat /dev/null se realizaría con permisos de superusuario, pero la redirección al archivo de configuración se realizaría con el usuario del shell, y por tanto si no es root, no lo realizaría. De esta forma ejecutamos como superusuario el comando sh, y a este le pasamos con la opción -c el código que queremos ejecutar.

 

Ahora editamos el archivo de configuración

sudo nano /etc/pure-ftpd/db/mysql.conf

y añadimos lo siguiente:

MySQLSocket /var/run/mysqld/mysqld.sock

#MYSQLServer localhost

#MYSQLPort    3306

MySQLTransactions On

MYSQLUser    pureftpd

MYSQLPassword   ContraseñaDeEsteUsuario

MYSQLDatabase   pureftpd

MYSQLCrypt   cleartext

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”)

 

Guardamos pulsando control + o y luego intro

Y salimos con control + x

 

Continuamos con algunas configuraciones para nuestro demonio:

sudo sh -c ‘echo “yes” > /etc/pure-ftpd/conf/ChrootEveryone’  Crea un entorno chroot para los usuarios

sudo sh -c ‘echo “yes” > /etc/pure-ftpd/conf/CreateHomeDir’  Crea el directorio del usuario cuando este se loguea y no existe dicho directorio

sudo sh -c ‘echo “yes” > /etc/pure-ftpd/conf/NoAnonymous’  Impide el acceso anónimo

sudo sh -c ‘echo “yes” > /etc/pure-ftpd/conf/AllowDotFiles’  Permite archivos que empiezan con un punto como .htaccess

sudo sh -c ‘echo “no” > /etc/pure-ftpd/conf/ProhibitDotFilesWrite’  No prohíbe la escritura de los archivos de la linea anterior

sudo sh -c ‘echo “yes” > /etc/pure-ftpd/conf/DisplayDotFiles’  Muestra los archivos que empiezan por un punto (archivos ocultos en linux)

sudo sh -c ‘echo “no” > /etc/pure-ftpd/conf/ProhibitDotFilesRead’  No impide leer los archivos que comienzan por un punto

Modificamos el siguiente archivo para que PureFTPd se ejecute en modo “standalone”, es decir, de forma automática, sin la intervención del usuario

sudo nano /etc/default/pure-ftpd-common

con esta línea

STANDALONE_OR_INETD=standalone

 

Reiniciamos el servicio para aplicar los cambios

sudo service pure-ftpd-mysql restart

o si nuestra distribución de línux no posee el comando service

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

reiniciar_demonio

 

Esta sería la vista de un usuario creado desde phpMyAdmin

phpmyadmin

Como vemos, tendremos varios campos, que explicamos a continuación:

La columna User será el nombre de usuario.

La columna status indica con un 1 si la cuenta ftp está activada, o con un 0 si está desactivada.

La columna Password, será al contraseña de nuestro usuario ftp.

La columna Uid, es el identificador de Usuario del sistema con la que se crearán los archivos y directorios que se suban al ftp.

La columna Gid, es el identificador de Grupo del sistema con la que se crearán los archivos y directorios que se suban al ftp

La columna Dir, es el Directorio raíz a donde apunte la cuenta de FTP.

La columna ipaccess, por defecto al dejarla en blanco coge un “*” y se podrá acceder a la cuenta desde cualquier IP, si se especifica una IP solo se podrá acceder a esa cuenta de ftp desde esa IP.

La columna ULBandwidth especifica el ancho de banda de subida del que dispondrá ese usuario en KB/sec. Si no se desea poner una limitación, se dejará a 0.

La columna DLBandwidth especifica el ancho de banda de bajada del que dispondrá ese usuario en KB/sec. Si no se desea poner una limitación, se dejará a 0.

La columna QuotaSize especifica especifica la cuota de disco de la que dispondrá el usuario en MB. Si no se desea poner una limitación, se dejará a 0.

La columna QuotaFiles especifica la cuota de  máxima de cada archivo en MB. Si no se desea poner una limitación, se dejará a 0.

 

Y con esto ya tendremos nuestro servidor ftp funcionando y podremos añadir, borrar y modificar usuarios desde mysql, phpMyAdmin, o incluso desde una aplicación web o móvil que nosotros mismos podremos programar.

 

0 Shares Twitter 0 Facebook 0 Google+ 0 LinkedIn 0 Pin It Share 0 0 Shares ×