ProFTPD & MySQL-Backend unter FreeBSD
ProFTPD ist ein mächtiger und praktischer FTP Daemon, der einfach mit MySQL Konfiguriert werden kann.
Inhaltsverzeichnis |
Installation des Ports
Zunächst installiert man den entsprechenden Port:
-su-2.05b# cd /usr/ports/ftp/proftpd-mysql/ -su-2.05b# make install clean
Anschliessend wählt man in der Oberfläche die gewünschten Optionen aus und bestätigt mit OK:
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk x Options for proftpd-mysql 1.2.10_1 x x lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk x x x [ ] IPV6 Use IPv6 x x x x [ ] LDAP Use LDAP x x x x [X] MYSQL Use MySQL x x x x [ ] POSTGRESQL Use Postgres x x x x [ ] OPENSSL Include mod_tls x x x x [ ] QUOTA Include mod_quota x x x x [X] IFSESSION Include mod_ifsession x x x x [X] README Include mod_readme x x x x [X] RATIO Include mod_ratio x x x x [X] REWRITE Include mod_rewrite x x x x [X] WRAP Include mod_wrap x x tqmqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqjqu x [ OK ] Cancel x mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
Sollte der MySQL-Client nicht installiert sein, so wird dies automatisch mitinstalliert. Nachdem die Installation abgeschlossen ist, müssen einige Änderungen am System durchgeführt werden.
Konfiguration
Man trägt zunächst im /etc/rc.conf folgendes ein:
# FTP Server proftpd_enable="YES"
proftpd.conf
Die Datei /usr/local/etc/proftpd.conf wird benötigt, um den FTP Server zu Konfigurieren.
Erstellen einer MySQL Tabelle für Logins
Wir benötigen eine Tabelle, wo wir die Logindaten speichern können. Dazu erstellen wir (siehe Abschnitt FreeBSD & MySQL) eine Datenbank (z.b. server_admin) und dort eine Tabelle ftp_login:
# # Tabellenstruktur für Tabelle `ftp_login` # CREATE TABLE `ftp_login` ( `id` int(11) NOT NULL auto_increment, `username` varchar(30) NOT NULL default '', `password` varchar(30) NOT NULL default '', `uid` int(11) NOT NULL default '80', `gid` int(11) NOT NULL default '80', `homedir` varchar(60) NOT NULL default '', `count` int(11) NOT NULL default '0', `last_host` varchar(50) NOT NULL default '', `last_ip` varchar(20) NOT NULL default '', `last_login` timestamp(14) NOT NULL, `active` tinyint(4) NOT NULL default '1', `shell` varchar(250) NOT NULL default '/sbin/nologin', PRIMARY KEY (`id`), KEY `id` (`id`), KEY `username` (`username`), KEY `homedir` (`homedir`) ) TYPE=MyISAM COMMENT='FTP Login Informations';
PAM
PAM wird bei dieser Lösung nicht benötigt, da ProFTPD dies über das lokale mod_sql abwickelt.
Probleme beim Starten des Daemons
Sollte der Daemon beim start (siehe /var/log/messages) eine Mitteilung bringen, dass er das scoreboard nicht öffnen kann:
May 17 21:26:50 temp proftpd[84367]: temp.mrmouse.ch - error opening scoreboard: No such file or directory
Dies rührt daher, dass bei der Installation vergessen wird, das Verzeichnis /var/run/proftpd zu erzeugen. Aber dies lässt sich ja schnell machen:
-su-2.05b# mkdir /var/run/proftpd
Im Allgemeinen findet man relativ schnell raus, was der Fehler ist:
-su-2.05b# /usr/local/libexec/proftpd -n -d 9 -c /usr/local/etc/proftpd.conf
-d 9 setzt den debug level auf 9 (ziemlich brauchbar)
-n verhindert, dass der Daemon in den Hintergrund geschoben wird
-c zeigt an, welches config-file benutzt werden sollte