HowTo: servizio FTP utilizzando database MySQL

Nonostante alcune incertezze che potrebbero circondare MySQL, personalmente preferisco ancora lavorare con questo DB piuttosto che usarne altri. Non ho nulla contro Postgre, ho semplicemente usato MySQL per tutta la vita e fino ad ora non ho avuto motivo di ripensare al suo utilizzo.

Questa volta ti insegnerò come installare un server FTP, ma non solo, ti insegnerò in modo non così complesso, come fare in modo che utenti, password e altri dati degli utenti vengano memorizzati in un database MySQL, e non negli account Locale.

Perché fai così?

Semplice, perché quando si effettua un backup, si reinstalla un server o qualsiasi altra modifica significativa, spostare il servizio sarebbe semplice come copiare un file di configurazione ed esportare il database MySQL su FTP.

Per raggiungere questo obiettivo useremo FTPd puro, beh ... iniziamo 🙂

Installazione del servizio FTP con Pure-FTPd

1. La prima cosa da fare è installare il pacchetto: pure-ftpd-mysql

In distribuzioni come Debian o derivati: aptitude installa pure-ftpd-mysql

2. Una volta installato abbiamo avviato il servizio ma dobbiamo fermarlo, per fermarlo su sistemi tipo Debian o derivati ​​basta con:

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

Tuttavia, ti lascio una riga che interromperà il servizio indipendentemente dalla distribuzione che usi:

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

Se vuoi capire questa riga in dettaglio, leggi Questo articolo

Preparazione delle condizioni sul server MySQL

Ho già spiegato non molto tempo fa come creare un database, un utente e dare i permessi a quell'utente nel database: Utenti e autorizzazioni in MySQL

Passiamo a cosa faremo qui? ...

1. Creeremo un database sì, ma prima accediamo a MySQL:

mysql -u root -p

Qui inseriscono la password di root e accederanno al terminale MySQL.

2. Una volta all'interno di MySQL si passa alla creazione del database myftpdb:

CREATE DATABASE myftpdb;

Notare il punto e virgola «;»Alla fine della riga.

3. Ora creeremo l'utente myftpuser e daremo i permessi per usare l'utente sul database che abbiamo appena creato, questo utente avrà come password password miaftp:

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

4. Pronto, abbiamo creato il database, l'utente e impostato i permessi. Ora dobbiamo importare il database predefinito (o pulito) affinché questo sia completo. Per fare ciò, prima usciamo da MySQL:

exit;

Adesso scarichiamo il database di default che ti offro:

Scarica DB per impostazione predefinita

Oppure sul server utilizzare la seguente riga:

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

Pronto, lo abbiamo già sul nostro server, ora non resta che importare i tuoi dati:

mysql -u root -p myftpdb < myftpdb.sql

E pronto!

Possono anche utilizzare alcune applicazioni web come Adminer o PHPMyAdmin per importare il database, lo lascio a gusto.

5. E questo è tutto per avere le condizioni del nostro MySQL pronte.

Collegamento FTP con MySQL

Bene, abbiamo già il servizio FTP installato, il servizio MySQL installato e con il nostro set di database ... ora abbiamo solo bisogno, aderire al servizio FTP con MySQL.

1. Per prima cosa dobbiamo scaricare il file di configurazione che useremo per il suddetto. Nel terminale del server mettiamo la seguente riga:

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

2. Ora avviamo il servizio FTP dicendogli di usare per autenticare gli utenti MySQL, e indicheremo anche quale file di configurazione usare per connettersi a MySQL:

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

E voilà 😀

Questo è sufficiente per installare il nostro server FTP autenticandoti con un database MySQL.

Se vuoi che ogni volta che il server si avvia automaticamente avvii il servizio FTP, devi inserire il file /etc/rc.local la linea che usiamo per eseguire l'FTP, cioè la inseriamo /etc/rc.local Questo:

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

