[FreeBSD] PureFTPD (i.c.m. MySQL) als FTP server

December 11th, 2001 by Rob


In deze howto ga ik beschrijven hoe je PureFTPD werkend kunt krijgen in
combinatie met MySQL.

Voorkennis: MySQL‚ niet strikt noodzakelijk wel erg handig

Waarom met MySQL zul je denken‚ dit omdat het hierdoor eenvoudig wordt om de
gebruikers te beheren.
[pagebreak]
Waarpm pure-ftpd en geen proftpd of wu-ftpd‚ wat betreft wu-ftpd deze heeft de nare
eigenschap veel security bugs te hebben en dus niet echt ideaal‚ wat betreft Proftpd
deze is stukken beter als wu-ftpd echter vind de fucntionaliteit van Pure-Ftpd veel
groter en de documentatie van Pure-ftpd vind ik beter.

In de normale situatie haalt de FTP server zijn gebruiikers uit “/etc/passwd” dit is
voor weinig gebruikers goed te gebruiken‚ echter heb je meer gebruikers dan wordt
het snel onoverzichtelijk.

Als je deze howto volgt zul je een systeem krijgen dat eerst kijkt of een gebruiker
bestaat in de MySQL database en daarna kijkt hij in de vertrouwde /etc/passwd

Ik ga ervan uit dat je enigzins bekend bent met MySQL‚ zoniet volg dan deze link
Mysql homepage
Snelle install MySQL

Shell:

#cd /usr/ports/databases/mysql323-server
#make install clean

We gaan als eerste PureFTPD installeren

Shell:

#cd /usr/ports/ftp/pure-ftpd
#make -DWITH_MYSQL install clean

Pureftpd gaat uitgevoerd worden m.b.v. tcpserver dit heeft als voordeel dat
hiermee de server beter bestand is tegen DOS aanvallen en er zijn meer filter
mogelijkheden.
Tcpserver is onderdeel van ucspi-tcp package‚ dus die installeren we:

Shell:

#cd /usr/ports/sysutils/ucspi-tcp
#make install clean

Nu we de programma’s hebben geinstalleerd‚ kunnen we gaan configuren.
We maken een aparte database voor de ftp users en een standaard tabel.

Shell:

#mysql -u root -p
Enter password: [vul je passwoord in]
mysql> CREATE DATABASE ftpusers;
mysql> USE ftpusers;
mysql> CREATE TABLE users (
User char(16) NOT NULL default ”‚
Password char(64) NOT NULL default ”‚
Uid int(11) NOT NULL default ‘-1′‚
Gid int(11) NOT NULL default ‘-1′‚
Dir char(128) NOT NULL default ”‚
PRIMARY KEY (User)
);
mysql>exit

Als je niet zo bedreven bent met MySQL raad ik je aan om phpMyAdmin
te gebruiken.

Nu gaan we de ftp server configureren‚ open het bestand pureftpd-mysql.conf.sample met je
favoriete editor.

Shell:

ee /usr/local/etc/pureftpd-mysql.conf.sample

Het commentaar in deze file is heel erg duidelijk en moet eigenlijk geen problemen op leveren.

Als het configuratie bestand hebt aangepast moet je hem nog rename’n

Shell:

mv /usr/local/etc/pureftpd-mysql.conf.sample /usr/local/etc/pureftpd-mysql.conf

Je kunt pureftpd nu op verschillende manieren opstarten ik heb ervoor gekozen om pureftpd te draaien
mbv van tcpserver‚ dit is veiliger ik ga hier niet helemaal uitleggen waarom zoek even met google
en lees over tcpserver en meer over Mr. Bernstein.

Mijn startup script ziet er als volgt uit:

Shell:

#!/usr/local/bin/bash
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin
export PATH
exec tcpserver -DHRl0 0 21 pure-ftpd -O stats:/var/log/pureftpd.log -A -a 1006 -l mysql:/usr/local/etc/pureftpd-mysql.conf -l unix

Voor logging “-O
:‘” zodat ik ze kan bekijken met ftpstats
De “-l mysql:…”geeft aan eerst in de MySQl db kijken en daarna voor normale users in “/etc/passwd”
“-l unix”
-A = iedereen chrooten (kan niet lager als homedir)
-a 1006= deze groep kan overal komen (niet gechroot)

Voordat je dit blindenlings overneemt is het aan te raden even de README’s te lezen.
Algemene Readme
Readme voor MySQL

Met
[s=50]pure-ftpwho[/s]
zie je precies wat iedereen aan het doen is op je ftp.

Wat handige links:
Pure-Ftpd homepage
Ftpstats handig om bij te houden hoeveel data er gegenereerd is.

Leave a Reply

4 Responses to “[FreeBSD] PureFTPD (i.c.m. MySQL) als FTP server”

  1. Comment by Anonymous

    hmm dat ziet er makkelijk uit!!
    good job! :)
    via mysql -> kan je dan ook dingen veranderen via php ???

  2. Comment by Anonymous

    Jeps, het aanmelden van users
    gaat dus ook via php.
    De beheer interface gaat dus ook via php.

  3. Comment by Anonymous

    Je kunt het icm. OpenLDAP runnen :)

  4. Comment by sigh

    ERROR 1064: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ‘.
    Password char(64) NOT NULL default ”.
    Uid int(11) NOT NU

SEO Powered by Platinum SEO from Techblissonline