Questo mini how-to senza pretese, spiega come ho configurato il proftpd con MySQL.
Questa configurazione ha preso spunto da un link in cui veniva fornita la
struttura del database più una base di configurazione valida per la versione 1.2.4.
Successivamente con la versione 1.2.5 è stato necessario variare il file di
configurazione per adattarlo al cambiamento del mod_sql (4.08 del 2002-06-08)
Il sistema operativo che utilizzo è FreeBSD (4.5 & 4.6) e parto dal presupposto
che il proftpd sia già stato installato dai ports con i comandi:
# cd /usr/ports/ftp/proftpd # make -DWITH_MYSQL # make install
Uno shell fittizio Per prima cosa creo uno shell fittizio aggiungendo al file /etc/shells la riga /sbin/nologin
User/Group ftp/ftp Inoltre devono esistere (eventualmente lo creo) lo user “ftp” e il relativo gruppo “ftp” i quali dovrebbero avere UID=1000 e GID=1000. Se i UID e GID non dovessero essere questi, variare di conseguenza le configurazioni.
Come prima cosa creiamo il database. La struttura l’ho trovata da qualche parte e per
ora non ho il link (mi riprometto di cercarla meglio).
Comunque ecco la struttura:
CREATE 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(50) default 'NULL', `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`) )
proftpd.conf per la versione 1.2.4
Creiamo il file /usr/local/etc/proftpd.conf
ServerName "FTP SERVER" ServerType standalone DefaultServer on Port 21 Umask 022 MaxInstances 30 User nobody Group nogroup # Il param PassivePorts # serve insieme al firewall (IPFW) per # permettere le connessioni attraverso #il firewall stesso (v. config/links) PassivePorts 49152 49999 SQLDoGroupAuth on SQLAuthTypes Plaintext Backend SQLConnectInfo proftpd@localhost:3306 user password SQLHomedirField homedir SQLLogDirs off SQLLoginCountField count SQLUserTable ftpusers SQLUsernameField username SQLWhereClause "LoginAllowed = 'y'" SQLGroupTable ftpusers SQLGroupnameField groupname SQLGroupMembersField username SQLAuthoritative off SQLDefaultGID 1000 SQLDefaultUID 1000 SQLPasswordField password TransferLog /var/log/xfer/xferlog DefaultRoot ~ ftp# Normally, we want files to be overwriteable. <Directory /*> AllowOverwrite on </Directory>
proftpd.conf per la versione 1.2.5
Creiamo il file /usr/local/etc/proftpd.conf
# ServerName "FTP SERVER" ServerType standalone DefaultServer on Port 21 Umask 022 MaxInstances 30 User nobody Group nogroup PassivePorts 49152 49999 SQLAuthenticate on SQLUserInfo ftpusers username password NULL NULL homedir shell SQLAuthTypes Plaintext Backend SQLConnectInfo proftpd@localhost:3306 user password SQLUserWhereClause "LoginAllowed = 'Y'" SQLDefaultGID 1000 SQLDefaultUID 1000 SQLGroupInfo ftpusers groupname gid username #SQLLog PASS updatelogin #SQLNamedQuery updatelogin UPDATE "count=count+1 WHERE username='%u'" ftpusers TransferLog /var/log/xfer/xferlog DefaultRoot ~ ftp# Normally, we want files to be overwriteable. <Directory /*> AllowOverwrite on </Directory>