Tags

  • 2 items are tagged with Apache
  • 3 items are tagged with CentOS
  • 1 items are tagged with ClamAV
  • 1 items are tagged with Cyrus
  • 2 items are tagged with ESX 3.5
  • 1 items are tagged with Exim
  • 1 items are tagged with FastSCP
  • 1 items are tagged with Horde
  • 1 items are tagged with LAMP
  • 3 items are tagged with Linux
  • 3 items are tagged with MySQL
  • 1 items are tagged with Pam-mysql
  • 3 items are tagged with PFsense
  • 1 items are tagged with PureFTPd

Favourites Create PDF Email Print

Instalar PureFTPd en CentOS

Author:
F. Javier Lancharro Ramiro
Date added:
Thursday, 02 April 2009
Last revised:
Wednesday, 01 April 2009
Hits:
1262
Rating:
 
Vote for this:
Good - Bad
favoured:
0 Favour

Answer

Instalar PureFTPd con MySQL

En la mayoría de casos, cuando tenemos un servidor LAMP, tenemos la necesidad de subir archivos a nuestras Webs. Para ello nos convendría instalar un servidor FTP. Para Linux hay varios servidores FTP, uno de los más recomendados es PureFTPd.

PureFTPd se puede instalar de varias formas, y una de sus mejores características es la gestión de usuarios Virtuales, Quotas y Ancho de Banda. Para aprovechar al máximo este software, una de las instalaciones recomendadas es junto con el servidor de Base de Datos MySQL, el cual se encargará de gestionar a los usuarios, los permisos, y todo el resto de opciones.

 
Instalar Pure-FTPd

Lo primero que debemos de hacer es instalar el sevidor Pure-FTPd. Este servidor no requiere demasiadas dependencias, por no decir ninguna. Por lo que simplemente se ha de hacer el 'yum install' típico.

yum install pure-ftpd

Si no pudiera instalarse, puede ser que no se tengan instalados los repositorios correctos.Para ello seguiremos el siguiente procedimiento.

cd /etc/yum.repos.d/
wget http://centos.karan.org/kbsingh-CentOS-Extras.repo

Con esto tendremos el repositorio karan descargado en nuestra instalación. Ahora solo nos queda habiltarlo para que podamos trabajar con el.

vi kbsingh-CentOS-Extras.repo

Ahora debemos de buscar la línea donde ponga enabled=0 y cambiarlo a enabled=1

[...]
[kbs-CentOS-Testing]
name=CentOS.Karan.Org-EL$releasever - Testing
gpgcheck=1
gpgkey=http://centos.karan.org/RPM-GPG-KEY-karan.org.txt
enabled=1
baseurl=http://centos.karan.org/el$releasever/extras/testing/$basearch/RPMS/

Ahora debemos descargar la nueva llave GPG para el nuevo repositorio, esto hará la comprobación de los nuevos paquetes para verificar su atenticidad.

rpm --import http://centos.karan.org/RPM-GPG-KEY-karan.org.txt

Ahora ya podemos volver a efectuar la instalación de Pure-FTPd

yum install pure-ftpd

 Una vez instalado debemos crear un grupo (ftpgroup) y un usuario (ftpuser) para nuestro servidor ftp.

groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c "pureftpd user" -g ftpgroup ftpuser
 
Crear la Base de Datos de MySQL para Pure-FTPd

Damos por supuesto que se ha instalado y configurado correctamente MySQL, en la sección de HowTo's hay manuales de como instalar MySQL, por ejemplo en el tutorial de: Instalar LAMP.

 Debemos de crear una nueva Base de Datos para alojar a los usuarios que daremos de alta para usar nuestro Servidor FTP (Pure-FTPd). Para ello debemos logar en nuestro motor de Base de Datos MySQL.

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;

En el código anterior debemos de sustituir ftdpass por la contraseña que nosotros deseamos.

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;

Al ejecutar el código anterior podemos obtener un warning, pero se puede omitir ya que la tabla se habrá creado sin problemas.

quit;
 
Configurar Pure-FTPd

Lo que debemos de hacer ahora es configurar los parámetros del servicio Pure-FTPd, para ello debemos editar el archivo de configuración.

vi /etc/pure-ftpd/pure-ftpd.conf

Debemos dejarlo como sigue.

[...]
ChrootEveryone              yes
[...]
MySQLConfigFile             /etc/pure-ftpd/pureftpd-mysql.conf
[...]
CreateHomeDir               yes
[...]

El parámetro ChrootEveryone hace que el usuario cuando loga en el equipo no pueda salir de su carpeta raiz. CreateHomeDir hace que Pure-FTPd cree la carpeta del usuario si esta no existe.Ahora realizaremos una copia de seguridad del archivo de configuración de Pure-FTPd para MySQL y lo editaremos para dejarlo como sigue.

cp /etc/pure-ftpd/pureftpd-mysql.conf /etc/pure-ftpd/pureftpd-mysql.conf_orig
cat /dev/null > /etc/pure-ftpd/pureftpd-mysql.conf
vi /etc/pure-ftpd/pureftpd-mysql.conf
MYSQLSocket      /var/lib/mysql/mysql.sock
#MYSQLServer     localhost
#MYSQLPort       3306
MYSQLUser       pureftpd
MYSQLPassword   ftpdpass
MYSQLDatabase   pureftpd
#MYSQLCrypt md5, cleartext, crypt() or password() - md5 is VERY RECOMMENDABLE
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")

Hay que cambiar el valor de ftpdpass por el que habiamos puesto anteriormente al configurar la nueva Base de Datos de MySQL.Ahora debemos de configurar el servicio Pure-FTPd para que se inicie automáticamente cuando reiniciemos el ordenador.

chkconfig --levels 235 pure-ftpd on
service pure-ftpd start

 

Probar la configuración correcta

Para crear el usuario de prueba debemos entrar en la consola de MySQL.

mysql -u root -p
USE pureftpd;

Ahora crearemos un usuario de ejemplo exampleuser con el password secret (con el status 1 que significa que el usuario está habilitado para usar el servidor FTP), el password es guardado en la Base de Datos encriptado con MySQL MD5. el UID y el GID 2001 (son los mismos que usamos para crear el usuario y el grupo de Pure-FTPd), lo crearemos con el usuario raiz /home/www.example.com y con un ancho de banda de subida y bajada de 100 KB/sec. y una Quota de 50 MB.

INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, 
`ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) 
VALUES ('exampleuser', '1', MD5('secret'), '2001', '2001', '/home/www.example.com', 
'100', '100', '', '*', '50', '0');
quit;

Ahora solo debemos conectar con nuestro servidor con nuestro cliente FTP favorito usando como nombre de usuario y password el que hemos dado de alta en el paso anterior.

Category

Tags for this item

Comentarios (0)add comment

Escribir comentario

security image
Escribe los caracteres de la imagen


busy