HowTo: Servei FTP usant base de dades MySQL

Tot i alguna certa incertesa que pugui rondar a MySQL, personalment segueixo preferint treballar amb aquesta DB a fer servir alguna altra. No tinc res contra Postgre, simplement he fet servir de tota una vida MySQL, i fins ara no he tingut motius per replantejar el seu ús.

Aquesta vegada els ensenyaré a instal·lar un servidor, però no només això, els ensenyaré d'una forma no tan complexa, com fer que els usuaris, contrasenyes i altres dades dels usuaris siguin guardats en una base de dades MySQL, i no en comptes locals.

¿Per què fer això així?

Simple, perquè a l'hora de fer un backup, reinstal·lar un servidor o qualsevol altre canvi significatiu, moure el servei seria tan simple com copiar un fitxer de configuració, i exportar la base de dades MySQL referent a l'FTP.

Per aconseguir això farem servir Pure-FTPd, Bé ... comencem 🙂

Instal·lació de l'servei FTP amb Pure-FTPd

1. El primer que hem de fer és instal·lar el paquet: pure-ftpd-mysql

En distros com Debian o derivats: aptitude install pure-ftpd-mysql

2. Un cop instal·lat, se'ns va iniciar el servei però hem de detenir-lo, per detenir-lo en sistemes com Debian o derivats n'hi ha prou amb:

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

No obstant això, els deixo una línia que s'aturarà el servei sense importar la distro que facin servir:

ps ax | grep pure | grep -v grep | awk '{print $1}' | xargs kill

Si volen entendre amb luxe de detalls aquesta línia, llegir AQUEST article

Preparant condicions al servidor MySQL

Ja vaig explicar fa no gaire com crear una base de dades, un usuari i donar-li permisos a aquest usuari a la base de dades: Usuaris i permisos en MySQL

Passem a què farem aquí? ...

1. Crearem una base de dades sí, però primer accedim a MySQL:

mysql -u root -p

Aquí posen el password de root i accediran a la terminal de MySQL.

2. Un cop dins de MySQL passem a crear la base de dades myftpdb:

CREATE DATABASE myftpdb;

Notin el punt i coma «;»A la fi de la línia.

3. Ara crearem l'usuari myftpuser i li donarem permisos a usi usuari sobre la base de dades que recentment vam crear, aquest usuari tindrà com a password myftppassword:

CREATE USER 'myftpuser'@'localhost' IDENTIFIED BY 'myftppassword';
GRANT ALL PRIVILEGES ON myftpdb.* TO 'myftpuser'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES ;

4. A punt, ja vam crear la base de dades, l'usuari i vam establir els permisos. Ara hem d'importar la base de dades per defecte (o neta) perquè això estigui complet. Per a això primer sortim de MySQL:

exit;

Ara descarreguem la base de dades per default que els ofereixo:

Descàrrega DB per default

O bé al servidor usin la següent línia:

wget http://ftp.desdelinux.net/myftpdb.sql

Llest, ja la tenim al nostre servidor, ara només queda importar les seves dades:

mysql -u root -p myftpdb < myftpdb.sql

I llest!

També poden usar alguna aplicació web com Administrar o PHPMyAdmin per importar la base de dades, el deixo a l'gust.

5. I això és tot per tenir a punt les condicions del nostre MySQL llistes.

Unint FTP amb MySQL

Bé, ja tenim el servei FTP instal·lat, el servei MySQL instal·lat i amb la nostra base de dades posada ... ara només falta, unir el servei FTP amb MySQL.

1. Primer hem de descarregar l'arxiu de configuració que farem servir per a la qual abans marcat. A la terminal de l'servidor posem la següent línia:

cd /etc/pure-ftpd/ && wget http://ftp.desdelinux.net/pure-ftpd-mysql.conf

2. Ara iniciem el servei FTP indicant-li que faci servir per autenticar usuaris MySQL, ia més li indicarem un arxiu de configuració usar per connectar-se a MySQL:

pure-ftpd-mysql -l mysql:/etc/pure-ftpd/pure-ftpd-mysql.conf

I llest 😀

Això és suficient per instal·lar el nostre propi servidor FTP autenticant amb una base de dades MySQL.

