Sono uno di quelli a cui piace innovare e imparare cose nuove, non molto tempo fa ho dovuto installare e configurare un server FTP e ho deciso di farlo in modo diverso da come ho sempre fatto.
In questo caso ho optato per un servizio FTP con utenti virtuali, ovvero utenti che verranno memorizzati in un file crittografato (nome utente, password, impostazioni, ecc.), il tutto con Pure FTPd.
Qui ti mostrerò come farlo... beh, cominciamo
Prima di tutto, specifica che i comandi in questo tutorial sono destinati a distribuzioni come Debian o basate su di esse, tuttavia se qualcuno usa un'altra distribuzione sul proprio server deve installare gli stessi pacchetti e utilizzare le impostazioni impostate di seguito, l'unica cosa che deve essere modificata è il comando di installazione.
1. Per prima cosa dobbiamo installare Pure FTPd:
apt-get install pure-ftpd
L'output finirà in questo modo:
2. Il servizio è già attivo, ma è inutile se non lo abbiamo configurato correttamente. Supponiamo di avere un file di configurazione lungo ma quasi standard; contiene le solite impostazioni, come ad esempio il divieto di accesso per gli utenti anonimi, ecc.
cd /etc/pure-ftpd/ && wget http://ftp.desdelinux.net/pure-ftpd.conf
3. Bene, supponiamo che la nostra cartella FTP sia /var/www/ftp/ e che vogliamo creare un utente che possa caricare informazioni nella cartella /var/www/ftp/sysadmin/. Inseriamo quanto segue in un terminale:
pure-pw useradd sysadmin -u 2001 -g 2001 -d /var/www/ftp/sysadmin/
Ciò significa quanto segue:
pure-pw: comando utilizzato per manipolare gli utenti Pure-FTPd
useradd: Indichiamo che aggiungeremo un utente
sysadmin: l'utente che voglio creare
-u 2001: ID utente di quell'utente
-g 2001: GroupID di quell'utente
-d / var / www / ftp / sysadmin /: la cartella che sarà la casa di quell'utente, cioè dove caricheranno le cose
Quando si accede alla riga precedente, verrà richiesta la password di quell'utente.
4. Ora è necessario aggiornare il file del database degli utenti. Per farlo, vai alla cartella /etc/pure-ftpd/ (cd /etc/pure-ftpd) e digita quanto segue nel terminale:
pure-pw mkdb
5. Ora dobbiamo avviare Pure-FTPd, specificando però che utilizzeremo il file degli utenti virtuali. Per prima cosa, arrestiamo il servizio:
/etc/init.d/pure-ftpd stop
Quindi faremo in modo che non si avvii normalmente per impostazione predefinita:
chmod -x /etc/init.d/pure-ftpd
E ora iniziamo il servizio a modo nostro:
/usr/sbin/pure-ftpd -j -lpuredb:/etc/pure-ftpd/pureftpd.pdb
6. Se provi a usare un'applicazione come FileZilla, vedrai che puoi connetterti senza problemi con l'utente creato; tuttavia, non sarai in grado di copiare nulla o creare directory. Questo perché la cartella /var/www/ftp/sysadmin/ (la directory home dell'utente in questo esempio) non ha le autorizzazioni appropriate. Questo problema può essere risolto con:
chown -R 2001:2001 /var/www/ftp/sysadmin/
Ricorda, l'Uid e il Gid 2001 sono quelli dell'utente che abbiamo creato, l'abbiamo creato con il comando nel passaggio precedente 3
7. Per interrompere il servizio, è sufficiente premere [Ctrl]+[C] sullo stesso terminale oppure, su un altro terminale, eseguire la seguente operazione:
killall pure-ftpd
Adesso indicheremo che il servizio partirà automaticamente con il sistema all'avvio del server, per questo modifichiamo il file /etc/rc.local e prima dell'ultima riga che dice "exit 0" mettiamo il comando con cui avviamo il servizio FTP:
/usr/sbin/pure-ftpd -j -lpuredb:/etc/pure-ftpd/pureftpd.pdb
In altre parole, sarebbe simile a questo:
Puoi modificare il file con nano, vi o il tuo editor preferito o, se preferisci, copiare e incollare questo comando che renderà il tuo lavoro più facile:
perl -pi -e "s[exit 0][/usr/sbin/pure-ftpd -j -lpuredb:/etc/pure-ftpd/pureftpd.pdb]g" /etc/rc.local && echo "exit 0" >> /etc/rc.local
…sì sì… come hai letto, “facilitare”, è un comando estensivo sì, ma sta semplicemente sostituendo il testo con perl e un eco innocuo
8. Una volta completata questa operazione, riavvia il server e vedrai che il servizio pure-ftpd è ora avviato e pronto per l'uso.
Come eliminare gli utenti?
Come accennato in precedenza, il comando pure-pw è quello che ci serve per gestire gli utenti. Per eliminare un utente (ad esempio, sysadmin), useremmo il seguente comando:
cd /etc/pure-ftpd/
pure-pw userdel sysadmin
pure-pw mkdb
Ricorda che ogni volta che apporti una modifica a qualsiasi utente, devi rigenerare il file del database virtuale degli utenti, si trova in / etc / pure-ftpd / e viene generato / aggiornato con pure-pw mkdb
Comunque amici penso che non ci sia molto altro da aggiungere, vi invito a leggere la guida di pure-pw perché ci permette molto di più di quanto vi ho mostrato qui (questo è solo un breve e quasi basilare tutorial).
Un anno o due fa ero uno di quelli che collegavano tutto a OpenLDAP o MySQL, ma col passare del tempo mi sono reso conto che tante connessioni a database che sono server in quanto tali generano consumi che spesso non possiamo permetterci, quindi l'uso di servizi completamente alternative praticabili come l'utilizzo di database nei file dell'applicazione, come in questo caso di Pure-FTPd .pdb
Qualsiasi dubbio o domanda cercherò di aiutare il più possibile.
Saluti e ... buon hacking!