Configurare il demone proftp perchè autentichi attingendo le informazioni da un database mysql
SCOPO
Configurare un demone ftp (nel nostro caso proftpd) perchè l'autenticazione degli utenti avvenga tramite un un database mysql.
VANTAGGI
Gli utenti ftp non devono esistere sul sistema per potersi autenticare
SVANTAGGI
La gestione di utenti, password, uid, gid, home e shell può risultare piuttosto laboriosa se fatta "a mano" ma esistono apposite interfacce web che ne facilitano la gestione.
INSTALLAZIONE
L'unico pacchetto di cui abbiamo bisogno è:
proftpd-mysql
Automaticamente verrà installato proftpd-common
Se è già installato proftpd, vi consiglio di fare un backup del file di configurazione.
Gli altri pacchetti che dovrete già avere installati e configurati sono
mysql-server
mysql-client
mysql-common
CONFIGURAZIONE MYSQL
Per prima cosa logghiamoci sul database mysql come amministratori:
Creiamo ora il database:
creiamo quindi l'utente, la password e i permessi per il nuovo utente:
Ovviamente 'password' è la password per l'accesso al database per l'utente 'proftpd'.
Ora usciamo con il comando
quit
e logghiamoci con il nuovo utente per assicurarci che tutto sia corretto:
Questa volta ci verrà chiesta la password che abbiamo specificato per l'utente 'proftpd'.
Ora creiamo le tabelle per l'autenticazione degli utenti e i relativi gruppi:
mysql> CREATE TABLE groups (
groupname varchar(30) NOT NULL default '',
gid int(11) NOT NULL default '0',
members varchar(255) default NULL
) TYPE=MyISAM;
mysql> CREATE TABLE users (
userid varchar(30) NOT NULL default '',
passwd varchar(30) NOT NULL default '',
uid int(11) default NULL,
gid int(11) default NULL,
homedir varchar(255) default NULL,
shell varchar(255) default NULL,
UNIQUE KEY uid (uid),
UNIQUE KEY userid (userid)
) TYPE=MyISAM
CONFIGURAZIONE PROFTPD
Il file di configurazione di profpd è /etc/proftpd.conf, basta editarlo con l'editor preferito e aggiungere le seguenti righe:
Queste definiscono l'ordine di autenticazione degli utenti: prima viene eseguito il controllo nel database mysql, poi sul sistema; nella sezione è necessario aggiungere le seguenti righe:
#Utente e password per la connessione al database da cui attingere gli utenti ftp
SQLConnectInfo database@host utente password
#Ordine da seguire per l'autenticazione
SQLAuthTypes Crypt Backend Plaintext
SQLNegativeCache on
RequireValidShell off
#Log file autenticaziopne tramite database
SQLLogFile /var/log/proftpd/mysql.log
A questo punto basta dare il reload del demone ftp per far leggere i cambiamenti:
# /etc/init.d/proftpd reload
UN ESEMPIO
Ipottizziamo la home del demone ftp sia /home/ftp, creiamo qui la cartella incoming/ (che ospiterà i file uploadati dagli utenti anonimi), pub/ (che conterrà i file messi a disposizione degli utenti anonimi) e users/ (che conterrà le home degli utenti virtuali). Diamo a incoming/ i permessi 755, come owner e gruppo ftp:nogroup.
Creiamo l'utente 'foobar': per prima cosa creiamo la sua home in users/ e diamo come permessi, proprietario e gruppo gli stessi assegnati prima. Creiamo poi la voce nel database:
A questo punto abbiamo aggiunto l'utente 'foobar' con password 'foobar' (che viene crittata) che ha per home /home/ftp/users/foobar (ma lui nn si accorgerà di questo visto che è in ambiente chroot).
CREDITS
Autore: Incubus
E-Mail: incubus@gl-como.net
Membro del Gruppo Linux Como: http://www.gl-como.net