Si desitgen que mentre el lloc s'iniciï automàticament s'iniciï el servei FTP, han de posar a l'arxiu /etc/rc.local la línia que fem servir per executar el FTP, és a dir, posem en /etc/rc.local això:

pure-ftpd-mysql -l mysql:/etc/pure-ftpd/pure-ftpd-mysql.conf

Per cert, podran accedir a l'FTP usant qualsevol navegador, així com clients FTP com Filezilla ... i no només això, usant navegadors d'arxiu com Nautilus, Dolphin o gestor de fitxers pcman també podran baixar arxius i pujar-los 😀

Usuari de prova que està a la base de dades

Usuari: testuser

clau: testpassword

Com administrar els usuaris de l'FTP?

Bé, tenint en compte que és una base de dades MySQL, com vaig dir a dalt ... usant PHPMyAdmin o Adminer en tindran prou. Simplement utilitzin la seva aplicació preferida per administrar la base de dades, la qual conté una sola taula: usuaris ... i en ella es troben els usuaris, aquí els deixo un screenshot:

Si desitgen crear un nou usuari, poden duplicar o clonar la línia existent i canviar les dades que serien diferents entre ambdós usuaris, aquí els mostro un screenshot:

Bé ... res més que afegir 🙂

Espero això els sigui d'utilitat i ja saben, qualsevol dubte o suggeriment me la deixen saber.

Salutacions