A proposito, puoi accedere all'FTP utilizzando qualsiasi browser, oltre a client FTP come Filezilla ... e non solo, utilizzando browser di file come Nautilus, Dolphin o PCManFM puoi anche scaricare e caricare file 😀

Utente di prova che si trova nel database

Nome utente: testuser

Password: password di prova

Come gestire gli utenti FTP?

Bene, tenendo conto che si tratta di un database MySQL, come ho detto sopra ... sarà sufficiente usare PHPMyAdmin o Adminer. Usa la tua applicazione preferita per gestire il database, che contiene un'unica tabella: utenti ... e in esso ci sono gli utenti, ecco uno screenshot:

Se vuoi creare un nuovo utente, puoi duplicare o clonare la linea esistente e modificare i dati che sarebbero diversi tra i due utenti, qui ti mostro uno screenshot:

Bene ... niente altro da aggiungere 🙂

Spero che questo ti sia utile e sai, eventuali domande o suggerimenti fammelo sapere.

saluti

PD: In questo tutorial utilizziamo le password salvate nel database in chiaro, se vuoi una maggiore sicurezza ti consiglio di provare md5 😉


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.

  1.   LiGNuxero suddetto

    MOLTO BUONA!!! Un paio di settimane fa stavo installando questo ma con vsftpd e non sono convinto, quindi proverò questo per vedere come è. Grazie

    1.    KZKG ^ Gaara suddetto

      Grazie amico.
      vsftpd Non ricordo quando è stata l'ultima volta che l'ho usato ... qualche anno fa, ... se mai l'ho usato HAHA. Al momento con PureFTPd sono più che felice 😀

  2.   corretto suddetto

    Ottimo contributo!

    1.    KZKG ^ Gaara suddetto

      Grazie compa 😀
      Fai quello che puoi lol….

  3.   Guardiano del computer suddetto

    Uuumm, interessante ... passami l'IP del DB che voglio avere a portata di mano quella raccolta di utenti e password 😉

    Non essere cattivo, amico

    1.    KZKG ^ Gaara suddetto

      Non ho capito hehehe ... di che IP e DB stai parlando?
      Se intendi che questi dati che ho inserito nel tutorial potrebbero essere anche su un server, sì, hai ragione ... sono in un servizio FTP su un PC virtuale sul mio laptop, ha un firewall MOLTO buono (iptables) quindi ... HAHAHAHAHA ovviamente non essere malvagio LOL !!!

  4.   Guardiano del computer suddetto

    Joroña che joroña…. Sarà più complicato di quanto sembri trarre vantaggio da alcune vulnerabilità e acquisire quei dati 😉

  5.   Algave suddetto

    Molto interessante!! 🙂

    1.    KZKG ^ Gaara suddetto

      Grazie
      Questo è quello che cerco di differenziarci dal resto dei siti ... che proviamo a mettere non tanto notizie ma come articoli tecnici 😀

  6.   Giskard suddetto

    Quanto è veloce rispetto a Samba? (solo rete locale)

    1.    LiGNuxero suddetto

      che samba e ftp sono 2 cose diverse, ftp è un protocollo serio e smb solo per facilitare la condivisione tra win e linux.
      Se stai cercando prestazioni in rete, usa un servizio FTP, altrimenti usa samba senza problemi

      1.    KZKG ^ Gaara suddetto

        Esatto.
        Diciamo che FTP è un po 'più serio di Samba, almeno secondo me lo è.

        Non ho fatto alcun benchmark, ma forse FTP è un po 'più veloce.

        1.    Giskard suddetto

          Grazie. Uso Samba in modo che dalla mia console Wii (usando wiimc) posso guardare film e serie che scarico sul mio computer. Ma wiimc può anche connettersi a un server ftp. Ho usato Samba perché era il più semplice, ma ero sempre incuriosito se sarebbe stato più veloce con ftp. Dovrò provare

          1.    KZKG ^ Gaara suddetto

            Bene, potresti anche semplicemente montare Apache sul tuo PC, e così la Wii si connetterà, deve essere più veloce di samba ... e molto più semplice da configurare rispetto a FTP 😀

          2.    Giskard suddetto

            Il wiimc (un Wii Media Player) accetta solo connessioni Samba e FTP.

  7.   Acciaio massimo suddetto

    Eccellente. Hai solo bisogno di qualcosa per questi tipi di articoli (e il sito in generale) per rendere tutto perfetto; un modello CSS per poter stampare gli articoli in PDF o su carta.

  8.   LiGNuxero suddetto

    Non so se sarà il mio, ma il grosso problema è che gli utenti possono passare attraverso tutte le directory anche se do loro una directory specifica come "/ var / www / user_site" se si connettono tramite ftp avere accesso ovunque dal mio pc ¬¬
    non è molto sicuro haha

  9.   LiGNuxero suddetto

    ECCO QUI!!!
    Per evitare che gli utenti che creiamo possano navigare attraverso il nostro intero sistema, dobbiamo aggiungere il parametro "-A" all'avvio del pure ...

    Quindi quello che aggiungiamo a /etc/rc.local che hai inserito nel tutorial è questo
    pure-ftpd-mysql -l mysql: /etc/pure-ftpd/pure-ftpd-mysql.conf

    e devi sostituirlo con quest'altro:
    pure-ftpd-mysql -A -l mysql: /etc/pure-ftpd/pure-ftpd-mysql.conf

    È apprezzata? ... Questa nuova riga ha il parametro -A per limitare la directory solo a cui la assegniamo e nient'altro, può creare ma non può salire di livello.

    D: questo simpatico pure-fptd

    1.    KZKG ^ Gaara suddetto

      Grazie per il suggerimento 😀

  10.   Roberto suddetto

    Ciao, è possibile implementare quote in questa implementazione di MySQL e FTP, attualmente ho un server ftp con vsftpd e non ho problemi con le quote, ma essendo un utente virtuale (creato in mysql) le quote saranno valide? e il secondo è dove vengono archiviati i file caricati dagli utenti, ovvero le directory di ciascun utente.

    1.    KZKG ^ Gaara suddetto

      In teoria puoi implementare le quote, infatti il ​​database ha i campi creati per esso, e il file di configurazione del servizio FTP ha le query impostate per questo, che infatti non ho testato questo 😉

      Riguardo a dove gli utenti metterebbero i file, lo definisci nel 5 ° campo, vedi lo screenshot: https://blog.desdelinux.net/wp-content/uploads/2012/09/phpmyadmin-screenshot-nuevo-usuario.jpg

  11.   Roberto suddetto

    Grazie mille per il tuo commento, testerò questo sistema su un server di prova e commenterò i risultati, spero di poterlo fare perché è un ottimo metodo per avere tutto in ordine e con un RAID hai un backup stabile sistema: D.

    1.    KZKG ^ Gaara suddetto

      Grazie anche a te per il commento 🙂

  12.   Roberto suddetto

    Ho una domanda, sono già riuscito a installare pure-ftp con mysql e quote, il problema ora è come posso sospendere un account dalla tabella mysql stessa, senza modificare la password utente oi file caricati.

    1.    KZKG ^ Gaara suddetto

      Posso pensare a due modi, il più semplice è cambiare il valore di Stato dei servizi da 1 a 0, in teoria se è a 0 l'account è disattivato, prova questo e dimmi 🙂

  13.   birkhoff suddetto

    Roberto, come sei riuscito a fissare le tariffe utilizzando questa struttura? Si prega di condividere le informazioni.
    Ingresso molto buono !!

    1.    Roberto Sotelo suddetto

      Birkhoff, proprio nel mio blog personale ho creato un argomento a riguardo, vi lascio il link per la revisione:

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

  14.   klaus suddetto

    Saluti:

    Sto cercando di seguire tutto ma ricevo l'errore 501 e soprattutto mi riferisco al fatto che la password non è corretta quando so che va bene