A pesar de alguna cierta incertidumbre que pueda rondar a MySQL, personalmente sigo prefiriendo trabajar con esta DB a usar alguna otra. No tengo nada contra Postgre, simplemente he usado de toda una vida MySQL, y hasta ahora no he tenido motivos para replantearme su uso.
Esta vez les enseรฑarรฉ a instalar un servidor FTP, pero no solo eso, les enseรฑarรฉ de una forma no tan compleja, cรณmo hacer que los usuarios, passwords y demรกs datos de los usuarios sean guardados en una base de datos MySQL, y no en cuentas locales.
ยฟpor quรฉ hacer esto asรญ?
Simple, porque a la hora de hacer un backup, reinstalar un servidor o cualquier otro cambio significativo, mover el servicio serรญa tan simple como copiar un archivo de configuraciรณn, y exportar la base de datos MySQL referente al FTP.
Para lograr esto usaremos Pure-FTPd, bienโฆ empecemos ๏
Instalaciรณn del servicio FTP con Pure-FTPd
1. Lo primero que debemos hacer es instalar el paquete: pure-ftpd-mysql
En distros como Debian o derivados: aptitude install pure-ftpd-mysql
2. Una vez instalado, se nos iniciรณ el servicio pero debemos detenerlo, para detenerlo en sistemas como Debian o derivados basta con:
/etc/init.d/pure-ftpd-mysql stop
No obstante, les dejo una lรญnea que detendrรก el servicio sin importar la distro que usen:
ps ax | grep pure | grep -v grep | awk '{print $1}' | xargs kill
Preparando condiciones en el servidor MySQL
Ya expliquรฉ hace no mucho cรณmo crear una base de datos, un usuario y darle permisos a ese usuario en la base de datos: Usuarios y permisos en MySQL
Pasemos a ยฟquรฉ haremos acรก? โฆ
1. Crearemos una base de datos sรญ, pero primero accedemos a MySQL :
mysql -u root -p
2. Una vez dentro de MySQL pasamos a crear la base de datos myftpdb:
CREATE DATABASE myftpdb;
3. Ahora crearemos el usuario myftpuser y le daremos permisos a use usuario sobre la base de datos que reciรฉn creamos, este usuario tendrรก como password myftppassword:
CREATE USER 'myftpuser'@'localhost' IDENTIFIED BY 'myftppassword';
GRANT ALL PRIVILEGES ON myftpdb.* TO 'myftpuser'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES ;
4. Listo, ya creamos la base de datos, el usuario y establecimos los permisos. Ahora debemos importar la base de datos por defecto (o limpia) para que esto estรฉ completo. Para ello primero salgamos de MySQL:
exit;
Ahora descarguemos la base de datos por default que les ofrezco:
O bien en el servidor usen la siguiente lรญnea:
wget http://ftp.desdelinux.net/myftpdb.sql
Listo, ya la tenemos en nuestro servidor, ahora solo queda importar sus datos:
mysql -u root -p myftpdb < myftpdb.sql
Y listo!
5. Y esto es todo para tener listo las condiciones de nuestro MySQL listas.
Uniendo FTP con MySQL
Bien, ya tenemos el servicio FTP instalado, el servicio MySQL instalado y con nuestra base de datos puestaโฆ ahora solo falta, unir el servicio FTP con MySQL.
1. Primero debemos descargar el archivo de configuraciรณn que usaremos para lo antes marcado. En la terminal del servidor pongamos la siguiente lรญnea:
cd /etc/pure-ftpd/ && wget http://ftp.desdelinux.net/pure-ftpd-mysql.conf
2. Ahora iniciamos el servicio FTP indicรกndole que use para autenticar usuarios MySQL, y ademรกs le indicaremos quรฉ archivo de configuraciรณn usar para conectarse a MySQL:
pure-ftpd-mysql -l mysql:/etc/pure-ftpd/pure-ftpd-mysql.conf
Y listo ๏
Esto basta para instalar nuestro propio servidor FTP autenticando con una base de datos MySQL.
Si desean que siempre que el servidor se inicie automรกticamente inicie el servicio FTP, deben poner en el archivo /etc/rc.local la lรญnea que usamos para ejecutar el FTP, o sea, ponemos en /etc/rc.local esto:
pure-ftpd-mysql -l mysql:/etc/pure-ftpd/pure-ftpd-mysql.conf
Por cierto, podrรกn acceder al FTP usando cualquier navegador, asรญ como clientes FTP como Filezillaโฆ y no solo eso, usando navegadores de archivo como Nautilus, Dolphin o PCManFM tambiรฉn podrรกn bajar archivos y subirlos ๏
Usuario de prueba que estรก en la base de datos
Usuario: testuser
Password: testpassword
ยฟCรณmo administrar los usuarios del FTP?
Bueno, teniendo en cuenta que es una base de datos MySQL, como dije arribaโฆ usando PHPMyAdmin o Adminer les bastarรก. Simplemente usen su aplicaciรณn favorita para administrar la base de datos, la cual contiene una sola tabla: users โฆ y en ella se encuentran los usuarios, aquรญ les dejo un screenshot:
Si desean crear un nuevo usuario, pueden duplicar o clonar la lรญnea existente y cambiar los datos que serรญan diferentes entre ambos usuarios, aquรญ les muestro un screenshot:
Buenoโฆ nada mรกs que agregar ๏
Espero esto les sea de utilidad y ya saben, cualquier duda o sugerencia me la dejan saber.
Saludos
PD: En este tutorial usamos passwords guardados en la base de datos en texto plano, si desean mayor seguridad les recomiendo prueben con md5 ๏
MUY BUENO!!! Hace un par de semanas estuve instalandome esto pero con vsftpd y no me termino de convencer asi que voy a probar esto a ver que tal esta. Gracias
Gracias amigo.
vsftpd no recuerdo cuรกndo fue la รบltima vez que lo usรฉ… harรกn algunos aรฑos ya, … si es que alguna vez lo usรฉ JAJA. Por el momento con PureFTPd ando mรกs que contento ๐
Muy buen aporte!
Thanks compa ๐
Se hace lo que se puede jejeje….
Uuumm, interesante… pรกsame la ip de la BD que quiero tener esa recopilaciรณn de usuarios y contraseรฑas a mano ๐
Don’t be evil, man
No entendรญ jejeje… ยฟde quรฉ IP y DB hablas?
Si te refieres a que estos datos que puse en el tutorial podrรญan estar asรญ mismo en un servidor, sรญp ahรญ tienes razรณn… estรกn en un servicio FTP en una PC virtual en mi laptop, esta tiene un MUY buen firewall (iptables) por lo que… HAHAHAHAHA claro que don’t be evil LOL!!!
Joroรฑa que joroรฑa…. va a ser mรกs complicado de lo que parece aprovechar alguna vulnerabilidad y capturar esos datos ๐
ยกยกMuy interesante!! ๐
Gracias ๐
Esto es lo que intento que nos diferencie del resto de sitios … que nosotros intentamos poner no tanto noticias sino como artรญculos tรฉcnicos ๐
Quรฉ tan rรกpido es esto respecto a Samba? (red local solamente)
que samba y ftp son 2 cosas distintas, ftp es un protocolo en serio y smb solo para facilitar la comparticion entre win y linux.
Si buscas rendimiento en la red utiliza un servicio de FTP de lo contrario utiliza samba nomas sin problemas
Exacto.
Digamos que FTP es un tanto mรกs serio que Samba, al menos en mi opiniรณn asรญ lo es.
No he hecho benchmarks ni mucho menos, pero tal vez FTP sea un poco mรกs rรกpido.
Gracias. Yo uso Samba para que desde mi consola Wii (usando wiimc) pueda ver pelis y series que descargo en la compu. Pero wiimc tambiรฉn se puede conectar a un servidor ftp. Yo usรฉ Samba porque era lo mรกs fรกcil, pero siempre me intrigรณ si serรญa mรกs rรกpido con ftp. Tendrรฉ que probar.
Bueno, tambiรฉn podrรญas montar simplemente Apache en tu PC, y asรญ el Wii se conectarรญa, este debe ser mรกs rรกpido que samba… y muchรญsimo mรกs simple de configurar que FTP ๐
El wiimc (un Wii Media Player) sรณlo acepta conexiones Samba y FTP.
Excelente. Sรณlo le hace falta algo a este tipo de artรญculos (y al sitio en general) para quede todo perfecto; una plantilla CSS para poder imprimir los artรญculos a PDF o en papel.
No se si serรก a mi solo, pero el gran problema con esto es que los usuarios pueden recorrer todos los directorios por mas que le doy un directorio especรญfico como ยซ/var/www/sitio_usuarioยป si se conectan por ftp tienen acceso a cualquier lugar de mi pc ยฌยฌ
no es muy seguro eso jaja
ACA ESTA!!!
Para evitar que los usuarios que creamos puedan navegar por todo nuestro sistema hay que agregarle el parametro ยซ-Aยป al lanzar el pure…
O sea lo que agregamos al /etc/rc.local que pones en el tuto es esto
pure-ftpd-mysql -l mysql:/etc/pure-ftpd/pure-ftpd-mysql.conf
y hay que reemplazarlo por esto otro:
pure-ftpd-mysql -A -l mysql:/etc/pure-ftpd/pure-ftpd-mysql.conf
Se aprecia?… Esta nueva lรญnea lleva el parรกmetro -A para restringirle el directorio solamente al que le asignamos y nada mas, puede crear pero no puede subir de nivel.
D: esta lindo puro-fptd
Gracias por el tip ๐
Hola es posible implementar quotas en esta implementaciรณn de MySQL y FTP, yo actualmente tengo un servidor ftp con vsftpd y no tengo problema alguno con las quotas, pero al ser un usuario virtual (creado en mysql) serรกn validas las quotas? y lo segundo es en donde se almacenan los archvios subidos por los usuarios, es decir cuales son los directorios de cada usuario.
En teorรญa sรญ se pueden implementar cuotas, de hecho la base de datos tiene los campos creados para ello, y el archivo de configuraciรณn del servicio FTP tiene puesta las consultas para esto, lo que en realidad no he probado esto ๐
Sobre el dรณnde los usuarios pondrรญan los archivos, lo defines en el 5to campo, mira el screenshot: https://blog.desdelinux.net/wp-content/uploads/2012/09/phpmyadmin-screenshot-nuevo-usuario.jpg
Muchas Gracias por tu comentario, voy a probar este sistema en un servidor de prueba y comento los resultados, ojala se pueda por que es un gran mรฉtodo para tener todo ordenadito, y con un RAID tienes un sistema de backup estable :D.
Gracias a tรญ por el comentario ๐
Tengo una pregunta, ya he logrado instalar pure-ftp con mysql y quotas, el tema ahora es como puedo suspender una cuenta desde la propia tabla mysql, sin modificar su contraseรฑa usuario o archivos subidos.
Se me ocurren dos formas, la mรกs simple es cambiarle el valor de Status de 1 a 0, en teorรญa si estรก en 0 la cuenta estรก desactivada, prueba esto y me dices ๐
Roberto, como lograste poner las cuotas usando esta instalaciรณn? Por favor socializa la informaciรณn.
Muy buena entrada!!
Birkhoff, justamente en mi blog personal cree un tema sobre eso, te dejo el link para que lo revises:
http://aprendelinux.net/instalar-servidor-ftp-pure-ftp-con-cuentas-virtuales-en-mysql/
Saludos:
EStoy tratando de seguir todo pero me aparece error 501 y mas que todo hacer referencia a que el password es incorrecto cuando se que esta bien