ProFTPd
Guida per ottenere un server ProFTPd con back-end MySQL.

Condizioni strettamente necessarie:


Mac OS X Developer Tools
Come prima cosa assicuratevi di avere i Developer Tools installati. (Nella root del vostro disco dovete avere una cartella Developer). Nel caso non siano presenti scaricateli http://developer.apple.com/tools/ e installateli come un normale software applicativo per X (richiesta la password di amministratore).
Attenzione: i Developer tools pesano circa 200 Mb. e potrebbe essere un problema downloadarli, leggete su http://developer.apple.com/ i vari metodi per ottenere il software ad esempio su CD-ROM.
Con i Developer Tools potete ora compilare i source.

MySQL
Seguite le istruzioni sul sito http://www.entropy.ch/software/macosx/mysql/ e installate il package pre-compilato per il vostro Mac OS X, 10.1.X o 10.2.X, esse sono disponibili in lingua italiana all'URL http://www.tevac.com/entropy-ita/

ProFTPd
Ora siamo pronti per compilare e configurare ProFTPd.

curl -O ftp://ftp.proftpd.org/distrib/source/proftpd-1.2.9.tar.gz
tar xzvf proftpd-1.2.9.tar.gz
cd proftpd-1.2.9
./configure --with-modules=mod_sql:mod_sql_mysql --with-includes=/usr/local/include --with-libraries=/usr/local/lib/mysql
make
make install


Ora che proFDTPd é compilato e installato dobbiamo configurare il modulo per leggere il back-end mysql.
Come prima cosa dobbiamo creare il "back-end" ovvero il database dove saranno contenute le informazioni per il login.
Potete scaricare il file contenente le istruzioni SQL per creare il database da eseguire con phpmyadmin http://www.kdev.it/config/proftpd.sql.tgz

Il file contiene le seguenti istruzioni:

#
# Database : `proftpd`
#

# --------------------------------------------------------

#
# Table structure for table `ftpusers`
#

CREATE TABLE `ftpusers` (
`loginallowed` char(1) NOT NULL default 'Y',
`username` varchar(60) NOT NULL default 'NULL',
`uid` int(11) unsigned default '1000',
`gid` int(11) unsigned default '1000',
`groupname` varchar(50) default 'ftp',
`password` varchar(30) default 'NULL',
`homedir` varchar(255) default '/Users/ftp/default/',
`shell` varchar(15) NOT NULL default '/sbin/nologin',
`count` int(11) unsigned default '0',
`fretr` int(10) unsigned default '0',
`bretr` int(10) unsigned default '0',
`bstor` int(10) unsigned default '0',
`fstor` int(10) unsigned default '0',
`ftime` timestamp(14) NOT NULL,
`faddr` varchar(255) default 'NULL',
`fhost` varchar(255) default 'NULL',
`fcdir` varchar(255) default 'NULL',
PRIMARY KEY (`username`)
) TYPE=MyISAM;


Ora dovete creare uno user di mysql da utilizzare per le connessioni al db back-end proftp.

Sostituite lo user nel file di configurazione di proftpd in /usr/local/etc/proftpd.conf
il file di configurazione di proftpd é disponibile all'indirizzo: http://www.kdev.it/config/proftpd.conf.tgz
Il file di configurazione contiene le seguenti direttive:

#
ServerName "KDEV"
ServerType inetd
DefaultServer on
Port 21
Umask 022
MaxInstances 15
User ftp
Group ftp
PassivePorts 49152 49999
UseReverseDNS off
IdentLookups off

SQLAuthenticate on
SQLUserInfo ftpusers username password NULL NULL homedir shell
SQLAuthTypes Plaintext Backend
SQLConnectInfo proftpd@localhost:3306 proftpd password <--- sostituisci qui le info del tuo user
SQLUserWhereClause "LoginAllowed = 'Y'"
SQLDefaultGID 1000
SQLDefaultUID 1000
SQLGroupInfo ftpusers groupname gid username
SQLHomedirOnDemand on
SQLDefaultHomedir /Users/ftp/default/cd1/
#SQLDefaultHomedir homedir
SQLLog PASS updatelogin
SQLNamedQuery updatelogin UPDATE "count=count+1 WHERE username='%u'" ftpusers

ExtendedLog /var/log/proftpd.log
DefaultRoot ~
# Normally, we want files to be overwriteable.
<Directory /*>
AllowOverwrite off
</Directory>

Ora non resta che modificare alcune righe di inetd e di xinetd.d
Editate con pico o vi il file /etc/xinetd.d/ftp

service ftp
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/local/sbin/proftpd
server_args =
groups = yes
flags = REUSE IPv6
}

e rendetelo uguale a questo.
Ora localizzate nel file /etc/inetd.conf
modifiche al file /etc/inetd.conf
# Items with double hashes in front (##) are not yet implemented in the OS.
#
#finger stream tcp nowait nobody /usr/libexec/tcpd fingerd -s
ftp stream tcp nowait root /usr/libexec/tcpd /usr/local/sbin/proftpd <---sostituisci con questa
#login stream tcp nowait root /usr/libexec/tcpd rlogind


Ora riavviate inetd e il server FTP é pronto.
riavvia inetd

kdev:/etc root# ps -ax | grep inetd
411 ?? Ss 0:05.74 xinetd -inetd_compat -pidfile /var/run/xinetd.pid
13367 std S+ 0:00.02 grep inetd
kdev:/etc root#