PD: En aquest tutorial fem servir contrasenyes guardats a la base de dades en text pla, si desitgen més seguretat els recomano provin amb md5 😉


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   LINUxer va dir

    MOLT BO !!! Fa un parell de setmanes vaig estar instal·lant això però amb vsftpd i no m'acabo de convèncer així que vaig a provar això a veure que tal aquesta. gràcies

    1.    KZKG ^ Gaara va dir

      Gràcies amic.
      vsftpd no recordo quan va ser l'última vegada que el vaig fer servir ... faran alguns anys ja, ... si és que alguna vegada ho vaig fer servir JAJA. De moment amb PureFTPd camino més que content 😀

  2.   correcte va dir

    Molt bona aportació!

    1.    KZKG ^ Gaara va dir

      Thanks companyia 😀
      Es fa el que es pot jejeje ....

  3.   Informàtic de Guàrdia va dir

    Uuumm, interessant ... Pásame la ip de la BD que vull tenir aquesta recopilació d'usuaris i contrasenyes a mà 😉

    Do not be evil, man

    1.    KZKG ^ Gaara va dir

      No vaig entendre jejeje ... de què IP i DB parles?
      Si et refereixes a que aquestes dades que vaig posar en el tutorial podrien estar així mateix en un servidor, SIP aquí tens raó ... estan en un servei FTP en un PC virtual en el meu portàtil, aquesta té un MOLT bon tallafocs (iptables) per la qual cosa ... hahahahaha clar que do not be evil LOL !!!

  4.   Informàtic de Guàrdia va dir

    Joroña que joroña .... serà més complicat del que sembla aprofitar alguna vulnerabilitat i capturar aquestes dades 😉

  5.   Algabe va dir

    'Molt interessant !! 🙂

    1.    KZKG ^ Gaara va dir

      gràcies
      Això és el que intento que ens diferenciï de la resta de llocs ... que nosaltres intentem posar no tant notícies sinó com articles tècnics 😀

  6.   Giskard va dir

    Què tan ràpid és això pel que fa a Samba? (Xarxa local només)

    1.    LINUxer va dir

      que samba i ftp són 2 coses diferents, ftp és un protocol de debò i smb només per facilitar la compartició entre win i linux.
      Si busques rendiment a la xarxa utilitza un servei de FTP en cas contrari utilitza samba nomes sense problemes

      1.    KZKG ^ Gaara va dir

        Exacte.
        Diguem que FTP és un tant més seriós que Samba, a l'almenys al meu entendre així ho és.

        No he fet benchmarks ni de bon tros, però potser FTP sigui una mica més ràpid.

        1.    Giskard va dir

          Gràcies. Jo ús Samba perquè des del meu consola Wii (usant wiimc) pugui veure pelis i sèries que descàrrec a la compu. Però wiimc també es pot connectar a un servidor ftp. Jo vaig fer servir Samba perquè era el més fàcil, però sempre em va intrigar si seria més ràpid amb ftp. Hauré de provar.

          1.    KZKG ^ Gaara va dir

            Bé, també podries muntar simplement Apache al teu PC, i així el Wii es connectaria, aquest ha de ser més ràpid que samba ... i moltíssim més simple de configurar que FTP 😀

          2.    Giskard va dir

            El wiimc (un Wii Media Player) només accepta connexions Samba i FTP.

  7.   Max Steel va dir

    Excel·lent. Només li fa falta alguna cosa a aquest tipus d'articles (i a el lloc en general) per quedi tot perfecte; una plantilla CSS per poder imprimir els articles a PDF o en paper.

  8.   LINUxer va dir

    No se si serà a mi sol, però el gran problema amb això és que els usuaris poden recórrer tots els directoris per mes que li dono un directori específic com «/ var / www / sitio_usuario» si es connecten per ftp tenen accés a qualsevol lloc de la meva pc ¬¬
    no és molt segur això jaja

  9.   LINUxer va dir

    ACA AQUESTA !!!
    Per evitar que els usuaris que creem puguin navegar per tot el nostre sistema cal agregar-li el paràmetre «-A» a l'llançar el puré ...

    O sigui el que afegim a l'/etc/rc.local que poses al Estatut és això
    pure-ftpd-mysql -l mysql: /etc/pure-ftpd/pure-ftpd-mysql.conf

    i cal reemplaçar-lo per això altre:
    pure-ftpd-mysql -A -l mysql: /etc/pure-ftpd/pure-ftpd-mysql.conf

    S'aprecia? ... Aquesta nova línia porta el paràmetre -A per restringir-directori només a què li assignem i res mes, pot crear però no pot pujar de nivell.

    D: aquesta valent pur-FPTD

    1.    KZKG ^ Gaara va dir

      Gràcies pel tip 😀

  10.   Roberto va dir

    Hola és possible implementar quotes en aquesta implementació de MySQL i FTP, jo actualment tinc un servidor ftp amb vsftpd i no tinc cap problema amb les quotes, però a l'ésser un usuari virtual (creat el mysql) seran vàlides les quotes? i el segon és on s'emmagatzemen els archvios enviats pels usuaris, és a dir quins són els directoris de cada usuari.

    1.    KZKG ^ Gaara va dir

      En teoria sí que es poden implementar quotes, de fet la base de dades té els camps creats per a això, i l'arxiu de configuració de l'servei FTP té posada les consultes per això, el que en realitat no he provat això 😉

      Sobre l'on els usuaris posarien els arxius, el defineixes al 5è camp, mira l'screenshot: https://blog.desdelinux.net/wp-content/uploads/2012/09/phpmyadmin-screenshot-nuevo-usuario.jpg

  11.   Roberto va dir

    Moltes Gràcies pel teu comentari, vaig a provar aquest sistema en un servidor de prova i comento els resultats, tant de bo es pugui per que és un gran mètode per tenir tot ordenadito, i amb un RAID tens un sistema de backup estable: D.

    1.    KZKG ^ Gaara va dir

      Gràcies a tu pel comentari 🙂

  12.   Roberto va dir

    Tinc una pregunta, ja he aconseguit instal·lar pure-ftp amb mysql i quotes, el tema ara és com puc suspendre un compte des de la pròpia taula mysql, sense modificar la seva contrasenya usuari o fitxers enviats.

    1.    KZKG ^ Gaara va dir

      Se m'ocorren dues formes, la més simple és canviar-li el valor de Estat d'1 a 0, en teoria si està en 0 el compte està desactivada, prova això i em dius 🙂

  13.   Birkhoff va dir

    Roberto, com vas aconseguir posar les quotes usant aquesta instal·lació? Si us plau socialitza la informació.
    Molt bona entrada !!

    1.    RobertoSotelo va dir

      Birkhoff, justament en el meu bloc personal creï un tema sobre això, et deixo el link perquè el revisis:

      http://aprendelinux.net/instalar-servidor-ftp-pure-ftp-con-cuentas-virtuales-en-mysql/

  14.   Klaus va dir

    Salutacions:

    Estic tractant de seguir tot però m'apareix error 501 i mes que tot fer referència al fet que el password és incorrecte quan es que aquesta bé